xsl tutorial transformar mapeo for espaƱol ejemplo curso html xml xslt nested xls

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