Nummerierung

Mit <xsl:number> lassen sich Knoten im Ergebnisbaum Sequenzen zuweisen. Es lassen sich so beispielsweise Kapitel, Abschnitte oder einfache Elemente nummerieren. Die Nummerierung in verschiedenen Ebenen ist ebenfalls möglich und auch die Formatierung der Ausgabe lässt sich bestimmen. So kann man mit dem Attribut format eine Nummerierung mit arabischen oder römischen Zahlen oder mit Buchstaben generieren.

Das <xsl:number>-Element besitzt drei in der Praxis gebräuchliche Attribute count, level und format. Das Attribut count bestimmt, welche Knoten gezählt werden sollen, level bestimmt die Zählweise und format das Format der Anzeige.

Das Stylesheet:

<?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="Gedichtsammlung">
      <html>
         <body>
            <xsl:apply-templates/>
         </body>
      </html>
   </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:number format="I" level="any"/>          (1)
         <xsl:text> </xsl:text>                        (2)
         <xsl:apply-templates/>
      </h2>
   </xsl:template>
   <xsl:template match="Strophe">
      <p>
         <b>Strophe <xsl:number/></b>
         <br/>
         <xsl:apply-templates/>
      </p>
   </xsl:template>
   <xsl:template match="Vers">
      <b>Vers <xsl:number level="multiple" count="//Strophe | //Strophe/Vers" format="1.1"/></b> (3)
      <br/>
      <xsl:apply-templates/>
      <br/>
   </xsl:template>
   <xsl:template match="Gedicht">
      <br/>
      <xsl:apply-templates/>
   </xsl:template>
</xsl:stylesheet>

(1) In diesem Template wird das <xsl:number>-Element dazu benutzt, die Gedichte zu nummerieren. In der Grundeinstellung des Attributs format erfolgt die Nummerierung in arabischen Zahlen. Der Wert I sorgt nun für eine Zählung mit großen römischen Ziffern.

Gezählt werden hier alle vorkommenden Elemente Gedicht in allen Ebenen, da das level-Attribut mit dem Wert any eine Berücksichtigung der Struktur ausschaltet.

(2) Das Element <xsl:text> erlaubt es, Text in das Zieldokument zu kopieren. Dies ist an dieser Stelle zwar auch ohne dieses Element möglich, allerdings wird es im Zusammenhang mit XSL-FO oft gebraucht, weil damit beispielsweise Leerzeichen als Bestandteil des auszugebenden Textes genau kontrolliert werden können.

(3) Das <xsl:number>-Element wird hier mit den drei wichtigsten Attributen eingesetzt. Das Attribut level gibt an, ob die Zählung single, also einfach, oder aber multiple, also in der Form (1., 1.1, 1.2, ...), erfolgen soll. Das Attribut format legt die Formatierung fest. Mögliche Werte sind 1, a, A, i und I, die kombiniert werden können. Jede Ebene wird mit Hilfe eines Zeichens getrennt. Hier wird der Punkt benutzt, denkbar wären aber auch andere Trennzeichen. Das count-Attribut legt fest, auf welcher Ebene welche Elemente gezählt werden sollen. Das Trennzeichen für die Ebenen ist das |-Zeichen.

Browser-Ansicht des Zieldokumentes:

Browser-Ansicht: Beispiel - Nummerierung

Aufgabe 6

a) Ergänzen Sie das Beispiel so, dass zusätzlich in den Versen die römische Nummerierung des Gedichtes erscheint, zum Beispiel: Vers I.3.4.

b) Schreiben Sie das Stylesheet so um, dass eine durchgängige Zeilenzählung erscheint. Zu der Zählung sollen alle Texte, die angezeigt werden, gehören.

> > zu den Lösungen von Aufgabe 6

   

<< zurück vor >>

 

Tipp der data2type-Redaktion:
Zum Thema XSLT bieten wir auch folgende Schulungen zur Vertiefung und professionellen Fortbildung an:

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, hallo(at)dpunkt.de