Statischer Kontext
(Auszug aus "XSLT 2.0 & XPath 2.0" von Frank Bongers, Kapitel 4.)
Der statische Kontext wird im Vorfeld einer Verarbeitung bestimmt. Bei XPath-Ausdrücken spricht man hier auch von statischer Analyse. Im Zuge einer statischen Analyse können in einem XPath-Ausdruck Fehler aufgefunden werden, die deshalb als statische Fehler (static errors) bezeichnet werden. Tritt ein statischer Fehler auf, so wird ein XSLT-Prozessor die Verarbeitung eines Stylesheets zurückweisen.
Alle Komponenten des statischen Kontextes werden als global bezeichnet, gelten also unverändert für den ganzen Ablauf der Verarbeitung.
Die Komponenten des statischen Kontextes
Zum statischen Kontext zählen die verfügbaren Informationen über die während der Verarbeitung gültigen Namensräume (in-scope namespaces), zu denen sowohl die an Präfixe gebundenen als auch der Default-Namensraum oder der an Funktionen gebundene Namensraum gehört. Diese Information ist erforderlich, um während der Verarbeitung QNames expandieren zu können.
Auch Schema-Informationen gehören zum statischen Kontext. Dies betrifft sowohl die Deklarationen (in-scope element declarations, in-scope attribute declarations) als auch Schema- und Typdefinitionen (in-scope schema definitions, in-scope type definitions).
Innerhalb des statischen Kontexts werden auch die Variablendeklarationen und auf diese verweisende Referenzen berücksichtigt (in-scope variables). Eine Referenz, die außerhalb ihres Gültigkeitsbereiches auf eine Variable erfolgt, gilt deshalb als statischer Fehler. Dies auch dann, wenn diese Referenz in einem XPath-Ausdruck erfolgt, der zur Laufzeit nicht ausgewertet würde. Variablen des statischen Kontexts können global für ein Stylesheet oder lokal für ein Template definiert sein.
In XPath-Ausdrücken deklarierte Variablen sind dynamischer Kontext:
Eine Ausnahme sind solche Variablen, die im Rahmen von for-Ausdrücken innerhalb eines XPath-Ausdrucks deklariert werden. Diese Variablen zählen zum dynamischen Kontext.
Die innerhalb von XPath-Ausdrücken aufrufbaren Funktionen, genauer die Informationen über ihre Namen und Anzahl sowie Typ ihrer Argumente, gehören ebenfalls zum statischen Kontext (in-scope functions). Zu den Funktionen zählen auch die Konstruktorfunktionen für die gültigen Typen.
Teil des statischen Kontext sind ebenso die sogenannten Collections. Unter diesen versteht man Listen externer Dokumente und Sammlungen, die der Applikation bekannt sind (statically-known documents bzw. statically-known collections). Es kann sich hierbei um eine Liste von URIs handeln, die verfügbare Dokumente bezeichnen.
Die Dokumente bzw. die Sammlungen müssen dabei nicht notwendigerweise auch zur Laufzeit zur Verfügung stehen. Die Liste der tatsächlich verfügbaren Dokumente wird folglich auch dem dynamischen Kontext zugeschlagen.
Weiterhin wird der Basis-URI innerhalb des statischen Kontexts festgelegt. Er dient zur Auflösung relativer URIs während der Verarbeitung, beispielsweise mittels der Funktion fn:resolve-uri().
Die letzte Komponente des statischen Kontexts betrifft die zu Stringvergleichen herangezogenen Collations. Eine Collation enthält einen Regelsatz, der beim Vergleich zweier Strings miteinander bzw. bei der Sortierung mehrerer Strings benötigt wird. Festgelegt wird in der Collation beispielsweise die Reihenfolge von Buchstaben im Alphabet, z.B. ob 'ä' als 'ae' gewertet oder als eigener Buchstabe nach z eingeordnet wird, oder für Stringvergleiche die Gleichsetzung von 'ß' und 'ss'. Zu dieser Komponente zählen alle Collations, die entsprechenden Funktionen für den namentlichen Aufruf zur Verfügung stehen (in-scope collations), und die ansonsten verwendete Default-Collation. (Ist keine Default-Collation in der Systemumgebung definiert, so sind Anwendungen gehalten, gemäß einer standardisierten Unicode-Collation vorzugehen, der Unicode Codepoint Collation.)
Das eben genannte betrifft XPath im allgemeinen. Im Zusammenhang mit einer XSLT-Transformation ist der statische Kontext von XPath noch um weitere Komponenten erweitert, die von XSLT-Funktionen genutzt werden. Hierzu gehören:
- der Satz der vereinbarten Schlüsseldefinitionen (set of keys)
- der Satz der deklarierten Zahlenformatierungen
- der Satz der Systemeigenschaften (system properties)
- die Liste der verfügbaren Instruktionen
- die Liste der Medientypen, die von der document()-Funktion genutzt werden
- die Sammlung der verfügbaren nicht geparsten Textressourcen (unparsed text resources)
<< 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