Ich habe eine große XML-Datei, die ich verzweifelt versuchen, es in eine CSV-Datei mit xsltproc
zu konvertieren.Konvertieren von XML in CSV mit xsltproc mit komplizierter Datei
Alle Daten, die ich extrahieren möchte, finden Sie unter [GRP alias="TRIUT" level="5"]
.
Was ich brauche, sind nur diese Tags der Datei:
- Häftlings
- Namen
- Wert von mount1 aus dem "Rubrique" 976 des ELEMENT_1
Das ist mein ist XML:
<?xml version="1.0" encoding="UTF-8"?>
<RPT>
<GRP alias="Reglementation" level="1">
<FLD id="Reglementation">USA</FLD>
<GRP alias="RUPT1" level="2">
<FLD id="RUPT1" />
<GRP alias="RUPT2" level="3">
<FLD id="RUPT2" />
<GRP alias="RUPT3" level="4">
<FLD id="RUPT3" />
<GRP alias="TRIUT" level="5">
<FLD id="TRIUT">00-532</FLD>
<DTL>
<FLD id="DateEdition" type="DATE">2017-02-01</FLD>
<FLD id="Name">MR CHARLIE CHAPLIN</FLD>
<FLD id="Matricule">12345678</FLD>
<SRPT id="ELEMENT_1">
<DTL>
<FLD id="Rubrique">038</FLD>
<FLD id="Mount1" type="FLOAT">2200.95</FLD>
<FLD id="Mount2" type="FLOAT">00000.00</FLD>
</DTL>
<DTL>
<FLD id="Rubrique">976</FLD>
<FLD id="Mount1">9926.96</FLD>
<FLD id="Mount2">00000.00</FLD>
</DTL>
</SRPT>
</DTL>
</GRP>
<GRP alias="TRIUT" level="5">
<FLD id="TRIUT">00186</FLD>
<DTL>
<FLD id="DateEdition">2017-03-31</FLD>
<FLD id="Nom">MR JAMES BOND</FLD>
<FLD id="Matricule">00000007</FLD>
<SRPT id="ELEMENT_1">
<DTL>
<FLD id="Rubrique">038</FLD>
<FLD id="Mount1">2054.22</FLD>
<FLD id="Mount2">000000.00</FLD>
</DTL>
<DTL>
<FLD id="Rubrique">976</FLD>
<FLD id="Mount1">2054.22</FLD>
<FLD id="Mount2">00000.22</FLD>
</DTL>
</SRPT>
</DTL>
</GRP>
</GRP>
</GRP>
</GRP>
</GRP>
</RPT>
Was? Ich möchte sehen ist:
Matricule;Name;Rubrique976_Mount1
12345678;MR CHARLIE CHAPLIN;9926.96
00000007;MR JAMES BOND;2054.22
Denken Sie, dass es möglich ist?
Das ist, was ich tun wollte, aber es tut überhaupt zu beantworten, was ich brauche ...
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="text" encoding="UTF-8" />
<xsl:strip-space elements="*" />
<xsl:template match="/">
<xsl:text>Matricule;Name;Rubrique976_Mount1</xsl:text>
<xsl:text>&#xA;</xsl:text>
<xsl:for-each select="RPT/GRP/GRP/GRP/GRP/GRP/DTL">
<xsl:for-each select="FLD">
<xsl:value-of select="@id" />
<xsl:text>;</xsl:text>
<xsl:value-of select="." />
<xsl:text>;</xsl:text>
<xsl:for-each select="SRPT">
<xsl:value-of select="@id" />
<xsl:text>;</xsl:text>
<xsl:value-of select="." />
<xsl:text>;</xsl:text>
</xsl:for-each>
</xsl:for-each>
<xsl:text>&#xA;</xsl:text>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
Dies ist, was ich bekommen, aber nicht, was ich wollte ...
Matricule;Name;Rubrique976_Mount1
DateEdition;2017-02-01;Name;MR CHARLIE CHAPLIN;Matricule;12345678;
DateEdition;2017-03-31;Nom;MR JAMES BOND;Matricule;00000007;
Danke für Leute, die ihr Gehirn zerbrechen wollen!
Sie sollten veröffentlichen, was Sie versucht haben, denn obwohl es möglicherweise nicht funktioniert, zeigt es tatsächlich, dass Sie etwas versucht haben. Und Sie wissen nie, dass Ihr XSLT nicht zu weit weg von dem ist, was erforderlich ist. Vielen Dank! –
Hi @TimC Ich habe es gerade getan, aber sehr, sehr weit von dem, was ich erwarte ... – Peter