2012-07-22 69 views
0

任何幫助將讚賞這個簡單的(我希望)的問題。該xsl:for-each失敗添加一個命名空間這個XML文檔後發現任何元素:XSL命名空間添加後沒有元素

<?xml version="1.0" encoding="ISO-8859-1"?> 
    <?xml-stylesheet type="text/xsl" href="cdsort.xsl"?> 
    <catalog xmlns="http://www.mycompany.com/test" > 
     <cd> 
     <title>Empire Burlesque</title> 
     <artist>Bob Dylan</artist> 
     </cd> 
     <cd> 
     <title>Tupelo Honey</title> 
     <artist>Van Morrison</artist> 
     </cd> 
    </catalog> 

這裏是XSL代碼:

<?xml version="1.0" encoding="ISO-8859-1"?> 
<xsl:stylesheet version="1.0" 
    xmlns:vv="http://www.mycompany.com/test" 
    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>Title</th> 
     <th>Artist</th> 
     </tr> 
     <xsl:for-each select="vv: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> 

+0

是的,這是一個簡單的問題;幾乎每天都有人問這個名單上的人。 Google for XSLT默認名稱空間。 – 2012-07-22 21:47:45

回答

0

你設置了默認的命名空間爲全所以xpaths中的子元素也需要一個前綴:

<xsl:for-each select="vv:catalog/vv:cd"> 
    <tr> 
    <td><xsl:value-of select="vv:title" /></td> 
    <td><xsl:value-of select="vv:artist" /></td> 
    </tr> 
</xsl:for-each> 
+0

謝謝。好的,我做了改變,但在表標題後仍然沒有輸出 – Zampassas 2012-07-22 19:43:51

+0

它適用於我,我已將「for-each」循環的工作版本放入答案中。 – 2012-07-22 19:59:25

+0

是的!我忽略了CD上的前綴。非常感謝! – Zampassas 2012-07-22 20:04:41