XSLT (opérations avancées) : Numérotation et ordonnancement

Les espaces dans un fichier XML ...

FondamentalInterprétation des espaces

Chaque espace séparant deux éléments du fichier source peut être considéré comme un nœud texte à part entière.

L'arbre créé par le processeur XSLT peut par conséquent, légèrement différer de la vision que l'on s'en fait.

ExempleReprise de l'exemple précédent

Voici un représentation simplifiée de l'arbre généré par le processeur XSLT :

CTRL+C pour copier, CTRL+V pour coller
1
persons
2
+- text: "
"
3
+- person
4
| +- text: "
"
5
| +- name
6
+- text: "
"
7
+- person
8
| +- ...
9
...
persons
+- text: "
"
+- person
| +- text: "
"
| +- name
+- text: "
"
+- person
| +- ...
...

ConseilL'instruction strip-space

On peut toutefois éliminer les whitespaces entre les éléments en invoquant l'instruction strip-space.

Cette instruction est à placer en tant que fils de xsl:stylesheet.

ExempleReprise de l'exemple précédent

Pour éviter de comptabiliser les "espaces", il suffit de rajouter la ligne suivante dans votre fichier XSLT :

CTRL+C pour copier, CTRL+V pour coller
1
<xsl:strip-space elements="persons"/>
<xsl:strip-space elements="persons"/>

On obtient bien le résultat souhaité :

CTRL+C pour copier, CTRL+V pour coller
1
<?xml version="1.0" encoding="UTF-8"?><persons>
2
    <person id="1">
3
        <name>Stevie</name>
4
    </person>
5
    <person id="2">
6
        <name>Roy</name>
7
    </person>
8
    <person id="3">
9
        <name>Peter</name>
10
    </person>
11
</persons>
<?xml version="1.0" encoding="UTF-8"?><persons>
    <person id="1">
        <name>Stevie</name>
    </person>
    <person id="2">
        <name>Roy</name>
    </person>
    <person id="3">
        <name>Peter</name>
    </person>
</persons>

RemarquePas très pratique...

Comme nous venons de le voir, la fonction position() ne se prête pas réellement à l'exercice de la numérotation à part peut-être dans des cas triviaux.

PrécédentPrécédentSuivantSuivant
AccueilAccueilImprimerImprimer Benoît Villain, Thibault Brocheton, Lucas Charrier, Félix Motot, 2013-2016 (Contributions : Stéphane Crozat, les étudiants de l'UTC) Paternité - Partage des Conditions Initiales à l'IdentiqueRéalisé avec Scenari (nouvelle fenêtre)