5.XSLT

5.1.Introduction à XSLT

Si vous avez été attentifs lors des chapitres précédents, vous avez maintenant un document XML bien formé[C'est quoi?] et quelques notions de XPath[C'est quoi?]. Il est donc temps de traiter ce document XML pour le restituer sous une autre forme (disons... plus lisible).
Nous allons, ici, faire appel à la transformation XSL (XSLT). Il s'agit d'écrire un document indiquant comment doivent être traités chaque noeud du document XML pour obtenir le document que l'on souhaite.
La lecture d'une feuille XSL n'est pas toujours très aisée mais ça reste un outil très puissant car cela ne nécessite (dans la plupart des cas) pas de programmation (à partir du moment où vous disposez d'un outil pour appliquer la feuille de style à votre document XML).

5.2.Objectif

Reprenons le fichier XML sur lequel nous avons travaillé.
<?xml version="1.0"?>
<!DOCTYPE encyclopedie SYSTEM "encyclopedie.dtd">
<encyclopedie>
    <personne datenaissance="1942-01-08" sexe="H">
        <nom>HAWKING</nom>
        <prenom>Stephen</prenom>
        <publication>Une brève histoire du temps</publication>
    </personne>
    <personne datenaissance="1932-07-13" sexe="H">
        <nom>REEVES</nom>
        <prenom>Hubert</prenom>
        <publication>L'Univers expliqué à mes petits-enfants</publication>
        <publication>Patience dans l'azur, L'évolution cosmique</publication>
        <publication>Poussières d'étoiles</publication>
    </personne>
    <personne datenaissance="1879-03-14" sexe="H">
        <nom>EINSTEN</nom>
        <prenom>Albert</prenom>
        <publication>Des ondes gravitationnelles</publication>
        <publication>Sur la théorie quantique du rayonnement</publication>
    </personne>
    <personne datenaissance="1867-11-07" sexe="F">
        <nom>CURIE</nom>
        <prenom>Marie</prenom>
        <publication>traité de radioactivité</publication>
    </personne>
</encyclopedie>
Nous aimerions transformer ce fichier XML pour obtenir le résultat HTML suivant:
Nom Prenom sexe
HAWKING Stephen H
REEVES Hubert H
EINSTEN Albert H
CURIE Marie F
Autrement dit nous allons transformer le document XML précédent en code HTML:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Encyclopedie</title>
</head>
<body><table border="1">
<tr>
<th>Nom</th>
<th>Prenom</th>
<th>sexe</th>
</tr>
    <tr>
<td>HAWKING</td>
<td>Stephen</td>
<td>H</td>
</tr>
    <tr>
<td>REEVES</td>
<td>Hubert</td>
<td>H</td>
</tr>
    <tr>
<td>EINSTEN</td>
<td>Albert</td>
<td>H</td>
</tr>
    <tr>
<td>CURIE</td>
<td>Marie</td>
<td>F</td>
</tr>
</table></body>
</html>
Cela ne devrait pas être bien compliqué.