This is the mail archive of the xsl-list@mulberrytech.com mailing list .


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

RE: converting speacial characters ?



>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, '&#x0A;')"><xsl:value-of
	select="substring-before($string, '&#x0A;')" />
	<xsl:call-template name="cleanLF"><xsl:with-param
	name="string"><xsl:value-of select="substring-after($string, '&#x0A;')"
/></xsl:with-param>
	</xsl:call-template>
</xsl:if>
<xsl:if test="not(contains($string, '&#x0A;'))"><xsl:value-of
select="$string" />
</xsl:if>
</xsl:template>
<xsl:template name="cleanQuote">
<xsl:param name="string" />
<xsl:if test="contains($string, '&#x22;')"><xsl:value-of
    select="substring-before($string, '&#x22;')" />\"<xsl:call-template
    name="cleanQuote">
		<xsl:with-param name="string"><xsl:value-of
select="substring-after($string, '&#x22;')" />
		</xsl:with-param>
	</xsl:call-template>
</xsl:if>
<xsl:if test="not(contains($string, '&#x22;'))"><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

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]