2015-04-05 206 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