以下内容返回浏览器:
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="to_xhtml.xslt"?>
<root>
<value>test data</value>
</root>
Chrome 7和FF 5不应用仅显示XML值的XSLT . IE确实应用了显示结果XHTML的XSLT .
XSLT文件在那里并且是有效的 - 我可以在本地处理XML并在Chrome和Firefox中打开生成的XHTML ...
Web服务器是IIS 6,接口是PHP 5.3,如果它有任何东西吗?
UPDATE: 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>
2 回答
在这种情况下,您需要确保为页面提供正确的HTTP Content-Type 标头值: text/xml ,可以在PHP中使用标头函数:
*感谢meder带领我朝着正确的方向前进 .
Also 在Chrome和Safari中,由于上述doctype-public值,在应用XSLT时仍会出现错误:
它应该是:
如果根据spec没有指定doctype-system,则甚至不应该查看doctype-public属性 .
*感谢LarsH指出doctype-system应该是一个单独的值 .
关于 doctype-public 属性:根据spec,
所以对于你的
<xsl:output-method>
元素来说非常可疑,它有一个doctype-public属性但没有doctype-system . (这不能成为Chrome和Safari从"falling over" ... =崩溃的借口吗?)也许你想要
有关XML中的公共和系统标识符的更多信息,请参见here .
显然这不是Fx和Chrome不能使用XSLT呈现XML的原因(内容类型是原因),但这可能是您想要解决的问题 .