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

SQL Anywhere 12.0.1 (Deutsch) » SQL Anywhere Server - SQL-Benutzerhandbuch » Verwendung von XML in der Datenbank » XML-Dokumente als relationale Daten importieren

 

Definition von Standard-Namespaces für XML

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, es sei denn, 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-Attribut 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">123</p1: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.

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. Das Präfix des x-Elements der xpath-Abfrage bezieht sich auf den in der Namespace-Deklaration festgelegten iAnywhere1-Namespace, der mit dem für das x-Element in den XML-Daten festgelegten Namespace übereinstimmt.

Verwenden Sie keinen Standard-Namespace in der Namespace-Deklaration der openxml-Systemprozedur. Verwenden Sie eine Wildcard-Abfrage der Form /*:x (entspricht einem x-Element, das an einen URI gebunden ist, der den NULL-Namespace enthält) oder binden Sie den gewünschten URI an ein bestimmtes Präfix und verwenden Sie dieses in der Abfrage.

 Siehe auch