Internet explorer 使用XSL的浏览器行为-Firefox不同于IE/Chrome
我有以下简单的XSL样式表: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
<?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">
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
</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驱动的跨浏览器网站。请随意重用此代码。