Tutorial XQuery: Membangun Aplikasi Agregasi dan Pelaporan Layanan Web Berbasis XQuery – Adopsi luas XML telah sangat mengubah cara informasi dipertukarkan di dalam dan di antara perusahaan. XML, bahasa markup berbasis teks yang dapat diperluas, menjelaskan data dengan cara yang tidak bergantung pada perangkat keras dan perangkat lunak.
Tutorial XQuery: Membangun Aplikasi Agregasi dan Pelaporan Layanan Web Berbasis XQuery
zorba-xquery – Dengan demikian, telah menjadi standar pilihan untuk semakin banyak layanan Web dan Arsitektur Berorientasi Layanan. Dengan sejumlah besar data yang diterbitkan dalam format XML oleh berbagai sumber, kebutuhan telah muncul untuk cara yang mudah dan efisien untuk mengekstraksi dan memanipulasi informasi ini. XQuery telah muncul sebagai cara yang ideal untuk mengumpulkan data dari layanan Web , database relasional, dan aplikasi lain yang menggunakan XML.
Skenario
Untuk mengilustrasikan penggunaan XQuery untuk menggabungkan data dari berbagai sumber, tutorial XQuery ini akan mencakup penggunaan data dunia nyata dari layanan Web kutipan saham, dan menggabungkan informasi tersebut dengan data perusahaan historis yang disimpan dalam database relasional dan disajikan sebagai XML.
Baca Juga : Tips untuk Mengoptimalkan XML di SQL Server
Dalam tutorial ini, data historis sedang ditingkatkan dengan data langsung tentang harga saham saat ini, yang diambil melalui panggilan layanan Web. Setelah data dikumpulkan, itu dapat disajikan dalam berbagai format. Untuk tujuan artikel ini, kami akan menggunakan Stylus Studio® untuk menampilkan data dalam HTML menggunakan XSLT .
Ada dua input XML dalam contoh ini: database relasional (RDBMS) dan layanan Web. Untuk RDBMS, Microsoft Access digunakan untuk memformat data secara otomatis ke dalam XML. Konversi ini juga dapat dilakukan oleh Wisaya Dokumen ADO-ke-XML bawaan Stylus Studio . Kutipan data hasil konversi dari RDBMS..
Hasil dari eksekusi Web service ini adalah respon SOAP yang dapat dilihat pada Gambar 3. SOAP (Simple Object Access Protocol) adalah protokol messaging yang memungkinkan aplikasi Web service untuk saling berbicara.
Ketika layanan Web diidentifikasi sebagai sumber input, Stylus Studio secara transparan memanggil layanan Web sebagai bagian dari operasi apa pun yang menggunakan sumber data tersebut.
Untuk mengekstrak dan menggabungkan data XML dari database Microsoft Access dan layanan Web, kami akan membuat model informasi umum dalam XML menggunakan Stylus Studio XML Schema Editor . Ini akan memungkinkan kami untuk lebih mudah memanipulasi hasil agregasi data untuk tujuan pelaporan.
Memisahkan presentasi dari ekstraksi data memungkinkan kami mengembangkan algoritme pelaporan secara independen, yang membuat sistem lebih mudah dirawat. Skema model informasi umum yang digunakan untuk hasil data stok digambarkan.
Menulis solusi di XQuery
Karena XQuery dirancang untuk memproses XML, ini adalah pilihan logis untuk skenario ini. Selain itu, XQuery dengan mudah mendukung gagasan “gabungan”, yang memungkinkan dua atau lebih sumber data digabungkan berdasarkan kondisi kueri. Pilihan bahasa lainnya termasuk:
Menggunakan bahasa tingkat tinggi seperti Java dan melakukan penguraian dan manipulasi data menggunakan JDOM Menggunakan XSLT
Perbedaan utama adalah bahwa dengan XSLT, logika gabungan dicapai dengan menyimpan simbol stok dalam variabel di loop luar saat memproses informasi stock-ticker SOAP, dan kemudian di loop dalam menguji variabel itu dalam “xsl:if” terhadap setiap elemen stok dari data stok historis. Ketika “xsl:if” bernilai true, Annual Revenues dan City akan ditampilkan.
Untuk solusi XQuery, pertama-tama kita buat produk silang elemen dari dua file XML, lalu batasi hasilnya dengan mengembalikan hanya item tersebut dari database Access dan sumber SOAP yang cocok. Program lengkapnya ditunjukkan di bawah ini:
Deklarasi ini diperlukan karena permintaan SOAP berisi dua ruang nama yang berbeda: satu yang menjelaskan struktur pesan, dan satu yang menjelaskan muatan pesan yang, dalam hal ini, adalah informasi stok real-time. Dua ruang nama XML mencegah konflik penamaan.
Elemen yang mengacu pada komponen SOAP dari pesan diakses dengan awalan “soap:” (/soap:Envelope/soap:Body), sedangkan elemen yang merupakan bagian dari pesan tertanam yang ditransfer sebagai bagian dari respons layanan Web digunakan awalan “a:” ($Quote/a:StockTicker).
Dua baris berikutnya memberikan petunjuk tentang bagaimana program akan beroperasi:
<Hasil>
{
Ketika XQuery mulai dijalankan, ia membangun pohon XML yang dimulai dengan elemen <Result>. Kurung berlekuk-lekuk “{” yang mengikuti adalah awal dari blok pemrosesan yang, ketika selesai, akan memiliki output yang ditambahkan ke pohon XML.
Sebagian besar pemrosesan program terjadi di loop “untuk/di mana”. untuk $Quote di /soap:Envelope/soap:Body/a:GetStockQuotesResponse/a:GetStockQuotesResult/a:Quote,
$Report2003 in document(“Report2003.xml”)/dataroot/Report2003
di mana $Quote/a:StockTicker = $Report2003 /Simbol
Loop “for” mengulangi pesan SOAP melalui elemen berulang “a:Quote”. Setiap kali melalui loop, ia menetapkan elemen “a:Quote” ke variabel “$Quote”.
Demikian pula, untuk setiap elemen berulang “Report2003” dari file “Report2003.xml”, program menetapkan elemen ke $Report2003. Setiap kali melalui loop, klausa “where” dijalankan dan ketika bernilai true, klausa tersebut memungkinkan baris XQuery berikutnya berjalan.
Perhatikan bahwa prosesor XQuery dalam banyak kasus dapat mengoptimalkan eksekusi XQuery seperti ini. Misalnya, ia dapat mengambil hasil dari $Quotevariabel ” dan menggunakannya untuk membaca lebih optimal dari Report2003.xmldokumen “, membuat atau menggunakan indeks yang ada jika perlu.
Prosesor XQuery juga dapat membaca Report2003.xmldokumen ” hanya sekali dan membuat tabel hash dalam memori dari struktur tersebut sehingga selama iterasi berikutnya melalui loop, $Quote/a:StockTicker $Report2003/Symbolperbandingan” dapat dilakukan dengan sangat efisien.
Di sini, pohon hasil XML sedang dibangun sebagai bagian dari operasi pengembalian, dengan <CompanyData>di tingkat atas, dan <Name of Company>sebagai sub-elemen bersarang. Nilai yang dievaluasi oleh kueri didefinisikan dalam tanda kurung berlekuk.
Perhatikan bahwa Anda harus menentukan tipe data yang akan diambil [di sini, ini adalah “teks ()”]; jika tidak, XQuery hanya menyalin elemen “$Report2003/Company” dan bukan konten ke pohon hasil XML tujuan.
Sebagai bagian dari debugger XSLT Stylus Studio®, hasil antara pengembalian tersedia di jendela “Variabel” produk. Ini sangat membantu untuk mengembangkan program XQuery karena, tidak seperti bahasa seperti XSLT, output tidak langsung dihasilkan. Oleh karena itu, alat ini memungkinkan untuk melihat status perantara dengan cepat selama eksekusi.
Mencapai hasil
Ketika XQuery dijalankan dalam Stylus Studio®, pohon hasil XML dikeluarkan ke Jendela Pratinjau Stylus. Dari sana, menyortir hasil menurut elemen apa pun dari input dapat bermanfaat, dan membuat ekstensi untuk mencapainya adalah hal yang mudah.
Untuk mengurutkan hasil dalam urutan abjad berdasarkan nama perusahaan, misalnya, cukup masukkan pernyataan “pesan berdasarkan” setelah “di mana” dalam loop “untuk/biarkan/di mana/kembali”. Kami kemudian dapat mengurutkan output berdasarkan nama perusahaan dengan loop berikut:
untuk $Quote di
/soap:Envelope/soap:Body/a:GetStockQuotesResponse/a:GetStockQuotesResult/a:Quote,
$Report2003 in document(“Report2003.xml”)/dataroot/Report2003
di mana $Quote/a:StockTicker = $Report2003 /Simbol
pesanan dengan $Quote/a:CompanyName
kembali
Sementara kode untuk menghasilkan XQuery di atas cukup mudah untuk ditulis, Stylus Studio menyediakan alat pemetaan yang menyederhanakan pembuatan peta dasar.
Membangun XQuery seperti yang ditunjukkan dalam artikel ini dapat diselesaikan dalam waktu kurang dari satu menit menggunakan alat pemetaan ini.
Representasi visual dari XQuery terlihat pada Gambar 5. Loop “for/let/where” dibangun dengan menyeret elemen berulang ke ikon FLWOR (di mana klausa “for” diimplementasikan); klausa “di mana” diimplementasikan dengan membuat ikon “sama” dan menyeret elemen untuk kedua sisi “sama” ke ikon itu.
Loop “for/let/where” diselesaikan dengan mengaitkan “equal” ke FLWOR dan kemudian menyeret output ekspresi FLWOR ke elemen berulang dari dokumen target. Setelah membuat struktur loop “for/let/where”, elemen dari skema sumber dapat dengan mudah diseret dan dijatuhkan ke skema target.
Melaporkan ke HTML menggunakan XSLT
Setelah model informasi umum berbasis XML diisi, ada banyak pilihan untuk menyajikan informasi tersebut kepada pengguna. Untuk melengkapi contoh ini, kami akan membuat lembar gaya menggunakan perancang XML-ke-HTML WYSIWYG Stylus Studio untuk menyajikan data sebagai HTML.
Pilihan lain termasuk menggunakan alat pelaporan seperti Crystal Reports, atau memproses XML dengan bahasa lain seperti Visual Basic atau Java dan kemudian menulis laporan kustom dari itu. Pilihan lain, tentu saja, hanya menggunakan XQuery untuk menghasilkan HTML.
Ringkasan
Dalam tutorial XQuery ini, kami mempelajari bahwa layanan Web menyediakan banyak informasi baru yang dijelaskan dan tersedia untuk aplikasi dalam XML. Seringkali, analisis data memerlukan informasi dari berbagai sumber, yang berarti bahwa data layanan Web, misalnya, perlu ditingkatkan atau digabungkan dengan data XML yang diperoleh dari sumber data lain.
Menggunakan Stylus Studio®, kami membuktikannya dengan cepat dan mudah untuk membuat XQuery yang secara efisien mengumpulkan data dari data stok historis yang disimpan dalam database relasional dengan data kuotasi stok langsung yang disediakan dari layanan Web. Model informasi umum digunakan untuk target agregasi, dan hasilnya diterjemahkan ke dalam HTML untuk tujuan presentasi.