Angeben von Achsen in XPath-Abfragen (SQLXML 4.0)
Gilt für: SQL Server Azure SQL-Datenbank
In den folgenden Beispielen wird gezeigt, wie Achsen in XPath-Abfragen angegeben werden.
Die XPath-Abfragen in diesen Beispielen werden für das in SampleSchema1.xml enthaltene Zuordnungsschema angegeben. Informationen zu diesem Beispielschema finden Sie unter "Beispiel für XSD-Schema für XPath-Beispiele (SQLXML 4.0)".
Beispiele
A. Abrufen von untergeordneten Elementen des Kontextknotens
Die folgende XPath-Abfrage wählt alle <untergeordneten Contact-Elemente> des Kontextknotens aus:
/child::Contact
In der Abfrage child
ist die Achse und Contact
der Knotentest (TRUE, wenn Contact
es sich um einen <Elementknoten> handelt, da <element> der primäre Knotentyp ist, der der child
Achse zugeordnet ist).
Die child
-Achse ist die Standardachse. Daher kann die Abfrage wie folgt geschrieben werden:
/Contact
So testen Sie die XPath-Abfrage mit dem Zuordnungsschema
Kopieren Sie den Beispielschemacode , und fügen Sie ihn in eine Textdatei ein. Speichern Sie die Datei unter dem Dateinamen SampleSchema1.xml.
Erstellen Sie die folgende Vorlage (XPathAxesSampleA.xml), und speichern Sie sie in dem Verzeichnis, in dem SampleSchema1.xml gespeichert wurde.
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> <sql:xpath-query mapping-schema="SampleSchema1.xml"> /Contact </sql:xpath-query> </ROOT>
Der für das Zuordnungsschema (SampleSchema1.xml) angegebene Verzeichnispfad bezieht sich auf das Verzeichnis, in dem die Vorlage gespeichert wird. Es kann auch ein absoluter Pfad angegeben werden. Beispiel:
mapping-schema="C:\MyDir\SampleSchema1.xml"
Erstellen und verwenden Sie das SQLXML 4.0-Testskript (Sqlxml4test.vbs), um die Vorlage auszuführen.
Weitere Informationen finden Sie unter Verwenden von ADO zum Ausführen von SQLXML 4.0-Abfragen.
Im Folgenden finden Sie einen Auszug aus dem Resultset der Vorlagenausführung:
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
<Contact ContactID="1" LastName="Achong" FirstName="Gustavo" Title="Mr." />
<Contact ContactID="2" LastName="Abel" FirstName="Catherine" Title="Ms." />
<Contact ContactID="3" LastName="Abercrombie" FirstName="Kim" Title="Ms." />
<Contact ContactID="4" LastName="Acevedo" FirstName="Humberto" Title="Sr." />
...
</ROOT>
B. Abrufen von untergeordneten Elementen zweiter Ordnung des Kontextknotens
Die folgende XPath-Abfrage wählt alle untergeordneten Elemente des Order-Elements> des <Customer-Elements> des Kontextknotens aus:<
/child::Customer/child::Order
In der Abfrage child
ist die Achse und Customer
Order
die Knotentests (diese Knotentests sind TRUE, wenn Customer und Order Elementknoten> sind<, da der <Elementknoten> der primäre Knoten für die untergeordnete Achse ist). Für jeden Knoten, der dem Kunden> entspricht<, werden die Knoten, die "Orders>" entsprechen<, dem Ergebnis hinzugefügt. Im Resultset wird nur <"Order"> zurückgegeben.
Die untergeordnete Achse ist die Standardachse. Daher kann die Abfrage wie folgt angegeben werden:
/Customer/Order
So testen Sie die XPath-Abfrage mit dem Zuordnungsschema
Kopieren Sie den Beispielschemacode , und fügen Sie ihn in eine Textdatei ein. Speichern Sie die Datei unter dem Dateinamen SampleSchema1.xml.
Erstellen Sie die folgende Vorlage (XPathAxesSampleB.xml), und speichern Sie sie im folgenden Verzeichnis:
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> <sql:xpath-query mapping-schema="SampleSchema1.xml"> /Customer/Order </sql:xpath-query> </ROOT>
Der für das Zuordnungsschema (SampleSchema1.xml) angegebene Verzeichnispfad bezieht sich auf das Verzeichnis, in dem die Vorlage gespeichert wird. Es kann auch ein absoluter Pfad angegeben werden. Beispiel:
mapping-schema="C:\MyDir\SampleSchema1.xml"
Erstellen und verwenden Sie das SQLXML 4.0-Testskript (Sqlxml4test.vbs), um die Vorlage auszuführen.
Weitere Informationen finden Sie unter Verwenden von ADO zum Ausführen von SQLXML 4.0-Abfragen.
Im Folgenden finden Sie einen Auszug aus dem Resultset der Vorlagenausführung:
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
<Order SalesOrderID="Ord-43860" SalesPersonID="280"
OrderDate="2001-08-01T00:00:00"
DueDate="2001-08-13T00:00:00"
ShipDate="2001-08-08T00:00:00">
<OrderDetail ProductID="Prod-729" UnitPrice="226.8571"
OrderQty="1" UnitPriceDiscount="0" />
<OrderDetail ProductID="Prod-732" UnitPrice="440.1742"
OrderQty="1" UnitPriceDiscount="0" />
<OrderDetail ProductID="Prod-738" UnitPrice="220.2496"
OrderQty="1" UnitPriceDiscount="0" />
<OrderDetail ProductID="Prod-753" UnitPrice="2576.3544"
OrderQty="2" UnitPriceDiscount="0" />
<OrderDetail ProductID="Prod-756" UnitPrice="1049.7528"
OrderQty="1" UnitPriceDiscount="0" />
<OrderDetail ProductID="Prod-758" UnitPrice="1049.7528"
OrderQty="2" UnitPriceDiscount="0" />
<OrderDetail ProductID="Prod-761" UnitPrice="503.3507"
OrderQty="2" UnitPriceDiscount="0" />
<OrderDetail ProductID="Prod-762" UnitPrice="503.3507"
OrderQty="1" UnitPriceDiscount="0" />
<OrderDetail ProductID="Prod-763" UnitPrice="503.3507"
OrderQty="1" UnitPriceDiscount="0" />
<OrderDetail ProductID="Prod-765" UnitPrice="503.3507"
OrderQty="2" UnitPriceDiscount="0" />
<OrderDetail ProductID="Prod-768" UnitPrice="503.3507"
OrderQty="1" UnitPriceDiscount="0" />
<OrderDetail ProductID="Prod-770" UnitPrice="503.3507"
OrderQty="1" UnitPriceDiscount="0" />
</Order>
...
</ROOT>
Wenn die XPath-Abfrage in Customer/Order/OrderDetail
jedem Knoten angegeben wird, der dem Kunden> entspricht<, navigiert die Abfrage zu den< Order-Elementen.> Und für jede Knotenabgleichsreihenfolge fügt die Abfrage die Knoten< OrderDetail> zum Ergebnis hinzu.<> Nur <OrderDetail> wird im Resultset zurückgegeben.
C. Gebrauchen.. Angeben der übergeordneten Achse
Die folgende Abfrage ruft alle <Order-Elemente> mit einem übergeordneten <Customer-Element> mit einem CustomerID-Attributwert von 1 ab. Die Abfrage verwendet die untergeordnete Achse im Prädikat, um das übergeordnete Element des <Order-Elements> zu finden.
/child::Customer/child::Order[../@CustomerID="1"]
Die untergeordnete Achse ist die Standardachse. Daher kann die Abfrage wie folgt angegeben werden:
/Customer/Order[../@CustomerID="1"]
Die XPath-Abfrage hat die folgende Entsprechung:
/Customer[@CustomerID="1"]/Order.
Hinweis
Die XPath-Abfrage /Order[../@CustomerID="1"]
gibt einen Fehler zurück, da kein übergeordnetes Element von <Order> vorhanden ist. Obwohl es Elemente im Zuordnungsschema gibt, die "Order>" enthalten<, begann der XPath nicht mit einem dieser Elemente. Daher <wird "Order"> als Elementtyp der obersten Ebene im Dokument betrachtet.
So testen Sie die XPath-Abfrage mit dem Zuordnungsschema
Kopieren Sie den Beispielschemacode , und fügen Sie ihn in eine Textdatei ein. Speichern Sie die Datei unter dem Dateinamen SampleSchema1.xml.
Erstellen Sie die folgende Vorlage (XPathAxesSampleC.xml), und speichern Sie sie im folgenden Verzeichnis:
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> <sql:xpath-query mapping-schema="SampleSchema1.xml"> /Customer/Order[../@CustomerID="1"] </sql:xpath-query> </ROOT>
Der für das Zuordnungsschema (SampleSchema1.xml) angegebene Verzeichnispfad bezieht sich auf das Verzeichnis, in dem die Vorlage gespeichert wird. Es kann auch ein absoluter Pfad angegeben werden. Beispiel:
mapping-schema="C:\MyDir\SampleSchema1.xml"
Erstellen und verwenden Sie das SQLXML 4.0-Testskript (Sqlxml4test.vbs), um die Vorlage auszuführen.
Weitere Informationen finden Sie unter Verwenden von ADO zum Ausführen von SQLXML 4.0-Abfragen.
Im Folgenden finden Sie einen Auszug aus dem Resultset der Vorlagenausführung:
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
<Order SalesOrderID="Ord-43860" SalesPersonID="280"
OrderDate="2001-08-01T00:00:00"
DueDate="2001-08-13T00:00:00"
ShipDate="2001-08-08T00:00:00">
<OrderDetail ProductID="Prod-729" UnitPrice="226.8571"
OrderQty="1" UnitPriceDiscount="0" />
<OrderDetail ProductID="Prod-732" UnitPrice="440.1742"
OrderQty="1" UnitPriceDiscount="0" />
<OrderDetail ProductID="Prod-738" UnitPrice="220.2496"
OrderQty="1" UnitPriceDiscount="0" />
<OrderDetail ProductID="Prod-753" UnitPrice="2576.3544"
OrderQty="2" UnitPriceDiscount="0" />
<OrderDetail ProductID="Prod-756" UnitPrice="1049.7528"
OrderQty="1" UnitPriceDiscount="0" />
<OrderDetail ProductID="Prod-758" UnitPrice="1049.7528"
OrderQty="2" UnitPriceDiscount="0" />
<OrderDetail ProductID="Prod-761" UnitPrice="503.3507"
OrderQty="2" UnitPriceDiscount="0" />
<OrderDetail ProductID="Prod-762" UnitPrice="503.3507"
OrderQty="1" UnitPriceDiscount="0" />
<OrderDetail ProductID="Prod-763" UnitPrice="503.3507"
OrderQty="1" UnitPriceDiscount="0" />
<OrderDetail ProductID="Prod-765" UnitPrice="503.3507"
OrderQty="2" UnitPriceDiscount="0" />
<OrderDetail ProductID="Prod-768" UnitPrice="503.3507"
OrderQty="1" UnitPriceDiscount="0" />
<OrderDetail ProductID="Prod-770" UnitPrice="503.3507"
OrderQty="1" UnitPriceDiscount="0" />
</Order>
...
</Order>
</ROOT>
D: Angeben der Attributachse
Die folgende XPath-Abfrage wählt alle <untergeordneten Elemente> des Kunden des Kontextknotens mit einem CustomerID-Attributwert von 1 aus:
/child::Customer[attribute::CustomerID="1"]
Im Prädikat attribute::CustomerID
attribute
ist die Achse und CustomerID
der Knotentest (wenn CustomerID
es sich um ein Attribut handelt, das der Knotentest WAHR ist, da der <Attributknoten> der primäre Knoten für die attribute
Achse ist).
Es kann eine Verknüpfung mit der attribute
-Achse (@) angegeben werden, und da child
die Standardachse ist, muss sie in der Abfrage nicht angegeben werden:
/Customer[@CustomerID="1"]
So testen Sie die XPath-Abfrage mit dem Zuordnungsschema
Kopieren Sie den Beispielschemacode , und fügen Sie ihn in eine Textdatei ein. Speichern Sie die Datei unter dem Dateinamen SampleSchema1.xml.
Erstellen Sie die folgende Vorlage (XPathAxesSampleD.xml), und speichern Sie sie in dem Verzeichnis, in dem SampleSchema1.xml gespeichert wird.
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> <sql:xpath-query mapping-schema="SampleSchema1.xml"> child::Customer[attribute::CustomerID="1"] </sql:xpath-query> </ROOT>
Der für das Zuordnungsschema (SampleSchema1.xml) angegebene Verzeichnispfad bezieht sich auf das Verzeichnis, in dem die Vorlage gespeichert wird. Es kann auch ein absoluter Pfad angegeben werden. Beispiel:
mapping-schema="C:\MyDir\SampleSchema1.xml"
Erstellen und verwenden Sie das SQLXML 4.0-Testskript (Sqlxml4test.vbs), um die Vorlage auszuführen.
Weitere Informationen finden Sie unter Verwenden von ADO zum Ausführen von SQLXML 4.0-Abfragen.
Im Folgenden finden Sie einen Auszug aus dem Resultset der Vorlagenausführung:
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
<Customer CustomerID="1" SalesPersonID="280"
TerritoryID="1" AccountNumber="1"
CustomerType="S" Orders="Ord-43860 Ord-44501 Ord-45283 Ord-46042">
<Order SalesOrderID="Ord-43860" SalesPersonID="280"
OrderDate="2001-08-01T00:00:00"
DueDate="2001-08-13T00:00:00"
ShipDate="2001-08-08T00:00:00">
<OrderDetail ProductID="Prod-729" UnitPrice="226.8571"
OrderQty="1" UnitPriceDiscount="0" />
<OrderDetail ProductID="Prod-732" UnitPrice="440.1742"
OrderQty="1" UnitPriceDiscount="0" />
<OrderDetail ProductID="Prod-738" UnitPrice="220.2496"
OrderQty="1" UnitPriceDiscount="0" />
...
</Order>
...
</Customer>
</ROOT>