Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk: SQL Server
Azure SQL Database
Kueri Xml Path Language (XPath) dapat ditentukan sebagai bagian dari URL atau dalam templat. Skema pemetaan menentukan struktur fragmen yang dihasilkan ini, dan nilai diambil dari database. Proses ini secara konseptual mirip dengan membuat tampilan menggunakan pernyataan CREATE VIEW dan menulis kueri SQL terhadap mereka.
Catatan
Untuk memahami kueri XPath di SQLXML 4.0, Anda harus terbiasa dengan tampilan XML dan konsep terkait seperti templat dan skema pemetaan. Untuk informasi selengkapnya, lihat Pengenalan Skema XSD Anotasi (SQLXML 4.0), dan standar XPath yang ditentukan oleh World Wide Web Consortium (W3C).
Dokumen XML terdiri dari simpul seperti simpul elemen, node atribut, simpul teks, dan sebagainya. Misalnya, pertimbangkan dokumen XML ini:
<root>
<Customer cid= "C1" name="Janine" city="Issaquah">
<Order oid="O1" date="1/20/1996" amount="3.5" />
<Order oid="O2" date="4/30/1997" amount="13.4">Customer was
very satisfied</Order>
</Customer>
<Customer cid="C2" name="Ursula" city="Oelde" >
<Order oid="O3" date="7/14/1999" amount="100" note="Wrap it blue white red">
<Urgency>Important</Urgency>
</Order>
<Order oid="O4" date="1/20/1996" amount="10000"/>
</Customer>
</root>
Dalam dokumen ini, <Pelanggan> adalah node elemen, cid adalah node atribut, dan "Penting" adalah simpul teks.
XPath adalah bahasa navigasi grafik yang digunakan untuk memilih sekumpulan simpul dari dokumen XML. Setiap operator XPath memilih set simpul berdasarkan set simpul yang dipilih oleh operator XPath sebelumnya. Misalnya, mengingat sekumpulan node Pelanggan>, XPath dapat memilih semua <node Pesanan> dengan nilai atribut tanggal "14/7/1999".< Node-set yang dihasilkan berisi semua pesanan dengan tanggal pesanan 14/7/1999.
Bahasa XPath didefinisikan oleh World Wide Web Consortium (W3C) sebagai bahasa navigasi standar. SQLXML 4.0 mengimplementasikan subset spesifikasi W3C XPath, yang terletak di http://www.w3.org/TR/1999/PR-xpath-19991008.html.
Berikut ini adalah perbedaan utama antara implementasi W3C XPath dan implementasi SQLXML 4.0.
Kueri akar
SQLXML 4.0 tidak mendukung kueri akar (/). Setiap kueri XPath harus dimulai pada ElementType> tingkat <atas dalam skema.
Melaporkan kesalahan
Spesifikasi W3C XPath tidak mendefinisikan kondisi kesalahan. Kueri XPath yang gagal memilih simpul apa pun mengembalikan set simpul kosong. Di SQLXML 4.0, kueri dapat mengembalikan banyak jenis pesan kesalahan.
Urutan dokumen
Di SQLXML 4.0, urutan dokumen tidak selalu ditentukan. Oleh karena itu, predikat numerik dan sumbu yang menggunakan urutan dokumen (seperti berikut) tidak diimplementasikan.
Kurangnya urutan dokumen juga berarti bahwa nilai string simpul hanya dapat dievaluasi ketika simpul tersebut memetakan ke satu kolom dalam satu baris. Elemen dengan elemen turunan atau node IDREFS atau NMTOKENS tidak dapat dikonversi ke string.
Catatan
Dalam beberapa kasus, anotasi atau kunci bidang kunci dari anotasi hubungan dapat menghasilkan urutan dokumen deterministik. Namun, ini bukan penggunaan utama anotasi ini Untuk informasi selengkapnya, lihat Mengidentifikasi Kolom Kunci Menggunakan sql:key-fields (SQLXML 4.0) dan Menentukan Hubungan Menggunakan sql:relationship (SQLXML 4.0).
Jenis data
SQLXML 4.0 memiliki batasan dalam mengimplementasikan jenis data string, angka, dan boolean XPath. Untuk informasi selengkapnya, lihat Jenis Data XPath (SQLXML 4.0).
Kueri lintas produk
SQLXML 4.0 tidak mendukung kueri XPath lintas produk, seperti
Customers[Order/@OrderDate=Order/@ShipDate]. Kueri ini memilih semua Pelanggan dengan Pesanan apa pun yang OrderDate-nya sama dengan ShipDate dari Pesanan apa pun.Namun, SQLXML 4.0 mendukung kueri seperti
Customer[Order[@OrderDate=@ShippedDate]], yang memilih Pelanggan dengan Pesanan apa pun yang OrderDate-nya sama dengan ShipDate-nya.Penanganan kesalahan dan keamanan
Bergantung pada skema dan ekspresi kueri XPath yang digunakan, kesalahan Transact-SQL dapat diekspos ke pengguna dalam kondisi tertentu.
Tabel di bagian berikut memberikan detail tentang bagaimana implementasi kueri XPath di SQLXML 4.0 berbeda dari spesifikasi W3C di area ini.
Fungsionalitas yang Didukung
Tabel berikut ini memperlihatkan fitur bahasa XPath yang diimplementasikan dalam SQLXML 4.0.
| Fitur | Item | Menautkan ke kueri sampel |
|---|---|---|
| Sumbu | atribut, anak, induk, dan sumbu mandiri | Menentukan Sumbu dalam Kueri XPath (SQLXML 4.0) |
| Predikat bernilai Boolean termasuk predikat berturut-turut dan berlapis | Menentukan Operator Aritmatika dalam Kueri XPath (SQLXML 4.0) | |
| Semua operator relasional | =, !=, <, <=, >, >= | Menentukan Operator Relasional dalam Kueri XPath (SQLXML 4.0) |
| Operasi Aritmatika | +, -, *, div | Menentukan Operator Aritmatika dalam Kueri XPath (SQLXML 4.0) |
| Fungsi konversi eksplisit | number(), string(), Boolean() | Menentukan Fungsi Konversi Eksplisit dalam Kueri XPath (SQLXML 4.0) |
| Operator Boolean | AND, OR | Menentukan Operator Boolean dalam Kueri XPath (SQLXML 4.0) |
| Fungsi Boolean | true(), false(), not() | Menentukan Fungsi Boolean dalam Kueri XPath (SQLXML 4.0) |
| Variabel XPath | Menentukan Variabel XPath dalam Kueri XPath (SQLXML 4.0) |
Fungsionalitas yang Tidak Didukung
Tabel berikut menunjukkan fitur bahasa XPath yang tidak diimplementasikan dalam SQLXML 4.0.
| Fitur | Item |
|---|---|
| Sumbu | leluhur, leluhur atau diri sendiri, keturunan, keturunan atau diri (//), berikut, saudara kandung berikut, namespace, sebelumnya, saudara kandung sebelumnya |
| Predikat bernilai numerik | |
| Operasi Aritmatika | mod |
| Fungsi node | leluhur, leluhur atau diri sendiri, keturunan, keturunan atau diri (//), berikut, saudara kandung berikut, namespace, sebelumnya, saudara kandung sebelumnya |
| Fungsi string | string(), concat(), starts-with(), contains(), substring-before(), substring-after(), substring(), string-length(), normalize(), translate() |
| Fungsi Boolean | bahasa lang() |
| Fungsi numerik | sum(), floor(), ceiling(), round() |
| Operator serikat | | |
Saat Anda menentukan kueri XPath dalam templat, perhatikan perilaku berikut:
- XPath dapat berisi karakter seperti < atau & yang memiliki arti khusus dalam XML (dan templat adalah dokumen XML). Anda harus menghindari karakter ini menggunakan XML &-encoding, atau menentukan XPath di URL.