Freigeben über


Angeben relationaler Operatoren in XPath-Abfragen (SQLXML 4.0)

Die folgenden Beispiele zeigen, wie relationale Operatoren 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. Relationalen Operator angeben

Diese XPath-Abfrage gibt die untergeordneten Elemente des <Customer-Elements> zurück, wobei der CustomerID-Attributwert "1" lautet und alle untergeordneten Order-Elemente ein< untergeordnetes OrderDetail-Attribut> mit einem OrderQty-Attribut mit einem Wert größer als 3 enthalten:<>

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

Das in den Klammern angegebene Prädikat filtert die <Customer-Elemente> . Es werden nur die Customer-Elemente> zurückgegeben, die< mindestens ein <OrderDetail-Großkind> mit einem OrderQty-Attributwert aufweisen, der größer als 3 ist.

Die child Achse ist die Standardeinstellung. Daher kann die Abfrage wie möglich 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 als SampleSchema1.xml.

  2. Erstellen Sie die folgende Vorlage (SpecifyRelationalA.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">  
        /Customer[@CustomerID="1"]/Order/OrderDetail[@OrderQty > 3]  
      </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 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 Verwenden der booleschen Funktion zum Vergleichen des Ergebnisses

Diese Abfrage gibt alle untergeordneten Elemente des <Order-Elements> des Kontextknotens zurück, die einen SalesPersonID-Attributwert aufweisen, der kleiner als 270 ist:

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

Eine Verknüpfung zur attribute Achse (@) kann angegeben werden, und da die child Achse der Standard ist, kann sie aus der Abfrage weggelassen werden:

/Customer/Order[(@SalesPersonID < 270)=true()]  

Hinweis

Wenn diese Abfrage in einer Vorlage angegeben wird, muss das < Zeichen entitätscodiert sein, da das < Zeichen in einem XML-Dokument eine besondere Bedeutung hat. Verwenden Sie < in einer Vorlage, 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 als SampleSchema1.xml.

  2. Erstellen Sie die folgende Vorlage (SpecifyRelationalB.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">  
            /Customer/Order[(@SalesPersonID<270)=true()]  
        </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-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>