|
Subject: RE: [xsl] Count words and add line-brake From: "Andrew Welch" <ajwelch@xxxxxxxxxxxxxxx> Date: Mon, 8 Nov 2004 17:40:09 -0000 |
> I hope someone can help. I would like to do the following.
>
> 1. Count the words in a specific xml node.
> 2. Insert a line-brake after every 15th word.
>
> Source:
> <txt>Here is some text. Here is some text. Here is some text.
> Here is some text. Here is some text.Here is some text. Here
> is some text. Here is some text. Here is some text. Here is
> some text.</txt>
>
>
> Output:
> <txt>
> Here is some text. Here is some text. Here is some text.
> Here is some <br />
> text. Here is some text. Here is some text. Here is some
> text. Here is <br />
> some text. Here is some text. Here is some text.
> </txt>
I would suggest using XSLT 2.0 or XSLT 1.0 + tokenize extension function
to do this, then you write something like the following:
<xsl:template match="txt">
<txt>
<xsl:for-each select="tokenize(.,'\s')">
<xsl:copy-of select="."/>
<xsl:if test="position() mod 15 = 0"><br /></xsl:if>
</xsl:for-each>
...
If you are using XSLT 1.0 + extensions then the tokenize funtion would
need be in the processors namespace (for example saxon:tokenize(...))
I'm sure there's a few gotchas with using the \s character class for
this task, but I (still) don't know regexs well enough to come upu with
anything better.
cheers
andrew
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| [xsl] Count words and add line-brak, Jacobus van Niekerk | Thread | Re: [xsl] Access denied, Jen Jiang |
| RE: [xsl] Transforming XML 'on-the-, cknell | Date | RE: [xsl] XSLT 1.0: Grouping Adjace, Wendell Piez |
| Month |