xslt将xml转换为html

时间:2016-06-07 19:37:17

标签: html xml xslt

我有2个文件,xml和xsl。我想使用xslt获取xml数据并转换为html表。下面的代码在Chrome中不起作用,我不知道为什么,有关如何正确使用xslt和/或替代xslt的任何建议?

的test.xml

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="style.xsl"?>
<catalog>
    <cd>
        <title>Empire Burlesque</title>
        <artist>Bob Dylan</artist>
        <country>USA</country>
        <company>Columbia</company>
        <price>10.90</price>
        <year>1985</year>
    </cd>
    <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>`

style.xsl

xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:stylesheet version="1.0"     xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="xml" indent="yes"/>
  <html>
  <body>
    <h2>My CD Collection</h2>
    <table border="1">
      <tr bgcolor="#9acd32">
        <th>Title</th>
        <th>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>`

2 个答案:

答案 0 :(得分:1)

首先,您的XSLT缺少xsl:template指令的开始标记:

<xsl:template match="/">

另一方面,在Chrome中本地运行XSLT存在固有问题 - 请参阅:https://stackoverflow.com/a/3839054/3016153(和其他人)。

答案 1 :(得分:1)

您可以在服务器端使用XSLT并直接提供HTML内容,这样您就不必担心浏览器了。

我已经在java中做过了,但我很确定你也有其他语言的XSLT引擎。