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