RE: [xsl] Transforming double quotes

Subject: RE: [xsl] Transforming double quotes
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Mon, 23 Jun 2008 17:48:11 +0100
XSLT 2.0 makes it clear that the HTML serialization method is not supposed
to do this.

XSLT 1.0 leaves such decisions rather more to the discretion of the
implementor. If your product is doing this, I can't think of any way of
preventing it.

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

> -----Original Message-----
> From: Aaron Johnson [mailto:artpunx@xxxxxxxxx] 
> Sent: 23 June 2008 16:16
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: [xsl] Transforming double quotes
> 
> 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