1

I have the following code in my xsl file

<script type="text/javascript">
    var div = document.createElement("div");
    div.innerHTML = "<!--[if lt IE 9]><i></i><![endif]-->";
</script>

After transformation I'm getting empty div.innerHTML

<script type="text/javascript">
    var div = document.createElement("div");
    div.innerHTML = "";
</script>

How to preserve <!--[if lt IE 9]><i></i><![endif]--> in the output html file?

TOP KEK
  • 2,593
  • 5
  • 36
  • 62

2 Answers2

0

You might try simply encoding the < characters along with a <xsl:text> block:

<script type="text/javascript">
<xsl:text disable-output-escaping="yes">
    var div = document.createElement("div");
    div.innerHTML = "&lt;!--[if lt IE 9]><i></i>&lt;![endif]-->";
</xsl:text>
</script>

Or using a CDATA block:

<script type="text/javascript">
<xsl:text disable-output-escaping="yes">
<![CDATA[
    var div = document.createElement("div");
    div.innerHTML = "<!--[if lt IE 9]><i></i><![endif]-->";
]]>
</xsl:text>
</script>

Or perhaps you could even use a <xsl:comment> node, like this

<script type="text/javascript">
    var div = document.createElement("div");
    div.innerHTML = "<xsl:comment><xsl:call-template name="iecc"/></xsl:comment>";
</script>

<xsl:template name="iecc">[if lt IE 9]>&lt;i>&lt;/i>&lt;![endif]</xsl:template>
p.s.w.g
  • 146,324
  • 30
  • 291
  • 331
0

Ok, I found solution. I had to use both CDATA and <xsl:comment>

<script type="text/javascript">
    var div = document.createElement("div");
    div.innerHTML = "<xsl:comment><![CDATA[ [if lt IE 9]><i></i><![endif] ]]></xsl:comment>";
</script>
Community
  • 1
  • 1
TOP KEK
  • 2,593
  • 5
  • 36
  • 62