RE: [xsl] Weird XPath evaluation differences between Saxon and Xalan

Subject: RE: [xsl] Weird XPath evaluation differences between Saxon and Xalan
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Thu, 9 Jun 2005 13:48:58 +0100
In XSLT 1.0, xsl:value-of when applied to a set of nodes gives you the value
of the first node, and ignores the others.

In XSLT 2.0, it gives you the values of all the nodes - by default space
separated.

If you run a 2.0 processor but specify version="1.0" you get
backwards-compatible behavior, i.e. the 2.0 processor gives you the same
result as a 1.0 processor.

Michael Kay
http://www.saxonica.com/

> -----Original Message-----
> From: Simon OUALID [mailto:symon@xxxxxxxxxxx]
> Sent: 08 June 2005 22:47
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: [xsl] Weird XPath evaluation differences between
> Saxon and Xalan
>
> Hi,
>
> I have a question regarding a XPath evaluation difference
> between Saxon
> and Xalan (using the latest release of both tools), with the same XML
> datas and the XPath query !
>
> Considering this XML tree :
>
> <GROUP>
>   <SOMETHING>
>     <NAME>AA</NAME>
>   </SOMETHING>
>   <SOMETHING>
>     <NAME>BB</NAME>
>   </SOMETHING>
>   <SOMETHING>
>     <NAME>CC</NAME>
>   </SOMETHING>
> </GROUP>
>
> and the following XPath query :
>
> <xsl:value-of select="./SOMETHING/NAME"/>
> in the context of a <xsl:apply-templates select="/GROUP"/>
>
> Xalan will output "AA" but Saxon output "AABBCC" !
>
> Stranger is than changing the version of the stylesheet modify the
> comportment of Saxon : using a 1.0 stylesheet, Saxon will output "AA"
> (as Xalan do !), but using ` 2.0 stylesheet, Saxon output "AABBCC".
>
> What's the standard says about that ? I'd like to follow W3C
> prescription !
>
> Should I change my XPath query with GROUP like :
>
> <xsl:value-of select="./SOMETHING//NAME"/>
>
> or maybe :
>
> <xsl:value-of select="./SOMETHING[*]/NAME"/>
>
> Thanks forward for any information on this subject. For
> information, the
> result I expect is "AABBCC".
>
> Symon

Current Thread