FW: Re: Variable references in path expressions
"Michael Kay" <[email protected]> Tue, 26 Apr 2005 15:05:20 +0100
| Newsgroups | gmane.comp.web.query-languages |
|---|---|
| Message-ID | <[email protected]> |
(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/