[xsl] Output in XML / HTML, double tags and CDATA in script.

Subject: [xsl] Output in XML / HTML, double tags and CDATA in script.
From: Соловьев Андрей <solovev@xxxxxxxxxxxxxx>
Date: Tue, 17 Feb 2009 20:20:47 +0300
Hi. I have such XSLT code:

<?xml version="1.0"?>
<xsl:stylesheet
version="1.0"
xmlns="http://www.w3.org/1999/xhtml";
xmlns:php="http://php.net/xsl";
xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>


<xsl:output method="html" encoding="utf-8" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"; doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN" indent="yes" />

<xsl:template match="/">
 <html>
  <body>
   <script language="Javascript">
     if(1 == 1 &amp; 2 == 2)
      alert(1);
   </script>
   <br/>
   <img src="test.jpg"/>
  </body>
 </html>
</xsl:template>
</xsl:stylesheet>

When i'm using output method="html", i have <br/> and <img/> tags transformed to <br></br> and <img></img>. This makes big problems, such as IE and Opera makes two newlines on <br></br> and FF only one.
So i put output method="xml" and <br/> tag remains the same. But CDATA appears in <script>. It looks like
<script language="Javascript"><![CDATA[
if(1 == 1 & 2 == 2)
alert(1);
]]></script>
in result html. And this is javascript error.
Is there any way to solve this problem? I need "<br/>" style tags in my result html and working script.


I'm using Apache and PHP XSLT transform. phpinfo: libxslt Version 1.1.17 libxslt compiled against libxml Version 2.6.26 EXSLT enabled libexslt Version 0.8.13

Current Thread