Bonjour à tous,

J'ai un fichier XML que je voudrais passer en CSV pour pouvoir importer les données sous Excel 2000 qui ne fait pas le XML (le rascal).

J'ai donc fait un XSL qui transforme le fichier en CSV. J'ai un petit souci d'arborescence, je m'explique :

Voici mon fichier XML :

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
 
<?xml version="1.0" encoding="ISO-8859-1"?>
<Erreurs>
	<Erreur id="20">
	<Libelle>Erreur 1</Libelle>
		<LibelleEcran>LIB</LibelleEcran>
		<Contextes>
		<Contexte id="0" msg="12" p2="0" p3="9" ecran="4">
			<Desc>Par defaut</Desc>
		</Contexte>
		<Contexte id="1" msg="12" p2="0" p3="9" ecran="2">
			<Desc>Deuxieme cas</Desc>
		</Contexte>
		</Contextes>
	</Erreur>
Mon fichier xsl se présente comme suit :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
<?xml version="1.0"?>
<xsl:stylesheet version = "1.0" xmlns:xsl = "http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:template match="/" >
<xsl:for-each select="Erreurs"><xsl:for-each select="Erreur"><xsl:value-of select="@id"/>,<xsl:value-of select="Libelle"/>,<xsl:for-each select="Contextes"><xsl:for-each select="Contexte"><xsl:value-of select="@id"/>,<xsl:value-of select="@msg"/>,<xsl:value-of select="@p2"/>,<xsl:value-of select="@p3"/>,<xsl:value-of select="@ecran"/>,<xsl:value-of select="Desc"/>;
</xsl:for-each>
</xsl:for-each>
</xsl:for-each>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
Il doit surement y avoir du code plus propre mais je dois dire que je ne suis pas du tout un expert XSL.

Le résultat donne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
20,Erreur1,0,12,0,9,4,Par defaut;
1,12,0,9,2,Deuxieme cas;
or je voudrais
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
20,Erreur1,0,12,0,9,4,Par defaut;
20,Erreur1,1,12,0,9,2,Deuxieme cas;
Quelqu'un voit-il comment faire ? J'imagine que c'est très simple.

Merci d'avance !

Bonne journée