Hallo beisammen,
ich beschäftige mich seit Kurzem mit XSLT und bin auf ein Problem gestoßen, für das ich noch keine Lösung gefunden habe.
Es soll eine XML Quelldatei sortiert werden und zwar sowohl die Elternknoten sollen sortiert sein, als auch die Kinderknoten innerhalb eines jedes Elternknoten.
Bsp: Städte nach PLZ-Gebieten und innerhalb dieser Gebiete sollen alle Städtenamen alphabethisch geordnet sein.
Geht das überhaupt (ich denke eigentlich sollte es gehen) und wie geht das richtig?
PS.: Die Werte für PLZ und Name sind jeweils Attribute (das geht leider auch net anders)
XML-Quelldaten Beispiel
Ziel ist jetzt folgendes:
mit folgender Transformierung bin ich nicht weiter gekommen, es wird nur die erste Hierarchiestufe sortiert...
Kann mir da jmd weiterhelfen??
Danke schon mal im Voraus!
ich beschäftige mich seit Kurzem mit XSLT und bin auf ein Problem gestoßen, für das ich noch keine Lösung gefunden habe.
Es soll eine XML Quelldatei sortiert werden und zwar sowohl die Elternknoten sollen sortiert sein, als auch die Kinderknoten innerhalb eines jedes Elternknoten.
Bsp: Städte nach PLZ-Gebieten und innerhalb dieser Gebiete sollen alle Städtenamen alphabethisch geordnet sein.
Geht das überhaupt (ich denke eigentlich sollte es gehen) und wie geht das richtig?
PS.: Die Werte für PLZ und Name sind jeweils Attribute (das geht leider auch net anders)
XML-Quelldaten Beispiel
Code:
<data> <record plzgebiet="5"> <record plz="54345" name="Musterdorf"/> <record plz="54321" name="AnderesMusterdorf"/> </record> <record plzgebiet="1"> <record plz="12321" name="Musterstadt"/> <record plz="12345" name="AndereMusterstadt"/> </record> ..... </data>
Code:
<data> <record plzgebiet="1"> <record plz="12321" name="AndereMusterstadt"/> <record plz="12345" name="Musterstadt"/> </record> <record ="5"> <record plz="54321" name="AnderesMusterdorf"/> <record plz="54345" name="Musterdorf"/> </record> </data>
Code:
<xsl:template match="/"> <xsl:for-each select="/data/record" > <xsl:sort select="@plzgebiet" order="descending" data-type="number" /> <xsl:for-each select="/data/record/record"> <xsl:sort select="@name" order="ascending" data-type="text" /> </xsl:for-each> <xsl:copy-of select="."/> </xsl:for-each> </xsl:template>
Danke schon mal im Voraus!
Comment