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.
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>
...