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">\'</xsl:variable>
<xsl:variable name="backSlash">\</xsl:variable>
<xsl:variable name="singleQuote">'</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