Subject: AW: [xsl] Matching two consecutive <br><br> From: "stefan krause" <stefan.krause@xxxxxxxxxxxxxxxxxxxx> Date: Mon, 23 Aug 2004 12:14:03 +0200 |
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: [xsl] 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
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] FO: Forcing a page break/, G. Ken Holman | Thread | Re: AW: [xsl] Matching two consecut, David Carlisle |
RE: [xsl] Problem using Muenchian M, Michael Kay | Date | Re: [xsl] Problem using Muenchian M, David Carlisle |
Month |