Bagikan melalui


Menentukan Operator Relasional dalam Kueri XPath (SQLXML 4.0)

Berlaku untuk: SQL ServerAzure SQL Database

Contoh berikut menunjukkan bagaimana operator relasional ditentukan dalam kueri XPath. Kueri XPath dalam contoh ini ditentukan terhadap skema pemetaan yang terkandung dalam SampleSchema1.xml. Untuk informasi tentang skema sampel ini, lihat Contoh Skema XSD Anotasi untuk Contoh XPath (SQLXML 4.0).

Contoh

J. Tentukan operator relasional

Kueri XPath ini mengembalikan elemen turunan dari <elemen Pelanggan> di mana nilai atribut CustomerID adalah "1" dan di mana setiap elemen Pesanan> anak <berisi <anak OrderDetail> dengan atribut OrderQty dengan nilai lebih besar dari 3:

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

Predikat yang ditentukan dalam tanda kurung memfilter <elemen Pelanggan> . <Hanya elemen Pelanggan> yang memiliki setidaknya satu <cucu OrderDetail> dengan nilai atribut OrderQty yang lebih besar dari 3 yang dikembalikan.

Sumbu anak adalah default. Oleh karena itu, kueri dapat ditentukan sebagai:

/Customer[@CustomerID="1"]/Order/OrderDetail[@OrderQty > 3]  
Untuk menguji kueri XPath terhadap skema pemetaan
  1. Salin kode skema sampel dan tempelkan ke dalam file teks. Simpan file sebagai SampleSchema1.xml.

  2. Buat templat berikut (SpecifyRelationalA.xml) dan simpan di direktori tempat SampleSchema1.xml disimpan.

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

    Jalur direktori yang ditentukan untuk skema pemetaan (SampleSchema1.xml) relatif terhadap direktori tempat templat disimpan. Jalur absolut juga dapat ditentukan, misalnya:

    mapping-schema="C:\MyDir\SampleSchema1.xml"  
    
  3. Buat dan gunakan Skrip Pengujian SQLXML 4.0 (Sqlxml4test.vbs) untuk menjalankan templat.

    Untuk informasi selengkapnya, lihat Menggunakan ADO untuk Menjalankan Kueri SQLXML 4.0.

Berikut adalah kumpulan hasil eksekusi templat:

<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. Tentukan operator relasional dalam kueri XPath dan gunakan fungsi Boolean untuk membandingkan hasilnya

Kueri ini mengembalikan semua <turunan elemen Order> dari simpul konteks yang memiliki nilai atribut SalesPersonID yang kurang dari 270:

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

Pintasan ke sumbu atribut (@) dapat ditentukan, dan karena sumbu anak adalah default, itu dapat dihilangkan dari kueri:

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

Catatan

Ketika kueri ini ditentukan dalam templat, < karakter harus dikodekan entitas karena < karakter memiliki arti khusus dalam dokumen XML. Dalam templat, gunakan < untuk menentukan < karakter.

Untuk menguji kueri XPath terhadap skema pemetaan
  1. Salin kode skema sampel dan tempelkan ke dalam file teks. Simpan file sebagai SampleSchema1.xml.

  2. Buat templat berikut (SpecifyRelationalB.xml) dan simpan di direktori tempat SampleSchema1.xml disimpan.

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

    Jalur direktori yang ditentukan untuk skema pemetaan (SampleSchema1.xml) relatif terhadap direktori tempat templat disimpan. Jalur absolut juga dapat ditentukan, misalnya:

    mapping-schema="C:\MyDir\SampleSchema1.xml"  
    
  3. Buat dan gunakan Skrip Pengujian SQLXML 4.0 (Sqlxml4test.vbs) untuk menjalankan templat.

    Untuk informasi selengkapnya, lihat Menggunakan ADO untuk Menjalankan Kueri SQLXML 4.0.

Berikut adalah rangkaian hasil parsial dari eksekusi templat:

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