Aracılığıyla paylaş


XPath Sorgularında İlişkisel Operatörlerin Belirtilmesi (SQLXML 4.0)

Şunlar için geçerlidir:SQL ServerAzure SQL Veritabanı

Aşağıdaki örnekler, ilişkisel operatörlerin XPath sorgularında nasıl belirtildiğini göstermektedir. Bu örneklerdeki XPath sorguları, SampleSchema1.xmliçinde bulunan eşleme şemasına göre tanımlanmıştır. Bu örnek şema hakkında bilgi için Örnek Açıklamalı XSD Şeması (XPath Örnekleri için Örnek Açıklamalı XSD Şeması'na (SQLXML 4.0) bakınız.

Örnekler

A. İlişkisel operatörü belirtin

Bu XPath sorgu, CustomerID öznitelik değeri "1" olan ve herhangi bir alt< Order> öğesinin OrderQty özniteliğine sahip bir OrderDetail> çocuğu içerdiği Müşteri öğesinin alt elemanlarını döndürür:<<>

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

Parantez içinde belirtilen önlem, Müşteri> öğelerini< filtreler. Yalnızca en az bir <OrderDetail> torununa sahip ve OrderQty özellik değeri 3'ten büyük olan Müşteri> öğeleri iade edilir.<

Alt eksen varsayılan olarak kullanılır. Bu nedenle, sorgu şu şekilde tanımlanabilir:

/Customer[@CustomerID="1"]/Order/OrderDetail[@OrderQty > 3]  
XPath sorgusunu eşleme şemasıyla test etmek için
  1. Örnek şema kodunu kopyalayın ve bir metin dosyasına yapıştırın. Dosyayı SampleSchema1.xmlolarak kaydet.

  2. Aşağıdaki şablonu (SpecifyRelationalA.xml) oluşturun ve SampleSchema1.xml kaydedildiği dizine kaydedin.

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

    Eşleme şeması (SampleSchema1.xml) için belirtilen dizin yolu, şablonun kaydedildiği dizine görecelidir. Mutlak bir yol da belirtilebilir, örneğin:

    mapping-schema="C:\MyDir\SampleSchema1.xml"  
    
  3. Şablonu çalıştırmak için SQLXML 4.0 Test Script'i (Sqlxml4test.vbs) oluşturun ve kullanın.

    Daha fazla bilgi için bkz. SQLXML 4.0 Sorguları Yürütmek için ADO Kullanma.

İşte şablon yürütme sonuç kümesi:

<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. XPath sorgusunda ilişkisel operatörü belirtin ve sonucu karşılaştırmak için Boolean fonksiyonunu kullanın

Bu sorgu<>, SalesPersonID özellik değeri 270'ten küçük olan tüm Order öğesi çocuklarını döndürür:

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

Öznitelik eksenine (@) bir kısayol belirtilebilir ve övlak ekseni varsayılan olduğu için sorgudan çıkarılabilir:

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

Uyarı

Bu sorgu bir şablonda belirtildiğinde, < karakter varlık kodlanmış olmalıdır çünkü karakter < bir XML belgesinde özel anlama sahiptir. Bir şablonda, karakteri < belirtmek için kullanılır<.

XPath sorgusunu eşleme şemasıyla test etmek için
  1. Örnek şema kodunu kopyalayın ve bir metin dosyasına yapıştırın. Dosyayı SampleSchema1.xmlolarak kaydet.

  2. Aşağıdaki şablonu (SpecifyRelationalB.xml) oluşturun ve SampleSchema1.xml kaydedildiği dizine kaydedin.

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

    Eşleme şeması (SampleSchema1.xml) için belirtilen dizin yolu, şablonun kaydedildiği dizine görecelidir. Mutlak bir yol da belirtilebilir, örneğin:

    mapping-schema="C:\MyDir\SampleSchema1.xml"  
    
  3. Şablonu çalıştırmak için SQLXML 4.0 Test Script'i (Sqlxml4test.vbs) oluşturun ve kullanın.

    Daha fazla bilgi için bkz. SQLXML 4.0 Sorguları Yürütmek için ADO Kullanma.

İşte şablon yürütme işleminin kısmi sonuç kümesi:

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