2014-05-07 29 views
4

我似乎無法得到這個嵌套for循環正常工作,我想打印所有的EP在EP名稱和其他細節行的軌道。第一個for-each循環中的所有內容都能正確顯示,但for-each循環沒有任何內容可以獲取曲目。嵌套 - 在XSLT不工作的每個循環

這裏是我的XML

<dalehoward> 

<ep> 
    <name>Letters EP</name> 
    <year>2012</year> 
    <label>Static Audio</label> 
    <image>letters.jpg</image> 

     <tracks> 
     <track number="1"> 
      <tname>Letters</tname> 
      <length>6.35</length> 
     </track> 
     <track number="2"> 
      <tname>Later</tname> 
      <length>7.56</length> 
     </track> 
      <track number="3"> 
      <tname>'89 Flava</tname> 
      <length>7:38</length> 
     </track> 
     <track number="4"> 
      <tname>Safe Presentation</tname> 
      <length>7.55</length> 
     </track> 
     </tracks> 
</ep> 



<ep> 
    <name>Inner City EP</name> 
    <year>2012</year> 
    <label>Lost My Dog</label> 
    <image>innercity.jpg</image> 

    <tracks> 
    <track number="1"> 
      <tname>C'Mon</tname> 
      <length>7.15</length> 
     </track> 
     <track number="2"> 
      <tname>Koppabird</tname> 
      <length>6.27</length> 
     </track> 
     <track number="3"> 
      <tname>Inner City</tname> 
      <length>8:50</length> 
     </track> 
     <track number="4"> 
      <tname>You Can</tname> 
      <length>8:16</length> 
     </track> 
     <tracks> 
</ep> 
<dalehoward> 

這裏是XSLT

<xsl:variable name="imagefolder" select="'xml/images/'" /> 
<xsl:template match="/"> 


<html> 
<body> 
<h2>My CD Collection</h2> 
<table border="1" width="100%"> 
    <tr bgcolor="#9acd32"> 
    <th style="text-align:left">Title</th> 
    <th style="text-align:left">Year</th> 
    <th style="text-align:left">Label</th> 
    <th style="text-align:left">Tracks</th> 
    <th style="text-align:left">Artwork</th> 
    </tr> 
    <xsl:for-each select="dalehoward/ep"> 
    <tr> 
    <td><xsl:value-of select="name"/></td> 
    <td><xsl:value-of select="year"/></td> 
    <td><xsl:value-of select="label"/></td> 
    <td>testtext<xsl:for-each select="dalehoward/ep/tracks"> 
     <xsl:value-of select="tname"/><br /> 
     <xsl:value-of select="length"/> <br /><br /> 
     </xsl:for-each></td> 
    <td><img width="150px" height="150px"><xsl:attribute name="src"> 
      <xsl:copy-of select="$imagefolder"/> 
      <xsl:value-of select="image"/> 
      </xsl:attribute></img></td> 
    </tr> 
    </xsl:for-each> 
</table> 
</body> 
</html> 
</xsl:template> 
</xsl:stylesheet> 

非常感謝提前任何幫助

+0

你的XML輸入無效。 –

回答

8

外環使您的ep上下文。需要內部循環的上下文從那裏建立(或作爲絕對路徑,從根開始的) - 從而改變:

<xsl:for-each select="dalehoward/ep/tracks"> 

到:

<xsl:for-each select="tracks/track"> 
+0

工作完美,非常感謝。 – user3614312

+0

哇,我只是想發佈一個相關的問題,幫助我。上下文是相關的,謝謝你。 – polym