XML->XSL->CSV [Résolu/Fermé]

Signaler
Messages postés
25
Date d'inscription
jeudi 6 avril 2006
Statut
Membre
Dernière intervention
7 septembre 2007
-
Messages postés
25
Date d'inscription
jeudi 6 avril 2006
Statut
Membre
Dernière intervention
7 septembre 2007
-
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

2 réponses

Messages postés
33477
Date d'inscription
jeudi 14 octobre 2004
Statut
Modérateur
Dernière intervention
24 février 2011
1 707
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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65312 internautes nous ont dit merci ce mois-ci

Messages postés
25
Date d'inscription
jeudi 6 avril 2006
Statut
Membre
Dernière intervention
7 septembre 2007
2
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