0
Je suis Tring d'exporter des attributs XML au format CSV en utilisant xsl mais je suis confronté à ce problème:xml Export attribue à csv en utilisant xsl
<root>
<tag id="1">
<itemA id="930" dummyAttr1="bla" dummyAttr2="bla bla" dummyAttr3="bla bla bla" />
<itemA id="931" dummyAttr1="bla" dummyAttr3="bla bla bla" />
<itemA id="932" dummyAttr2="bla bla" dummyAttr3="bla bla bla" />
<itemA id="933" dummyAttr4="another bla" dummyAttr3="bla bla bla" />
</tag>
<tag id="2">
<itemA id="940" dummyAttr1="lorem" dummyAttr2="ipsum" />
<itemA id="941" dummyAttr1="dolor" dummyAttr3="sit" />
<itemA id="942" dummyAttr3="amet" />
</tag>
</root>
J'ai des attributs dynamiques que je veux mettre dans un en-tête de csv puis je vouloir ajouter mes valeurs d'attribut sous l'en-tête de droite.
J'ai essayé quelque chose comme ça sans succès
<?xml version="1.0"?>
<xsl:stylesheet version="3.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:saxon="http://saxon.sf.net/"
exclude-result-prefixes="#all">
<xsl:output method="text" omit-xml-declaration="yes" indent="no"/>
<xsl:template name="header" >
<xsl:for-each-group select="//itemA/@*" group-by="name(.)">
<xsl:value-of select="name(.)"/>
<xsl:choose>
<xsl:when test="position() != last()">
<xsl:text>,</xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:text>
</xsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each-group>
</xsl:template>
<xsl:template name="values" >
<xsl:for-each-group select="//itemA/@*" group-by="name(.)">
<xsl:value-of select="."/>
<xsl:choose>
<xsl:when test="position() != last()">
<xsl:text>,</xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:text>
</xsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each-group>
</xsl:template>
<xsl:template match="/">
<xsl:call-template name="header"/>
<xsl:for-each select="//itemA">
<xsl:for-each select="./@*">
<xsl:variable name="test">
<xsl:call-template name="values"/>
</xsl:variable>
<xsl:value-of select="$test"/>
</xsl:for-each>
<xsl:text>
</xsl:text>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
La sortie doit ressembler à ceci:
id,dummyAttr1,dummyAttr2,dummyAttr3,dummyAttr4
930,bla,bla bla,bla bla bla,
931,bla,,bla bla bla,
932,,bla bla,bla bla bla,
933,,,bla bla bla,another bla
940,lorem,ipsum,,
941,dolor,,sit,
942,,,amet,
Merci
Merci pour la réponse, ça semble aller;) –