Hallo,
ich trete gerade ein wenig auf der Stelle mit einer Sortierung.
Die XML sieht wie folgt aus ...
<Artikel>
<Ausgabe>
<Auflage>
...
<Artikelgruppen>
<Bezeichnung>C</Bezeichnung>
</Artikelgruppen>
<Artikelgruppen>
<Bezeichnung>B</Bezeichnung>
</Artikelgruppen>
...
</Auflage>
<Auflage>
...
<Artikelgruppen>
<Bezeichnung>D</Bezeichnung>
</Artikelgruppen>
<Artikelgruppen>
<Bezeichnung>E</Bezeichnung>
</Artikelgruppen>
<Artikelgruppen>
<Bezeichnung>A</Bezeichnung>
</Artikelgruppen>
...
</Auflage>
</Ausgabe>
</Artikel>
Ziel ist es die Artikelgruppen für jede "Auflage" alphabetisch zu sortieren und dann alle "Auflagen" innerhalb von Artikel nach der Bezeichnung der ersten Artikelgruppe zu sortieren. Gewünschtes Ergebnis wäre somit
<Artikel>
<Ausgabe>
<Auflage>
...
<Artikelgruppen>
<Bezeichnung>A</Bezeichnung>
</Artikelgruppen>
<Artikelgruppen>
<Bezeichnung>D</Bezeichnung>
</Artikelgruppen>
<Artikelgruppen>
<Bezeichnung>E</Bezeichnung>
</Artikelgruppen>
...
</Auflage>
<Auflage>
...
<Artikelgruppen>
<Bezeichnung>B</Bezeichnung>
</Artikelgruppen>
<Artikelgruppen>
<Bezeichnung>C</Bezeichnung>
</Artikelgruppen>
...
</Auflage>
</Ausgabe>
</Artikel>
Meine plumpe "Lösung" hierfür war:
<Artikel>
<xsl:for-each select="Ausgabe/Auflage">
<xsl:for-each select="Artikelgruppen">
<xsl:sort select="Bezeichnung" data-type="text"/>
</xsl:for-each>
<xsl:sort select="Artikelgruppen/Bezeichnung" data-type="text"/>
<Ausgabe><xsl:copy-of select="."/></Ausgabe>
</xsl:for-each>
</Artikel>
Dies sortiert zwar alle "Auflagen" innerhalb des Artikels nach der ersten Artikelgruppenbezeichnung, aber ohne die vorherige Sortierung der Artikelgruppen bringt dies freilich wenig. Im genannten Beispiel:
<Artikelgruppen>
<Bezeichnung>C</Bezeichnung>
</Artikelgruppen>
<Artikelgruppen>
<Bezeichnung>B</Bezeichnung>
</Artikelgruppen>
...
</Auflage>
<Auflage>
...
<Artikelgruppen>
<Bezeichnung>D</Bezeichnung>
</Artikelgruppen>
...
</Auflage>
Vielen Dank fürs Lesen und im Voraus
Eichhörnchen
ich trete gerade ein wenig auf der Stelle mit einer Sortierung.
Die XML sieht wie folgt aus ...
<Artikel>
<Ausgabe>
<Auflage>
...
<Artikelgruppen>
<Bezeichnung>C</Bezeichnung>
</Artikelgruppen>
<Artikelgruppen>
<Bezeichnung>B</Bezeichnung>
</Artikelgruppen>
...
</Auflage>
<Auflage>
...
<Artikelgruppen>
<Bezeichnung>D</Bezeichnung>
</Artikelgruppen>
<Artikelgruppen>
<Bezeichnung>E</Bezeichnung>
</Artikelgruppen>
<Artikelgruppen>
<Bezeichnung>A</Bezeichnung>
</Artikelgruppen>
...
</Auflage>
</Ausgabe>
</Artikel>
Ziel ist es die Artikelgruppen für jede "Auflage" alphabetisch zu sortieren und dann alle "Auflagen" innerhalb von Artikel nach der Bezeichnung der ersten Artikelgruppe zu sortieren. Gewünschtes Ergebnis wäre somit
<Artikel>
<Ausgabe>
<Auflage>
...
<Artikelgruppen>
<Bezeichnung>A</Bezeichnung>
</Artikelgruppen>
<Artikelgruppen>
<Bezeichnung>D</Bezeichnung>
</Artikelgruppen>
<Artikelgruppen>
<Bezeichnung>E</Bezeichnung>
</Artikelgruppen>
...
</Auflage>
<Auflage>
...
<Artikelgruppen>
<Bezeichnung>B</Bezeichnung>
</Artikelgruppen>
<Artikelgruppen>
<Bezeichnung>C</Bezeichnung>
</Artikelgruppen>
...
</Auflage>
</Ausgabe>
</Artikel>
Meine plumpe "Lösung" hierfür war:
<Artikel>
<xsl:for-each select="Ausgabe/Auflage">
<xsl:for-each select="Artikelgruppen">
<xsl:sort select="Bezeichnung" data-type="text"/>
</xsl:for-each>
<xsl:sort select="Artikelgruppen/Bezeichnung" data-type="text"/>
<Ausgabe><xsl:copy-of select="."/></Ausgabe>
</xsl:for-each>
</Artikel>
Dies sortiert zwar alle "Auflagen" innerhalb des Artikels nach der ersten Artikelgruppenbezeichnung, aber ohne die vorherige Sortierung der Artikelgruppen bringt dies freilich wenig. Im genannten Beispiel:
<Artikelgruppen>
<Bezeichnung>C</Bezeichnung>
</Artikelgruppen>
<Artikelgruppen>
<Bezeichnung>B</Bezeichnung>
</Artikelgruppen>
...
</Auflage>
<Auflage>
...
<Artikelgruppen>
<Bezeichnung>D</Bezeichnung>
</Artikelgruppen>
...
</Auflage>
Vielen Dank fürs Lesen und im Voraus
Eichhörnchen
Comment