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 Kompo­nenten 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üs­sen 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 dynami­scher Fehler (dynamic error) gemeldet. Dieser kann zum Abbruch der Verarbei­tung 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 dynami­scher Fehler muss nicht unverzüglich gemeldet werden. Die Applikation kann abwar­ten, ob der betroffene Ausdruck zur Laufzeit tatsächlich ausgewertet wird (dies ergibt die Möglichkeit, diesen Ausdruck entsprechend abzusichern, beispiels­weise mit function-available() oder Ähnlichem).

Die Komponenten des dynamischen Kontextes

Zum dynamischen Kontext zählen als Komponenten die augenblickliche Sys­temzeit (current date and time) sowie der ortsabhängige, ebenfalls der System­zeit entnehmbare, Zeitzonenkorrekturfaktor (implicit timezone). Diese Kompo­nenten 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 laufzeitkon­stant sind die Listen verfügbarer externer Dokumente und Sammlungen (acces­sible documents, accessible collections). Wenn eine nicht leere derartige Liste exis­tiert, 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 dynami­scher 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 Kno­ten, 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 Maxi­malwert 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 Instruktio­nen 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 Auswer­tung 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 ausgewer­tet werden sollen, wird durch den XPath 1.0 compatibility mode bestimmt. Der Wert dieser Komponente wird auf true gesetzt, wenn die Abwärtskompa­tibilitä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