Bonjour,
J'ai un fichier XML de ce type.
Et j'aimerais généré le fichier text suivant, tel que chaque élément unique n'apparaisse qu'une fois:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 <node> <var @name="toto" /> <var @name="tata"> <var @name="toto" /> </var> <var @name="tata"> <var @name="toto" > <var @name="titi" /> </var> </var> <var @name="tata"> <var @name="toto" /> </var> <var @name="tata"> <var @name="toto" > <var @name="titi" /> </var> </var> <var @name="toto" /> <var @name="tata"> <var @name="toto" /> </var> <var @name="tata"> <var @name="toto" > <var @name="tutu" /> </var> </var> <var @name="tata"> <var @name="tyty" > <var @name="tutu" /> </var> </var> <var @name="tata"> <var @name="toto" > <var @name="tutu" /> </var> </var> <var @name="toto"> <var @name="toto" > <var @name="tutu" /> </var> </var> </node>
Je précise qu'il peut y avoir n <var> en cascade (et pas seulement 3 comme dans l'exemple).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 Mes éléments: - toto - tata-toto - tata-toto-titi - tata-toto-tutu - tata-tyty-tutu - toto-toto-tutu
J'utilise actuellement generate-id() en bouclant for each node/var:
Mais cela ne convient pas car les descendants ne sont pas pris en compte.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 <xsl:variable name="allVar" select="./node/var" /> <xsl:for-each select="./node/var]"> <xsl:variable name="name" select="@name" /> <xsl:if test="generate-id() = generate-id($allVar[@name = $name][1])"> </xsl:if> </xsl:for-each>
Comment feriez-vous cela ?
Merci par avance.
Partager