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

Geert Josten Geert.Josten at daidalos.nl
Sat Mar 28 12:56:03 PST 2009


Yes,

It starts making sense to me now as well. I keep forgetting that $xml/p actually means $xml/child::p. And we all understand intuitively what $xml/p[2] means (especially when reading it as $xml/child::p[2])..

Just for the sake of completeness, I wrote a simplistic self-contained testsuite with most interesting cases. If someone of you lot could just take a look whether I didn't make any mistakes, that would be appreciated.

Kind regards,
Geert

>


Drs. G.P.H. Josten
Consultant


http://www.daidalos.nl/
Daidalos BV
Source of Innovation
Hoekeindsehof 1-4
2665 JZ Bleiswijk
Tel.: +31 (0) 10 850 1200
Fax: +31 (0) 10 850 1199
http://www.daidalos.nl/
KvK 27164984
De informatie - verzonden in of met dit emailbericht - is afkomstig van Daidalos BV en is uitsluitend bestemd voor de geadresseerde. Indien u dit bericht onbedoeld hebt ontvangen, verzoeken wij u het te verwijderen. Aan dit bericht kunnen geen rechten worden ontleend.


> From: talk-bounces at x-query.com
> [mailto:talk-bounces at x-query.com] On Behalf Of Ronald Bourret
> Sent: vrijdag 27 maart 2009 21:53
> To: Pavel Minaev
> Cc: talk at xquery.com
> Subject: Re: [xquery-talk] Question on expected XQuery return
> per standards
>
> Pavel Minaev wrote:
> > 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.
>
> Thanks for the clarification. I had to think about it a bit
> -- the parent isn't obviously involved until you realize that
> the parent is a descendant of $xml -- but that now makes sense.
>
> -- Ron
> _______________________________________________
> talk at x-query.com
> http://x-query.com/mailman/listinfo/talk
>

-------------- next part --------------
A non-text attachment was scrubbed...
Name: position-testsuite.xqy
Type: application/octet-stream
Size: 14834 bytes
Desc: position-testsuite.xqy
Url : http://x-query.com/pipermail/talk/attachments/20090328/d1ab3f61/position-testsuite-0001.obj


More information about the talk mailing list