RE: [xsl] Problem using translate to escape quotes

Subject: RE: [xsl] Problem using translate to escape quotes
From: "El Hage Camille" <CAMILLE.ELHAGE@xxxxxxxxxxxxxxxx>
Date: Wed, 4 Dec 2002 17:39:20 +0100
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.h.kay@xxxxxxxxxxxx]
> Sent: mercredi 4 décembre 2002 17:33
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> 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.H.Kay@xxxxxxxxxxxx
> work: Michael.Kay@xxxxxxxxxxxxxx 
> 
> > -----Original Message-----
> > From: owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx 
> > [mailto:owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx] On Behalf Of 
> > Kevin Collins
> > Sent: 04 December 2002 15:43
> > To: XSL-List@xxxxxxxxxxxxxxxxxxxxxx
> > 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">&#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
> > 
> 
> 
>  XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
> 
> 

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


Current Thread