Teilen über


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
  1. Kopieren Sie den Beispielschemacode , und fügen Sie ihn in eine Textdatei ein. Speichern Sie die Datei unter dem Dateinamen SampleSchema1.xml.

  2. 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"  
    
  3. 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
  1. Kopieren Sie den Beispielschemacode , und fügen Sie ihn in eine Textdatei ein. Speichern Sie die Datei unter dem Dateinamen SampleSchema1.xml.

  2. 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"  
    
  3. 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/OrderDetailjedem 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
  1. Kopieren Sie den Beispielschemacode , und fügen Sie ihn in eine Textdatei ein. Speichern Sie die Datei unter dem Dateinamen SampleSchema1.xml.

  2. 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"  
    
  3. 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::CustomerIDattribute 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
  1. Kopieren Sie den Beispielschemacode , und fügen Sie ihn in eine Textdatei ein. Speichern Sie die Datei unter dem Dateinamen SampleSchema1.xml.

  2. 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"  
    
  3. 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>