Kevin Collins wrote:
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.
Kevin,
The translate function does single character replacement. To get what you
want, you need to use some of the other string functions. Lokk at
starts-with(), concat(), contains, substring-before(), etc. Since you have
multiple occurences of the quote character, you will probably need to build a
recursive template to get them all.
jeff
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>
--------------------------------------------
--
--------------------------
Jeff Kenton
DataPower Technology, Inc.
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list