การประมวลผล XML แบบซ้อน
โดยทั่วไปชุดผลลัพธ์ที่เราสอบถามจากฐานข้อมูลอาจมีขนาดใหญ่มาก ดังนั้นเมื่อส่งคืนจากเซิร์ฟเวอร์ไปยังไคลเอนต์ ข้อมูลจะถูกแบ่งออกเป็นหลายหน้าเพื่อจัดส่งตามลำดับ ในขณะนี้ คุณสามารถใช้แอตทริบิวต์ DATAPAGESIZE ในองค์ประกอบ TABLE เพื่อระบุจำนวนรายการชุดระเบียนที่แต่ละเพจประกอบด้วย
ตัวอย่างเช่น:
<TABLE DATASRC="#xmldso" DATAPAGESIZE=10>
แน่นอนว่า ถ้ารูปแบบข้อมูล XML เป็นแบบสมมาตร ไม่ว่าจะแมปกับชุดระเบียน ADO หรือผูกกับองค์ประกอบตาราง ผลลัพธ์ที่ได้ก็จะออกมาดี ในการใช้งานจริง มีตัวอย่างข้อมูล XML ที่ไม่สมมาตรมากมาย ตัวอย่างเช่น หนังสืออาจมีผู้แต่งมากกว่าหนึ่งคน ซึ่งจะทำให้เกิดปัญหาในการแมปและการเชื่อมโยง วิธีแก้ปัญหาคือใช้การซ้อน แต่ละแถวของตารางยังคงสอดคล้องกับองค์ประกอบหลัก และแต่ละคอลัมน์ยังสอดคล้องกับองค์ประกอบย่อยด้วย สำหรับองค์ประกอบที่ซ้ำกัน จะใช้ตารางแบบซ้อน สมมติว่าใน books.xml ผู้เขียนหนังสือเล่มแรกคือ Dean Straight และผู้แต่งหนังสือเล่มที่สองคือ Charlotte Cooper, Shelley Burke และ Regina Murphy ณ จุดนี้ กระบวนการเชื่อมโยงจะเป็นดังนี้:
● สร้างองค์ประกอบตารางและกำหนด ID เกาะข้อมูลให้กับแอตทริบิวต์ DATAFLD
● สำหรับองค์ประกอบ XML แต่ละรายการ เช่น <isbn> ให้สร้างองค์ประกอบ TD และตั้งค่าแอตทริบิวต์ DATAFLD ที่สอดคล้องกัน
● สำหรับองค์ประกอบที่ซ้ำกัน ตารางจะซ้อนอยู่ภายในองค์ประกอบ TD
● แสดงข้อมูลผู้เขียนในแถวเดียวและคอลัมน์เดียว
โปรดทราบว่าต้องตั้งค่าแอตทริบิวต์ DATAFLD ที่นี่เป็น "$TEXT"
เพื่อให้แน่ใจว่าเนื้อหาขององค์ประกอบที่ซ้อนกันทั้งหมดจะแสดงในองค์ประกอบที่ระบุ
รหัส HTML ที่สมบูรณ์มีดังนี้:
<TABLE BORDER=1 DATASRC="#xmldso">
<THEAD><TR><TH>Title</TH>
<TH>ISBN</TH>
<TH>Author</TH> </TR></THEAD>
<TBODY>
<TR><TD>
<DIV DATAFLD="title"></DIV></TD>
<TD><DIV DATAFLD="isbn">
</DIV></ TD>
<TD>
<เส้นขอบตาราง=0 DATASRC="#xmldso" DATAFLD="ผู้เขียน">
<TR><TD><SPAN DATAFLD="$Text"></SPAN></TD></TR>
< /TABLE>
</TD>
</TR></TBODY>
</TABLE>
ในความเป็นจริง สถานการณ์ที่ดีที่สุดเมื่อใช้ DSO คือสำหรับข้อมูลที่มีโครงสร้างสมมาตร และวิธีที่มีประสิทธิภาพมากขึ้นในการจัดการกับข้อมูลที่ไม่สมมาตรคือการใช้สิ่งที่เรา จะได้เห็นในอนาคต แนะนำเทคโนโลยี DOM
การประยุกต์ใช้เทคโนโลยี DSO1
. การเข้าถึงคุณลักษณะขององค์ประกอบ
การใช้ DSO ในการเข้าถึงคุณลักษณะขององค์ประกอบนั้นง่ายมาก คุณสามารถจัดการคุณลักษณะขององค์ประกอบย่อยได้โดยตรง
ตัวอย่างเช่น:
<book isbn="9-001-122-12">
...
</book>
ด้วยวิธีนี้ เมื่อเชื่อมโยงกับตาราง HTML จะสามารถประมวลผลได้โดยตรงโดยองค์ประกอบย่อย:
<TD><SPAN DATAFLD=" isbn”> </SPAN></TD>
หากชื่อแอตทริบิวต์และชื่อองค์ประกอบย่อยเหมือนกัน ให้เพิ่ม “!” ไว้หน้าชื่อองค์ประกอบเพื่อแยกแยะความแตกต่าง 2. การสำรวจชุดระเบียน ข้อ
ได้เปรียบที่สำคัญของการประมวลผลหมู่เกาะข้อมูล XML ของ DSO เนื่องจากชุดระเบียน ADO คือ คุณสามารถใช้วิธีการต่างๆ ที่ ADO จัดเตรียมไว้ให้เพื่อเข้าถึงแหล่งข้อมูล โดยเฉพาะอย่างยิ่งเมื่อเกาะข้อมูลถูกผูกไว้กับองค์ประกอบ HTML เช่น SPAN, DIV และ INPUT . เวลา โดยปกติแล้วองค์ประกอบเหล่านี้จะแสดงระเบียนแรกของชุดระเบียน ถ้าคุณต้องการสำรวจชุดระเบียน คุณสามารถใช้เมธอด ADO ได้: Move, MoveFirst, MoveLast, MoveNext และ MovePrevious ตัวอย่างเช่น หากคุณสร้างฟังก์ชันตอบสนองของปุ่ม ตราบใดที่ผู้ใช้คลิกปุ่ม "ถัดไป" จะสามารถเรียกดูบันทึกที่เกี่ยวข้องได้ทีละรายการ
ตัวอย่างเช่น:
<XML ID="xmldso" SRC="books.xml">
</XML>
Sub btnNext_onclick()
xmldso.RecordSet.MoveNext
End Sub
3 การรวมเข้ากับภาษาสคริปต์
ผู้ใช้บางคนคุ้นเคยกับการเขียนภาษาสคริปต์มากกว่า และเทคโนโลยี DSO ก็สามารถใช้ร่วมกับสคริปต์ต่างๆ ได้เป็นอย่างดี
ตัวอย่างเช่น (โดยการใช้สคริปต์ VB เป็นตัวอย่าง) เมื่อเข้าถึงชุดบันทึก รหัสจะเป็นดังนี้:
Dim rsBooks
Set rsBooks = xmldso.RecordSet
เพื่อเข้าถึงค่าของฟิลด์ (องค์ประกอบย่อย):
Dim sTitle
sTitle = rsBooks( "title")
คุณสามารถใช้แอตทริบิวต์ innerText และ innerHTML ส่งค่าผลลัพธ์ไปยังองค์ประกอบ HTML ตัวอย่างเช่น มีองค์ประกอบ DIV ชื่อ divTitle และรหัสการกำหนดเป็นดังนี้:
divTitle.innerTEXT = sTitle
สคริปต์ยังสามารถจัดการเหตุการณ์ DSO จำนวนมากได้ ตารางต่อไปนี้แสดงรายการบางส่วน:
วิธีการจัดการเหตุการณ์ต่าง ๆ ในสคริปต์คือ ใช้แอตทริบิวต์ FOR ในแท็ก <SCRIPT> เพื่อระบุ ID เกาะข้อมูล XML และใช้แอตทริบิวต์ EVENT เพื่อกำหนดประเภทเหตุการณ์
ตัวอย่างเช่น รับจำนวนรายการในชุดเรคคอร์ด:
<SCRIPT Language="VB Script" FOR="xmldso" EVENT="onDataAvailable">
lblRecords.value = booklist.RecordSet.RecordCount
</SCRIPT>
นอกเหนือจากการแสดงเรคคอร์ด ข้อมูล, สคริปต์ โปรแกรมยังสามารถสืบค้น, เรียงลำดับ, แก้ไขและดำเนินการอื่น ๆ ในชุดบันทึกได้อย่างรวดเร็ว อย่างไรก็ตาม ควรชี้ให้เห็นว่าแม้ว่าเทคโนโลยี ADO จะมีวิธีการต่างๆ เช่น SortColumn และ SortAscending เพื่อเรียงลำดับข้อมูล XML แต่ผลที่ได้จะไม่ดีเท่ากับการดำเนินการเรียงลำดับใน XSL ดังนั้นจึงขอแนะนำให้คุณใช้เทคโนโลยี XSL อย่างเต็มรูปแบบเพื่อให้ทราบถึง ส่วนหนึ่งของฟังก์ชันนี้
ฟังก์ชั่นที่เหลือ เช่น การใช้สคริปต์ในการดำเนินการ เช่น การเพิ่ม การลบ และการแก้ไขชุดบันทึก หรือการแสดงตาราง HTML ในเพจ ฯลฯ ไม่ได้อธิบายไว้ที่นี่ทีละรายการ การใช้งานจะคล้ายกับการดำเนินการก่อนหน้านี้ สุดท้ายนี้ ควรสังเกตว่าการดำเนินการทั้งหมดบนออบเจ็กต์ DSO เสร็จสมบูรณ์บนฝั่งผู้ใช้ ซึ่งจริงๆ แล้วเป็นสำเนาของออบเจ็กต์ข้อมูลเซิร์ฟเวอร์ ข้อดีของการทำเช่นนี้คือ หลีกเลี่ยงไม่ให้เครือข่ายรับภาระในการสื่อสารข้อมูลขนาดใหญ่ แต่ในขณะนี้ การดำเนินการใด ๆ ที่ดำเนินการโดยไคลเอนต์จะไม่ส่งผลกระทบต่อข้อมูลที่เก็บไว้บนเซิร์ฟเวอร์ หากคุณต้องการแก้ไขบันทึกเซิร์ฟเวอร์ คุณต้องใช้เทคโนโลยีการแลกเปลี่ยนข้อมูลระหว่างไคลเอนต์และเซิร์ฟเวอร์ เราจะหารือเรื่องนี้ อนาคต แนะนำตัว