Durchtunneln von Default-Regeln
(Auszug aus "XSLT 2.0 & XPath 2.0" von Frank Bongers, Kapitel 3.)
In Zusammenhang mit dem Aufruf benannter Templates ist das Tunnelprinzip für Variablen leicht aufrechtzuerhalten, da die Kontrolle darüber, welches Template wann, von wo aus und mit welchen Parametern aufgerufen wird, vollständig in der Hand des Stylesheet-Autors liegt. Nicht so deutlich ist dies bei der Verwendung von xsl:apply-templates und gleichzeitig übergebenen Parametern vorherzusagen. Diese Aufrufmethode ist so konzipiert, dass sie sich flexibel der Dokumentstruktur der Quelle anpasst. Es kann also sein, dass ein Aufruf mit Parameterübergabe ins Leere zielt, weil nicht direkt eine Template-Regel angesprochen wird, die den Parameter übernehmen kann.
Bereits im ersten Kapitel ist auf die im XSLT-Prozessor implementierten Default-Regeln für die verschiedenen Knotentypen hingewiesen worden. Für Elemente und den Dokumentknoten lautet die entsprechende Default-Regel folgendermaßen:
<xsl:template match="*|/">
<xsl:apply-templates/>
</xsl:template>
Wie Sie sehen, ist von der Übergabe eines Parameters nicht die Rede, allerdings ist zu beachten, dass es sich nicht um eine reale Template-Regel handelt. Das Verhalten der Default-Regeln in Bezug auf Parameter ist zumindest erwähnenswert. Hier existieren Unterschiede zwischen XSLT 1.0 und XSLT 2.0:
- Eine Default-Regel gibt in XSLT 1.0 keine Parameterwerte weiter.
Bekommt eine Default-Regel einen Parameter übergeben, so wird dieser verworfen, auch wenn die Default-Regel nur Zwischenstation zu derjenigen Template-Regel ist, die den Parameter erwartet.
- In XSLT 2.0 werden Default-Regeln von Parametern durchtunnelt.
Eine angenehme und intuitive Neuerung in XSLT 2.0 ist die automatische Weitergabe eines Parameters durch das Default-Template. Ein ihr übergebener Parameter (auch mehrere) taucht am Ausgang der Regel in Zusammenhang mit der von ihr zusammengestellten Sequenz wieder auf und steht den jetzt aufgerufenen Template-Regeln zur Verfügung. Wird hier wieder eine Default-Regel aktiviert, so geschieht das Gleiche nochmals.
Um Missverständnissen an dieser Stelle vorzubeugen: Es ist nicht erforderlich, dass ein tunnel-Attribut für den übergebenen Parameter gesetzt ist, die Durchtunnelung der Default-Regeln findet hiervon unabhängig für jeden Parameter statt.
<< zurück | vor >> |
Tipp der data2type-Redaktion: Zum Thema XSLT bieten wir auch folgende Schulungen zur Vertiefung und professionellen Fortbildung an: |
Copyright © Galileo Press, Bonn 2008
Für Ihren privaten Gebrauch dürfen Sie die Online-Version ausdrucken.
Ansonsten unterliegt dieses Kapitel aus dem Buch "XSLT 2.0 & XPath 2.0 ― Das umfassende Handbuch" 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.
Galileo Press, Rheinwerkallee 4, 53227 Bonn