[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

Re: [xsl] normalize-space() except ...


Subject: Re: [xsl] normalize-space() except ...
From: "Terry Badger terry_badger@xxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>
Date: Tue, 10 Feb 2015 00:52:04 -0000

To All,
When I don't want normalize-space() in a mixed content text flow I use this
function to preserve any leading and trailing space which the
normalize-space() would eliminate
<!--
=============================================================================
-->
<!-- this function is a single parm which is the text value to be cleanup NOT
normalized -->
<!-- leading and trailing spaces are preserved but runs of white space
characters become a single space -->
<!-- This means that tab, 0A and 0D should vanish. -->
<xsl:functionname="tb:string-cleanup">
<xsl:paramname="string"/>
<xsl:variablename="string-to-output">
<xsl:analyze-stringselect="$string"regex="\s+">
<xsl:matching-substring>
<xsl:text> </xsl:text>
</xsl:matching-substring>
<xsl:non-matching-substring>
<xsl:value-ofselect="."/>
</xsl:non-matching-substring>
</xsl:analyze-string>
</xsl:variable>
<xsl:iftest="$DEBUG-string-cleanup = 'yes' and $string != $string-to-output">
<xsl:message>
<xsl:text>STRING CHANGED FROM [</xsl:text>
<xsl:copy-ofselect="$string"/>
<xsl:text>]&#x0A;TO [</xsl:text>
<xsl:copy-ofselect="$string-to-output"/>
<xsl:text>]</xsl:text>
</xsl:message>
</xsl:if>
<xsl:copy-ofselect="$string-to-output"/>
</xsl:function>


Terry


On Monday, February 9, 2015 7:31 PM, "Christopher R. Maden crism@xxxxxxxxx"
<xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> wrote:



On 02/09/2015 06:23 PM, Liam R E Quin liam@xxxxxx wrote:
> I'd probably do this in two steps -
> (1) match text() and turn one or more whitespace characters into a
> space, probably using replace()
> (2) strip leading space from the first text() in p, and trailing
> space from the last;

My algorithm (for which I canbt find code right now, but may rewrite
later) is to concatenate the following:

1) If the text node starts with a space, a single space.

2) The results of normalize-space().

3) If the text node ends with a space, a single space.

~Chris
--
Chris Maden, text nerd  <URL: http://crism.maden.org/ >
Surround hate and force it to surrender.
GnuPG fingerprint: DB08 CF6C 2583 7F55 3BE9  A210 4A51 DBAC 5C5C 3D5E


Current Thread