Bagikan melalui


Menentukan Predikat Pilihan di Jalur Lokasi (SQLXML 4.0)

Berlaku untuk: SQL ServerAzure SQL Database

Predikat memfilter kumpulan simpul sehubungan dengan sumbu (mirip dengan klausa WHERE dalam pernyataan SELECT). Predikat ditentukan di antara tanda kurung siku. Untuk setiap simpul dalam node-set yang akan difilter, ekspresi predikat dievaluasi dengan simpul tersebut sebagai simpul konteks, dengan jumlah simpul dalam node-set sebagai ukuran konteks. Jika ekspresi predikat mengevaluasi ke TRUE untuk simpul tersebut, simpul disertakan dalam kumpulan simpul yang dihasilkan.

XPath juga memungkinkan pemfilteran berbasis posisi. Ekspresi predikat yang mengevaluasi ke angka memilih simpul ordinal tersebut. Misalnya, jalur Customer[3] lokasi mengembalikan pelanggan ketiga. Predikat numerik tersebut tidak didukung. Hanya ekspresi predikat yang mengembalikan hasil Boolean yang didukung.

Catatan

Untuk informasi tentang batasan implementasi XPath ini dan perbedaan antara XPath dan spesifikasi W3C, lihat Pengantar Menggunakan Kueri XPath (SQLXML 4.0).

Predikat Pilihan: Contoh 1

Ekspresi XPath berikut (jalur lokasi) memilih dari simpul konteks saat ini semua <anak elemen Pelanggan> yang memiliki atribut CustomerID dengan nilai ALFKI:

/child::Customer[attribute::CustomerID="ALFKI"]  

Dalam kueri XPath ini, child dan attribute merupakan nama sumbu. Customeradalah pengujian node (TRUE jika Customer adalah< node> elemen, karena< elemen> adalah jenis node utama untuk child sumbu). attribute::CustomerID="ALFKI" adalah predikat. Dalam predikat, attribute adalah sumbu dan CustomerID merupakan pengujian simpul (TRUE jika CustomerID adalah atribut node konteks, karena <atribut> adalah jenis node utama sumbu atribut ).

Dengan menggunakan sintaks yang disingkat, kueri XPath juga dapat ditentukan sebagai:

/Customer[@CustomerID="ALFKI"]  

Predikat Pilihan: Contoh 2

Ekspresi XPath berikut (jalur lokasi) memilih dari simpul konteks saat ini semua <cucu Pesanan> yang memiliki atribut SalesOrderID dengan nilai 1:

/child::Customer/child::Order[attribute::SalesOrderID="1"]  

Dalam ekspresi XPath ini, child dan attribute merupakan nama sumbu. Customer, Order, dan SalesOrderID adalah tes simpul. attribute::OrderID="1" adalah predikat.

Dengan menggunakan sintaks yang disingkat, kueri XPath juga dapat ditentukan sebagai:

/Customer/Order[@SalesOrderID="1"]  

Predikat Pilihan: Contoh 3

Ekspresi XPath berikut (jalur lokasi) memilih dari simpul konteks saat ini semua anak Pelanggan> yang memiliki satu atau beberapa< anak ContactName>:<

child::Customer[child::ContactName]  

Contoh ini mengasumsikan bahwa <ContactName> adalah elemen turunan dari <elemen Pelanggan> dalam dokumen XML, yang disebut sebagai pemetaan yang berpusat pada elemen dalam skema XSD yang diannotasi.

Dalam ekspresi XPath ini, child adalah nama sumbu. Customeradalah pengujian node (TRUE jika Customer adalah< node elemen>, karena< elemen> adalah jenis node utama untuk child sumbu). child::ContactName adalah predikat. Dalam predikat, child adalah sumbu dan ContactName merupakan pengujian node (TRUE jika ContactName merupakan <node elemen> ).

Ekspresi ini hanya mengembalikan turunan elemen Pelanggan> dari simpul konteks yang memiliki <turunan elemen ContactName>.<

Dengan menggunakan sintaks yang disingkat, kueri XPath juga dapat ditentukan sebagai:

Customer[ContactName]  

Predikat Pilihan: Contoh 4

Ekspresi XPath berikut memilih turunan elemen Pelanggan> dari simpul konteks yang tidak memiliki< turunan elemen ContactName>:<

child::Customer[not(child::ContactName)]  

Contoh ini mengasumsikan bahwa <ContactName> adalah elemen turunan dari< elemen Pelanggan> dalam dokumen XML, dan bidang ContactName tidak diperlukan dalam database.

Dalam contoh ini, child adalah sumbu. Customer adalah pengujian node (TRUE jika Customer merupakan <node elemen> ). not(child::ContactName) adalah predikat. Dalam predikat, child adalah sumbu dan ContactName merupakan pengujian node (TRUE jika ContactName merupakan <node elemen> ).

Dengan menggunakan sintaks yang disingkat, kueri XPath juga dapat ditentukan sebagai:

Customer[not(ContactName)]  

Predikat Pilihan: Contoh 5

Ekspresi XPath berikut memilih dari simpul konteks saat ini semua anak Pelanggan> yang memiliki atribut CustomerID:<

child::Customer[attribute::CustomerID]  

Dalam contoh ini, child adalah sumbu dan Customer merupakan pengujian node (TRUE jika Customer merupakan <node elemen> ). attribute::CustomerID adalah predikat. Dalam predikat, attribute adalah sumbu dan CustomerID merupakan predikat (TRUE jika CustomerID merupakan node <atribut> ).

Dengan menggunakan sintaks yang disingkat, kueri XPath juga dapat ditentukan sebagai:

Customer[@CustomerID]  

Predikat Pilihan: Contoh 6

Microsoft SQLXML 4.0 menyertakan dukungan untuk kueri XPath yang berisi produk silang dalam predikat, seperti yang ditunjukkan dalam contoh berikut:

Customer[Order/@OrderDate=Order/@ShipDate]  

Kueri ini memilih semua pelanggan dengan apa pun Order yang OrderDate sama ShipDate dengan .Order

Lihat Juga

Pengantar Skema XSD Anotasi (SQLXML 4.0)
Pemformatan XML sisi klien (SQLXML 4.0)