使用XSLT在本地链接XML到HTML页面

时间:2015-07-21 17:01:02

标签: html xml xslt

我正在尝试关注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">

但这对我本地不起作用,有什么建议吗?

1 个答案:

答案 0 :(得分:0)

XSLT文件不知道您要使用xml.xml。相反,XML文件知道您要使用xslt.xslt

将此行添加为xml.xml文件的第二行:

<?xml-stylesheet href="xslt.xslt" type="text/xsl" ?>

另请注意,Chrome不喜欢将XSL与file://样式的网址一起使用。使用非Chrome浏览器或使用http://网址。