Namensraumdefinitionen
Wie in XML-Dokumenten, so können auch in XQuery-Modulen Präfixe an Namensräume gebunden werden. Die Syntax dazu ist:
NamespaceDecl | ::= | declare namespace NCName = StringLiteral ; |
Das definierte Präfix ist im gesamten XQuery-Modul gültig, kann aber innerhalb eines Elementkonstruktors durch ein xmlns:-Attribut überschrieben werden. Im folgenden Beispiel gehört das Element X zum Namensraum "http://www.xquery-buch.de/X", das Element Y zum Namensraum "http://www.xquery-buch.de/Y":
declare namespace N = "http://www.xquery-buch.de/X";
<N:X><N:Y xmlns:N="http://www.xquery-buch.de/Y"/></N:X>
Alle Präfixe, die in einem XQuery-Modul verwendet werden, müssen an einen Namensraum gebunden sein. Folgende Präfixe sind vordefiniert:
xml = "http://www.w3.org/XML/1998/namespace"
xs = "http://www.w3.org/2001/XMLSchema"
xsi = "http://www.w3.org/2001/XMLSchema-instance"
fn = "http://www.w3.org/2003/11/xpath-functions"
xdt = "http://www.w3.org/2003/11/xpath-datatypes"
local = "http://www.w3.org/2003/11/xquery-local-functions"
Diese Namensraumangaben können (mit Ausnahme des xml-Präfixes) überdefiniert werden. Aus nahe liegenden Gründen darf das Präfix xmlns nicht definiert werden.
DefaultNamespaceDecl(1) | ::= | declare default element namespace StringLiteral ; |
Wenn es keine solche Definition gibt, dann gehören unqualifizierte Elementnamen und Typnamen zu keinem Namensraum. Für Elemente kann der Namensraum durch ein xmlns-Attribut überschrieben werden, wie folgendes Beispiel zeigt:
declare default element namespace "http://example.org/names";
<A><B xmlns="http://example.org/altnames"/></A>
Das Element A gehört zum Namensraum "http://example.org/names", das Element B zum Namensraum "http://example.org/altnames".
Analog gibt es eine Definition für den Namensraum von Funktionsnamen:
DefaultNamespaceDecl(2) | ::= | declare default function namespace StringLiteral ; |
Liegt keine solche Definition vor, gehören alle Funktionsnamen zum Namensraum "http://www.w3.org/2003/11/xpath-functions". Das bedeutet, dass alle "eingebauten" XQuery-Funktionen nur dann ohne das Präfix fn: aufgerufen werden können, wenn kein anderer default element namespace definiert wurde.
Quelle: "XQuery – Grundlagen und fortgeschrittene Methoden", dpunkt-Verlag, Heidelberg (2004)
<< zurück | vor >> |