Hallo,
ich habe einen Datensatz bekommen, den ich gerne auswerten möchte. Jedoch ist die Datenstruktur dieser XML-Dateien nicht so, wie ich es mir vorstelle.
Das Problem ist, dass die Ausgangsdateien eine "Ebene" zuviel haben. Die Felder, welche die Feldbeschreibungen enthalten sollen entfernt werden.
Alles anzeigen
Dies ist ein Beispiel für die Struktur der Ausgangsdatei, wobei der Usprungsdatensatz eine sehr viel größere Menge solcher <DataRecords> umfasst.
Ich kann mithilfe der folgenden XSL-Datei und Saxonica die Struktur ändern, jedoch gelingt es mir nur, wenn es lediglich einen <DataRecord> in der XML-Datei gibt.
Alles anzeigen
Im Beispielfall gelingt es mir mit dieser XSL-Datei aus der Ausgangs XML-Datei die folgende Datei zu generieren, welche die gewünschte Struktur besitzt.
Alles anzeigen
Ich hoffe es wird einigermaßen klar, welches Ziel ich mit der Vorgehensweise verfolge.
Ich bin bei weitem kein Programmierer und habe mich für dieses Projekt zum ersten Mal mit XSL/XML wirklich auseinandergesetzt.
Die Frage ist jetzt eigentlich gibt es eventuell eine einfachere Syntax, für die XSL-Datei, und wie bekomme ich es hin, dass es für eine beliebige Anzahl von <DataRecords> funktioniert?
Vielen Dank für Antworten!
ich habe einen Datensatz bekommen, den ich gerne auswerten möchte. Jedoch ist die Datenstruktur dieser XML-Dateien nicht so, wie ich es mir vorstelle.
Das Problem ist, dass die Ausgangsdateien eine "Ebene" zuviel haben. Die Felder, welche die Feldbeschreibungen enthalten sollen entfernt werden.
Quellcode
- <?xml version="1.0" encoding="UTF-8"?>
- <!-- Filename="TEST.XML" -->
- <Export Count="1" Date="2009-05-14T18:00:00" Language="DE" Range="DE">
- <DataRecord>
- <Feldbeschreibung1>
- <Feld1>DATA</Feld1>
- <Feld2>DATA</Feld2>
- </Feldbeschreibung1>
- <Feldbeschreibung2>
- <Feld3>DATA</Feld3>
- <Feld4>DATA</Feld4>
- </Feldbeschreibung2>
- <Feldbeschreibung3>
- <Feld5>DATA</Feld5>
- <Feld6>DATA</Feld6>
- </Feldbeschreibung3>
- <Feldbeschreibung4>
- <Feld7>DATA</Feld7>
- <Feld8>DATA</Feld8>
- </Feldbeschreibung4>
- <Feldbeschreibung5>
- <Feld9>DATA</Feld9>
- <Feld10>DATA</Feld10>
- <Feld11>DATA</Feld11>
- <Feld12>DATA</Feld12>
- <Feld13>DATA</Feld13>
- <Feld14>DATA</Feld14>
- <Feld15>DATA</Feld15>
- </Feldbeschreibung5>
- <Feldbeschreibung6>
- <Feld16>DATA</Feld16>
- <Feld17>DATA</Feld17>
- </Feldbeschreibung6>
- <Feldbeschreibung7>
- <Feld18>DATA</Feld18>
- </Feldbeschreibung7>
- <Feldbeschreibung8>
- <Feld19>DATA</Feld19>
- <Feld20>DATA</Feld20>
- <Feld21>DATA</Feld21>
- <Feld22>DATA</Feld22>
- </Feldbeschreibung8>
- <Feldbeschreibung9>
- <Feld23>DATA</Feld23>
- </Feldbeschreibung9>
- </DataRecord>
- </Export>
Dies ist ein Beispiel für die Struktur der Ausgangsdatei, wobei der Usprungsdatensatz eine sehr viel größere Menge solcher <DataRecords> umfasst.
Ich kann mithilfe der folgenden XSL-Datei und Saxonica die Struktur ändern, jedoch gelingt es mir nur, wenn es lediglich einen <DataRecord> in der XML-Datei gibt.
Quellcode
- <?xml version="1.0" encoding="UTF-8"?>
- <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
- <xsl:template match="/">
- <xsl:for-each select="//DataRecord">
- <DataRecord>
- <xsl:for-each select="//Feld1">
- <Feld1>
- <xsl:value-of select="."></xsl:value-of>
- </Feld1>
- </xsl:for-each>
- <xsl:for-each select="//Feld2">
- <Feld2>
- <xsl:value-of select="."></xsl:value-of>
- </Feld2>
- </xsl:for-each>
- <xsl:for-each select="//Feld3">
- <Feld3>
- <xsl:value-of select="."></xsl:value-of>
- </Feld3>
- </xsl:for-each>
- <xsl:for-each select="//Feld4">
- <Feld4>
- <xsl:value-of select="."></xsl:value-of>
- </Feld4>
- </xsl:for-each>
- <xsl:for-each select="//Feld5">
- <Feld5>
- <xsl:value-of select="."></xsl:value-of>
- </Feld5>
- </xsl:for-each>
- <xsl:for-each select="//Feld6">
- <Feld6>
- <xsl:value-of select="."></xsl:value-of>
- </Feld6>
- </xsl:for-each>
- <xsl:for-each select="//Feld7">
- <Feld7>
- <xsl:value-of select="."></xsl:value-of>
- </Feld7>
- </xsl:for-each>
- <xsl:for-each select="//Feld8">
- <Feld8>
- <xsl:value-of select="."></xsl:value-of>
- </Feld8>
- </xsl:for-each>
- <xsl:for-each select="//Feld9">
- <Feld9>
- <xsl:value-of select="."></xsl:value-of>
- </Feld9>
- </xsl:for-each>
- <xsl:for-each select="//Feld10">
- <Feld10>
- <xsl:value-of select="."></xsl:value-of>
- </Feld10>
- </xsl:for-each>
- <xsl:for-each select="//Feld11">
- <Feld11>
- <xsl:value-of select="."></xsl:value-of>
- </Feld11>
- </xsl:for-each>
- <xsl:for-each select="//Feld12">
- <Feld12>
- <xsl:value-of select="."></xsl:value-of>
- </Feld12>
- </xsl:for-each>
- <xsl:for-each select="//Feld13">
- <Feld13>
- <xsl:value-of select="."></xsl:value-of>
- </Feld13>
- </xsl:for-each>
- <xsl:for-each select="//Feld14">
- <Feld14>
- <xsl:value-of select="."></xsl:value-of>
- </Feld14>
- </xsl:for-each>
- <xsl:for-each select="//Feld15">
- <Feld15>
- <xsl:value-of select="."></xsl:value-of>
- </Feld15>
- </xsl:for-each>
- <xsl:for-each select="//Feld16">
- <Feld16>
- <xsl:value-of select="."></xsl:value-of>
- </Feld16>
- </xsl:for-each>
- <xsl:for-each select="//Feld17">
- <Feld17>
- <xsl:value-of select="."></xsl:value-of>
- </Feld17>
- </xsl:for-each>
- <xsl:for-each select="//Feld18">
- <Feld18>
- <xsl:value-of select="."></xsl:value-of>
- </Feld18>
- </xsl:for-each>
- <xsl:for-each select="//Feld19">
- <Feld19>
- <xsl:value-of select="."></xsl:value-of>
- </Feld19>
- </xsl:for-each>
- <xsl:for-each select="//Feld20">
- <Feld20>
- <xsl:value-of select="."></xsl:value-of>
- </Feld20>
- </xsl:for-each>
- <xsl:for-each select="//Feld21">
- <Feld21>
- <xsl:value-of select="."></xsl:value-of>
- </Feld21>
- </xsl:for-each>
- <xsl:for-each select="//Feld22">
- <Feld22>
- <xsl:value-of select="."></xsl:value-of>
- </Feld22>
- </xsl:for-each>
- <xsl:for-each select="//Feld23">
- <Feld23>
- <xsl:value-of select="."></xsl:value-of>
- </Feld23>
- </xsl:for-each>
- </DataRecord>
- </xsl:for-each>
- </xsl:template>
- </xsl:stylesheet>
Im Beispielfall gelingt es mir mit dieser XSL-Datei aus der Ausgangs XML-Datei die folgende Datei zu generieren, welche die gewünschte Struktur besitzt.
Quellcode
- <?xml version="1.0" encoding="UTF-8"?>
- <DataRecord>
- <Feld1>DATA</Feld1>
- <Feld2>DATA</Feld2>
- <Feld3>DATA</Feld3>
- <Feld4>DATA</Feld4>
- <Feld5>DATA</Feld5>
- <Feld6>DATA</Feld6>
- <Feld7>DATA</Feld7>
- <Feld8>DATA</Feld8>
- <Feld9>DATA</Feld9>
- <Feld10>DATA</Feld10>
- <Feld11>DATA</Feld11>
- <Feld12>DATA</Feld12>
- <Feld13>DATA</Feld13>
- <Feld14>DATA</Feld14>
- <Feld15>DATA</Feld15>
- <Feld16>DATA</Feld16>
- <Feld16>DATA</Feld16>
- <Feld17>DATA</Feld17>
- <Feld18>DATA</Feld18>
- <Feld19>DATA</Feld19>
- <Feld20>DATA</Feld20>
- <Feld21>DATA</Feld21
- ><Feld22>DATA</Feld22>
- <Feld23>DATA</Feld23>
- </DataRecord>
Ich hoffe es wird einigermaßen klar, welches Ziel ich mit der Vorgehensweise verfolge.
Ich bin bei weitem kein Programmierer und habe mich für dieses Projekt zum ersten Mal mit XSL/XML wirklich auseinandergesetzt.
Die Frage ist jetzt eigentlich gibt es eventuell eine einfachere Syntax, für die XSL-Datei, und wie bekomme ich es hin, dass es für eine beliebige Anzahl von <DataRecords> funktioniert?
Vielen Dank für Antworten!
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von hannes| ()