Subject: RE: "Line"-Tokenizing at <br/> in xhtml
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Tue, 7 Nov 2006 14:17:23 -0000
|
So long as the <br/> elements are children of the <p> element (not
descendants), you can use
<xsl:for-each-group group-starting-with="br">
This will include the br element as a member of the group, but you can
easily lose it using
current-group()[not(self::br)]
(You can use group-ending-with="br" as well, but if you drop the br elements
the effect is identical).
Michael Kay
http://www.saxonica.com/
> -----Original Message-----
> From: Georges Schmitz [mailto:georges.schmitz@xxxxxxxxx]
> Sent: 07 November 2006 13:47
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: "Line"-Tokenizing at <br/> in xhtml
>
> Tokenizing a string at LFs and putting <br/> in place of
> them is well known to me (in XSLT2.0), but for the moment I'm
> stuck with the other way round.
>
> I have something like this (xhtml):
>
> <p>blabla blabla <br/>
> blabla blabla blabla <br/>
> blabla <b>blabla</b> blabla <br/>
> blabla blabla blabla</p>
>
> I need to have access to every single "line" (terminated by
> <br/>), preserving the mixed content of the lines.
>
> 1. The tokenize() function as well as the analyze-string
> method only
> operate on strings, not on mixed content.
> 2. <for-each select=".//text()"> (just posted some days
> ago) doesn't
> work because of line 3, and
> 3. <xsl:for-each select="br">
> <xsl:value-of select="preceding-sibling::text()[1]"/>
> </xsl:for-each>
> a) doesn't work because of line 3
> b) I would have to fetch the last line separately
>
> Thanks for any advise,
> Georges Schmitz
|