Pelajari XQuery dalam 10 Menit

Pelajari XQuery dalam 10 Menit – Tutorial XQuery ini untuk semua orang yang benar-benar ingin tahu apa itu XQuery, tetapi tidak punya waktu untuk mencari tahu. Kita semua tahu masalahnya: begitu banyak teknologi baru yang menarik, begitu sedikit waktu untuk menelitinya. Sejujurnya, saya harap Anda akan menghabiskan lebih dari sepuluh menit pada tutorial XQuery ini — tetapi jika Anda benar-benar harus segera meninggalkannya, saya harap Anda tetap mempelajari sesuatu yang berguna.

Pelajari XQuery dalam 10 Menit

Untuk Apa XQuery?

zorba-xquery.com – XQuery dirancang terutama sebagai bahasa kueri untuk data yang disimpan dalam bentuk XML. Jadi peran utamanya adalah untuk mendapatkan informasi dari database XML — ini termasuk database relasional yang menyimpan data XML, atau yang menyajikan tampilan XML dari data yang mereka pegang.

Beberapa orang juga menggunakan XQuery untuk memanipulasi dokumen XML yang berdiri sendiri, misalnya, untuk mengubah pesan yang lewat di antara aplikasi. Dalam peran itu XQuery bersaing langsung dengan XSLT, dan bahasa mana yang Anda pilih sebagian besar merupakan masalah preferensi pribadi.

Faktanya, beberapa orang sangat menyukai XQuery sehingga mereka bahkan menggunakannya untuk merender XML menjadi HTML untuk presentasi. Itu bukan benar-benar pekerjaan yang dirancang untuk XQuery, dan saya tidak akan merekomendasikan orang untuk melakukan itu, tetapi begitu Anda mengenal alat, Anda cenderung menemukan cara baru untuk menggunakannya.

Baca Juga : Memahami Alat Bantu Pencarian EAD sebagai Data : XQuery untuk Pengarsip

Bermain dengan XQuery

Cara terbaik untuk belajar tentang apa pun adalah dengan mencobanya sendiri. Dua cara Anda dapat mencoba contoh XQuery dalam artikel ini adalah:

    Instal Stylus Studio – Lalu buka File > New > XQuery File… dan Anda dapat mulai membuat kueri di panel editor. (Di Stylus Studio, Anda juga dapat menggunakan XQuery mapper visual untuk membuat kueri Anda secara grafis. Jika Anda menyukai pendekatan itu, silakan. Tapi saya akan berkonsentrasi di sini pada sintaks bahasa yang sebenarnya.)

    Unduh DataDirect XQuery – komponen pemrosesan XQuery berbasis Java untuk menanyakan data relasional, file XML, dan data non-XML menggunakan XQuery.

(Antara Anda dan saya, jika Anda hanya punya waktu sepuluh menit, Anda tidak akan punya waktu untuk menginstal perangkat lunak baru, jadi teruskan membaca …)

XQuery Pertama Anda

Jika Anda ingin tahu bagaimana melakukan Hello World! di XQuery, ini dia

Ini adalah cara kerjanya di Stylus Studio:

  •     Pilih File > Baru > File XQuery …
  •     Masukkan kueri (seperti di atas) ke panel pengeditan
  •     Pilih File > Save As … dan pilih nama file

Klik tombol Hasil Pratinjau

Game untuk sesuatu yang lebih menarik?

Untuk yang satu itu, tentunya jarak tempuh bisa berbeda-beda. Ketepatan nilai waktu (fraksi detik) bergantung pada prosesor XQuery yang Anda gunakan, dan zona waktu (5 jam sebelum GMT dalam kasus ini) bergantung pada bagaimana sistem Anda dikonfigurasi.

Tak satu pun dari ini adalah pertanyaan yang sangat berguna, tentu saja, dan apa yang mereka tunjukkan bukanlah ilmu roket. Tetapi dalam bahasa kueri, Anda harus dapat melakukan sedikit perhitungan, dan XQuery telah membahasnya. Lebih lanjut, XQuery dirancang sedemikian rupa sehingga ekspresi sepenuhnya dapat disarang — ekspresi apa pun dapat digunakan dalam ekspresi lain apa pun, asalkan memberikan nilai tipe yang tepat — dan ini berarti bahwa ekspresi yang terutama ditujukan untuk memilih data dalam klausa where juga dapat digunakan sebagai kueri yang berdiri sendiri dengan hak mereka sendiri.

Mengakses Dokumen XML dengan XQuery

Meskipun mampu menangani tugas-tugas biasa seperti yang dijelaskan di bagian sebelumnya, XQuery dirancang untuk mengakses data XML. Jadi mari kita lihat beberapa kueri sederhana yang memerlukan dokumen XML sebagai inputnya.

Dokumen sumber yang akan kita gunakan disebut videos.xml. Ini didistribusikan sebagai file contoh dengan Stylus Studio, dan Anda akan menemukannya di suatu tempat seperti c:\Program Files\Stylus Studio 2008 XML Enterprise Suite\examples\VideoCenter\videos.xml

Ada juga salinan file contoh ini di Web.

XQuery memungkinkan Anda untuk mengakses file secara langsung dari salah satu lokasi ini, menggunakan URL yang sesuai sebagai argumen untuk fungsi doc()-nya. Inilah XQuery yang hanya mengambil dan menampilkan seluruh dokumen:

doc(‘file:///c:/Program%20Files/Stylus%20Studio%206%20XML%20Profesional %20Edition/examples/VideoCenter/videos.xml’)

Fungsi yang sama dapat digunakan untuk mendapatkan salinan dari Web:

(Ini hanya akan berfungsi jika Anda online, tentu saja; dan jika Anda berada di belakang firewall perusahaan, Anda mungkin harus melakukan beberapa penyesuaian pada konfigurasi Java Anda untuk membuatnya berfungsi.)

URL tersebut agak berat, tetapi ada pintasan yang dapat Anda gunakan:

    Jika Anda bekerja di Stylus Studio, klik XQuery / Scenario Properties, dan di bawah Main Input (opsional), telusuri file input dan pilih. Anda sekarang dapat merujuk ke dokumen ini dalam kueri Anda hanya sebagai “.” (dot).

    Jika Anda bekerja langsung dengan DataDirect XQuery, saya sarankan Anda menyalin file ke suatu tempat lokal, misalnya c:\query\videos.xml, dan bekerja dengannya dari lokasi itu. Gunakan opsi baris perintah -s c:\query\videos.xml dan Anda akan kembali dapat merujuk ke dokumen dalam kueri Anda sebagai “.” (dot).

File berisi sejumlah bagian. Salah satunya adalah elemen <aktor>, yang bisa kita pilih seperti ini:

Itu adalah pertanyaan “nyata” pertama kami. Jika Anda terbiasa dengan XPath, Anda mungkin mengenali bahwa semua kueri sejauh ini adalah ekspresi XPath yang valid. Kami telah menggunakan beberapa fungsi — current-time() dan doc() — yang mungkin asing karena mereka baru di XPath 2.0, yang masih berupa draft; tetapi sintaks dari semua kueri sejauh ini adalah sintaks XPath biasa. Faktanya, bahasa XQuery dirancang agar setiap ekspresi XPath yang valid juga merupakan kueri XQuery yang valid.

Ini berarti kita juga dapat menulis ekspresi XPath yang lebih kompleks seperti ini:

Sistem yang berbeda mungkin menampilkan output ini dengan cara yang berbeda. Secara teknis, hasil kueri ini adalah urutan dua simpul elemen dalam representasi pohon dari dokumen XML sumber, dan ada banyak cara yang mungkin dipilih sistem untuk menampilkan urutan seperti itu di layar. Stylus Studio memberi Anda pilihan tampilan teks dan tampilan hierarki: Anda menggunakan tombol di sebelah jendela Pratinjau untuk beralih dari satu ke yang lain.

Contoh ini menggunakan fungsi lain — end-with() — yang baru di XPath 2.0. Kami menyebutnya di dalam predikat (ekspresi antara tanda kurung siku), yang mendefinisikan kondisi yang harus dipenuhi oleh node agar dapat dipilih. Ekspresi XPath ini memiliki dua bagian: path .//actors/actor yang menunjukkan elemen mana yang kita minati, dan predikat [berakhir dengan(., ‘Lisa’)] yang menunjukkan pengujian yang harus dipenuhi oleh node. Predikat dievaluasi sekali untuk setiap elemen yang dipilih; dalam predikat, ekspresi “.” (titik) mengacu pada simpul yang sedang diuji predikatnya, yaitu aktor yang dipilih.

Tanda “/” di jalur informal berarti “turun satu tingkat”, sedangkan “//” berarti “turun berapa pun tingkatnya”. Jika jalur dimulai dengan “./” atau “.//” Anda dapat mengabaikan inisial “.” (ini mengasumsikan bahwa pemilihan dimulai dari atas pohon, yang selalu terjadi dalam contoh kita). Anda juga dapat menggunakan konstruksi seperti “/..” untuk naik satu tingkat, dan “/@id” untuk memilih atribut. Sekali lagi, ini semua akan akrab jika Anda sudah tahu XPath.

XPath mampu melakukan beberapa pilihan yang cukup kuat, dan sebelum kita beralih ke XQuery yang tepat, mari kita lihat contoh yang lebih kompleks. Misalkan kita ingin mencari judul semua video yang menampilkan aktor yang bernama depan Lisa. Setiap video dalam file diwakili oleh elemen video seperti ini:

Sekali lagi, ini adalah XPath murni (dan karena itu XQuery yang valid). Anda dapat membacanya dari kiri ke kanan sebagai:

    Mulai dari dokumen yang dipilih secara implisit (videos.xml)

    Pilih semua elemen <video> di level mana pun

    Pilih yang memiliki elemen actorRef yang nilainya sama dengan salah satu nilai berikut:

  •         Pilih semua elemen <aktor> di level mana pun
  •         Pilih semua elemen anak <actor> mereka
  •         Pilih elemen hanya jika nilainya diakhiri dengan ‘Lisa’
  •         Pilih nilai atribut id
  •     Pilih elemen anak <title> dari elemen <video> yang dipilih ini

Banyak orang menemukan bahwa pada tingkat kerumitan ini, sintaks XPath menjadi agak membingungkan. Faktanya, contoh ini hanya tentang memperluas XPath hingga batasnya. Untuk jenis kueri ini, dan untuk hal yang lebih rumit, sintaks XQuery menjadi miliknya sendiri. Tetapi perlu diingat bahwa ada banyak hal sederhana yang dapat Anda lakukan dengan XPath saja, dan bahwa setiap ekspresi XPath yang valid juga valid di XQuery. Perhatikan bahwa Stylus Studio juga menyediakan penganalisis XPath bawaan untuk mengedit dan menguji ekspresi XPath yang kompleks secara visual, dan mendukung versi 1.0 dan 2.0.

Ekspresi XQuery FLWOR

Jika Anda telah menggunakan SQL, maka Anda akan mengenali contoh terakhir sebagai gabungan antara dua tabel, tabel video dan tabel aktor. Ini tidak persis sama dalam XML, karena datanya lebih hierarkis daripada tabel, tetapi XQuery memungkinkan Anda untuk menulis kueri gabungan dengan cara yang mirip dengan pendekatan SQL yang sudah dikenal. Setara dengan ekspresi SELECT SQL disebut ekspresi FLWOR, dinamai berdasarkan lima klausanya: for, let, where, order by, return. Berikut contoh terakhir, kali ini ditulis ulang sebagai ekspresi FLWOR:

Dan tentu saja, kami mendapatkan hasil yang sama.

Mari kita bongkar ekspresi FLWOR ini:

    Klausa let hanya mendeklarasikan variabel. Saya telah menyertakan ini di sini karena ketika saya menerapkan kueri, saya mungkin ingin mengatur variabel ini secara berbeda; misalnya, saya mungkin ingin menginisialisasinya ke doc(‘videos.xml’), atau ke hasil beberapa kueri kompleks yang menempatkan dokumen dalam database.

    Klausa for mendefinisikan dua variabel rentang: satu memproses semua video secara bergantian, yang lain memproses semua aktor secara bergantian. Secara keseluruhan, ekspresi FLWOR memproses semua kemungkinan pasangan video dan aktor.

    Klausa where kemudian memilih pasangan yang benar-benar kita minati. Kita hanya tertarik jika aktor muncul di video itu, dan kita hanya tertarik jika nama aktor diakhiri dengan ‘Lisa’.

    Akhirnya klausa pengembalian memberi tahu sistem informasi apa yang ingin kita dapatkan kembali. Dalam hal ini kami ingin judul video.

Jika Anda telah mengikuti dengan cermat, Anda mungkin telah memperhatikan satu trik XPath kecil yang kami pertahankan dalam kueri ini. Sebagian besar video akan menampilkan lebih dari satu aktor (walaupun database khusus ini tidak mencoba untuk membuat katalog pemain bit-part). Oleh karena itu, ekspresi $v/actorRef memilih beberapa elemen. Aturan untuk operator = di XPath (dan karena itu juga di XQuery) adalah bahwa ia membandingkan semua yang ada di sebelah kiri dengan semua yang ada di sebelah kanan dan mengembalikan nilai true jika setidaknya ada satu kecocokan. Akibatnya, itu melakukan gabungan implisit. Jika Anda ingin menghindari pemanfaatan fitur ini, dan untuk menulis kueri Anda dalam bentuk relasional yang lebih klasik, Anda dapat menyatakannya sebagai:

Kali ini saya telah menggunakan operator kesetaraan yang berbeda, eq, yang mengikuti aturan yang lebih konvensional daripada = tidak: ini secara ketat membandingkan satu nilai di sebelah kiri dengan satu nilai di sebelah kanan. (Tapi seperti perbandingan dalam SQL, ia memiliki aturan khusus untuk menangani kasus di mana salah satu nilai tidak ada.)

Bagaimana dengan “O” di FLWOR? Itu ada di sana sehingga Anda bisa mendapatkan hasil dalam urutan yang diurutkan. Misalkan Anda ingin video dalam urutan tanggal rilis mereka. Inilah kueri yang direvisi:

Dan jika Anda bertanya-tanya mengapa itu bukan ekspresi LFWOR: klausa for dan let dapat muncul dalam urutan apa pun, dan Anda dapat memiliki jumlah masing-masing. Itu, dan LFWOR tidak benar-benar jatuh dari lidah, sekarang bukan?. Ada lebih banyak lagi ekspresi FLOWR daripada apa yang tercakup dalam tutorial singkat XQuery ini — untuk informasi lebih lanjut, pastikan untuk melihat tutorial XQuery FLWOR.

Menghasilkan Output XML dengan XQuery

Sejauh ini semua kueri yang kami tulis telah memilih node dalam dokumen sumber. Saya telah menunjukkan hasilnya seolah-olah sistem menyalin node untuk membuat semacam dokumen hasil, dan jika Anda menjalankan DataDirect XQuery dari baris perintah dari dalam Stylus Studio, itulah yang terjadi; tapi itu hanya mode eksekusi default. Dalam aplikasi nyata Anda ingin mengontrol bentuk dokumen keluaran, yang mungkin menjadi masukan untuk aplikasi lain — mungkin masukan untuk transformasi XSLT atau bahkan kueri lainnya.

XQuery memungkinkan struktur dokumen hasil untuk didefinisikan menggunakan notasi seperti XML. Berikut adalah contoh yang menyempurnakan kueri kami sebelumnya dengan beberapa markup XML:

Saya juga telah mengubah kueri sehingga nama depan aktor sekarang menjadi parameter. Ini membuat kueri dapat digunakan kembali. Cara parameter diberikan bervariasi dari satu prosesor XQuery ke yang lain. Di Stylus Studio, pilih XQuery > Scenario Properties; klik tab Parameter Values, dan Anda akan melihat ruang untuk memasukkan nilai parameter. Masukkan “Lisa”, dalam tanda kutip (Stylus Studio mengharapkan ekspresi, jadi jika Anda mengabaikan tanda kutip, nilai ini akan diambil sebagai referensi ke elemen bernama <Lisa>).

Jika Anda menjalankan DataDirect XQuery dari baris perintah, beginilah tampilan outputnya sekarang:

(Bukan kueri yang dirancang dengan baik, karena kedua video tersebut menampilkan aktris yang berbeda, keduanya bernama Lisa; tetapi jika sepuluh menit Anda belum habis, mungkin Anda dapat memperbaikinya sendiri.)

Tunjukkan Basis Datanya!

Saya mulai dengan mengatakan bahwa tujuan utama XQuery adalah untuk mengekstrak data dari database XML, tetapi semua contoh saya telah menggunakan satu dokumen XML sebagai input.

Orang terkadang memeras kumpulan data besar (misalnya, direktori telepon perusahaan) ke dalam satu dokumen XML, dan memprosesnya sebagai file tanpa memanfaatkan sistem basis data apa pun. Ini bukan sesuatu yang saya sarankan secara khusus, tetapi jika volume data tidak melebihi beberapa megabita dan tingkat transaksinya sederhana, maka itu sangat mungkin dilakukan. Jadi contoh dalam pendahuluan ini tidak sepenuhnya tidak realistis.

Namun, jika Anda memiliki database nyata, bentuk kueri tidak perlu banyak berubah dari contoh-contoh ini. Alih-alih menggunakan fungsi doc() (atau cukup “.”) untuk memilih dokumen, Anda mungkin akan memanggil fungsi collection() untuk membuka database, atau kumpulan dokumen tertentu di dalam database. Cara sebenarnya untuk menamai koleksi mungkin berbeda dari satu sistem basis data ke sistem basis data lainnya. Hasil dari fungsi XQuery collection() adalah sekumpulan dokumen (lebih tepatnya, urutan dokumen, tetapi urutannya tidak terlalu penting), dan Anda dapat memprosesnya menggunakan ekspresi jalur atau ekspresi FLWOR dengan cara yang sama seperti Anda menangani satu dokumen.

Ada lebih banyak database daripada melakukan kueri, tentu saja. Setiap produk memiliki caranya sendiri dalam menyiapkan database, mendefinisikan skema, memuat dokumen, dan melakukan operasi pemeliharaan seperti pencadangan dan pemulihan. XQuery saat ini hanya menangani satu bagian kecil dari pekerjaan. Di masa mendatang kemungkinan juga akan ada pembaruan XQuery, tetapi sementara itu setiap vendor menentukan sendiri.

Salah satu fitur yang sangat bagus dari XQuery adalah ia memiliki potensi untuk menggabungkan data dari beberapa database (dan dokumen XML yang berdiri sendiri). Jika itu sesuatu yang Anda minati, DataDirect XQuery™, yang mendukung akses ke Oracle, DB2, SQL Server, Sybase, MySQL, dan banyak Basis Data Relasional lainnya.

Waktunya habis!

Selamat telah menyelesaikan tutorial XQuery ini. Seperti yang mungkin Anda duga, ada lebih banyak hal di XQuery daripada yang sempat kami sajikan dalam primer XQuery singkat ini. Untuk bacaan lebih lanjut, lihat banyak tutorial XQuery lainnya yang tersedia secara gratis di situs web ini.

Jika Anda ingin segera mengotori tangan Anda, Stylus Studio menyediakan banyak alat XQuery, termasuk editor XQuery, XQuery Debugger dengan dukungan terintegrasi untuk DataDirect XQuery, XQuery Mapper untuk mengembangkan proyek XQuery secara visual, dan XQuery Profiler untuk benchmarking dan mengoptimalkan ekspresi XQuery. Yang terbaik dari semuanya, Stylus Studio menyediakan beberapa demonstrasi video online untuk membuat Anda mengenal alat ini dan alat lainnya, dan Anda dapat mencoba Stylus Studio secara gratis.

Terakhir, jika Anda lebih tertarik secara akademis, Anda dapat menemukan spesifikasi XQuery itu sendiri . Sebagai dokumen standar, sebenarnya cukup mudah dibaca, dan memiliki banyak contoh. Spesifikasi adalah bagian dari rakit dokumen di XQuery, yang semuanya terdaftar di bagian Referensi, tetapi yang mungkin sangat berguna bagi Anda adalah spesifikasi Fungsi dan Operator xpath-fungsi. Dokumen ini mencantumkan semua fungsi di pustaka XQuery, tetapi peringatan — hanya fn: yang diawali secara langsung tersedia untuk pengguna akhir. (Anda akan sering melihat pengguna XQuery menulis awalan fn:, tetapi itu tidak pernah diperlukan.)

Facebooktwitterredditpinteresttumblr