Vorige Seite Hauptseite Nächste Seite
xsl:apply-templates
und
xsl:for-each
ist es möglich, die Liste der Knoten zu sortieren. Dazu
ist es nötig, unmittelbar nach dem Aufruf die Sortierordnung
festzulegen. Hier ist ein Beispiel. Es sollen die
Kunden aufgelistet werden, und zwar mit dem Vornamen
zuerst und dann dem Nachnamen. Dabei sollen sie so
sortiert werden, dass logisch gesehen erst die Nachnamen
sortiert werden, und erst wenn zwei Personen den
gleichen Nachnamen haben, wird nach dem Vornamen
sortiert. (Es werden Personen mit dem gleichen Namen
übrigens zweimal ausgegeben.)
<ul> |
<xsl:for-each select="./kunde"> |
<xsl:sort lang="de" select="./name/nach"/> |
<xsl:sort lang="de" select="./name/vor"/> |
<li> |
<xsl:value-of select="./name/vor"/> |
<xsl:text>&npsb;</xsl:text> |
<xsl:value-of select="./name/nach"/> |
</li> |
</xsl:for-each> |
</ul> |
<ul> |
<xsl:for-each select="./kunde"> |
<xsl:sort select="./kundennumer"/> |
<li> |
<xsl:value-of select="./name/vor"/> |
<xsl:text>&npsb;</xsl:text> |
<xsl:value-of select="./name/nach"/> |
</li> |
</xsl:for-each> |
</ul> |
xsl:perform-sort.
<xsl:variable name="vergeben"> |
<xsl:perform-sort select="./kunde/kundennummer"> |
<xsl:sort select="."/> |
</xsl:perform-sort> |
</xsl:variable> |
distinct-values()
aufrufen. Diese braucht ein einziges Argument, welches eine
Liste ist, und eliminiert mehrfache Vorkommen. Diese kann
eine Liste von Knoten bekommen, sie liefert allerdings
lediglich eine Liste von Werten ab, weswegen der Gebrauch
etwas trickreich sein kann. Ich biete hier die folgende
Variante an: $vergeben
ist bereits eine Liste, wir müssen nur noch die Funktion
darauf loslassen und einer Variable übergeben, die dann,
wohlgemerkt, eine Liste von Werten ist.
<xsl:variable name="vergeben2"> select="distinct-values($vergeben)"> |
Vorige Seite Hauptseite Nächste Seite