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

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ückvor >>