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 :

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'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
 
<Element Type="Max" 01-01 ="1.5" 01-02 ="2.5"  01-03 ="3.5" />
J'ai donc tenter dans mon document XSLT de faire un template qui écrit cette ligne, à chaque occurence de "element".
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 :

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
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.
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.