[XSLT]Passer du XML au CSV avec XSL
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:
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:
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:
1 2 3
|
20,Erreur1,0,12,0,9,4,Par defaut;
1,12,0,9,2,Deuxieme cas; |
or je voudrais
Code:
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