Bonjour,
J'ai un XML qui ressemble à peu près à ça :
Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41 <Document> <Objets> <Objet> <Types> <Type> <Libelle>Nom</Libelle> <Valeur>toto</Valeur> </Type> <Type> <Libelle>Ordre</Libelle> <Valeur>3</Valeur> </Type> </Types> </Objet> <Objet> <Types> <Type> <Libelle>Nom</Libelle> <Valeur>titi</Valeur> </Type> <Type> <Libelle>Ordre</Libelle> <Valeur>2</Valeur> </Type> </Types> </Objet> <Objet> <Types> <Type> <Libelle>Nom</Libelle> <Valeur>tutu</Valeur> </Type> <Type> <Libelle>Ordre</Libelle> <Valeur>7</Valeur> </Type> </Types> </Objet> <!-- [...] --> </Objets> </Document>
J'aimerai à l'issue d'une transformation XSLT obtenir quelque chose ce ce style :
Il s'agit des "Noms" triés selon leur "Ordre", séparés d'une virgule.titi, toto, tutu
Problème classique : je ne veux ni de virgule avant le premier élément, ni de virgule après le dernier élément.
C'est ici que je bloque.
Comment faire pour différencier le premier (ou le dernier) élément des autres dans une boucle (for-each) sachant qu'elle est triée (sort) ?
Pour l'instant ma feuille XSLT ressemble à ça, mais j'ai bien sûr une virgule à la fin.
Code xslt : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 <xsl:for-each select="//Objet"> <xsl:sort select="Types/Type[Libelle= 'Ordre']/Valeur" order="ascending" data-type="number"/> <xsl:value-of select="Types/Type[Libelle= 'Nom']/Valeur"/> <xsl:text>, </xsl:text> </xsl:for-each>
Partager