Bagikan melalui


Menentukan Predikat Bernilai Boolean dalam Kueri XPath (SQLXML 4.0)

Berlaku untuk: SQL ServerAzure SQL Database

Contoh berikut menunjukkan bagaimana predikat bernilai Boolean 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 beberapa predikat

Kueri XPath berikut menggunakan beberapa predikat untuk menemukan informasi pesanan untuk ID pesanan tertentu dan ID pelanggan:

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

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

/Customer[@CustomerID="1"]/Order[@SalesOrderID="Ord-43860"]  
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 (BooleanValuedPredicatesA.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[@SalesOrderID="Ord-43860"]  
      </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 hasilnya:

    <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. Tentukan predikat berturut-turut dan berlapis

Kueri berikut ini memperlihatkan menggunakan predikat berturut-turut. Kueri mengembalikan semua <elemen anak Pelanggan> dari simpul konteks yang memiliki atribut SalesPersonID dengan nilai 277 dan atribut TerritoryID dengan nilai 3:

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

Kueri mengembalikan <elemen Pelanggan> yang memenuhi kedua kondisi yang ditentukan dalam predikat.

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

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

Kueri XPath berikut mengilustrasikan penggunaan predikat berlapis. Kueri mengembalikan semua <elemen anak Pelanggan> dari simpul konteks yang menyertakan <elemen Anak pesanan> dengan setidaknya satu <elemen Pesanan> yang memiliki nilai atribut SalesPersonID 2.

/Customer[Order[@SalesPersonID=2]]  
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 (nestedSuccessive.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[@SalesPersonID="277"][@TerritoryID="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 ini adalah hasil parsial:

<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. Tentukan predikat tingkat atas

Kueri berikut mengembalikan simpul elemen anak Pelanggan> dari simpul konteks yang memiliki <turunan elemen Order>.< Kueri menguji jalur lokasi sebagai predikat tingkat atas:

/child::Customer[child::Order]  

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

/Customer[Order]  
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 (TopLevelPredicate.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]  
      </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 hasil parsial:

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