Dynamischer Kontext
(Auszug aus "XSLT 2.0 & XPath 2.0" von Frank Bongers, Kapitel 4.)
Während der Laufzeit der Verarbeitung erfolgt die Auswertung eines XPath-Ausdrucks im dynamischen Kontext (evaluation context). Drei wichtige Komponenten des dynamischen Kontexts bestimmen den sogenannten Fokus des XPath-Ausdrucks.
Dies sind das Kontextitem (dies kann auch ein Knoten sein, der dann Kontextknoten genannt wird), dessen Kontextposition und die Kontextgröße. Der Fokus ermöglicht dem Prozessor die Verfolgung und damit Steuerung des Verarbeitungsprozesses.
Die Komponenten des dynamischen Kontexts, auf die zugegriffen wird, müssen zum Zeitpunkt des Zugriffs gültig sein. Ist dies nicht der Fall, existiert also beispielsweise kein Kontextitem wenn auf eines zugegriffen werden soll, so wird ein dynamischer Fehler (dynamic error) gemeldet. Dieser kann zum Abbruch der Verarbeitung führen, es sei denn, er zählt zu den sogenannten »nicht kritischen« Fehlern (recoverable errors). Dynamische Fehler werden auch als Laufzeitfehler bezeichnet.
Hinweis – Nachsicht gegenüber »potenziellen« dynamischen Fehlern
Ein bereits während der statischen Analyse bemerkter potenzieller dynamischer Fehler muss nicht unverzüglich gemeldet werden. Die Applikation kann abwarten, ob der betroffene Ausdruck zur Laufzeit tatsächlich ausgewertet wird (dies ergibt die Möglichkeit, diesen Ausdruck entsprechend abzusichern, beispielsweise mit function-available() oder Ähnlichem).
Die Komponenten des dynamischen Kontextes
Zum dynamischen Kontext zählen als Komponenten die augenblickliche Systemzeit (current date and time) sowie der ortsabhängige, ebenfalls der Systemzeit entnehmbare, Zeitzonenkorrekturfaktor (implicit timezone). Diese Komponenten sind zwar abhängig vom Zeitpunkt (und geographischen Ort) der Verarbeitung und in diesem Sinne dynamisch, für die Laufzeit der Verarbeitung jedoch konstant – werden also vergleichbar dem statischen Kontext als global bezeichnet.
Gleichermaßen zum dynamischen Kontext gehörig und ebenfalls laufzeitkonstant sind die Listen verfügbarer externer Dokumente und Sammlungen (accessible documents, accessible collections). Wenn eine nicht leere derartige Liste existiert, handelt es sich um eine Untergruppe der statisch bekannten Dokumente und Sammlungen (siehe oben).
Als dynamischer Kontext gelten diejenigen Variablen, die innerhalb von XPath-Ausdrücken definiert und gebunden werden. Eine solche Bindung dynamischer Variablen erfolgt innerhalb von for-Ausdrücken (siehe Sequenz-Ausdrücke) – auch die Referenz der Variable muss im gleichen Ausdruck stattfinden.
Zu den Fokuskomponenten gehört in erster Linie der Kontextknoten (context node) bzw., sofern aktuell kein Knoten, sondern ein atomarer Wert verarbeitet wird – allgemeiner – das Kontextitem (context item).
Die Größe der aktuellen Sequenz, d.h. die Anzahl der in ihr vorhandenen Items, wird als Kontextgröße (context size) bezeichnet. Diese ist konstant während der Verarbeitung einer Sequenz, wechselt aber dynamisch, sobald eine neue aktuelle Sequenz verarbeitet wird.
Das Kontextitem wechselt dynamisch im Zuge der Auswertung von Pfadausdrücken und von in diesen enthaltenen Predicates. Die Position des aktuell verarbeiteten Kontextitems innerhalb der Sequenz wird als Kontextposition (context position) bezeichnet. Sie wechselt dynamisch während der Verarbeitung der aktuellen Sequenz (current sequence). Der Maximalwert der Kontextposition entspricht der aktuellen Kontextgröße.
Im Kontext einer XSLT-Transformation ist der dynamische Kontext von XPath um weitere Komponenten erweitert, die von XSLT-Funktionen und Instruktionen genutzt werden. Hierzu zählen:
- die aktuelle Gruppe (current-group) einer Gruppierungsinstruktion xsl:for-each-group
- deren aktueller Gruppierungsschlüssel (current-grouping-key)
- der aktuell erfasste Teilstring (current-captured-substring) während der Auswertung eines regulären Ausdrucks wie mit der Instruktion xsl:analyze-string
Auch der Kompatibilitätsmodus entscheidet über die Auswertung
Ob die im Stylesheet enthaltenen XPath-Ausdrücke gemäß den Regeln von XPath 2.0 oder abwärtskompatibel gemäß den Regeln von XPath 1.0 ausgewertet werden sollen, wird durch den XPath 1.0 compatibility mode bestimmt. Der Wert dieser Komponente wird auf true gesetzt, wenn die Abwärtskompatibilität zu XPath 1.0 gewährleistet werden muss, ansonsten steht er auf false.
<< 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