Der Pfadausdruck – relativ und absolut
(Auszug aus "XSLT 2.0 & XPath 2.0" von Frank Bongers)
Zwar lautet der XPath-Ausdruck hier nur gruss, er besitzt jedoch die gleiche Gesamtbedeutung wie der »zusammengesetzte« Ausdruck /gruss, da er im Hinblick auf den Kontext / betrachtet werden muss: Es handelt sich bei gruss also um einen relativen Ausdruck.
Da die Wirkung eines relativen Ausdrucks einer Verkettung mit seinem aktuellen Kontext gleichkommt, ist diese verschieden, je nachdem, wie der Auswertungskontext lautet, auf den er sich bezieht: Relative Pfadausdrücke sind stets kontextbezogen.
Wo es relative Ausdrücke gibt, da gibt es auch absolute. Im Grunde haben Sie, ohne es zu wissen, bereits einen gesehen: /gruss ist ein solcher absoluter Ausdruck. Absolute Ausdrücke beginnen stets mit einem Slash »/«. Sie bringen stets das gleiche Ergebnis, ungeachtet des aktuellen Kontextes: Absolute Pfadausdrücke sind dokumentbezogen.
Bei Lichte betrachtet, wird es jetzt klar, warum die Instruktion im zweiten Fall kein Ergebnis bringen konnte: Ihr ist nicht der korrekte Pfad übergeben worden. Der Weg zum Text in <gruss> führt vom Dokumentknoten über das Element <hallo>. Den Gesamtausdruck müsste man sich daher folgendermaßen denken:
/hallo/gruss
Da der Dokumentknoten bereits Kontext ist, genügt für xsl:value-of der relative Ausdruck hallo/gruss:
<xsl:value-of select="hallo/gruss"/>
Übrigens kann stets auch ein absoluter Ausdruck verwendet werden. In diesem Fall würde daher
<xsl:value-of select="/hallo/gruss"/>
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