[xquery-talk] Question on expected XQuery return per standards

Pavel Minaev int19h at gmail.com
Fri Mar 27 12:48:28 PST 2009

On Fri, Mar 27, 2009 at 12:06 PM, Ronald Bourret
<rpbourret at rpbourret.com> wrote:
> Hmmm. I would have thought that, in each case, only p2 is returned.
> According to the spec, "For each item in the input sequence, the predicate
> expression is evaluated using an inner focus, defined as follows: The
> context item is the item currently being tested against the predicate. The
> context size is the number of items in the input sequence. The context
> position is the position of the context item within the input sequence."
> In each case, the input sequence is the result of $xml//p, which is a
> sequence of four p elements. Since the position is the position within this
> sequence, only p2 is in the second position.

But it isn't. The standard is very clear that $xml//p expands to
$xml/descendant-or-self::node()/p. The ordering is also very clear:

  "Each non-initial occurrence of "//" in a path expression is
expanded as described in 3.2.4 Abbreviated Syntax, leaving a sequence
of steps separated by "/". This sequence of steps is then evaluated
from left to right."

and, obviously, in $xml/descendant-or-self::node()/p[2], 2 is the
position within the sequence of child nodes of the parent of p, not
the expression as a whole.

More information about the talk mailing list