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 Tem­plate wann, von wo aus und mit welchen Parametern aufgerufen wird, voll­ständig in der Hand des Stylesheet-Autors liegt. Nicht so deutlich ist dies bei der Verwendung von xsl:apply-templates und gleichzeitig übergebenen Para­metern vorherzusagen. Diese Aufrufmethode ist so konzipiert, dass sie sich fle­xibel der Dokumentstruktur der Quelle anpasst. Es kann also sein, dass ein Auf­ruf 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 fol­gendermaßen:

<xsl:template match="*|/">
  <xsl:apply-templates/>
</xsl:template>

Wie Sie sehen, ist von der Übergabe eines Parameters nicht die Rede, aller­dings 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äh­nenswert. 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 ver­worfen, 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 übergebe­ner Parameter (auch mehrere) taucht am Ausgang der Regel in Zusammen­hang 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 Durch­­tunnelung 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