Innerer und äußerer Fokus in Pfad- und Predicate-Ausdrücken
(Auszug aus "XSLT 2.0 & XPath 2.0" von Frank Bongers, Kapitel 4.)
Ein wichtiges Konzept in Bezug auf den Fokus eines XPath-Ausdrucks ist die gelegentliche Unterscheidung zwischen »innerem« und »äußerem« Fokus im Laufe der Auswertung des Ausdruckes bzw. seiner Teilausdrücke. Betroffen sind zusammengesetzte Pfadausdrücke und Predicate-Ausdrücke.
Ein zusammengesetzter Pfadausdruck (Pfadausdruck aus mindestens zwei Schritten) der Form
ausdruck_1/ausdruck_2
oder ein Predicate-Ausdruck (Schritt mit Filterbedingung) der Form
ausdruck_1[ausdruck_2]
besitzt einen Fokus für die Auswertung jedes seiner Teilausdrücke ausdruck_1 und ausdruck_2.
Die Auswertung erfolgt von links nach rechts. Es wird also zunächst ausdruck_1 ausgewertet und eine Sequenz, die Primärsequenz, erzeugt. Diese wird nachfolgend zur aktuellen Sequenz. Die Auswertung von ausdruck_1 erfolgt bezogen auf den zu diesem Zeitpunkt aktuellen Kontext, der deshalb als äußerer Fokus bezeichnet wird.
Die Items der durch ausdruck_1 erzeugten Primärsequenz werden nacheinander als jeweils wechselnder Bezugspunkt für die folgende Auswertung von ausdruck_2 verwendet. Dessen Auswertung erfolgt also einmal für jedes Item der Primärsequenz. Dieser wechselnde Bezugskontext wird als innerer Fokus bezeichnet. Der innere Fokus ist temporär. Er existiert nur während der Auswertung des zweiten Ausdrucks. Sobald die Auswertung von ausdruck_2 beendet ist, gilt wieder der Kontextknoten, die Kontextposition und die Kontextgröße des äußeren Fokus.
<< zurück | vor >> |
Tipp der data2type-Redaktion: Zum Thema XPath 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