[xsl] Transforming double quotes

Subject: [xsl] Transforming double quotes
From: "Aaron Johnson" <artpunx@xxxxxxxxx>
Date: Mon, 23 Jun 2008 16:15:53 +0100
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