国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > XML > 正文

XML與HTML的結(jié)合(下)

2024-09-05 20:53:57
字體:
供稿:網(wǎng)友
     xml的嵌套處理

一般情況下,我們從數(shù)據(jù)庫中查詢得到的結(jié)果集可能很大,所以從服務(wù)器返回到客戶端時,數(shù)據(jù)會被分成若干個頁面分別進行傳遞。此時,利用table元素中的datapagesize屬性可以指定每個頁面包含記錄集條目的個數(shù)。

例如:

<table datasrc=“#xmldso” datapagesize=10>

很顯然,如果xml數(shù)據(jù)格式是對稱的,則無論是映射到ado記錄集還是綁定到表格元素上,效果都會很好。而在實際應(yīng)用中,xml數(shù)據(jù)為非對稱的例子也很多,比如一本書的作者可能就不止一位,這在映射和綁定時都會產(chǎn)生一定的麻煩。解決問題的辦法就是利用嵌套。每一行表格仍對應(yīng)一條主元素,每一欄也對應(yīng)著一個子元素。對于重復(fù)元素,則使用嵌套的表格。我們假設(shè)在books.xml中,第一本書的作者為dean straight,第二本書的作者為charlotte cooper、shelley burke和regina murphy。此時,綁定過程如下:

● 創(chuàng)建table元素,并將數(shù)據(jù)島id賦值給datafld屬性;

● 對于單獨的xml元素,如<isbn>,創(chuàng)建td元素,并設(shè)定相應(yīng)的datafld屬性;

● 對于重復(fù)元素,在td元素內(nèi)部嵌套一個表格;

● 用單行單列的形式顯示作者信息。

注意這里的datafld屬性必須設(shè)定為“$text”,

以保證嵌套元素的內(nèi)容被全部顯示在指定的元素中。

完整的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>

<table border=0 datasrc=“#xmldso” datafld=“author”>

<tr><td><span datafld=“$text”></span></td></tr>

</table>

</td>

</tr></tbody>

</table>

事實上,使用dso效果最好的情況是針對結(jié)構(gòu)對稱的數(shù)據(jù),而處理非對稱數(shù)據(jù)更有效的辦法是使用我們以后將要介紹的dom技術(shù)。

dso技術(shù)的應(yīng)用

1. 訪問元素的屬性

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

例如:

<book isbn=“9-001-122-12”>

……

</book>

這樣,在綁定到html表格中時,就可以直接按子元素來處理:

<td><span datafld=“isbn”> </span></td>

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

dso把xml數(shù)據(jù)島當(dāng)做ado記錄集進行處理的一大好處是可以利用ado提供的各種方法對數(shù)據(jù)源進行訪問,尤其是當(dāng)把數(shù)據(jù)島與類似span、div和input等html元素綁定時。通常這些元素顯示的是記錄集的首條記錄,要想對記錄集進行遍歷瀏覽,可以使用ado的方法 : move、movefirst、movelast、movenext和moveprevious。比如創(chuàng)建一個按鈕響應(yīng)函數(shù),只要用戶點擊“next”按鈕,就可以逐條瀏覽相應(yīng)的記錄。

例如:

<xml id=“xmldso” src=“books.xml”>

</xml>

sub btnnext_onclick()

xmldso.recordset.movenext

end sub

3.與script語言相結(jié)合

有些用戶比較習(xí)慣編寫script語言,利用dso技術(shù)同樣可以與各種script很好地結(jié)合在一起。

例如(以vb script為例),訪問記錄集時,代碼如下:

dim rsbooks

set rsbooks = xmldso.recordset

訪問字段(子元素)的值:

dim stitle

stitle = rsbooks(“title”)

可以使用innertext和innerhtml屬性把得到的值傳遞給html元素。例如,有一個div元素名為divtitle,賦值代碼如下所示:

divtitle.innertext = stitle

利用腳本程序還可以處理許多dso事件,下表列舉了其中的一部分事件:

在腳本中處理各種事件的方法就是在<script>標(biāo)簽中使用for屬性指定xml數(shù)據(jù)島id,使用event屬性確定事件類型。

例如,獲取記錄集中條目的個數(shù):

<script language=“vb script” for=“xmldso” event=“ondataavailable”>

lblrecords.value = booklist.recordset.recordcount

</script>

除了顯示記錄數(shù)據(jù)之外,腳本程序還可以對記錄集進行快速查詢、排序、編輯等操作。但要指出的是,雖然ado技術(shù)中提供了類似sortcolumn和sortascending等方法對xml數(shù)據(jù)進行排序,但是效果不如xsl中的排序操作,所以建議大家充分利用xsl技術(shù)來實現(xiàn)這部分功能。

其余的功能,如利用腳本對記錄集進行諸如增加、刪除、修改等操作,或是分頁顯示html表格等等,在這里就不一一舉例說明了,用法與前面的操作大同小異。最后需要說明的是,所有對dso對象的操作都是在用戶端完成的,實際上是服務(wù)器數(shù)據(jù)對象的一份復(fù)制品,這樣做的好處是避免了網(wǎng)絡(luò)承受大量數(shù)據(jù)通信的負(fù)擔(dān)。但這時用戶端所做的任何操作對服務(wù)器上存儲的數(shù)據(jù)毫無影響,如果要想對服務(wù)器記錄也進行修改,那么就要用到客戶端與服務(wù)器端的數(shù)據(jù)交換技術(shù),我們將在以后對此進行介紹。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 丹东市| 奉化市| 铜鼓县| 兴安盟| 富平县| 望城县| 饶河县| 札达县| 沈阳市| 鄂托克旗| 高雄市| 肃北| 玛纳斯县| 沽源县| 江川县| 大英县| 永嘉县| 陆良县| 翁牛特旗| 溆浦县| 阿瓦提县| 克拉玛依市| 新疆| 琼海市| 抚松县| 仁化县| 灵宝市| 叶城县| 育儿| 杨浦区| 玉环县| 汽车| 长泰县| 商水县| 凤山市| 达尔| 华宁县| 会东县| 宁武县| 闵行区| 开封县|