Subject: Re: Move leading/trailing spaces outside (XSLT 2.0)
From: Abel Braaksma <abel.online@xxxxxxxxx>
Date: Tue, 06 Feb 2007 16:11:49 +0100
|
Martin Honnen wrote:
Yves Forkl wrote:
I'm looking for an elegant XSLT 2.0 solution to this tiny problem.
When processing
<e> one</e>
<e>two </e>
<e> three </e>
I want to separate the leading and trailing spaces from the rest of
the content but keep them in the output as text nodes,
This should do:
<xsl:template match="e">
<xsl:analyze-string select="." regex="^\s+">
<xsl:matching-substring>
<xsl:value-of select="."/>
</xsl:matching-substring>
<xsl:non-matching-substring>
<xsl:analyze-string select="." regex="\s+$">
<xsl:matching-substring>
<xsl:value-of select="."/>
</xsl:matching-substring>
<xsl:non-matching-substring>
<e><xsl:value-of select="."/></e>
</xsl:non-matching-substring>
</xsl:analyze-string>
</xsl:non-matching-substring>
</xsl:analyze-string>
</xsl:template>
You can make this easier by doing it in one pass:
<xsl:analyze-string select="." regex="^\s+|\s+$">
....
Greedy matching (which it is always) will ensure that the
matching-substring is always either the leading or the trailing.
Non-matching-substring is always the middle part.
-- Abel
| Current Thread |
Martin Honnen - 6 Feb 2007 14:23:33 -0000
- Abel Braaksma - 6 Feb 2007 15:13:35 -0000 <=
Abel Braaksma - 6 Feb 2007 15:49:55 -0000
|
|