[xsl] Problem using translate to escape quotes

Subject: [xsl] Problem using translate to escape quotes
From: "Kevin Collins" <kcollins@xxxxxxx>
Date: Wed, 4 Dec 2002 10:43:01 -0500
I have a string containing single quotes held in a variable. I want to
escape each quote by inserting a backslash before it, but I can't get it
to work. The translate function appears to be inserting the backslashes
without the quotes.

Here's a test version of the stylesheet:
--------------------------------------------
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
version="1.0">
<xsl:output method="html"/>

<xsl:variable name="mystr">this is Kevin's 'string'</xsl:variable>

<xsl:variable name="backSlashQuote">&#92;&#39;</xsl:variable>
<xsl:variable name="backSlash">&#92;</xsl:variable>
<xsl:variable name="singleQuote">&#39;</xsl:variable>
<xsl:variable name="backSlashQuote2"><xsl:value-of select="concat(
$backSlash, $singleQuote )"/></xsl:variable>

<xsl:variable name="mystr_escaped">
 <xsl:value-of select="translate( $mystr, $singleQuote, $backSlashQuote
)"/>
</xsl:variable>

<xsl:template match="/">
<html>
 <body>
  <xsl:value-of select="$mystr"/>
  <br/>
  <xsl:value-of select="$mystr_escaped"/>
 </body>
</html>
</xsl:template>

</xsl:stylesheet>
--------------------------------------------

Test source document (any one will do): 
--------------------------------------------
<?xml version="1.0" encoding="iso-8859-1"?>
<mynode></mynode>
--------------------------------------------

I get the same result regardless of whether I use $backSlashQuote or
$backSlashQuote2 in the translate function. Here's the output I'm
getting:
--------------------------------------------

<html>
<body>this is Kevin's 'string'<br>this is Kevin\s \string\</body>
</html>

--------------------------------------------

I'm using MSXML 4.0.

Thanks for any help with this!
Kevin Collins


 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Current Thread