OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.


Help: OASIS Mailing Lists Help | MarkMail Help



   Re: [xml-dev] xpath: which is right?

[ Lists Home | Date Index | Thread Index ]

Suzan Foster wrote:
 > Taking the following XML:
 >  <foo>
 >     <bar id="1" />
 >     <bar id="2" />
 >     <bar id="3" />
 >     <fu />
 >   </foo>
 > which value should be returned by the xpath:
 > preceding::bar[1]/@id
 > libxslt says 3, whilst XML::XPath says 1.
 > groetjes, su.

You have already gotten two correct answers. Here is some additional 

This example is lifted almost directly from the XPath 1.0 standard 
(http://www.w3.org/TR/xpath#node-sets), which tells you that the value 
of preceding::bar[1] is the first preceding bar element in reverse 
document order. Assuming the initial context in your example is the fu 
element, the value of preceding::bar[1]/@id should be 3. If the context 
were <bar id="2"/> the value would be 1. Etc.

In XPath 2.0, preceding is defined to return its results in document 
order. So, starting from the fu element, libxslt is right or wrong, 
depending on whether it is following XPath 1.0 or 2.0 rules, respectively.

Bob Foster


News | XML in Industry | Calendar | XML Registry
Marketplace | Resources | MyXML.org | Sponsors | Privacy Statement

Copyright 2001 XML.org. This site is hosted by OASIS