Subject: [xsl] Re: Escaping quotes in XPath expressions From: "Dimitre Novatchev" <dnovatchev@xxxxxxxxx> Date: Sat, 15 Nov 2003 14:53:06 +0100 |
> Can anyone please tell me how I can escape a single-quote in an XPath expression > such as the one below? > > <xsl:value-of select="translate(normalize-space(.), 'x', 'y')"/> > > If I use 'x' and 'y' as the search and replace arguments, everything works well. But I > need to search for single-quotes and replace them with backslash + single-quote. In > other words, my XPath expression would look something like this: > > translate(normalize-space(.), ''', '\'') translate() can only translate a character into another character or to nothing. It is not possible using translate() to translate a character into two or more characters. For such tasks it is convenient to use the "str-map" template from FXSL. This transformation: <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:escape="my:escape" exclude-result-prefixes="xsl escape" > <xsl:import href="str-map.xsl"/> <xsl:output method="text"/> <xsl:variable name="vQ">'</xsl:variable> <xsl:template match="/"> <xsl:variable name="vEscape" select="document('')/*/escape:*[1]"/> <xsl:call-template name="str-map"> <xsl:with-param name="pFun" select="$vEscape"/> <xsl:with-param name="pStr">a'b'c'd</xsl:with-param> </xsl:call-template> </xsl:template> <escape:escape/> <xsl:template name="excape" match="escape:*"> <xsl:param name="arg1"/> <xsl:if test="$arg1 = $vQ">\</xsl:if> <xsl:value-of select="$arg1"/> </xsl:template> </xsl:stylesheet> when performed (on any source.xml -- not used) produces the wanted result: a\'b\'c\'d ===== Cheers, Dimitre Novatchev. http://fxsl.sourceforge.net/ -- the home of FXSL XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] Escaping quotes in XPath , Michael Kay | Thread | [xsl] xsl:include, Kevin Waterson |
RE: [xsl] Escaping quotes in XPath , Michael Kay | Date | RE: [xsl] Can anyone point me in th, Patricia LaRue |
Month |