Exemple XSLT

Exemple complet : conversion XML + XSLT vers HTML

Préparez deux fichiers :

  1. students.xml : document XML de stockage des données élèves
  2. transform.xsl : feuille de style XSL qui transforme le XML en page HTML
    Lorsque le navigateur charge students.xml, il applique automatiquement les règles XSLT pour produire la page web.

Si le fichier XML utilise l’encodage ISO‑8859‑1 (jeu de caractères d’Europe occidentale), certains textes non‑anglais ne s’enregistrent pas correctement et provoquent des caractères corrompus. Modifiez systématiquement l’encodage en UTF‑8 dans votre code pour résoudre définitivement ce problème.

students.xml

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="transform.xsl"?>
<class>
    <student>
        <name>Tom</name>
        <age>12</age>
        <height>145</height>
    </student>
    <student>
        <name>Jack</name>
        <age>16</age>
        <height>175</height>
    </student>
    <student>
        <name>Smiths</name>
        <age>22</age>
        <height>245</height>
    </student>
</class>Langage du code : HTML, XML (xml)

Points importants :

  • <?xml-stylesheet ... ?> : instruction de traitement qui indique au navigateur d’utiliser transform.xsl pour transformer le XML courant
  • encoding="UTF-8" : prend en charge tous les caractères linguistiques et évite les caractères illisibles

transform.xsl

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="/">
        <html>
            <head>
                <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
                <title>Student List</title>
            </head>
            <body>
                <h3>Student Name List</h3>
                <ul>
                    <!-- Parcourt tous les nœuds class/student -->
                    <xsl:for-each select="class/student">
                        <li>
                            <xsl:value-of select="name"/>
                        </li>
                    </xsl:for-each>
                </ul>
            </body>
        </html>
    </xsl:template>
</xsl:stylesheet>Langage du code : HTML, XML (xml)

Explication de la syntaxe principale

  1. <xsl:stylesheet> : balise racine XSLT, déclare l’espace de noms
  2. <xsl:template match="/"> : correspond au nœud racine XML, point d’entrée de la transformation
  3. <xsl:for-each select="class/student"> : itère sur chaque nœud étudiant
  4. <xsl:value-of select="name"/> : récupère le contenu texte du nœud <name>

3. Mode d’exécution

  1. Placez les deux fichiersdans le même dossier
  2. Ouvrez directement students.xml avec votre navigateur web
  3. Le moteur XSLT réalise automatiquement la conversion et affiche la page HTML de liste
Apparition de caractères corrompus
  1. L’en‑tête XML est réglé sur encoding="ISO‑8859‑1", ce jeu de caractères ne prend pas en charge les textes non anglais ;
  2. L’encodage indiqué dans la balise meta HTML diffère de l’encodage réel du fichier ;
  3. L’éditeur n’enregistre pas le fichier au format UTF‑8 ;

Afficher toutes les informations des élèves

Si vous voulez afficher nom, âge et taille ensemble, remplacez la boucle :

<xsl:for-each select="class/student">
    <li>
        Name: <xsl:value-of select="name"/> ,
        Age: <xsl:value-of select="age"/> ,
        Height: <xsl:value-of select="height"/>
    </li>
</xsl:for-each>Langage du code : HTML, XML (xml)

Exemple XSLT

Previous:
Next:

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *