尝试使用XSL转换XML文档时出现此错误。我刚刚开始使用XML进行编码,所以我确信我遗漏了一些简单的东西,但似乎无法在网上找到很多关于它的信息。
Booklist.XML
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="booklist.xsl"?>
<CATALOG>
<BOOK>
<NAME>
<TITLE>Caring for Sheep</TITLE>
</NAME>
<PAGES> 60 </PAGES>
<PRICE>$34.99</PRICE>
</BOOK>
</CATALOG>
我的XSL文件:
Booklist.XSL
<?xml version="1.0"?>
<body style="font-family:Arial;font-size:12pt;background-color:#EEEEEE">
<xsl:for-each select="CATALOG/BOOK/NAME">
<div style="background-color:teal;color:white;padding:4px">
<a href="details.html"><xsl:value-of select="name">;</a>
</div>
</xsl:for-each>
<xsl:for-each select="CATALOG/BOOK">
<div style="background-color:teal;color:white;padding:4px">
</div>
</xsl:for-each>
</body>
有人可以在这里看到错误吗?
答案 0 :(得分:0)
通过将文字结果元素<body>
置于任何模板之外,而不是顶层,您可以将Literal Result Element as Stylesheet简化语法与常规语法混合使用。如果您想使用此简化语法,请删除<xsl:stylesheet>
和<xsl:output>
元素,以使<body>
位于顶层。
此外,XML和XPath在元素名称方面是区分大小写的,因此您需要修复例如元素之间的不一致性。 “目录”和<CATALOG>
。
答案 1 :(得分:0)
好吧,如果由于某些原因而难以弄清楚简化语法并不适合你,我会建议使用&#34;正常编码&#34;,这在你的情况下:
<?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">
<xsl:template match="/">
<body style="font-family:Arial;font-size:12pt;background-color:#EEEEEE">
<xsl:for-each select="/CATALOG/BOOK/NAME">
<div style="background-color:teal;color:white;padding:4px">
<a href="details.html"><xsl:value-of select="name"/></a>
</div>
</xsl:for-each>
<xsl:for-each select="/CATALOG/BOOK">
<div style="background-color:teal;color:white;padding:4px">
</div>
</xsl:for-each>
</body>
</xsl:template>
</xsl:stylesheet>