Freigeben über


Angeben von relationalen Operatoren in XPath-Abfragen (SQLXML 4.0)

In den folgenden Beispielen wird gezeigt, wie relationale Operatoren 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 relationaler Operatoren

Diese Xpath-Abfrage gibt die untergeordneten Elemente des <Customer>-Elements zurück, bei denen das CustomerID-Attribut den Wert "1" hat und deren untergeordnete <Order>-Elemente ein untergeordnetes <OrderDetail>-Element enthalten, dessen OrderQty-Attributwert größer als 3 ist:

/child::Customer[@CustomerID="1"]/Order/OrderDetail[@OrderQty > 3]

Mit dem in eckigen Klammern angegebenen Prädikat werden die <Customer>-Elemente gefiltert. Nur die <Customer>-Elemente, die über mindestens ein untergeordnetes <OrderDetail>-Element zweiter Ordnung verfügen, dessen OrderQty-Attributwert größer als 3 ist, werden zurückgegben.

Die child-Achse ist die Standardachse. Daher kann die Abfrage wie folgt angegeben werden:

/Customer[@CustomerID="1"]/Order/OrderDetail[@OrderQty > 3]

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 (SpecifyRelationalA.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/OrderDetail[@OrderQty &gt; 3]
      </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 das Resultset der Vorlagenausführung:

<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
  <OrderDetail ProductID="Prod-760" UnitPrice="503.3507" OrderQty="4" UnitPriceDiscount="0" /> 
  <OrderDetail ProductID="Prod-763" UnitPrice="503.3507" OrderQty="4" UnitPriceDiscount="0" /> 
  <OrderDetail ProductID="Prod-766" UnitPrice="503.3507" OrderQty="4" UnitPriceDiscount="0" /> 
  <OrderDetail ProductID="Prod-732" UnitPrice="440.1742" OrderQty="4" UnitPriceDiscount="0" /> 
  <OrderDetail ProductID="Prod-757" UnitPrice="1049.7528" OrderQty="4" UnitPriceDiscount="0" /> 
</ROOT>

B. Angeben eines relationalen Operators in der XPath-Abfrage und Ergebnisvergleich mit boolescher Funktion

Diese Abfrage gibt alle untergeordneten <Order>-Elemente des Kontextknotens zurück, deren SalesPersonID-Attribut einen kleineren Wert als 270 aufweist:

/child::Customer/child::Order[(attribute::SalesPersonID < 270)=true()]

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/Order[(@SalesPersonID < 270)=true()]
HinweisHinweis

Wenn diese Abfrage in einer Vorlage angegeben wird, dann muss das Zeichen < als Entität codiert werden, weil das Zeichen < in XML-Dokumenten eine besondere Bedeutung hat. Verwenden Sie in einer Vorlage &lt;, um das < Zeichen anzugeben.

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 (SpecifyRelationalB.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[(@SalesPersonID&lt;270)=true()]
        </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-46613" SalesPersonID="268" 
         OrderDate="2002-07-01T00:00:00" 
         DueDate="2002-07-13T00:00:00" 
         ShipDate="2002-07-08T00:00:00">
    <OrderDetail ProductID="Prod-739" UnitPrice="917.9363" 
                 OrderQty="2" UnitPriceDiscount="0" /> 
    <OrderDetail ProductID="Prod-779" UnitPrice="1491.4221" 
                 OrderQty="1" UnitPriceDiscount="0" /> 
    <OrderDetail ProductID="Prod-825" UnitPrice="242.1391" 
                 OrderQty="1" UnitPriceDiscount="0" /> 
  </Order>
  <Order SalesOrderID="Ord-71919" SalesPersonID="268"
         OrderDate="2004-06-01T00:00:00" 
         DueDate="2004-06-13T00:00:00" 
         ShipDate="2004-06-08T00:00:00">
    <OrderDetail ProductID="Prod-961" UnitPrice="534.492" 
                 OrderQty="1" UnitPriceDiscount="0" /> 
    <OrderDetail ProductID="Prod-965" UnitPrice="534.492" 
                 OrderQty="1" UnitPriceDiscount="0" /> 
    <OrderDetail ProductID="Prod-966" UnitPrice="1716.5304" 
                 OrderQty="1" UnitPriceDiscount="0" /> 
  </Order>
  ...
</ROOT>