html - tutorial - Anidado para cada bucle en XSLT que no funciona
xsl:for-each (1)
El ciclo externo te pone en el contexto de ep
. El contexto del bucle interno debe establecerse desde allí (o como una ruta absoluta, comenzando desde la raíz) - así que cambie:
<xsl:for-each select="dalehoward/ep/tracks">
a:
<xsl:for-each select="tracks/track">
Parece que no puedo hacer que este bucle anidado funcione correctamente. Quiero imprimir todas las pistas del EP en la fila con el nombre del EP y otros detalles. Todo desde el primer bucle for-each se visualiza correctamente, pero no se procesa nada para que el bucle for-each obtenga las pistas.
Aquí está mi 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>
y aquí está el 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>
Muchas gracias de antemano por cualquier ayuda