一般情況下,我們從資料庫中查詢得到的結果集可能很大,所以從伺服器返回客戶端時,資料會被分成若干個頁面分別進行傳遞。此時,利用TABLE元素中的DATAPAGESIZE屬性可以指定每個頁麵包含記錄集條目的數量。
例如:
<TABLE DATASRC=“#xmldso” DATAPAGESIZE=10>
很顯然,如果XML資料格式是對稱的,則無論是映射到ADO記錄集還是綁定到表格元素上,效果都會很好。而在實際應用中,XML資料為非對稱的例子也很多,例如一本書的作者可能不只一位,這在映射和綁定時都會產生一定的麻煩。解決問題的方法就是利用嵌套。每一行表格仍對應一條主元素,每一欄也對應一個子元素。對於重複元素,則使用嵌套的表格。我們假設在books.xml中,第一本書的作者為Dean Straight,第二本書的作者為Charlotte Cooper、Shelley Burke和Regina Murphy。此時,綁定過程如下:
● 建立TABLE元素,並將資料島ID賦值給DATAFLD屬性;
● 對於單獨的XML元素,如
● 對於重複元素,在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>
<p DATAFLD=“title”></p></TD>
<TD><p DATAFLD=“isbn”>
</p></TD>
<TD>
<TABLE BORDER=0 DATASRC=“#xmldso” DATAFLD=“author”>
<TR><TD><SPAN DATAFLD=“$Text”></SPAN></TD></TR>
</TABLE>
</TD>
</TR></TBODY>
</TABLE>
#事實上,使用DSO效果最好的情況是針對結構對稱的數據,而處理非對稱資料更有效的辦法是使用我們以後將要介紹的DOM技術。
DSO技術的應用
1. 存取元素的屬性
用DSO存取元素的屬性很簡單,可以直接把屬性以子元素來處理。
例如:
<book isbn=“9-001-122-12”> …… </book>
<TD><SPAN DATAFLD=“isbn”> </SPAN></TD>
DSO把XML資料島當做ADO記錄集進行處理的一大好處是可以利用ADO提供的各種方法對資料來源進行訪問,尤其是當把資料島與類似SPAN、p和INPUT等HTML元素綁定時。通常這些元素顯示的是記錄集的首筆記錄,若要對記錄集進行遍歷瀏覽,可以使用ADO的方法 : Move、MoveFirst、MoveLast、MoveNext和MovePRevious。例如建立按鈕回應函數,只要使用者點選「Next」按鈕,就可以逐一瀏覽對應的記錄。
例如:
<XML ID=“xmldso” SRC=“books.xml”> </XML> Sub btnNext_onclick() xmldso.RecordSet.MoveNext End Sub
有些使用者比較習慣編寫Script語言,利用DSO技術同樣可以與各種Script很好地結合在一起。
例如(以VB Script為例),當存取記錄集時,程式碼如下:
Dim rsBooks Set rsBooks = xmldso.RecordSet 访问字段(子元素)的值: Dim sTitle sTitle = rsBooks(“title”)
pTitle.innerTEXT = sTitle
在腳本中處理各種事件的方法就是在