Subject: RE: selecting the nearest preceding sibling
From: Jarno.Elovirta@xxxxxxxxx
Date: Tue, 13 May 2003 17:16:49 +0300
|
Hi,
> OK - the node set of all the preceding siblings which
> fit the criterium is given by
>
> preceding-sibling::tag[a]
>
> The nearest preceding sibling fitting the criterium is
> the last one in that nodeset (the nodes are always in
> document order)... that is,
>
> preceding-sibling::tag[a and last()]
Wrong. Simple "last()" will always evaluate to a positive number, thus the above will compile to
preceding-sibling::tag[a]
Furthermore, nodes are always *processed* in document order, but preceding-sibling is a preceding axis and
preceding-sibling::tag[a and position() = last()]
will select the first node in document order. You can use
(preceding-sibling::tag[a])[position() = last()]
and then you'd get the first preceding sibling. Evan Lenz wrote an article about this stuff <http://www.biglist.com/lists/xsl-list/archives/200201/msg00108.html>.
Cheers,
Jarno - neuroticfish: wakemeup! (club-edit)
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
|