element, attribute, copy

XSLT permet aussi d'ajouter des éléments et attributs XML au document final :

 feuille10.xsl  appliquée sur atomes.xml --> résultat atomes2.xml
  <xsl:output method="xml" 
    encoding="iso-8859-1"/>
  <xsl:template 
      match="classification_atomique">
    <xsl:copy>
      <xsl:apply-templates select="atome"/>
    </xsl:copy>
  </xsl:template>
  <xsl:template match="atome">
    <xsl:element name="atome">
      <xsl:attribute name="symbole">
        <xsl:value-of select="symbole"/>
      </xsl:attribute>
      <xsl:attribute name="numero">
        <xsl:value-of select="numero"/>
      </xsl:attribute>
      <xsl:attribute 
        name="nombre_electron_peripherique">
        <xsl:value-of select="@colonne"/>
      </xsl:attribute>
      <xsl:value-of select="nom"/>
    </xsl:element>
  </xsl:template>
<?xml version="1.0" encoding="iso-8859-1" ?>
<classification_atomique>
<atome symbole="H" numero="1" 
nombre_electron_peripherique="1">hydrogène</atome>
<atome symbole="He" numero="2" 
nombre_electron_peripherique="8">hélium</atome>
<atome symbole="Li" numero="3" 
ombre_electron_peripherique="1">lithium</atome>
<atome symbole="Be" numero="4" nom
......

La feuille10 recopie l'élément classification_atomique et crée des éléments de nom atome ainsi que leurs attributs : symbole, numero et nombre_electron_peripherique.

<xsl:copy> transformations </xsl:copy>
copie le noeud courant dans le document final, mais pas ses attributs, ni ses descendants; ces dernières sont à charge des transformations.

<xsl:element name="nom"> transformations </xsl:element>
crée un élément du nom spécifié dans le document final.

<xsl:attribute name="nom"> valeur </xsl:attribute>
crée et ajoute un attribut du nom et de la valeur spécifiés à l'élément courant.

Exercice :

A partir de famille_atome.xml, construire un nouveau fichier xml comme suit :

$ java Transform feuille10exo.xsl famille_atome.xml
<?xml version="1.0" encoding="iso-8859-1"?>
<classification_atomique><famille>
<nom>gaz rare</nom>
<atome numero="2">hélium</atome>
<atome numero="10">néon</atome>
<atome numero="18">argon</atome>
</famille>
<famille><nom>métal alcalin</nom>
<atome numero="3">lithium</atome>
...

 index  suivant