Re: [xsl] escaping quotes in a translate()

Subject: Re: [xsl] escaping quotes in a translate()
From: Wendell Piez <wapiez@xxxxxxxxxxxxxxxx>
Date: Fri, 26 Mar 2004 17:34:31 -0500
Dan,

The trick is to mask the troublesome characters in such a way that once the XML parser gets through with them, they still make XPath.

A character reference masks the literal from the XML syntax so it can be parsed, but parsing turns it into the corresponding character, so it can still be botched down in the XPath.

The usual workaround (and easiest to understand) is to sneak them in as variables. Given variable references in lieu of the characters, the only quotes the XPath parser sees is the delimiters it expects.

So try

<xsl:variable name="apos" select="'&apos;'"/>
<xsl:variable name="quot" select="'&quot;'"/>

and then

translate( $sourceString,
           '&#x2019;&#x201D;&#x201C;&#x2018;',
            concat($apos,$quot,$apos,$quot) ) )

I hope that helps,
Wendell

At 05:09 PM 3/26/2004, you wrote:
I would like to use the translate function to convert curly quotes to their ASCII counter part, but I'm having troubles getting them accepted. I've always thought that you use double, single then entity references or single double then entity references to deal with nested quoting issues but that isn't working here.

Here is what I want to use:

<xsl:value-of select="normalize-space(
                        translate( $sourceString,
                                '&#x2019;&#x201D;&#x201C;&#x2018;',
                                '&apos;&quot;&apos;&quot;'
                                )
                        )" />

I get errors about unmatched quotes if I change the order or in this case "Expected a )"

I don't just want to delete these characters, I would like to replace them with ASCII ok values.


..dan --------------------------------------------------------------------------- Danny Vint http://www.dvint.com


======================================================================
Wendell Piez                            mailto:wapiez@xxxxxxxxxxxxxxxx
Mulberry Technologies, Inc.                http://www.mulberrytech.com
17 West Jefferson Street                    Direct Phone: 301/315-9635
Suite 207                                          Phone: 301/315-9631
Rockville, MD  20850                                 Fax: 301/315-8285
----------------------------------------------------------------------
  Mulberry Technologies: A Consultancy Specializing in SGML and XML
======================================================================

Current Thread