我有以下XML:
<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" href="http://www.fakedomain.com/sally.xsl"?>
以及sally.xsl中的以下内容:
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<xsl:for-each select="documentcollection/document">
<p>
<xsl:for-each select="rss/channel/item">
<xsl:value-of select="title"/><br />
<xsl:value-of select="description"/><br />
<xsl:value-of select="link"/><br />
</xsl:for-each>
</p>
</xsl:for-each>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
但是,浏览器显示XML,就好像XSL行不存在一样。你知道为什么浏览器会忽略XSL样式表吗?样式表是错误的吗?
由于
答案 0 :(得分:2)
我有以下XML:
<?xml version="1.0" encoding="ISO-8859-1"?> <?xml-stylesheet type="text/xsl" href="http://www.fakedomain.com/sally.xsl"?>
这不是格式良好的XML文档(没有顶级元素存在),因此浏览器不会这样对待它并不是很令人惊讶。
<强>解决方案强>:
将您的“XML”更新为格式正确的XML文档,例如:
<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" href="file:///c:/temp/delete/xxx.xsl"?>
<t/>
在c:\temp\delete\xxx.xsl
中使用此样式表:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="/">
XXX
</xsl:template>
</xsl:stylesheet>
当使用IE打开XML文件时,浏览器会显示转换结果:
XXX
答案 1 :(得分:0)
看起来你没有关闭一个for-each标签吗?
答案 2 :(得分:0)
xsl:for-each
的{{1}}循环未关闭。
答案 3 :(得分:0)
可能是same origin policy安全限制。如果您的XML和XSLT未托管在同一位置,那么浏览器可能会拒绝获取XSLT并将其应用于您的XML文件。