mit recursive template sortieren
hh
- xsl
0 Daniel Thoma0 hh
Hi,
ich versuche es nochmal, vielleicht hat ja einer eine Lösung ;-).
file.xml
<root>
<kleidung>
<handschuh att="Wert1" sort="2"/>
<handschuh att="Wert4" sort="1.3"/>
<handschuh att="Wert7" sort="1.0"/>
<handschuh att="Wert3" sort="4.0"/>
</kleidung>
</root>
ich moechte nun handschuhe nach dem Attribute "sort" sortieren und den Wert für Attribute "att" ausgeben. der Haken - ich kann keine xsl:for-each einbauen und xsl:sort anhängen. Zudem wird das file.xml über document() eingelesen. Kann man das recursive lösen? Das Ergebnis muesste dann sein
Wert7
Wert4
Wert1
Wert3
Gruß
Hallo hh,
Sortierung ist nur beim Aufruf von Templates möglich. Statt mit for-each musst Du also mit einem Template für diese Elemente arbeiten:
<xsl:template match="/">
<out>
<xsl:apply-templates select="/root/kleidung/handschuh">
<xsl:sort select="@sort"/>
</xsl:apply-templates>
</out>
</xsl:template>
<xsl:template match="handschuh">
<l><xsl:value-of select="@att"/></l>
</xsl:template>
Grüße
Daniel
Hallo Daniel,
danke für die Antwort. Aber ich haette vielleicht noch dazuschreiben muessen, dass ich ein paar Parameter noch mit übergeben musste und ich deshalb auf xsl:call-template bauen wollte. Wie auch immer ich hatte es dann gestern doch noch geschafft. Eigentlich war es relativ einfach , da mann eigentlich abfragen muss, ob es noch knoten gibt die ein kleineres Attribut aufweisen. Dann muss das Ganze nur wiederholt werden mit dem neuen knoten usw. usw. Ich hatte dann noch eine ganz gute Seite gefunden.
Was mich auch erstaunt, dass die rekursive Lösung etwas schneller ist, als eine for-each Lösung mit Sortierung.
Trotzdem danke für deinen Hinweis.