Balises principales
1. <xsl:value-of>
Rôle : extraire le contenu textuel d’un nœud XML cible et l’écrire dans le document de résultat.
<!-- Récupère la valeur title du premier catalog/cd (seule la première entrée sans boucle) -->
<xsl:value-of select="catalog/cd/title" />Langage du code : HTML, XML (xml)
Sans la boucle <xsl:for-each>, seul le premier nœud correspondant est renvoyé ; il n’est pas possible de parcourir l’ensemble des données.
2. <xsl:for-each>
Rôle : parcourir un ensemble de nœuds XML correspondants pour traiter plusieurs enregistrements en lot.
<xsl:for-each select="class/student">
<li><xsl:value-of select="name"/>;<xsl:value-of select="age"/></li>
</xsl:for-each>Langage du code : HTML, XML (xml)
Syntaxe de filtrage XPath
Ajoutez [condition] après le chemin select pour filtrer les nœuds et réaliser un filtrage des données
<!-- Affiche uniquement les enregistrements cd dont l’artiste vaut Bob Dylan -->
<xsl:for-each select="catalog/cd[artist='Bob Tom']">Langage du code : HTML, XML (xml)
Opérateurs pris en charge
| Opérateur | Écriture XPath | Signification |
|---|---|---|
| = | = | Égal à |
| != | != | Différent de |
| < | < | Inférieur à (ne pas écrire < directement ; échappement obligatoire) |
| > | > | Supérieur à (ne pas écrire > directement ; échappement obligatoire) |
Exemple : filtrer les CD dont le prix est inférieur à 10
<xsl:for-each select="catalog/cd[price < 10]">Langage du code : HTML, XML (xml)
Exemple précédent
student.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>
</head>
<body>
<ul>
<!-- Parcourt tous les nœuds student -->
<xsl:for-each select="class/student">
<li><xsl:value-of select="name"/>;<xsl:value-of select="age"/></li>
</xsl:for-each>
</ul>
</body>
</html>
</xsl:template>
</xsl:stylesheet>Langage du code : HTML, XML (xml)
XML associé(student.xml)
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="student.xsl"?>
<class>
<student>
<name>Jack</name>
<age>16</age>
</student>
<student>
<name>Jim</name>
<age>12</age>
</student>
</class>Langage du code : HTML, XML (xml)
Ajout d’un filtre
N’afficher que les élèves âgés de plus de 14 ans
<xsl:for-each select="class/student[age > 14]">
<li><xsl:value-of select="name"/>;<xsl:value-of select="age"/></li>
</xsl:for-each>Langage du code : HTML, XML (xml)
Boucle
Previous: Exemple XSLT
Next: Condition et tri