I'm looking forward to the simple mapping operator in XPath 3.0:
https://www.w3.org/Bugs/Public/show_bug.cgi?id=12951

So here's the futuristic alternative #4:

$order!coupon-code!looup-coupon-code(.)


With "/", the order should always be document order, but when the nodes
come from multiple documents, you can get bit by the fact that document
order between document nodes is implementation-dependent, and is probably
different than your original processing order.

The other thing "/" does is remove duplicates, which is possibly not what
you want.

Evan



On 1/10/12 1:59 PM, "Ron Hitchens" <r...@ronsoft.com> wrote:

>
>   Yeah, I discussed the XPath function step in
>my earlier response, and Hans-Juergen mentioned
>it to, below.
>
>   But if order matters, beware.  The XPath
>function step alternative may not evaluate in the
>same order as the nodes being selected by the XPath.
>I've been bit by that a few times.
>
>On Jan 10, 2012, at 9:51 PM, David Lee wrote:
>
>> Alternative 3
>> 
>>  $order/coupon-code/looup-coupon-code(.)
>> 
>> 
>> Sent from my iPad (excuse the terseness)
>> David A Lee
>> d...@calldei.com
>> 
>> 
>> On Jan 10, 2012, at 1:29 PM, Hans-Juergen Rennau <hren...@yahoo.de>
>>wrote:
>> 
>>> Hi Ron,
>>>  
>>> thank you very much for illustrating the potential usefulness of
>>>function mapping!
>>>  
>>> Certainly this is a matter of personal taste, but just this remark:
>>>although the use of function mapping makes the code especially compact,
>>>I definitely prefer the FLWOR alternative (or the function step
>>>alternative), which makes looping explicit and thus avoids the risks of
>>>unintended looping and (worse) of unintended omission of processing. I
>>>think the code is safer and, yes, cleaner, if one remembers that
>>>function mapping depends on the repective parameter to be declared as a
>>>single item sequence type, which means that the function invocation
>>>cannot be recognized to be a mapping invocation: the parts producing
>>>the looping are separate, one being the invocation, one being the
>>>signature. I regard this as a kind of obscurity better to be avoided.
>>>  
>>> And the difference in code length is minimal:
>>>  
>>> alternative #1 (function mapping)
>>> lookup-coupon-code ($order/coupon-code)
>>>  
>>> alternative #2 (FLWOR)
>>> for $c in $order/coupon-code return looup-coupon-code($c)
>>>  
>>> Hans-Juergen
>>>  
>>> Ron wrote:
>>> "Function mapping can actually be very handy, you
>>> shouldn't just automatically turn it off and forget
>>> about it."
>>>  
>>> _______________________________________________
>>> General mailing list
>>> General@developer.marklogic.com
>>> http://developer.marklogic.com/mailman/listinfo/general
>> _______________________________________________
>> General mailing list
>> General@developer.marklogic.com
>> http://developer.marklogic.com/mailman/listinfo/general
>
>---
>Ron Hitchens {mailto:r...@ronsoft.com}   Ronsoft Technologies
>     +44 7879 358 212 (voice)          http://www.ronsoft.com
>     +1 707 924 3878 (fax)              Bit Twiddling At Its Finest
>"No amount of belief establishes any fact." -Unknown
>
>
>
>
>_______________________________________________
>General mailing list
>General@developer.marklogic.com
>http://developer.marklogic.com/mailman/listinfo/general

_______________________________________________
General mailing list
General@developer.marklogic.com
http://developer.marklogic.com/mailman/listinfo/general

Reply via email to