RE: [xsl] Transforming double quotes

Subject: RE: [xsl] Transforming double quotes
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Mon, 23 Jun 2008 17:48:10 +0100
> You need to escape your quotes. 

In the stylesheet, as in any XML document, the following are 100%
equivalent:

<x>"</x>

<x>&quot;</x>

<x><![CDATA["]]></x>

Therefore please do not imagine that using one of these input forms in
preference to another will affect the output of the stylesheet in any way.

Michael Kay
http://www.saxonica.com/

 

> -----Original Message-----
> From: Darcy Parker [mailto:darcyparker@xxxxxxxxx] 
> Sent: 23 June 2008 16:27
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: Re: [xsl] Transforming double quotes
> 
> Hi Aaron,
> 
> You need to escape your quotes.  Michael Kay and others have 
> answered questions about escaping quotes before... For example:
> http://www.biglist.com/lists/xsl-list/archives/200604/msg00460.html
> 
> With regards to your script... I am not sure how you 
> formatted the CDATA... but the following is what most people do:
> 
> <script type="text/javascript">
> //<![CDATA[
> 
> //]]>
> </script>
> 
> 
> 
> On Mon, Jun 23, 2008 at 11:15 AM, Aaron Johnson 
> <artpunx@xxxxxxxxx> wrote:
> > Hi!
> >
> > I am having a problem passing double quotes. I am trying to output 
> > some javascript inside a template, when the template is transformed 
> > the double quotes come through as &quot; in the resulting html.
> >
> > Here is the template...
> >
> > <xsl:template name="analytics">
> >        <xsl:param name="virtualPage">
> >                <!--Focused primary tab-->
> >                <xsl:text>/</xsl:text>
> >                <xsl:value-of select="//focusedTab/@name"/>
> >                <xsl:if test="count(//folder) &gt; 1">
> >                        <!--Focused sub tab-->
> >                        <xsl:text>/</xsl:text>
> >                        <xsl:value-of
> > select="//layout/subtabs/folder/folder[@isFocused='true']/@name"/>
> >                </xsl:if>
> >                <xsl:if test="//focusedContent">
> >                        <!--Maximised channel-->
> >                        <xsl:text>/</xsl:text>
> >                        <xsl:value-of 
> select="//focusedContent/channel/@name"/>
> >                </xsl:if>
> >                <xsl:text>.htm</xsl:text>
> >        </xsl:param>
> >        <script type="text/JavaScript">
> >                var gaJsHost = (("https:" == 
> document.location.protocol) ?
> > "https://ssl."; : "http://www.";);
> >                document.write(unescape("%3Cscript src='" + 
> gaJsHost + 
> > "google-analytics.com/ga.js'
> > type='text/javascript'%3E%3C/script%3E"));
> >        </script>
> >        <script type="text/javascript">
> >                var pageTracker = _gat._getTracker("UA-554771-3");
> >                pageTracker._initData();
> >                pageTracker._trackPageview("<xsl:value-of 
> select="$virtualPage"/>");
> >        </script>
> >        </xsl:template>
> >
> > Here is a smaple of the result...
> >
> > var gaJsHost = ((&quot;https:&quot; == document.location.protocol) ?
> > &quot; ....etc etc
> >
> > I have tried adding a CDATA wrapping element as well as coding the 
> > quotes as numeric entities and putting the whole thing in xsl:text 
> > elements with an added escaping output attribute.....all 
> unsuccessful.
> >
> > Can anyone point me in the right direction?
> >
> > Thanks in advance!
> >
> > Aaron.

Current Thread