Erweiterungsfunktionen und Erweiterungselemente

(Auszug aus "DocBook-XML: Medienneutrales und plattformunabhängiges Publizieren" von Thomas Schraitle)

Der Autor Norman Walsh hat für Saxon und Xalan Erweiterungen in Java bereitgestellt, die mit normalen XSLT-Mitteln nicht oder nur sehr schwer möglich sind. Für xsltproc ist eine Entsprechung in Vorbereitung.

Die folgenden Probleme sind mit den Mitteln von XSLT nur schwer oder überhaupt nicht zu lösen:

Bestimmung der Breite und Höhe einer Grafik

Mit XSLT ist es unmöglich, die Breite und Höhe einer Grafik zu bestimmen. Aus diesem Grund gibt es die Erweiterungsfunktionen getWidth und getDepth.

Berechnung der Breite von Tabellenspalten

Das CALS-Tabellenmodell unterstützt sowohl absolute (3cm) und relative (2*) Spaltenbreiten als auch eine Kombination (2*+3mm) aus beiden. Zwar gibt es in XSL-FO ein entsprechendes Attribut (proportional-column-width), jedoch ist eine Entsprechung in HTML nicht vorhanden. Für diesen Zweck berechnet die Erweiterungsfunktion adjustColumnWidths die absoluten Spaltenbreiten.

Markierungspunkte (Callouts)

Die Position von Markierungspunkten darf auch außerhalb des Textes angegeben werden (vgl. Markierungspunkte (Callouts)). Die Erweiterungsfunktion insertCallouts fügt diese Markierungspunkte in den entsprechenden Text ein.

Texteinfügungen

DocBook erlaubt durch textdata auf externe, XML-fremde Textdaten zu verweisen. XSLT 1 hat keinen Mechanismus, externe Textdateien einzufügen. Die Erweiterungsfunktion insertfile behebt diesen Mangel.

Zeilennummerierung

Nummerierte Programmlistings sind mit einigem Aufwand in n XSLT 1 möglich. Die Erweiterungsfunktion numberLines erleichtert diese Aufgabe.

Um die Erweiterungsfunktionen zu nutzen, benötigen Sie Saxon oder Xalan und müssen die entsprechenden Parameter in der folgenden Tabelle "Parameter der Erweiterungsfunktionen" aktivieren. Setzen Sie den Wert auf 1. Standardmäßig sind alle Erweiterungsfunktionen (bis auf use.extensions) mit dem Wert 1 (= an) belegt. 

Tabelle: Parameter der Erweiterungsfunktionen

Parameter Beschreibung
use.extensions der "Hauptschalter", ohne ihn läuft nichts; zusätzlich zu diesem muss einer der nachfolgenden Parameter eingeschaltet werden.
callouts.extension wird für die Platzierung der Callouts verwendet
linenumbering.extension aktiviert die Zeilennummerierungen wie in screen und programlisting.
tablecolumns.extension aktiviert die Berechnung der Spaltenbreiten von Tabellen.
textinsert.extension aktiviert das Einfügen von Text.
graphicsize.extension aktiviert die Berechnungen der Breite und Tiefe von Grafiken.

Um die erweiterte Behandlung von Markierungspunkten zu aktivieren, rufen Sie Saxon wie folgt auf:

saxon -o OUTFILE XML_FILE XSLT_FILE \ 
  use.extensions="1" callouts.extension="1" ...

Mit Xalan sieht der gleiche Aufruf wie folgt aus:

xalan -OUT OUTFILE -IN XML_FILE -XSL XSLT_FILE \
  -PARAM use.extensions "1" -PARAM callouts.extension "1"
Tipp der data2type-Redaktion:
Zum Thema DocBook bieten wir auch folgende Schulungen zur Vertiefung und professionellen Fortbildung an:

Copyright © 2009 Millin Verlag
Für Ihren privaten Gebrauch dürfen Sie die Online-Version ausdrucken.
Ansonsten unterliegt dieses Kapitel aus dem Buch "DocBook-XML: Medienneutrales und plattformunabhängiges Publizieren" 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.

Millin Verlag, Siebengebirgsring 36, 53797 Lohmar, info(at)millin.de