Instruction de répétition


On peut produire des structures régulières dans l'arbre résultat avec l'instruction

<xsl:for-each select="node-set-expression">
  <!-- Content: template -->
</xsl:for-each>

Engendre le template contenu dans l'élément pour chaque noeud sélectionné par l'expression select

Une instruction sort dans le template permet de modifier l'ordre des noeuds, sinon c'est l'ordre de l'arbre source

Exemple : avec le document source

<customers>
  <customer>
    <name>...</name>
    <order>...</order>
    <order>...</order>
  </customer>
  <customer>
    <name>...</name>
    <order>...</order>
    <order>...</order>
  </customer>
</customers>

on produit un document HTML contenant une table contenant une ligne par client, avec

<xsl:template match="/">
 <html>
  <head>
   <title>Customers</title>
  </head>
  <body>
   <table>
    <tbody>
      <xsl:for-each select="customers/customer">
        <tr>
          <th>
            <xsl:apply-templates select="name"/>
          </th>
          <xsl:for-each select="order">
            <td>
              <xsl:apply-templates/>
            </td>
          </xsl:for-each>
        </tr>
      </xsl:for-each>
    </tbody>
   </table>
  </body>
 </html>
</xsl:template>