Transformiix不支持disable-output-escaping的解决方法

Transformiix不支持disable-output-escaping的解决方法   
  
最近写了一个多浏览器兼容的XSLT程序,主要问题集中在disable-output-escaping的支持上,发表一下看法,大家一起讨论。   
  
我接触到的内嵌在浏览器中的XSLT Processor主要是两种:MSIE的MSXML;包括Netscape、Mozilla、Firefox等浏览器用的都是Mozilla的Transformiix。   
在http://www.w3.org/TR/xslt对XSLT的标准中,   
http://www.w3.org/TR/xslt#output提到:“An XSLT processor may output the result tree as a sequence of   
bytes, although it is not required to be able to do so[17   
Conformance]“   
http://www.w3.org/TR/xslt#disable-output-escaping:“An XSLT processor is not required to support disabling   
output escaping.“   
很不幸,Transformiix不支持disable-output-escaping   
  
由于在我的XML文件中,需要在浏览器上正常显示CDATA中的HTML代码,这在MSIE中,调用disable-output-escaping当然没有问题,但是既然要多浏览器兼容,就不得不考虑在Transformiix中的情况,其实这完全可以通过javascript解决,国外网站上已经有了一些解决方案,结合我的实际情况,下面给出实例代码:   
<?xml version="1.0"?>  
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">  
  
  <xsl:output method="html" encoding="GB2312" indent="yes"/>  
  
  <xsl:template match="/">  
    <xsl:apply-templates/>  
  </xsl:template>  
  
  <xsl:template match="mynode">  
    <html>  
      <head>  
        <title>  
        </title>  
      </head>  
      <body>  
        <center id="content">  
           <xsl:apply-templates select="text"/>  
         </center>  
      </body>  
   </html>  
  </xsl:template>  
  
  <xsl:template match="text">  
    <xsl:value-of disable-output-escaping="yes" select="."/>  
    <xsl:if test="system-property('xsl:vendor')='Transformiix'">  
      <script language="JavaScript">  
        var el = document.getElementById("content");   
        elel.innerHTML = el.firstChild.data;   
      </script>  
    </xsl:if>  
  </xsl:template>  
</xsl:stylesheet>  
是不是很简单,呵呵    
  

 

posted on 2008-12-30 09:56  starspace  阅读(295)  评论(1编辑  收藏  举报

导航