Boucle

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 XPathSignification
==Égal à
!=!=Différent de
<&lt;Inférieur à (ne pas écrire < directement ; échappement obligatoire)
>&gt;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 &lt; 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 &gt; 14]">
    <li><xsl:value-of select="name"/><xsl:value-of select="age"/></li>
</xsl:for-each>Langage du code : HTML, XML (xml)

Boucle

Laisser un commentaire

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