Sortierung

Mit Hilfe des Elements <xsl:sort> lassen sich Knoten vor ihrer Ausgabe sortieren. Als Standard ist die Sortierung von Zeichenketten in aufsteigender alphabetischer Reihenfolge vorgegeben. Das Attribut order definiert die Sortierreihenfolge und kann die Werte „ascending“ oder „descending“ einnehmen, während das ebenfalls optionale Attribut data-type festlegt, ob es sich um Zeichenketten („text“) oder Zahlen („number“) handelt. Das <xsl:sort>-Element muss allerdings in ein <xsl:apply-templates>- oder <xsl:for-each>-Element eingebettet sein und darf keinen Inhalt haben.Sortieren

Im folgenden Beispiel werden die Gedichte in der Reihenfolge ihres Erscheinungsdatums ausgegeben.

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output encoding="iso-8859-1" version="1.0"/>
    <xsl:template match="/">
      <xsl:for-each select="//Gedicht">
        <xsl:sort order="ascending" 
        data-type="number" select="@Erscheinungsjahr"/>
        <xsl:apply-templates/>
      </xsl:for-each>
    </xsl:template>
    <xsl:template match="Autor">
        <br/>
        <h4>
        <xsl:apply-templates/>
        </h4>
    </xsl:template>
    <xsl:template match="Vorname">
        <xsl:apply-templates/>
        <xsl:text> </xsl:text>
    </xsl:template>
    <xsl:template match="Nachname">
        <xsl:apply-templates/>
    </xsl:template>
    <xsl:template match="Titel">
        <h2>
        <xsl:apply-templates/>
        </h2>
        <p>Erscheinungsjahr: <xsl:value-of 
        select="parent::Gedicht/@Erscheinungsjahr"/>
        </p>
    </xsl:template>
    <xsl:template match="Strophe">
        <p>
        <xsl:apply-templates/>
        </p>
    </xsl:template>
    <xsl:template match="Vers">
        <xsl:apply-templates/>
        <br/>
    </xsl:template>
    <xsl:template match="Gedicht">
        <xsl:apply-templates/>
    </xsl:template>
</xsl:stylesheet>
 

Das Element <xsl:sort> sorgt dafür, dass alle folgenden Inhalte der Schleife nach dem Erscheinungsjahr sortiert, in aufsteigender numerischer Reihenfolge erscheinen. Das Attribut data-type muss hierfür auf den Wert number gesetzt werden, weil die Grundeinstellung text erwartet.

Sort
Aufgabe 6

In der Instanz Gedicht_sort.xml gibt es zwei Gedichte mit dem gleichen Erscheinungsjahr. Nun soll die zusätzliche Sortierungsregel gelten, dass alle Gedichte zwar nach Erscheinungsjahr zu sortieren sind, sollten aber mehrere Gedichte im gleichen Jahr erschienen sein, sollen diese nach dem Nachnamen des Autors sortiert werden.

Hinweis

Sie finden in der XSLT-Recommendation ein Beispiel für die Verwendung mehrerer gleichzeitiger Sortierungsanweisungen.

Erzeugen Sie zusätzlich ein Inhaltsverzeichnis.

<< zurück
vor >>



Copyright © dpunkt.verlag GmbH 2004
Für Ihren privaten Gebrauch dürfen Sie die Online-Version ausdrucken. Ansonsten unterliegt dieses Kapitel aus dem Buch "XSL-FO in der Praxis" denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


dpunkt.verlag GmbH, Ringstraße 19B, 69115 Heidelberg, fon 06221-14830, fax 06221-148399, Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein!