This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
RE: converting speacial characters ?
- To: <xsl-list at mulberrytech dot com>
- Subject: RE: converting speacial characters ?
- From: "Chris Bayes" <Chris at Bayes dot co dot uk>
- Date: Wed, 13 Sep 2000 17:04:36 +0100
- Reply-To: xsl-list at mulberrytech dot com
>At 04:15 PM 09/13/2000 +0300, Jukka.T.Lehtinen@nokia.com wrote:
>>... I need to check elements value that if it has
>>characters such as '\' or ':' or '"' and I need to replace them to :
>>
>>\ -> \\
>>: -> \:
>>" -> \" (I'm using ")
>
>Look into the XPath translste() function. It's covered in:
> http://www.w3.org/TR/xpath#section-String-Functions
>
but it only works on single characters
here is one i wrote to get rid of lfs and escape '"'
ok the lfs could have been removed with normalise-space()
but you could hack this arround
<xsl:template match="para" >
<xsl:variable name="noLF"><xsl:call-template
name="cleanLF"><xsl:with-param name="string"><xsl:value-of
select="@title" /></xsl:with-param></xsl:call-template></xsl:variable>
<xsl:variable name="noQuote"><xsl:call-template
name="cleanQuote"><xsl:with-param name="string"><xsl:value-of
select="$noLF" /></xsl:with-param>
</xsl:call-template>
</xsl:variable>
<xsl:value-of select="$noQuote" />");
</xsl:template>
<xsl:template name="cleanLF">
<xsl:param name="string" />
<xsl:if test="contains($string, '
')"><xsl:value-of
select="substring-before($string, '
')" />
<xsl:call-template name="cleanLF"><xsl:with-param
name="string"><xsl:value-of select="substring-after($string, '
')"
/></xsl:with-param>
</xsl:call-template>
</xsl:if>
<xsl:if test="not(contains($string, '
'))"><xsl:value-of
select="$string" />
</xsl:if>
</xsl:template>
<xsl:template name="cleanQuote">
<xsl:param name="string" />
<xsl:if test="contains($string, '"')"><xsl:value-of
select="substring-before($string, '"')" />\"<xsl:call-template
name="cleanQuote">
<xsl:with-param name="string"><xsl:value-of
select="substring-after($string, '"')" />
</xsl:with-param>
</xsl:call-template>
</xsl:if>
<xsl:if test="not(contains($string, '"'))"><xsl:value-of
select="$string" />
</xsl:if>
</xsl:template>
Ciao Chris
XML/XSL Portal
http://www.bayes.co.uk/xml
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list