Internet explorer 使用XSL的浏览器行为-Firefox不同于IE/Chrome

Internet explorer 使用XSL的浏览器行为-Firefox不同于IE/Chrome,internet-explorer,firefox,safari,xslt,Internet Explorer,Firefox,Safari,Xslt,我有以下简单的XSL样式表: <?xml version="1.0" encoding="windows-1252"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" version="1.0"> <xsl:output encoding="utf-8" method="html" /> &l

我有以下简单的XSL样式表:

<?xml version="1.0" encoding="windows-1252"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
 xmlns="http://www.w3.org/1999/xhtml" version="1.0">
  <xsl:output encoding="utf-8" method="html" />

  <xsl:template match="/">

    <xsl:text disable-output-escaping="yes">
    &lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"&gt;
      </xsl:text>
    <html>
      <head><title>hello world</title></head>
      <body>
        <p>hello world</p>
        </body>
      </html>
    </xsl:template>

  </xsl:stylesheet>

!DOCTYPE html PUBLIC“-//W3C//DTD XHTML 1.0 Strict//EN”
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"
你好,世界
你好,世界

当我使用它时,InternetExplorer7和Safari5.0.2都会像预期的那样显示“HelloWorld”。但是,Firefox 3.6.10显示了一些不同的内容:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

hello world

你好,世界
我猜Firefox是从字面上理解了第一个xsl:text命令,而IE和Safari则将其视为页面的一部分。IE和Safari是否正确呈现了这一点,还是Firefox


(我正在执行xsl:text操作,以使MSXML库输出符合HTML5的正确标记。)

现代浏览器不需要为标准模式渲染输出DOCTYPE声明。只有IE有一些问题:它在标准模式下渲染,但失去了CSS引擎的新特性(例如IE7回滚到IE6)

xsl:output
声明是最好的工具,但是一些Opera版本在使用带有公共和系统标识符的输出声明时,在
fn:document
方面存在一些问题。我应该测试Opera 10.X,因为Opera 9.X的市场份额非常低


唯一的解决方法是像您那样输出DOCTYPE声明(DOE文本),但仅限于IE:您可以使用
系统属性
函数测试
xsl:vendor

我刚刚尝试了Opera 10.62,显然它根本不想显示任何xsl。有什么秘密诀窍可以让它发挥作用吗?@Colen:我有一个旧的XML/XSLT驱动的跨浏览器网站。请随意重用此代码。