[
Lists Home |
Date Index |
Thread Index
]
Your test case:
<foo>
<b/>
<a/>
<b/>
<a/>
<b/>
</foo>
doesn't differentiate a "b" with at least a preceding sibling "a" from a
"b" whose immediate preceding is a "a"!
On Wed, 2002-07-17 at 23:29, Garland foster wrote:
> XMLCooktop works with
> //b[preceding-sibling::*[self::a]]
Yes, but this matches any "b" having any preceding-sibling equal to "a".
> or
> //b[preceding-sibling::*[1][self::a]]
> or
> //b[local-name(preceding-sibling::*[1])='a']
As Jeni mentioned, [self:a] has the advantage of also testing that your
"a" element has no namespace.
>
> While XML-SPY works with
> //b[preceding-sibling::*[self::a]]
But again, that's not selective enough for your request.
> but not with
> //b[preceding-sibling::*[1][self::a]]
> and doesn't work either with
> //b[local-name(preceding-sibling::*[1])='a']
>
> Interesting, which processor is wrong/right and why?
Do you really think a XSLT processor may be right against Jeni :-) ?
No, I am kidding and I think Jeni's wrong here and this should be:
//b[preceding-sibling::*[last()][self::a]]
(preceding-sibling returns the nodes by document order)
Eric
--
See you in San Diego.
http://conferences.oreillynet.com/os2002/
------------------------------------------------------------------------
Eric van der Vlist http://xmlfr.org http://dyomedea.com
(W3C) XML Schema ISBN:0-596-00252-1 http://oreilly.com/catalog/xmlschema
------------------------------------------------------------------------
|