Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (Deutsch) » SQL Anywhere Server - SQL-Benutzerhandbuch » XML in der Datenbank » XML in der Datenbank benutzen » XML-Dokumente als relationale Daten importieren

 

Standard-XML-Namespaces festlegen

Sie legen einen Standard-Namespace in einem Element eines XML-Dokuments mit einem Attribut der Form xmlns="URI" fest. Im folgenden Beispiel hat ein Dokument den Standard-Namespace, der an den URI http://www.iAnywhere.com/EmployeeDemo gebunden ist:

<x xmlns="http://www.iAnywhere.com/EmployeeDemo"/>

Wenn das Element im Namen kein Präfix hat, wird ein Standard-Namespace auf das Element und seine untergeordneten Klassen angewendet, sofern er festgelegt ist. Ein Doppelpunkt trennt das Präfix vom Rest des Elementnamens. Beispiel: <x/> hat kein Präfix, während <p:x/> das Präfix p hat. Sie legen einen Namespace, der an ein Präfix gebunden ist, mit einem Attribut der Form xmlns:prefix="URI" fest. Im folgenden Beispiel bindet ein Dokument das Präfix p an denselben URI wie das vorherige Beispiel:

<x xmlns:p="http://www.iAnywhere.com/EmployeeDemo"/>

Standard-Namespaces werden nie auf Attribute angewendet. Ein Attribut wird immer an den NULL-Namespace-URI gebunden, außer es hat ein Präfix. Im folgenden Beispiel haben die Wurzel- und untergeordneten Elemente den iAnywhere1-Namespace, während das x-Attribut den NULL-Namespace-URI und das y-Element den iAnywhere2-Namespace hat:

<root xmlns="iAnywhere1" xmlns:p="iAnywhere2">
<child x='1' p:y='2' />
</root>

Die Namespaces, die im Wurzelelement des Dokuments festgelegt sind, werden in der Abfrage angewendet, wenn Sie ein XML-Dokument als Namespace-Deklaration-Argument von einer openxml-Abfrage übergeben. Alle Abschnitte des Dokuments nach dem Wurzelelement werden ignoriert. Im folgenden Beispiel ist p1 an iAnywhere1 im Dokument und an p2 im Namespace-Deklaration-Argument gebunden, und die Abfrage ist in der Lage, das Präfix p2 zu verwenden:

SELECT * 
FROM openxml( '<p1:x xmlns:p1="iAnywhere1"> 1 </x>', '/p2:x', 1, '<root xmlns:p2="iAnywhere1"/>' )
WITH ( c1 int '.' );

Für den Vergleich eines Elements müssen Sie den URI korrekt angeben, an den ein Präfix gebunden ist. Im obenstehenden Beispiel stimmt der x-Name in der xpath-Abfrage mit dem x-Element im Dokument überein, weil sie beide den iAnywhere1-Namespace haben.

Verwenden Sie keinen Standard-Namespace in der Namespace-Deklaration der openxml-Systemprozedur. Verwenden Sie eine Wildcard-Abfrage der Form /*:x, die einem x-Element entspricht, das an einen URI, der den NULL-Namespace enthält, gebunden ist, oder binden Sie den gewünschten URI an ein bestimmtes Präfix und verwenden Sie dies in der Abfrage. Weitere Hinweise über das Generieren von Ergebnismengen von einem XML-Dokument finden Sie unter openxml-Systemprozedur.