2015-04-05 209 views
0

我是一名XML初学者。我使用Kevin Howard Goldberg的书“XML:Visual Quickstart Guide”。我刚学会如何使用XSLT转换XML文件。您在代码中看到的所有内容都是我迄今为止所了解的关于XML和XSLT的知识。XSLT不会呈现HTML标记

我想作一个HTML表,其中的XML数据,像这样:

http://www.w3schools.com/xsl/tryxslt.asp?xmlfile=cdcatalog&xsltfile=cdcatalog

,但它只能说明我在一个行的数据,而无需渲染HTML标签:

http://i.stack.imgur.com/QLECw.jpg

那么,为什么我的代码不工作?

这是我的XML代码:

<?xml version="1.0" encoding="UTF-8"?> 
<?xml-stylesheet content-type="application/xml" href="page2_xslt.xsl"?> 
<favNumbers> 
    <song> 
     <title>Song 1</title> 
     <artist>Artist 1</artist> 
    </song> 
    <song> 
     <title>Song 2</title> 
     <artist>Artist 2</artist> 
    </song> 
    <song> 
     <title>Song 3</title> 
     <artist>Artist 3</artist> 
    </song> 
    <song> 
     <title>Song 4</title> 
     <artist>Artist 4</artist> 
    </song> 
</favNumbers> 

这是我的XSLT代码:

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output method="html" /> 
<xsl:template match="/"> 
<html> 
    <head> 
     <title>Favorite Songs</title> 
    </head> 
    <body> 
     <table> 
      <tr> 
       <th>Favorite Songs</th> 
      </tr> 
      <tr> 
       <th>Title</th> 
       <th>Artist</th> 
      </tr> 
      <xsl:for-each select="favNumbers/song"> 
      <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> 

它变得很无奈了。我错过了一个报价,一个逗号或其他什么?或者是更复杂的东西。我在许多网站上搜索了一个答案,但我找不到一个,也许是因为英语不是我的第一语言。所以请帮助我。

谢谢:)

+0

从你的问题的源代码剪切并粘贴到相应的从你的例子的w3school操场上的textareas为我工作。显示列标题的正确结果。我正在使用Chrome。 – 2015-04-05 19:32:31

回答

1

尝试在XML改变这一部分:

<?xml-stylesheet content-type="application/xml" href="page2_xslt.xsl"?> 

到:

<?xml-stylesheet type="text/xsl" href="page2_xslt.xsl"?> 
+0

谢谢你的回答!它解决了我在IE和FireFox中遇到的问题,但不是在Chrome中,但我发现这是Chrome中的某种安全问题。我知道Chrome无法在客户端XML + XSLT文件中呈现HTML标记。所以我上传到我的测试网站,它的工作:) – 2015-04-05 20:27:20