Hi, you can also try here for a replacement template (GlobalReplace)
http://www.xml.com/pub/a/2002/06/05/transforming.html
hth
Camille
-----Original Message-----
From: Michael Kay [mailto:michael(_dot_)h(_dot_)kay(_at_)ntlworld(_dot_)com]
Sent: mercredi 4 décembre 2002 17:33
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: RE: [xsl] Problem using translate to escape quotes
The translate() function replaces one character with one character -
read the spec. For solutions for a multi-character replace,
see the FAQ
under keyword "replace".
Michael Kay
Software AG
home: Michael(_dot_)H(_dot_)Kay(_at_)ntlworld(_dot_)com
work: Michael(_dot_)Kay(_at_)softwareag(_dot_)com
-----Original Message-----
From: owner-xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
[mailto:owner-xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com] On Behalf
Of
Kevin Collins
Sent: 04 December 2002 15:43
To: XSL-List(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: [xsl] Problem using translate to escape quotes
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
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list