For-each, Value-of

Commençons par résoudre le problème précédent, c'est à dire générer les valeurs de tous les noeuds symbole:
 feuille8.xsl  appliquée sur atomes.xml --> résultat
  <xsl:template match="classification_atomique">
    <html><body>
      <xsl:for-each select="atome/symbole">
        <xsl:value-of select="."/>
        <xsl:text disable-output-escaping="yes">
             &lt;br&gt;</xsl:text>
      </xsl:for-each>
    </body></html>
  </xsl:template>
<html>
   <body>H<br>He<br>
Li<br>Be<br>B<br>C<br>
N<br>O<br>F<br>Ne<br>
Na<br>Mg<br>Al<br>
Si<br>Ar<br></body>
</html>

L'instruction de boucle for-each sélectionne tous les noeuds correspondants au pattern atome/symbole à partir du noeud courant classification_atomique, et leur applique les transformations spécifiées.

<xsl:for-each select="pattern"> transformations </xsl:for-each>
sélectionne tous les éléments fils à l'aide de l'attribut select, puis pour chacun, en fait le noeud courant auquel sont appliquées les transformations spécifiées.

 feuille9.xsl  appliquée sur atomes.xml --> résultat
  <xsl:template match="classification_atomique">
    <html><body>
      <table>
        <tr>
          <th>symbole</th>
          <th>ligne</th>
          <th>colonne</th>
        </tr>
        <xsl:apply-templates/>
    </table></body></html>
  </xsl:template>
  <xsl:template match="atome">
    <tr>
      <td>
        <xsl:value-of select="nom"/>
      </td>
      <td>
        <xsl:value-of select="@ligne"/>
      </td>
      <td>
        <xsl:value-of select="@colonne"/>
      </td>
    </tr>
  </xsl:template>
<html>
   <body>
      <table>
         <tr>
            <th>symbole</th>
            <th>ligne</th>
            <th>colonne</th>
         </tr>
         
         <tr>
            <td>hydrog&egrave;ne</td>
            <td>1</td>
            <td>1</td>
         </tr>
....

xsl:value-of sélectionne içi des attributs et génère la valeur est de l'attribut; l'@ signifie attribut dans XPath.

Exercice :

A partir de famille_atome.xml, donnez pour chaque famille sa liste d'atomes ainsi :

$ java Transform feuille8exo.xsl famille_atome.xml
<html>
<body>
<p>gaz rare : h&eacute;lium n&eacute;on argon </p>
<p>m&eacute;tal alcalin : lithium sodium </p>
<p>m&eacute;tal alcalino-terreux : b&eacute;rillium magn&eacute;sium </p>
<p>non m&eacute;tal : bore carbone azote oxyg&egrave;ne fluor silicium </p>
</body>
</html>

 index  suivant