Freigeben über


Angeben von Prädikaten mit booleschen Werten in XPath-Abfragen (SQLXML 4.0)

In den folgenden Beispielen wird gezeigt, wie Prädikate mit booleschen Werten in XPath-Abfragen angegeben werden. Die XPath-Abfragen in diesen Beispielen werden für das in SampleSchema1.xml enthaltene Zuordnungsschema angegeben. Weitere Informationen zu diesem Beispielschema finden Sie unter Beispiel-XSD-Schema mit Anmerkungen für XPath-Beispiele (SQLXML 4.0).

Beispiele

A. Angeben mehrerer Prädikate

In der folgenden XPath-Abfrage werden mehrere Prädikate angegeben, um Bestellinformationen für eine bestimmte Bestellungs-ID und eine Kunden-ID zu suchen:

/child::Customer[attribute::CustomerID="1"]/child::Order[attribute::OrderID="Ord-43860"]

Es kann eine Abkürzung für die attribute-Achse (@) angegeben werden, und weil die child-Achse die Standardachse ist, muss sie in der Abfrage nicht angegeben werden:

/Customer[@CustomerID="1"]/Order[@SalesOrderID="Ord-43860"]

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 (BooleanValuedPredicatesA.xml), und speichern Sie sie in dem Verzeichnis, in dem SampleSchema1.xml gespeichert ist.

    <ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
      <sql:xpath-query mapping-schema="SampleSchema1.xml">
        /Customer[@CustomerID="1"]/Order[@SalesOrderID="Ord-43860"]
      </sql:xpath-query>
    </ROOT>
    

    Der für das Zuordnungsschema (SampleSchema1.xml) angegebene Verzeichnispfad bezieht sich auf das Verzeichnis, in dem die Vorlage gespeichert ist. 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 wird das Ergebnis aufgeführt:

    <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>
    

B. Angeben aufeinanderfolgender und geschachtelter Prädikate

Die folgende Abfrage zeigt die Verwendung aufeinanderfolgender Prädikate. Die Abfrage gibt alle untergeordneten <Customer>-Elemente des Kontextknotens zurück, die sowohl ein SalesPersonID-Attribut mit einem Wert von 277 und ein TerritoryID-Attribut mit einem Wert von 3 aufweisen:

/child::Customer[attribute::SalesPersonID="277"][attribute::TerritoryID="3"]

Die Abfrage gibt die <Customer>-Elemente zurück, die beiden in den Prädikaten angegebenen Bedingungen entsprechen.

Es kann eine Abkürzung für die attribute-Achse (@) angegeben werden, und da die child-Achse die Standardachse ist, muss sie in der Abfrage nicht angegeben werden:

/Customer[@SalesPersonID="277"][@TerritoryID="3"]

Die folgende XPath-Abfrage veranschaulicht die Verwendung geschachtelter Prädikate. Die Abfrage gibt alle untergeordneten <Customer>-Elemente des Kontextknotens zurück, die untergeordnete <Order>-Elemente mit mindestens einem <Order>-Element aufweisen, das ein SalesPersonID-Attribut mit einem Wert von 2 besitzt.

/Customer[Order[@SalesPersonID=2]]

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 (nestedSuccessive.xml), und speichern Sie sie in dem Verzeichnis, in dem SampleSchema1.xml gespeichert ist.

    <ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
      <sql:xpath-query mapping-schema="SampleSchema1.xml">
             /Customer[@SalesPersonID="277"][@TerritoryID="3"]
      </sql:xpath-query>
    </ROOT>
    

    Der für das Zuordnungsschema (SampleSchema1.xml) angegebene Verzeichnispfad bezieht sich auf das Verzeichnis, in dem die Vorlage gespeichert ist. 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 wird ein Teilergebnis gezeigt:

<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
  <Customer CustomerID="22" SalesPersonID="277" TerritoryID="3" 
            AccountNumber="22" CustomerType="S" 
            Orders="Ord-43874 Ord-44519 Ord-46989 Ord-48013 Ord-49130 Ord-50274 Ord-51807 Ord-57113 Ord-63162 Ord-69495">
    <Order SalesOrderID="Ord-43874" SalesPersonID="277" 
           OrderDate="2001-08-01T00:00:00" 
           DueDate="2001-08-13T00:00:00" 
           ShipDate="2001-08-08T00:00:00">
      <OrderDetail ProductID="Prod-763" UnitPrice="503.3507" 
                   OrderQty="1" UnitPriceDiscount="0" /> 
    </Order>
    ...
  </Customer>
  <Customer CustomerID="39" SalesPersonID="277" TerritoryID="3" 
            AccountNumber="39" CustomerType="S" 
            Orders="Ord-47428 Ord-48367 Ord-49529 Ord-50742 Ord-53591 Ord-59051 Ord-65301 Ord-71912">    <Order SalesOrderID="Ord-47428" SalesPersonID="277" 
           OrderDate="2002-09-01T00:00:00" 
           DueDate="2002-09-13T00:00:00" 
           ShipDate="2002-09-08T00:00:00">
      <OrderDetail ProductID="Prod-759" UnitPrice="563.7528" OrderQty="2" UnitPriceDiscount="0" /> 
      <OrderDetail ProductID="Prod-769" UnitPrice="563.7528" OrderQty="1" UnitPriceDiscount="0" /> 
      ...
    </Order>
    ...
  </Customer>
  ...
</ROOT>

C. Angeben eines Prädikats der obersten Ebene

Mit der folgenden Abfrage werden alle untergeordneten <Customer>-Elemente des Kontextknotens zurückgegeben, die untergeordnete <Order>-Elemente enthalten. Die Abfrage testet den Speicherortpfad als Prädikat der obersten Ebene:

/child::Customer[child::Order]

Die child-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 (TopLevelPredicate.xml), und speichern Sie sie in dem Verzeichnis, in dem SampleSchema1.xml gespeichert ist.

    <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 ist. 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 das Teilergebnis:

<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>
    <Order SalesOrderID="Ord-44501" SalesPersonID="280" OrderDate="2001-11-01T00:00:00" DueDate="2001-11-13T00:00:00" ShipDate="2001-11-08T00:00:00">
      <OrderDetail ProductID="Prod-725" UnitPrice="226.8571" OrderQty="3" UnitPriceDiscount="0" /> 
      <OrderDetail ProductID="Prod-726" UnitPrice="226.8571" OrderQty="2" UnitPriceDiscount="0" /> 
      ...
    </Order>    ...
  </Customer>
  ...
</ROOT>