Pemrosesan XML bersarang
Secara umum, kumpulan hasil yang kita kueri dari database mungkin sangat besar, sehingga ketika kembali dari server ke klien, data akan dibagi menjadi beberapa halaman untuk dikirimkan masing-masing. Saat ini, Anda dapat menggunakan atribut DATAPAGESIZE di elemen TABLE untuk menentukan jumlah entri kumpulan data yang terdapat pada setiap halaman.
Misalnya:
<TABLE DATASRC="#xmldso" DATAPAGESIZE=10>
Jelas, jika format data XML simetris, baik dipetakan ke kumpulan data ADO atau terikat ke elemen tabel, efeknya akan bagus. Dalam aplikasi praktis, terdapat banyak contoh data XML asimetris. Misalnya, sebuah buku mungkin memiliki lebih dari satu penulis, yang akan menyebabkan masalah tertentu dalam pemetaan dan penjilidan. Solusi untuk masalah ini adalah dengan menggunakan nesting. Setiap baris tabel masih berhubungan dengan elemen utama, dan setiap kolom juga berhubungan dengan sub-elemen. Untuk elemen berulang, tabel bersarang digunakan. Misalkan di books.xml, penulis buku pertama adalah Dean Straight, dan penulis buku kedua adalah Charlotte Cooper, Shelley Burke, dan Regina Murphy. Pada titik ini, proses pengikatannya adalah sebagai berikut:
● Buat elemen TABLE dan tetapkan ID pulau data ke atribut DATAFLD
● Untuk elemen XML individual, seperti <isbn>, buat elemen TD dan atur atribut DATAFLD yang sesuai;
● Untuk elemen duplikat, tabel ditempatkan di dalam elemen TD;
● Menampilkan informasi penulis dalam satu baris dan satu kolom.
Perhatikan bahwa atribut DATAFLD di sini harus disetel ke "$TEXT"
untuk memastikan bahwa konten elemen bertumpuk semuanya ditampilkan di elemen yang ditentukan.
Kode HTML selengkapnya adalah sebagai berikut:
<TABLE BORDER=1 DATASRC="#xmldso">
<THEAD><TR><TH>Judul</TH>
<TH>ISBN</TH>
<TH>Penulis</TH> </TR></THEAD>
<TBODY>
<TR><TD>
<DIV DATAFLD="title"></DIV></TD>
<TD><DIV DATAFLD="isbn">
</DIV></ TD>
<TD>
<TABLE BORDER=0 DATASRC="#xmldso" DATAFLD="author">
<TR><TD><SPAN DATAFLD="$Text"></SPAN></TD></TR>
< /TABLE>
</TD>
</TR></TBODY>
</TABLE>
Faktanya, situasi terbaik ketika menggunakan DSO adalah untuk data dengan struktur simetris, dan cara yang lebih efektif untuk menangani data asimetris adalah dengan menggunakan apa yang kita akan melihat di masa depan.
Penerapan teknologi DSO
1. Mengakses atribut suatu elemen
Sangat mudah menggunakan DSO untuk mengakses atribut suatu elemen. Anda dapat langsung menangani atribut berdasarkan sub-elemen.
Misalnya:
<book isbn="9-001-122-12">
...
</book>
Dengan cara ini, ketika mengikat ke tabel HTML, dapat diproses langsung oleh sub-elemen:
<TD><SPAN DATAFLD=" isbn”> </SPAN></TD>
Jika nama atribut dan nama sub elemen sama, tambahkan “!” di depan nama elemen untuk membedakannya. 2. Melintasi kumpulan data
Keuntungan utama DSO memproses pulau data XML sebagai kumpulan data ADO adalah Anda dapat menggunakan berbagai metode yang disediakan oleh ADO untuk mengakses sumber data, khususnya bila pulau data terikat pada elemen HTML seperti SPAN, DIV, dan INPUT . Biasanya elemen ini menampilkan record pertama dari recordset. Jika Anda ingin melintasi recordset, Anda dapat menggunakan metode ADO: Move, MoveFirst, MoveLast, MoveNext dan MovePrevious. Misalnya, jika Anda membuat fungsi respons tombol, selama pengguna mengklik tombol "Berikutnya", rekaman terkait dapat dijelajahi satu per satu.
Misalnya:
<XML ID="xmldso" SRC="books.xml">
</XML>
Sub btnNext_onclick()
xmldso.RecordSet.MoveNext
End Sub
3. Menggabungkan dengan Bahasa Skrip
Beberapa pengguna lebih terbiasa menulis bahasa Skrip, dan teknologi DSO juga dapat dikombinasikan dengan baik dengan berbagai Skrip.
Misalnya (mengambil VB Script sebagai contoh), saat mengakses kumpulan catatan, kodenya adalah sebagai berikut:
Dim rsBooks
Set rsBooks = xmldso.RecordSet
untuk mengakses nilai bidang (sub-elemen):
Dim sTitle
sTitle = rsBooks( "title")
Anda dapat menggunakan atribut innerText dan innerHTML Meneruskan nilai yang dihasilkan ke elemen HTML. Misalnya, ada elemen DIV bernama divTitle, dan kode penugasannya adalah sebagai berikut:
divTitle.innerTEXT = sTitle.
Skrip juga dapat menangani banyak peristiwa DSO. Tabel berikut mencantumkan beberapa di antaranya:
Metode penanganan berbagai peristiwa dalam skrip adalah Gunakan atribut FOR dalam tag <SCRIPT> untuk menentukan ID pulau data XML, dan gunakan atribut EVENT untuk menentukan jenis peristiwa.
Misalnya, dapatkan jumlah entri dalam kumpulan catatan:
<SCRIPT Language="VB Script" FOR="xmldso" EVENT="onDataAvailable">
lblRecords.value = booklist.RecordSet.RecordCount
</SCRIPT>
Selain menampilkan catatan data, skrip Program ini juga dapat dengan cepat menanyakan, mengurutkan, mengedit, dan operasi lain pada kumpulan catatan. Namun, perlu diperhatikan bahwa meskipun teknologi ADO menyediakan metode seperti SortColumn dan SortAscending untuk mengurutkan data XML, efeknya tidak sebaik operasi penyortiran di XSL, jadi disarankan agar Anda memanfaatkan sepenuhnya teknologi XSL untuk mewujudkannya. bagian dari fungsi ini.
Fungsi lainnya, seperti menggunakan skrip untuk melakukan operasi seperti menambah, menghapus, dan mengubah kumpulan catatan, atau menampilkan tabel HTML di halaman, dll., tidak dijelaskan di sini satu per satu. Penggunaannya mirip dengan operasi sebelumnya. Terakhir, perlu dicatat bahwa semua operasi pada objek DSO diselesaikan di sisi pengguna, yang sebenarnya merupakan salinan objek data server. Keuntungannya adalah menghindari jaringan menanggung beban komunikasi data yang besar. Namun saat ini, operasi apa pun yang dilakukan oleh klien tidak berdampak pada data yang disimpan di server. Jika Anda ingin mengubah catatan server, Anda harus menggunakan teknologi pertukaran data antara klien dan server masa depan. Buatlah perkenalan.