![]() |
Wie in XML-Daten die Kindknoten von Kindknoten sortieren?
Hallo,
ich habe nochmal eine Frage. Wenn ich mit diesem resourcestring
Delphi-Quellcode:
und für den Formatbezeichner s die Strings '@id', '@titel', '@interpret' oder '@genre' eingebe, kann ich die CD-Elemente
fmtXSLdata = '<?xml version="1.0"?>' +
'<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >' + '<xsl:template match="/ | @* | node()">' + '<xsl:copy>' + '<xsl:apply-templates select="@* | node()">' + '<xsl:sort select="%s"/>' + '</xsl:apply-templates>' + '</xsl:copy>'+ '</xsl:template>'+ '</xsl:stylesheet>';
XML-Code:
nach dem übergebenen String sortieren.
<?xml version="1.0"?>
<cdorganizer> <cd id="1" titel="g testcd1" interpret="testinterpret1" genre="genre1"> <track id="1" titel="e testtrack1" interpret="testinterpret1" dauer="11:11:11"/> <track id="2" titel="d testtrack2" interpret="testinterpret2" dauer="11:11:12"/> <track id="3" titel="c testtrack3" interpret="testinterpret3" dauer="11:11:13"/> <track id="4" titel="b testtrack4" interpret="testinterpret4" dauer="11:11:14"/> <track id="5" titel="a testtrack5" interpret="testinterpret5" dauer="11:11:15"/> </cd> <cd id="2" titel="f testcd2" interpret="testinterpret2" genre="genre2"> </cd> <cd id="3" titel="e testcd3" interpret="testinterpret3" genre="genre3"> </cd> <cd id="4" titel="d testcd4" interpret="testinterpret4" genre="genre4"> </cd> <cd id="5" titel="c testcd5" interpret="testinterpret5" genre="genre5"> </cd> <cd id="6" titel="b testcd6" interpret="testinterpret6" genre="genre6"> </cd> <cd id="7" titel="a testcd7" interpret="testinterpret7" genre="genre7"> </cd> </cdorganizer> Wie kann ich aber denn die tracks sortieren? Ich muss doch irgendwie in dem resourcestring, also in den XSL-Daten, die Knotenebene angeben können, in der ich nach den Attributen eines TrackKnoten (also im Prinzip wie oben, bloß eine Hierachie tiefer) sortieren möchte. Könnt ihr mir helfen? |
Re: Wie in XML-Daten die Kindknoten von Kindknoten sortieren
Hallo toko,
mit dem folgenden XSLT-Code kannst du deine Daten zweistufig sortieren. Bei deinen track numbers wirst du recht bald in den zweistelligen Bereich geraten. Um dir dann Kopfschmerzen zu ersparen habe ich dem xsl:sort bereits das Attribut data-type hinzugefügt. Auch diesen Code kannst du in ein Template verwandeln, allerdings sind es jetzt zwei xsl:sort Elemente, die du dann instanziieren musst. Außerdem musst du den data-type entsprechend anpassen.
Code:
Grüße vom marabu
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" > <xsl:template match="cd"> <xsl:copy> <xsl:apply-templates select="@* | track"> <xsl:sort select="@titel" data-type="text"/> </xsl:apply-templates> </xsl:copy> </xsl:template> <xsl:template match="cdorganizer"> <xsl:copy> <xsl:apply-templates select="@* | cd"> <xsl:sort select="@id" data-type="number"/> </xsl:apply-templates> </xsl:copy> </xsl:template> <xsl:template match="/ | @* | node()"> <xsl:copy> <xsl:apply-templates select="@* | node()"/> </xsl:copy> </xsl:template> </xsl:stylesheet> |
Re: Wie in XML-Daten die Kindknoten von Kindknoten sortieren
Hallo marabu,
Danke für deine Antwort. Zitat:
Zitat:
Zitat:
Zitat:
Wie du wahrscheinlich merkst, verwirrt mich diese Sache etwas. Da ich mich schon im Netz dämlich gesucht habe, kannst du mir vielleicht eine Quelle nennen, die den Aufbau solcher XSL-Daten beschreibt? Wäre echt super... Also, wiedereinmal besten Dank für deine Hilfe... Gruß ToKo |
Re: Wie in XML-Daten die Kindknoten von Kindknoten sortieren
Hallo toko,
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
Freundliche Grüße vom marabu |
Re: Wie in XML-Daten die Kindknoten von Kindknoten sortieren
Hat jetzt endlich geklappt...
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:20 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz