Freigeben über


Angeben von Achsen in XPath-Abfragen (SQLXML 4.0)

Die folgenden Beispiele zeigen, wie Achsen in XPath-Abfragen angegeben werden.

Die XPath-Abfragen in diesen Beispielen werden anhand des Zuordnungsschemas angegeben, das in SampleSchema1.xmlenthalten ist. Informationen zu diesem Beispielschema finden Sie unter "Beispiel für XSD-Schema für XPath-Beispiele (SQLXML 4.0)".

Beispiele

Ein. Abrufen untergeordneter Elemente 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 Standardeinstellung. 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 als SampleSchema1.xml.

  2. Erstellen Sie die folgende Vorlage (XPathAxesSampleA.xml) und speichern Sie sie im 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 ist relativ zum 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.

Dies ist der partielle 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 Enkeln 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 CustomerOrder die Knotentests (diese Knotentests sind TRUE, wenn "Kunde" und "Order" Elementknoten> sind<, da der <Elementknoten> der primäre Knoten für die child 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 child Achse ist die Standardeinstellung. Daher kann die Abfrage wie möglich 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 als SampleSchema1.xml.

  2. Erstellen Sie die folgende Vorlage (XPathAxesSampleB.xml), und speichern Sie sie in dem Verzeichnis, in dem:

    <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 ist relativ zum 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.

Dies ist der partielle 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.. so geben Sie die übergeordnete Achse an

Die folgende Abfrage ruft alle <Order-Elemente> mit einem übergeordneten <Customer-Element> mit einem CustomerID-Attributwert von 1 ab. Die Abfrage verwendet die child Achse im Prädikat, um das übergeordnete Element des <Order-Elements> zu finden.

/child::Customer/child::Order[../@CustomerID="1"]  

Die child Achse ist die Standardachse. Daher kann die Abfrage wie möglich angegeben werden:

/Customer/Order[../@CustomerID="1"]  

Die XPath-Abfrage entspricht folgendem:

/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 als SampleSchema1.xml.

  2. Erstellen Sie die folgende Vorlage (XPathAxesSampleC.xml), und speichern Sie sie in dem Verzeichnis, in dem:

    <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 ist relativ zum 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.

Dies ist der partielle 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).

Eine Verknüpfung zur attribute Achse (@) kann angegeben werden, und da es sich um child die Standardachse handelt, kann sie aus der Abfrage weggelassen 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 als SampleSchema1.xml.

  2. Erstellen Sie die folgende Vorlage (XPathAxesSampleD.xml), und speichern Sie sie im 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 ist relativ zum 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.

Dies ist der partielle 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>