XML與HTML的結合(下)(轉)

amyz發表於2007-08-12
XML與HTML的結合(下)(轉)[@more@]

  XML的巢狀處理

  一般情況下,我們從資料庫中查詢得到的結果集可能很大,所以從伺服器返回到客戶端時,資料會被分成若干個頁面分別進行傳遞。此時,利用TABLE元素中的DATAPAGESIZE屬性可以指定每個頁面包含記錄集條目的個數。

  例如:

  

  很顯然,如果XML資料格式是對稱的,則無論是對映到ADO記錄集還是繫結到表格元素上,效果都會很好。而在實際應用中,XML資料為非對稱的例子也很多,比如一本書的作者可能就不止一位,這在對映和繫結時都會產生一定的麻煩。解決問題的辦法就是利用巢狀。每一行表格仍對應一條主元素,每一欄也對應著一個子元素。對於重複元素,則使用巢狀的表格。我們假設在books.xml中,第一本書的作者為Dean Straight,第二本書的作者為Charlotte Cooper、Shelley Burke和Regina Murphy。此時,繫結過程如下:

  ● 建立TABLE元素,並將資料島ID賦值給DATAFLD屬性;

  ● 對於單獨的XML元素,如,建立TD元素,並設定相應的DATAFLD屬性;

  ● 對於重複元素,在TD元素內部巢狀一個表格;

  ● 用單行單列的形式顯示作者資訊。

  注意這裡的DATAFLD屬性必須設定為“$TEXT”,

  以保證巢狀元素的內容被全部顯示在指定的元素中。

  完整的HTML程式碼如下所示:

  

  

  

  

  

  

  

  

  

  

Title ISBN Author

  

  

  

  

  

  

  事實上,使用DSO效果最好的情況是針對結構對稱的資料,而處理非對稱資料更有效的辦法是使用我們以後將要介紹的DOM技術。

  DSO技術的應用

  1. 訪問元素的屬性

  用DSO訪問元素的屬性很簡單,可以直接把屬性按子元素來處理。

  例如:

  

  ……

  

  這樣,在繫結到HTML表格中時,就可以直接按子元素來處理:

  

  如果遇到屬性名和子元素名一樣的情況,在元素名前加上“!”進行區分。 2.遍歷記錄集

  DSO把XML資料島當做ADO記錄集進行處理的一大好處是可以利用ADO提供的各種方法對資料來源進行訪問,尤其是當把資料島與類似SPAN、DIV和INPUT等HTML元素繫結時。通常這些元素顯示的是記錄集的首條記錄,要想對記錄集進行遍歷瀏覽,可以使用ADO的方法 : Move、MoveFirst、MoveLast、MoveNext和MovePrevious。比如建立一個按鈕響應函式,只要使用者點選“Next”按鈕,就可以逐條瀏覽相應的記錄。

  例如:

  

  

  Sub btnNext_onclick()

  xmldso.RecordSet.MoveNext

  End Sub

  3.與Script語言相結合

  有些使用者比較習慣編寫Script語言,利用DSO技術同樣可以與各種Script很好地結合在一起。

  例如(以VB Script為例),訪問記錄集時,程式碼如下:

  Dim rsBooks

  Set rsBooks = xmldso.RecordSet

  訪問欄位(子元素)的值:

  Dim sTitle

  sTitle = rsBooks(“title”)

  可以使用innerText和innerHTML屬性把得到的值傳遞給HTML元素。例如,有一個DIV元素名為divTitle,賦值程式碼如下所示:

  divTitle.innerTEXT = sTitle

  利用指令碼程式還可以處理許多DSO事件,下表列舉了其中的一部分事件:

  在指令碼中處理各種事件的方法就是在

標籤中使用FOR屬性指定XML資料島ID,使用EVENT屬性確定事件型別。 </P> <P>  例如,獲取記錄集中條目的個數: </P> <P>  <SCRIPT Language=“VB Script” FOR=“xmldso” EVENT=“onDataAvailable”> </P> <P>  lblRecords.value = booklist.RecordSet.RecordCount </P> <P>  

  除了顯示記錄資料之外,指令碼程式還可以對記錄集進行快速查詢、排序、編輯等操作。但要指出的是,雖然ADO技術中提供了類似SortColumn和SortAscending等方法對XML資料進行排序,但是效果不如XSL中的排序操作,所以建議大家充分利用XSL技術來實現這部分功能。

  其餘的功能,如利用指令碼對記錄集進行諸如增加、刪除、修改等操作,或是分頁顯示HTML表格等等,在這裡就不一一舉例說明了,用法與前面的操作大同小異。最後需要說明的是,所有對DSO物件的操作都是在使用者端完成的,實際上是伺服器資料物件的一份複製品,這樣做的好處是避免了網路承受大量資料通訊的負擔。但這時使用者端所做的任何操作對伺服器上儲存的資料毫無影響,如果要想對伺服器記錄也進行修改,那麼就要用到客戶端與伺服器端的資料交換技術,我們將在以後對此進行介紹。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752019/viewspace-950353/,如需轉載,請註明出處,否則將追究法律責任。

XML與HTML的結合(下)(轉)
請登入後發表評論 登入
全部評論

相關文章