XML->XSL->CSV

Résolu/Fermé
apple31 Messages postés 25 Date d'inscription jeudi 6 avril 2006 Statut Membre Dernière intervention 7 septembre 2007 - 6 sept. 2007 à 17:41
apple31 Messages postés 25 Date d'inscription jeudi 6 avril 2006 Statut Membre Dernière intervention 7 septembre 2007 - 7 sept. 2007 à 10:10
Bonjour,

J'ai un petit problème pour transformer un fichier XML en CSV avec XSL

J'ai un fichier XML qui a ce format :
<AA>
   <A>
	<B>
		<C>X1</C
	</B>
	<B>
		<C>X2</C
	</B>
	<B>
		<C>X3</C
	</B>

  </A>

   <A>
	<B>
		<C>Y1</C
	</B>
	<B>
		<C>Y2</C
	</B>
	<B>
		<C>Y3</C
	</B>
   </A>
</AA>


Je voudrait faire un fichier XSL qui transforme ce fichier XML en fichier CSV au format suivant:

Colonne 1, Colonne 2, colonne 3
X1,X2,X3
Y1,Y2,Y3


voici le fichier XSL que j'ai créé :
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">

<xsl:output method="text" />


<xsl:template match="/">Colonne 1, Colonne 2, colonne 3

<xsl:for-each select="//A/B/C">
	<xsl:value-of select="." />,
</xsl:for-each>\n

</xsl:template>


</xsl:stylesheet>



Mais voici ce que ça me donne :

Colonne 1, Colonne 2, colonne 3
X1,X2,X3,Y1,Y2,Y3,
X1,X2,X3,Y1,Y2,Y3,

Est ce que vous pourriez m'aider à corriger mon fichier XSL ?

Merci par avance

apple
A voir également:

2 réponses

teebo Messages postés 33491 Date d'inscription jeudi 14 octobre 2004 Statut Modérateur Dernière intervention 24 février 2011 1 793
6 sept. 2007 à 17:47
Salut,


<xsl:for-each select="//A">
<xsl:apply-template />\n
</xsl:for-each>
<xsl:template-match ="B/C">
<xsl:value-of select="."/>,
</xsl-template>

Un truc dans le genre, je suis plus très sûr des orthographe des tags et compagnies, et j'ai pas trop le temps d'approfondir, désolé...
2
apple31 Messages postés 25 Date d'inscription jeudi 6 avril 2006 Statut Membre Dernière intervention 7 septembre 2007 2
7 sept. 2007 à 10:10
merci de ta réponse .

J'ai trouvé grâce à toi. Voici la bonne syntaxe :

<xsl:template match="/">Colonne 1, Colonne 2, colonne 3
<xsl:for-each select="//A">
<xsl:for-each select="B/C"><xsl:value-of select="." />,</xsl:for-each><xsl:text>
</xsl:text>
</xsl:for-each>
</xsl:template>




Apple
1