Variante 2: Der XPath-orientierte Ansatz

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

Benötigt man die Kompatibilität zu XSLT 1.0 nicht, so kann man sich unmittel­bar die Verarbeitung von Sequenzen durch xsl:value-of zunutze machen. Hier geschieht dies, indem die Instruktion mit einem etwas komplexeren XPath-Ausdruck »gefüttert« wird. Anstatt wie vorher einfache XPath-Ausdrücke und mehrere XSLT-Instruktionen einzusetzen, wird genau entgegengesetzt vor­gegangen.

Achtung:
Ein XSLT-Prozessor, der nur XSLT 1.0 und XPath 1.0 beherrscht, kann dieses Beispiel nicht verarbeiten, sondern wird einen Fehler melden!

Bislang wurde der Instruktion stets lediglich ein einziger Knoten übergeben, um jeweils dessen Stringwert zu extrahieren. Dies gibt zwar die Möglichkeit, unmittelbar durch die Anordnung der xsl:value-of-Instruktionen auch die Reihenfolge der Ausgabe zu kontrollieren, andererseits wird für jedes auszuge­bende Element eine Instruktion »verbraucht«.

Wie bereits angedeutet, ist xsl:value-of zu mehr im Stande: Nicht nur der Stringwert eines Einzelausdrucks kann extrahiert werden, sondern der einer ganzen Sequenz von Eingabeausdrücken. Erzeugt der XPath-Ausdruck des select-Attributs daher eine Sequenz, so entspricht der Rückgabewert den aneinander gehängten Stringwerten der Einzelwerte. (Anmerkung: Hier liegt, zugegeben, eine kleine didaktisch bedingte Unterschlagung vor. Ich bitte um etwas Geduld :-).)

Anstatt mehrere Instruktionen zu verwenden, die jeweils einen Knoten speziell auswählen, kann demzufolge auch eine einzige Instruktion mit einer »maßge­schneiderten« Eingabesequenz eingesetzt werden. Nur, woher diese Sequenz nehmen?

   

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