Thanks Micheal and David! It's always a pleasure asking question on this
list.
I tried my matching again with xalan and found it worked - strange, maybe I
had indeed some space between the <br/>.
Actually I don't understand completely what your matching does:
br[following-sibling::node()[1][self::br]]
Could you be so kind and translate the predicates into plain english to help
my understanding - I'm especially keen on knowing to which node "self" maps
and in which order the predicates are mapped to the node sets?
Thanks,
Stefan
-----Urspr|ngliche Nachricht-----
Von: Michael Kay [mailto:mhk@xxxxxxxxx]
Gesendet: Monday, August 23, 2004 11:47 AM
An: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Betreff: RE: Matching two consecutive <br><br>
>
> don't use name() in these kinds of tests:
> name(following-sibling::node()[1])='br'
> use
> following-sibling::node()[1][self::br]
>
> > But this does not work for Xalan 2.
>
> looks correct to me, when you say it didn't work, what did it
> do? error? wrong answer?
My guess is that there was a whitespace text node between the two <BR/>
elements, which MSXML silently ignored. You can replicate this behavior in a
conformant XSLT processor using <xsl:strip-space elements="*"/>, but you
probably don't want to, because it will also strip the space in
<p><b>Reason:</b> <i>not applicable</i></p>
Safer is to refine the test to be:
following-sibling::node()[not(self::text()[not(normalize-space(.))][1][self:
:br]
Michael Kay
|