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 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.

Auch hier ein kleines Beispiel:

<?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"/>
						<xsl:text> </xsl:text>
						<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>
				<br/>
				<xsl:apply-templates/>
				<br/>
		</xsl:template>
		<xsl:template match="Gedicht">
				<br/>
				<xsl:apply-templates/>
		</xsl:template>
</xsl:stylesheet>

In diesem Template wird das <xsl:number>-Element dazu benutzt, die Gedichte zu nummerieren. In der Grundeinstellung das Attribut 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.

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.

Das <xsl:number>-Element wird hier mit den drei wichtigsten Attributen eingesetzt. Das Attribut level gibt an, ob die Zählung einfach single 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.

Number
Aufgabe 7

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 .

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.

Die folgende Abbildung verdeutlicht die Aufgabenstellung:

Number2

<< 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 gegen Spambots geschützt! Sie müssen JavaScript aktivieren, damit Sie sie sehen können.