xsl:apply-imports

(Auszug aus "XSLT 2.0 & XPath 2.0" von Frank Bongers, Kapitel 3.)

Normalerweise liegt eine importierte Templateregel brach, wenn eine gleichar­tige Regel mit höherer Importpräzedenz existiert, sei es im Hauptmodul, im eigenen oder einem anderen Importzweig. Steht ein Knoten zur Verarbeitung an, auf den ihr match-Pattern passt, so wird immer diejenige Regel mit der höchsten Importpräzedenz aktiviert. Manchmal soll jedoch eine importierte Regel zusätzlich zu einer regulär vorhandenen als nachgeordnete Templateregel ausgeführt werden. Hierfür sorgt in diesem speziellen Fall die Instruktion xsl:apply-imports.

<!-- lokale Regel: -->
<xsl:template match="beispiel">
  <html>
    <head>
      <title>Beispiel für apply-imports</title>
    </head>
    <body>
      <p>Ich verarbeite Beispiele. Mehr kann ich nicht.</p>
      <xsl:apply-imports/>
      <p>Ende der Verarbeitung des Beispiels.</p>
    </body>
  </html>
</xsl:template>

Code-Beispiel: kap03/3.8/ apply-imports-beispiel.xsl.

Hierbei wird jeweils genau die eine Templateregel mit der nächstniedrigeren Präzedenz aktiviert, also nie alle der in Frage kommenden Regeln.

<!-- importierte Regel: -->
<xsl:template match="beispiel">
  <p><b>Hallo Welt! Hier ist die Importregel!<br/> Der Beispielsatz hat <xsl:value-of select="string-length()"/> Zeichen.</b></p>
  <xsl:apply-templates/>
</xsl:template>

Code-Beispiel: kap03/3.8/modul-apply-imports.xsl.

Existiert keine aktivierbare importierte Regel, so stellt dies keinen Fehler dar. In diesem Fall wird eine passende Defaultregel aktiviert – hier verhält sich xsl:apply-imports also wie xsl:apply-templates.

Der Aufruf richtet sich aus der aktuellen, gerade verarbeiteten Templateregel (Current Template Rule) an dasjenige importierte Template, dessen match-Attri­but der aktuellen Templateregel am ähnlichsten (next matching) ist. Verarbeiten Sie die Beispieldatei kap3/3.8/apply-imports-beispiel.xml mit dem oben genannten Stylesheet, so erhalten Sie eine Ansicht wie in dieser Abbildung.

Ergebnis der Verarbeitung eines importierten Moduls

Abbildung: Ergebnis der Verarbeitung eines importierten Moduls.

Dabei werden die (fett markierten) Zeilen durch die reaktivierte Importregel hinzugefügt. Die Ausgabe des Beispieltextes selbst geschieht über die Default­regel für Textknoten, die von der xsl:apply-templates-Instruktion der impor­tierten Regel aufgerufen wird.

   

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