Bagikan melalui


Pengantar Menggunakan Kueri XPath (SQLXML 4.0)

Berlaku untuk: SQL ServerAzure 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.

Lihat Juga

Menggunakan Kueri XPath di SQLXML 4.0