Homepage-Webhilfe Event-Banner

Nummerierung und Sortierung

XSLT bietet zwei Elemente an, um auf einfache Art und Weise Knoten fortlaufend zu nummerieren und /oder zu sortieren. In den folgenden beiden Abschnitten werden wir auf die Nummerierung und Sortierung von Knoten separat eingehen.


Das leere XSLT-Element number erlaubt es, eine fortlaufende Nummerierung zu erzeugen. Das Element kann dabei direkt innerhalb eines Templates oder aber auch innerhalb einer Schleife vorkommen. Das wichtigste Attribut ist format, in welchem das Nummernformat angegeben wird. Dabei können als Werte die Präfixe 1 (für 1, 2, 3, 4, 5, ...), i (für i, ii, iii, iv, v, ...), I (für I, II, III, IV, V, ...), a (für a, b, c, d, e, ...) und A (für A, B, C, D, E, ...) angegeben werden. Möchten Sie z. B. eine zweistellige Nummerierung, so können Sie 01 (für 01, 02, 03, 04, 05, ..., 10, 11, 12, 13, 14, 15, ...) angeben. Auch die Eingabe von Leerzeichen oder weiteren Zeichen wie . oder ) sind möglich. Das Attribut value erlaubt das Festlegen eines „manuellen“ Werts. Verwendet wird dies immer dann, wenn das number-Element nur zur Formatierung einer einzelnen Zahl genutzt werden soll. Weitere optionale Attribute sind unter anderem grouping-separator (Trennzeichen für die Zifferngruppierung), grouping-size (Ziffernanzahl für die Zifferngruppierung) und count (Knoten, welche nummeriert werden sollen bzw. bei welchen die Nummerierung fortläuft, Angabe als XPath-Ausdruck).

XML-Code:

<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<?xml-stylesheet href="nummerieren.xsl" type="text/xsl" ?>

<zahlen>
    <zahl>45</zahl>
    <zahl>39</zahl>
    <zahl>22</zahl>
    <zahl>70</zahl>
    <zahl>68</zahl>
    <zahl>12</zahl>
    <zahl>51</zahl>
    <zahl>63</zahl>
    <zahl>27</zahl>
    <zahl>94</zahl>
</zahlen>

XSLT-Code:

<?xml version="1.0" encoding="UTF-8" ?>

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="/">
        <html>
            <head>
                <title>Nummerierung - XSLT Code-Beispiel</title>
                
                <meta charset="utf-8" />
                
                <meta name="robots" content="noindex,nofollow" />
                <meta name="publisher" content="Homepage-Webhilfe" />
            </head>
            
            <body>
                <xsl:for-each select="/zahlen/zahl">
                    <span><xsl:number format="1. " /><xsl:value-of select="." /></span><br />
                </xsl:for-each>
            </body>
        </html>
    </xsl:template>
</xsl:stylesheet>
VorschauXML:
VorschauHTML:

Um eine Reihe an Knoten zu sortieren, gibt es das einteilige Element sort. Mit Hilfe des Attributs select können Sie festlegen, an Hand welcher Knoten die Sortierung erfolgen soll. Wird das Attribut weggelassen, so werden die „aktuellen“ Knoten sortiert. Um festzulegen, ob die Sortierung auf- oder absteigend erfolgen soll, können Sie das Attribut order mit den Werten ascending (aufsteigend, Voreinstellung) oder descending (absteigend) verwenden. Das data-type-Attribut ermöglicht es, festzulegen, dass die Sortierung an Hand nummerischer Werte (number) und nicht an Hand von zeichenbasierten Werten (text, Standardeinstellung) erfolgen soll. Bei der Sortierung von Text kann mit Hilfe des Attributs case-order festgelegt werden, ob Großbuchstaben vor Kleinbuchstaben (upper-first) oder Kleinbuchstaben vor Großbuchstaben (lower-first) kommen. Das sort-Element kann innerhalb einer Schleife (for-each-Element) oder innerhalb des apply-templates-Element (Notation erfolgt dann zweiteilig) vorkommen. Wird das Element innerhalb von apply-templates verwendet, so sollte bei diesem das select-Attribut angegeben werden.

XML-Code:

<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<?xml-stylesheet href="sortieren.xsl" type="text/xsl" ?>

<zahlen>
    <zahl>45</zahl>
    <zahl>39</zahl>
    <zahl>22</zahl>
    <zahl>70</zahl>
    <zahl>68</zahl>
    <zahl>12</zahl>
    <zahl>51</zahl>
    <zahl>63</zahl>
    <zahl>27</zahl>
    <zahl>94</zahl>
</zahlen>

XSLT-Code:

<?xml version="1.0" encoding="UTF-8" ?>

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="/">
        <html>
            <head>
                <title>Sortierung - XSLT Code-Beispiel</title>
                
                <meta charset="utf-8" />
                
                <meta name="robots" content="noindex,nofollow" />
                <meta name="publisher" content="Homepage-Webhilfe" />
            </head>
            
            <body>
                <ul>
                    <xsl:for-each select="/zahlen/zahl">
                        <xsl:sort data-type="number" order="descending" />
                        <li><xsl:value-of select="." /></li>
                    </xsl:for-each>
                </ul>
            </body>
        </html>
    </xsl:template>
</xsl:stylesheet>
VorschauXML:
VorschauHTML:
Um unsere Webseite für Sie optimal zu gestalten und fortlaufend verbessern zu können, verwenden wir Cookies. Durch die weitere Nutzung der Webseite stimmen Sie der Verwendung von Cookies zu. Weitere Informationen OK