[xquery-talk] Question on expected XQuery return per standards
Michael Kay
mike at saxonica.com
Sun Mar 29 10:03:52 PST 2009
The xsl:value-of instruction in XSLT 1.0, or in XSLT 2.0 when running in
backwards-compatibility mode, only displays the first item in the selected
node-set. To display all the nodes, use xsl:copy-of.
Michael Kay
http://www.saxonica.com/
> -----Original Message-----
> From: Geert Josten [mailto:Geert.Josten at daidalos.nl]
> Sent: 28 March 2009 15:24
> To: Michael Kay; talk at xquery.com
> Subject: RE: [xquery-talk] Question on expected XQuery return
> per standards
>
> Hi Michael,
>
> I ran it against msxsl 4.0, Xalan 2.7.0, Saxon 8 and Saxon 9.
> They all returned p2 in all cases..
>
> Test.xml:
>
> <?xml version="1.0"?>
> <root>
> <div>
> <p>p1</p>
> <p>p2</p>
> </div>
> <div>
> <p>p3</p>
> <p>p4</p>
> </div>
> </root>
>
> Test.xsl:
>
> <?xml version="1.0" encoding="UTF-8"?>
> <xsl:stylesheet version="1.0"
> xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
>
> <xsl:output encoding="utf-8" indent="no" />
>
> <xsl:template match="/">
> <!-- set1 - return all p's with position() = 2. Expected
> result: (p2, p4). -->
>
> <set1><xsl:value-of select="
> /descendant-or-self::node()/p[position() = 2] "/></set1>,
>
> <!-- set2 - XPath abbreviation // is equivalent to
> /descendant-or-self::node()/
> by definition. Result should still be (p2, p4) -->
>
> <set2><xsl:value-of select=" //p[position() = 2] "/></set2>,
>
> <!-- set3 - XPath predicate [2] is equivalent to
> [position() = 2]. Results
> should be identical to set1/set2 -->
>
> <set3><xsl:value-of select="
> /descendant-or-self::node()/p[2] "/></set3>,
>
> <!-- set4 - final syntax variation with full abbreviation.
> Results should
> still be identical to set1/set2/set3 -->
>
> <set4><xsl:value-of select=" //p[2] "/></set4>,
>
> <!--set5 - This is the only one that should return a
> single node, p2.
> The XPath should return the second instance of all <p>
> descendants
> of . -->
> <set5><xsl:value-of select=" /descendant::p[2] "/></set5>
> </xsl:template>
>
> </xsl:stylesheet>
>
> Changing the version of the XSL to 2.0 and running it again
> with Saxon did return the expected results. But with version
> 1.0 even Saxon was strangely enough returning p2 only..
>
> 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: Michael Kay [mailto:mike at saxonica.com]
> > Sent: zaterdag 28 maart 2009 16:07
> > To: Geert Josten; talk at xquery.com
> > Subject: RE: [xquery-talk] Question on expected XQuery return per
> > standards
> >
> >
> > > Is it true that Xpath 2.0 has changed the meaning of such
> > expressions
> > > compared to Xpath 1.0?
> >
> > No, this is unchanged since XPath 1.0.
> >
> > Which processors did you try, and can we see your code?
> >
> > Michael Kay
> > http://www.saxonica.com/
> >
> >
>
More information about the talk
mailing list