• +49-(0)721-402485-12
Ihre Experten für XML, XQuery und XML-Datenbanken

Statischer Kontext

Der statische Kontext, der die Auswertung einer XQuery-Anfrage steuert, besteht unter anderem aus folgenden Komponenten:

  • Bekannte Namensräume ("in-scope namespaces")
    Bei bekannten Namensräumen handelt es sich um Paare aus Präfix und Namensraum-URI. Diese werden benutzt, um qualifizierte Namen (QNames) innerhalb des XQuery-Moduls aufzulösen. Einige Namensräume sind vordefiniert. Hinzu kommen noch weitere Namensräume durch die Namensraumdeklarationen im XQuery-Prolog sowie mit einem eingeschränkten Gültigkeitsbereich noch diejenigen Namensraumdeklarationen, die über Konstruktoren für Namensraumknoten oder in Namensraumattributen in direkten Elementkonstruktoren definiert werden.
  • Vorbelegung für den Elementnamensraum
    Elementnamen und Typnamen, die kein Namensraumpräfix tragen, gehören zu diesem Namensraum. Dieser kann durch den XQuery-Prolog gesetzt werden. Ist er nicht gesetzt, so gehören die entsprechenden Elemente und Typen zu keinem Namensraum. Innerhalb von Elementkonstruktoren kann dieser Namensraum durch ein xmlns-Attribut oder einen Namensraumknoten umdefiniert werden.
  • Vorbelegung für den Funktionsnamensraum
    Funktionsnamen, die kein Namensraumpräfix haben, gehören zu diesem Namensraum, der mit dem Namensraum der XQuery-Funktionen vorbesetzt ist, aber im XQuery-Prolog umdefiniert werden kann.
  • Schemadefinitionen ("in-scope schema definitions")
    Schemadefinitionen beinhalten alle Typdefinitionen, Element- und Attributdefinitionen, die zum Auswertungszeitpunkt bekannt sind. Das sind zum einen die Typen aus XML Schema und die Typen aus XQuery, zum anderen die Typen, Elemente und Attribute, die in importierten Schemata definiert wurden.
  • Variablendefinitionen ("in-scope variables")
    Dies sind die Variablen, die in einem XQuery-Ausdruck verwendet werden dürfen, mit ihrem Typ. Dazu gehören die im XQuery-Prolog definierten Variablen und die in importierten Modulen definierten Variablen, aber auch (mit eingeschränktem Gültigkeitsbereich) die Variablen, die in XQuery-Anweisungen wie z. B. FLWOR-Ausdrücken gebunden oder in Parameterleisten von Funktionen definiert werden.
  • Funktionen ("in-scope functions")
    Dies sind alle Funktionen, die in einem XQuery-Ausdruck aufgerufen werden dürfen. Zunächst gehören dazu alle XQuery-Funktionen und die Konstruktoren für alle bekannten Typen. Hinzu kommen alle Funktionen, die in importierten Modulen definiert wurden, und alle Funktionen, die im XQuery-Prolog definiert werden.
  • Vorbelegung für die Sortierordnung
    Dies ist üblicherweise die Unicode-Codepoint-Sortierordnung, dies kann aber durch den XQuery-Prolog verändert werden.
  • Validierungsmodus
    Dieser Modus steuert unter anderem, wie neu konstruierte Elemente validiert werden. Initial hat er den Wert lax, kann aber im XQuery-Prolog verändert werden. Mit eingeschränktem Wirkungsbereich kann er auch durch eine validate-Anweisung überschrieben werden.
  • Behandlung von begrenzendem Leerraum
    Begrenzender Leerraum wird normalerweise unterdrückt (strip). Dies kann jedoch durch die Angabe von declare xmlspace preserve im XQuery-Prolog geändert werden.

Die XQuery-Spezifikation lässt es zu, dass eine XQuery-Implementierung die initialen Werte des statischen Kontexts erweitert (also zum Beispiel weitere vordefinierte Namensraumpräfixe hinzufügt) oder ändert.

 

Quelle: "XQuery – Grundlagen und fortgeschrittene Methoden", dpunkt-Verlag, Heidelberg (2004)

<< zurückvor >>