2015-12-08 65 views
1

所以我有一個簡單的xml與一些電影。我正在嘗試執行一些xslt代碼以將其格式化爲表格。現在,教授堅持使用每個循環的流派,我覺得很奇怪,但沒問題。無論如何它我不能得到的唯一工作,我已經減少了我的代碼,以裸露的骨頭,請看看,並告訴我,我錯了:xsl:for-each的值不生成輸出

<?xml version="1.0" encoding="utf-8"?> 
 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
 
    xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl"> 
 
    <xsl:output method="html" indent="yes"/> 
 
\t 
 
    <xsl:template match="/"> 
 
    <html><head></head><body> 
 
\t 
 
\t <table border="1" cellspacing="0" cellpadding="10"> 
 
\t <th style="background-color:lightgray">Title</th> 
 
\t <th style="background-color:lightgray">Director</th> 
 
\t <th style="background-color:lightgray">Genre</th> 
 
\t 
 
\t <xsl:for-each select="movies/movie"> 
 
\t <tr> 
 
\t \t <td> 
 
\t \t \t <xsl:value-of select"title"> 
 
\t \t </td> 
 
\t \t 
 
\t \t <td> 
 
\t \t \t <xsl:value-of select"director"> 
 
\t \t </td> 
 
\t \t 
 
\t \t <td> 
 
\t \t \t <xsl:for-each select="genre"> 
 
\t \t \t \t 
 
\t \t \t \t \t <xsl:value-of select="genre"/> 
 
\t \t \t \t 
 
\t \t \t </xsl:for-each> 
 
\t \t </td> 
 
\t </tr> \t 
 
\t </xsl:for-each> \t 
 
\t 
 
\t </table> 
 
\t </body></html></xsl:template> 
 
\t </xsl:stylesheet>

這裏是在xml:

<?xml version="1.0" encoding="UTF-8"?> 
 
<?xml-stylesheet type="text/xsl" href="Movies2.xslt"?> 
 
    
 
<movies> 
 
\t 
 
\t <!-- 1 --> 
 
    <movie>  
 
      
 
     <title>Schindler's List</title> 
 
     <director>Steven Spielberg</director> 
 
     <genre>Biography, </genre> 
 
\t \t <genre>Drama, </genre> 
 
\t \t <genre>History</genre> 
 
\t 
 
    </movie> 
 
    
 
</movies>

+0

你的教授可以強制他對他的學生們喜歡的任何限制,但請不要試圖強加給我們。我們在這裏幫助您生成良好的工作代碼,而不是幫助您實現學習計劃中的下一個複選框。 –

回答

1

我看到2個問題:

  1. 您的xsl:value-of元素中的兩個元素格式不正確。您需要關閉它們,並且select屬性應具有=
  2. 在你的內心xsl:for-each中,你選擇genre,這是新的上下文。 select應該是.which selects the context node)。

實例(也可以在這裏看到http://xsltransform.net/94rmq6m):

<xsl:for-each select="movies/movie"> 
    <tr> 
    <td> 
     <xsl:value-of select="title"/> 
    </td> 

    <td> 
     <xsl:value-of select="director"/> 
    </td> 

    <td> 
     <xsl:for-each select="genre"> 

     <xsl:value-of select="."/> 

     </xsl:for-each> 
    </td> 
    </tr> 
</xsl:for-each> 
+0

這應該感謝您的幫助。 –