Bonjour,
Je viens vous faire part de mon problème qui est pour un moi vrai casse-tête.
J'ai dans mon XML de départ, des données qui sont structurées de la sorte :
J'aimerais obtenir un XML en sortie, rassemblant toutes mes données contenues dans <Data/>, dans une seule balise <Element/>, comme cela :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 <Element Type="Max" > <Data Name="01-01" Value="1.5" /> <Data Name="01-02" Value="2.5" /> <Data Name="01-03" Value="3.5" /> <Data Name="01-04" Value="4.5" /> </Element>
J'ai donc tenter dans mon document XSLT de faire un template qui écrit cette ligne, à chaque occurence de "element".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2<Element Type="Max" 01-01 ="1.5" 01-02 ="2.5" 01-03 ="3.5" />
Seulement, je n'arrive pas mémoriser les valeurs de chaque Data pour les écrire en une seule ligne... Voici mon code, cela sera peut-être plus explicite :
Evidemment ce n'est pas fonctionnel, étant donné qu'à chaque passage de boucle for-each, une des deux variable est reinitialisée à vide, et donc la condition ($01-01 != ' ' and $01-02 != ' ') n'est jamais remplie.
Code : 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 <xsl:template match="/.../Element"> <xsl:for-each select="Data"> <xsl:variable name="01-01"> <xsl:if test="@Name='01-01'"> <xsl:value-of select="@Value"/> </xsl:if> </xsl:variable> <xsl:variable name="01-02"> <xsl:if test="@Name='01-02'"> <xsl:value-of select="@Value"/> </xsl:if> </xsl:variable> <xsl:if test="$01-01 != '' and $01-02 != '' "> <Element> <xsl:attribute name="$01-01"><xsl:value-of select="$01-01"/></xsl:attribute> <xsl:attribute name="01-02"><xsl:value-of select="$01-02"/></xsl:attribute> </Element> </xsl:if> </xsl:for-each> </xsl:template
J'ai beau tourner le problème dans tous les sens, je n'arrive pas à m'en sortir, je suis toujours confronté à un problème sur l'étendue de ma variable...
Je ne trouve pas non plus de solution en utilisant param et with-param...
Merci pour votre aide.
Partager