Les éléments de transformations permettent de sélectionner et
effectuer des opérations sur les éléments du document XML.
Leur syntaxe est la suivante :
<xsl:nom [attributs]/>
Remarquez la présence du / indiquant que la balise ne possède pas de
balise fermante.
Voici une petite liste des éléments de transformation :
Elément |
Utilité |
xsl:apply-templates |
Indique au processeur XSL de traiter les éléments enfants directs en leur appliquant
les template rules définies dans la feuille XSL. L'attribut select permet de spécifier certains éléments enfants auxquels la transformation doit être appliquée |
xsl:attribute-set |
Permet de nommer une liste d'attributs, pouvant être appliqués à un élément particulier |
xsl:choose |
Structure conditionnelle de type "case" |
xsl:comment |
Crée un commentaire dans l'arbre résultat |
xsl:for-each |
Permet d'appliquer |
xsl:for-each |
Permet d'appliquer |
L'élément apply-templates utilisé au sein de la balise
<xsl:template/> permet d'appliquer la règle de transformation
contenu dans la balise template.
Soit le document XML suivant :
<voiture>
<marque>Volkswagen</marque>
<immatriculation>9999 ZZ 99</immatriculation>
<modele>Golf Match</modele>
<couleur>Bleu clair</couleur>
</voiture>
et la feuille XSL associée :
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/TR/WD-xsl"
xmlns="http://www.w3.org/TR/REC-html40"
result-ns="">
<xsl:template match="voiture">
<Auto>
<xsl:apply-templates/>
</Auto>
</xsl:template >
</xsl:stylesheet>
Cette feuille de style donnera le résultat suivant :
<Auto></Auto>
L'élément apply-templates permet donc uniquement
d'appliquer les modifications l'entourant, sans insérer de contenu supplémentaire.
Pour insérer le contenu des éléments sélectionNés par
la règle de gabarit (template rule), il suffit d'utiliser l'élément value-of,
qui permet d'insérer le contenu de la balise sélectionnée.
En reprenant le même document XML que celui présent ci-dessus, il est possible
de définir la feuille de style XSL suivante :
<xsl:template match="voiture">
<table border="1">
<tr><th>Voiture</th></tr>
<tr><xsl:apply-templates/></tr>
</table>
</xsl:template >
<xsl:template match="marque">
<td><xsl:value-of/></td>
</xsl:template >
<xsl:template match="immatriculation">
<td><xsl:value-of/></td>
</xsl:template >
Cette feuille de style donnera le résultat suivant :
<Auto></Auto>
L'élément apply-imports utilisé au sein de la balise
<xsl:template/> permet d'appliquer les règles de transformation
importées dans la feuille XSL par l'intermédiaire de la balise <?xsl:import?>.
Par exemple, dans la feuille XSL suivante, la feuille import.xsl est importée
grâce à l'élément <?xsl:import?>,
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/TR/WD-xsl"
xmlns="http://www.w3.org/TR/REC-html40"
result-ns="">
<xsl:import href="import.xsl"/>
<xsl:template match="voiture">
<Effet>
<xsl:apply-imports/>
</Effet>
</xsl:template >
</xsl:stylesheet>
Voici la feuille de style importée :
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/TR/WD-xsl"
xmlns="http://www.w3.org/TR/REC-html40"
result-ns="">
<xsl:template match="voiture">
<EffetImporte>
<xsl:apply-imports/>
</EffetImporte>
</xsl:template >
</xsl:stylesheet>
Les régles de gabarit permettent grâce à l'élément
<xsl:template> de sélectionner les éléments sur lesquels
on désire effectuer une transformation.
Grâce à l'élément <xsl:for-each>, il est possible
de sélectionner des éléments enfants et de leur appliquer
une règle de transformation.
La sélection des éléments enfant se fait à l'aide de l'attribut
select de la balise <xsl:for-each>, utilisant les patterns XSL
au même titre que l'élément <xsl:template>.
<xsl:template match="">
<EffetImporte>
<xsl:apply-imports/>
</EffetImporte>
</xsl:template >
</xsl:stylesheet>
|