Pengertian Dan Cara Kerja XQuery – XQuery adalah bahasa untuk query data XML atau data non-XML yang dapat dimodelkan sebagai XML. XQuery ditentukan oleh W3C .Di mana Java dan C++ adalah bahasa berbasis pernyataan , bahasa XQuery berbasis ekspresi . Ekspresi XQuery paling sederhana adalah konstruktor elemen XML:
<recipe/>Elemen ini adalah ekspresi XQuery yang membentuk XQuery lengkap . Faktanya, XQuery ini sebenarnya tidak menanyakan apa pun. Itu hanya membuat <recipe/>elemen kosong di output. Tetapi membangun elemen baru dalam XQuery seringkali diperlukan.
Pengertian Dan Cara Kerja XQuery
Zorba-xquery.com – Sebuah XQuery ekspresi juga dapat diapit oleh kurung keriting dan tertanam di lain XQuery ekspresi. XQuery ini memiliki ekspresi dokumen yang disematkan dalam ekspresi simpul:
Itu membuat <html>elemen baru di output dan menetapkan idatributnya menjadi idatribut dari <html>elemen dalam other.htmlfile.
Menggunakan Ekspresi Jalur Untuk Mencocokkan Dan Memilih Item
Di C++ dan Java, kami menulis forloop bersarang dan fungsi rekursif untuk melintasi pohon XML untuk mencari elemen yang diinginkan. Di XQuery , kami menulis algoritma iteratif dan rekursif ini dengan ekspresi jalur .
Ekspresi jalur terlihat seperti nama jalur file biasa untuk menemukan file dalam sistem file hierarkis. Ini adalah urutan satu atau lebih langkah yang dipisahkan oleh garis miring ‘/’ atau garis miring ganda ‘//’. Meskipun ekspresi jalur digunakan untuk melintasi pohon XML, bukan sistem file, dalam Pola XML Qt kita dapat memodelkan sistem file agar terlihat seperti pohon XML, jadi dalam Pola XML Qt kita dapat menggunakan XQuery untuk melintasi sistem file. Lihat contoh sistem file .
Baca Juga : Beberapa Software Buat Cek Kerusakan Komponen Komputer/Laptop
Pikirkan ekspresi jalur sebagai algoritme untuk melintasi pohon XML untuk menemukan dan mengumpulkan item yang menarik. Algoritma ini dievaluasi dengan mengevaluasi setiap langkah yang bergerak dari kiri ke kanan melalui urutan. Sebuah langkah dievaluasi dengan satu set item input (simpul dan nilai atom), kadang-kadang disebut fokus . Langkah tersebut dievaluasi untuk setiap item dalam fokus. Evaluasi ini menghasilkan satu set item baru, yang disebut hasil , yang kemudian menjadi fokus yang diteruskan ke langkah berikutnya. Evaluasi langkah terakhir menghasilkan hasil akhir, yang merupakan hasil dari XQuery . Item dalam kumpulan hasil disajikan dalam urutan dokumen dan tanpa duplikat.
Dengan Qt XML Patterns, cara standar untuk menyajikan fokus awal ke kueri adalah dengan memanggil QXmlQuery::setFocus (). Cara umum lainnya adalah membiarkan XQuery sendiri membuat fokus awal dengan menggunakan langkah pertama dari ekspresi jalur untuk memanggil fungsi XQuery doc() . The doc()Fungsi beban dokumen XML dan mengembalikan simpul dokumen . Perhatikan bahwa simpul dokumen tidak sama dengan elemen dokumen . The dokumen simpul adalah simpul dibangun di memori, ketika dokumen tersebut dimuat. Ini mewakili seluruh dokumen XML, bukan elemen dokumen. The elemen dokumen adalah tunggal, tingkat atas elemen XML dalam file. Itudoc()fungsi mengembalikan simpul dokumen, yang menjadi simpul tunggal di set fokus awal. Node dokumen akan memiliki satu simpul anak, dan simpul anak itu akan mewakili elemen dokumen. Pertimbangkan XQuery berikut :
The doc()fungsi load cookbook.xmlberkas dan mengembalikan node dokumen. Node dokumen kemudian menjadi fokus untuk langkah selanjutnya //recipe. Di sini garis miring ganda berarti pilih semua <recipe>elemen yang ditemukan di bawah simpul dokumen, di mana pun mereka muncul di pohon dokumen. Kueri memilih semua <recipe>elemen dalam buku masak. Lihat Menjalankan Contoh Buku Masak untuk instruksi tentang cara menjalankan kueri ini (dan sebagian besar kueri yang mengikutinya) dari baris perintah.
Secara konseptual, evaluasi langkah-langkah ekspresi jalur mirip dengan iterasi melalui jumlah loop for bersarang yang sama . Pertimbangkan XQuery berikut , yang dibangun di atas yang sebelumnya:
XQuery ini adalah ekspresi jalur tunggal yang terdiri dari tiga langkah. Langkah pertama membuat fokus awal dengan memanggil doc()fungsi. Kami dapat memparafrasekan apa yang dilakukan mesin kueri pada setiap langkah:
untuk setiap simpul di fokus awal (simpul dokumen)…
untuk setiap node turunan yang merupakan <recipe>elemen …
kumpulkan simpul anak yang merupakan <title>elemen.
Sekali lagi garis miring ganda berarti pilih semua <recipe>elemen dalam dokumen. Garis miring tunggal sebelum <title>elemen berarti hanya memilih <title>elemen – elemen yang merupakan elemen anak dari suatu <recipe>elemen (yaitu bukan cucu, dll). The XQuery mengevaluasi ke hasil set terakhir mengandung <title>unsur setiap <recipe>elemen dalam buku masak.
Langkah Sumbu
Jenis langkah jalur yang paling umum disebut langkah sumbu , yang memberi tahu mesin kueri cara bernavigasi dari node konteks, dan pengujian mana yang harus dilakukan ketika bertemu node di sepanjang jalan. Langkah sumbu memiliki dua bagian, penentu sumbu , dan pengujian simpul . Secara konseptual, evaluasi langkah sumbu berlangsung sebagai berikut: Untuk setiap simpul dalam kumpulan fokus, mesin kueri menavigasi keluar dari simpul di sepanjang sumbu yang ditentukan dan menerapkan uji simpul ke setiap simpul yang ditemuinya. Node yang dipilih oleh pengujian node dikumpulkan dalam kumpulan hasil, yang menjadi kumpulan fokus untuk langkah selanjutnya.
Dalam contoh XQuery di atas, langkah kedua dan ketiga adalah langkah sumbu. Keduanya menerapkan element(name)uji simpul ke simpul yang ditemui saat melintasi sepanjang beberapa sumbu. Namun dalam contoh ini, dua langkah sumbu ditulis dalam bentuk singkatan , di mana penentu sumbu dan pengujian simpul tidak ditulis secara eksplisit tetapi tersirat. XQueries biasanya ditulis dalam bentuk singkatan ini, tetapi mereka juga dapat ditulis dalam bentuk tulisan tangan. Jika kita menulis ulang XQuery dalam bentuk tulisan tangan, akan terlihat seperti ini:
Dua langkah sumbu telah diperluas. Langkah pertama ( //recipe) telah ditulis ulang sebagai /descendant-or-self::element(recipe), di mana descendant-or-self::adalah penentu sumbu dan element(recipe)merupakan pengujian simpul. Langkah kedua ( title) telah ditulis ulang sebagai /child::element(title), di mana child::adalah penentu sumbu dan element(title)merupakan pengujian simpul. Output dari XQuery yang diperluas akan sama persis dengan output dari bentuk singkatan.
Untuk membuat langkah sumbu, gabungkan penentu sumbu dan pengujian simpul. Bagian berikut mencantumkan penentu sumbu dan pengujian simpul yang tersedia.