我正在尝试关注xslt的W3Schools上的基本示例。
xml.xml:
<?xml version="1.0" encoding="UTF-8"?>
<catalog>
<cd>
<title>Hide your heart</title>
<artist>Bonnie Tyler</artist>
<country>UK</country>
<company>CBS Records</company>
<price>9.90</price>
<year>1988</year>
</cd>
<cd>
<title>Greatest Hits</title>
<artist>Dolly Parton</artist>
<country>USA</country>
<company>RCA</company>
<price>9.90</price>
<year>1982</year>
</cd>
</catalog>
xslt.xslt:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<h2>My CD Collection</h2>
<table border="1">
<tr bgcolor="#9acd32">
<th style="text-align:left">Title</th>
<th style="text-align:left">Artist</th>
</tr>
<xsl:for-each select="catalog/cd">
<tr>
<td><xsl:value-of select="title"/></td>
<td><xsl:value-of select="artist"/></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
每当我尝试在W3Schools之外本地执行此操作时,它都不起作用,会出现以下错误。
此XML文件似乎没有与之关联的任何样式信息。文档树如下所示。
查看堆栈溢出我似乎无法找到我的特定查询的答案,因为这应该是非常简单的。
我的问题是:xslt文件如何知道我希望它使用xml.xml作为匹配的xml?
逻辑上你会认为你必须将它包含在xslt文件中。当我环顾四周时,我看到人们会做以下事情:
xml.xml:
<?xml version="1.0"?>
<?xml-stylesheet href="xsl.xsl" type="text/xsl" ?>
xsl.xsl:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
exclude-result-prefixes="xs"
version="1.0">
但这对我本地不起作用,有什么建议吗?
答案 0 :(得分:0)
XSLT文件不知道您要使用xml.xml
。相反,XML文件知道您要使用xslt.xslt
。
将此行添加为xml.xml
文件的第二行:
<?xml-stylesheet href="xslt.xslt" type="text/xsl" ?>
另请注意,Chrome不喜欢将XSL与file://
样式的网址一起使用。使用非Chrome浏览器或使用http://
网址。