XML到XSL加载样式表时出错:解析XSLT样式表失败

时间:2015-07-23 02:16:52

标签: html xml xslt

尝试使用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>

有人可以在这里看到错误吗?

2 个答案:

答案 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>