FW: Re: Variable references in path expressions

(Resending from the appropriate email address)

Someone has corrected me off-list on part of my answer:

> 
> However, will
> 
>     let
>       $a := (<a1/>, <a2/>, <a3/>),
>       $b := (<b1/>, <b2/>, <b3/>)
>     return
>       $a/$b
> 
> return
> 
>     (<b1/>, <b2/>, <b3/>, <b1/>, <b2/>, <b3/>, <b1/>, <b2/>, <b3/>)
> 
> because the expression bound to $b constructs unique elements 
> each time it is evaluated? 

I answered incorrectly: Yes.

I was thinking of a different case, $a/b() where the function b() returns
three elements. In that case, b() must be evaluated three times, and returns
three different elements each time. With a variable reference, however, the
variable must be evaluated exactly once, and the same value is used each
time. So the result is 
(<b1/>, <b2/>, <b3/>) or some permutation thereof (since these elements are
not in the same tree, their relative document order is unpredictable).

Michael Kay
http://www.saxonica.com/

Received on Tuesday, 26 April 2005 14:05:37 UTC