[xquery-talk] Question on expected XQuery return per standards
Geert.Josten at daidalos.nl
Sat Mar 28 13:55:26 PST 2009
Oh, by the way..
I converted the testcases from David Sewell to XSLT 1.0 and 2.0 as well (removed the $xml in front of the Xpath expressions and stored the $xml contents in a file to do the trick), just to see what various XSLT processors would be returning. To my surprise all of the processors I tried were returning p2 only, when running in XSLT 1.0 mode.
Is it true that Xpath 2.0 has changed the meaning of such expressions compared to Xpath 1.0?
> -----Original Message-----
> From: talk-bounces at x-query.com
> [mailto:talk-bounces at x-query.com] On Behalf Of Geert Josten
> Sent: zaterdag 28 maart 2009 12:56
> To: Ronald Bourret; Pavel Minaev
> Cc: talk at xquery.com
> Subject: RE: [xquery-talk] Question on expected XQuery return
> per standards
> 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 means (especially when
> reading it as $xml/child::p)..
> 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,
> Drs. G.P.H. Josten
> Daidalos BV
> Source of Innovation
> Hoekeindsehof 1-4
> 2665 JZ Bleiswijk
> Tel.: +31 (0) 10 850 1200
> Fax: +31 (0) 10 850 1199
> 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
> > > from left to right."
> > >
> > > and, obviously, in $xml/descendant-or-self::node()/p, 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
More information about the talk