Chrome、Firefox和Safari没有应用XSLT?是的!
以下内容将返回到浏览器:Chrome、Firefox和Safari没有应用XSLT?是的!,firefox,google-chrome,xslt,safari,Firefox,Google Chrome,Xslt,Safari,以下内容将返回到浏览器: <?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="to_xhtml.xslt"?> <root> <value>test data</value> </root> 测试数据 Chrome7和FF5不应用XSLT,只显示XML值。IE确实应用了显示结果XHTML的XSLT XSLT
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="to_xhtml.xslt"?>
<root>
<value>test data</value>
</root>
测试数据
Chrome7和FF5不应用XSLT,只显示XML值。IE确实应用了显示结果XHTML的XSLT
XSLT文件在那里并且是有效的-我可以在本地处理XML并在Chrome和Firefox中打开生成的XHTML
web服务器是IIS 6,接口是PHP5.3,如果这与它有关的话
更新:XSLT:
<?xml version='1.0'?>
<xsl:stylesheet
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns="http://www.w3.org/1999/xhtml">
<xsl:output
method='xml'
indent='yes'
doctype-public='"-//W3C//DTD XHTML Basic 1.1//EN"
"http://www.w3.org/TR/xhtml-basic/xhtml-basic11.dtd"'/>
<xsl:template match="/root">
<html>
<head>
<title>
</title>
</head>
<body>
<p>
<xsl:value-of select="value"/>
</p>
...
</html>
...
您需要确保为页面提供正确的HTTP内容类型标题值,在这种情况下:text/xml,在PHP中可以使用标题函数:
header('Content-type: text/xml');
echo $xmlStr;
*多亏了梅德尔,他为我指引了正确的方向
另外在Chrome和Safari中,由于上述doctype公共值,应用XSLT时仍会发生错误:
<xsl:output
method='xml'
indent='yes'
doctype-public='"-//W3C//DTD XHTML Basic 1.1//EN"
"http://www.w3.org/TR/xhtml-basic/xhtml-basic11.dtd"'/>;
;
应该是:
<xsl:output
method="xml"
indent="yes"
doctype-public="-//W3C//DTD XHTML Basic 1.1//EN"
doctype-system="http://www.w3.org/TR/xhtml-basic/xhtml-basic11.dtd"/>
如果doctype系统未根据指定的属性指定,则甚至不应查看doctype public属性
*感谢LarsH指出doctype系统应该是一个单独的值。关于doctype public属性:根据 doctype public属性应为 除非doctype系统 属性被指定 因此,您的
元素有一些可疑之处,它有一个doctype公共属性,但没有doctype系统。(这并不是Chrome和Safari“摔倒”的借口…=撞车?)
也许你想要
<xsl:output
method="xml"
indent="yes"
doctype-public="-//W3C//DTD XHTML Basic 1.1//EN"
doctype-system="http://www.w3.org/TR/xhtml-basic/xhtml-basic11.dtd" />
有关XML中的公共和系统标识符的更多信息,请参阅
显然,这不是Fx和Chrome不使用XSLT呈现XML的原因(内容类型是原因),但这可能是您需要解决的问题。1。初始文件的内容类型是什么?2.显示xslt。@meder 1。php返回的默认值:text/html(来自Live HTTP头),我猜应该是text/xml?2.上面XSLT的顶部。您是否尝试过
method='html'
有用的答案,+1。另请参阅我关于修改doctype-public值的回答。Fx和Chrome未呈现的原因是内容类型,此外(在修改内容类型后),Chrome和Safari将崩溃(停止应用XSLT并显示错误消息,显示迄今为止生成的XHTML-在本例中为零)应用XSLT是因为我的第一个doctype公共值,颠倒撇号和引号解决了这个错误。但是,正如您所指出的,我应该将doctype系统与doctype公共值分开-谢谢!我会更新我的答案。