Elemento <xsl:for-each> de XSLT

El elemento <xsl:for-each> permite realizar bucles en XSLT.

Elemento <xsl:for-each>

El elemento <xsl:for-each> se puede usar para seleccionar cada elemento XML en un conjunto de nodos especificado.

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
  <html>
  <body>
    <h2>Mi Colección de CD</h2>
    <table border="1">
      <tr bgcolor="#9acd32">
        <th>Title</th>
        <th>Artist</th>
      </tr>
      <xsl:for-each select="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>
</xsl:stylesheet>

Nota:select El valor de la propiedad es una expresión XPath. Esta expresión funciona de manera similar a la localización de un sistema de archivos, donde el guión oblicuo puede seleccionar subdirectorios.

El resultado de la conversión superior es similar a esto:

Ver este archivo XML,Ver este archivo XSLyVer resultados.

Filtrado de resultados

También podemos filtrar los resultados de la salida del archivo XML mediante la adición de un criterio de selección en el elemento <xsl:for-each>.

<xsl:for-each select="catalog/cd"[artist='Bob Dylan']">

Operadores de filtrado válidos:

  • =  (igual)
  • != (no es igual)
  • < (menor)
  • > (mayor)
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
 <html>
  <body>
  <h2>Mi Colección de CD</h2>
  <table border="1">
   <tr bgcolor="#9acd32">
      <th>Title</th>
      <th>Artist</th>
   </tr>
   <xsl:for-each select="catalog/cd[artist='Bob Dylan']">
   <tr>
      <td><xsl:value-of select="title"/></td>
      <td><xsl:value-of select="artist"/></td>
   </tr>
   </xsl:for-each>
  </table>
 </body>
 </html>
</xsl:template>
</xsl:stylesheet>

El resultado de la conversión superior es similar a esto:

Ver este archivo XML,Ver este archivo XSL,y ver los resultados.