999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

一種通用XML數(shù)據(jù)島動(dòng)態(tài)生成和數(shù)據(jù)綁定方法

2009-05-12 03:14:34張文學(xué)
現(xiàn)代電子技術(shù) 2009年2期
關(guān)鍵詞:動(dòng)態(tài)生成數(shù)據(jù)庫(kù)

摘 要:為了減少網(wǎng)頁(yè)訪問(wèn)時(shí)網(wǎng)絡(luò)的負(fù)載,采用XML數(shù)據(jù)島技術(shù)實(shí)現(xiàn)網(wǎng)頁(yè)中數(shù)據(jù)的處理。介紹XML數(shù)據(jù)島的概念,并討論Web頁(yè)中XML數(shù)據(jù)島生成和綁定的機(jī)制,給出一種使用ASP和ADO技術(shù)由數(shù)據(jù)庫(kù)動(dòng)態(tài)生成XML數(shù)據(jù)島,并動(dòng)態(tài)綁定數(shù)據(jù)的通用方法,可應(yīng)用于各種基于Web的應(yīng)用系統(tǒng),提高開(kāi)發(fā)效率。

關(guān)鍵詞:XML數(shù)據(jù)島;動(dòng)態(tài)生成;數(shù)據(jù)綁定;Web程序設(shè)計(jì);數(shù)據(jù)庫(kù)

中圖分類號(hào):TP393文獻(xiàn)標(biāo)識(shí)碼:B

文章編號(hào):1004 373X(2009)02 120 03

Universal Method of XML Data Island Dynamic Generation and Data Binding

ZHANG Wenxue

(Luoyang Institute of Science and Technology,Luoyang,471023,China)

Abstract:To reduce the network load when visiting the Web page,using XML data island technology to process XML data in Web.This article introduces the concept of XML data island,discusses the mechanism of XML data island generation and binding in Web Page,gives the universal method of XML data island generated from database with ASP and ADO,and binds XML data dynamically,applicable for various applications based on Web.It improves the efficiency of Web development.

Keywords:XML data island;dynamic generation;XML data binding;Web program design;database

0 引 言

XML(eXtensible Markup Language)語(yǔ)言是由W3C定義的一種元標(biāo)記語(yǔ)言,具有較強(qiáng)的數(shù)據(jù)表示能力,但顯示能力不如HTML。在Web頁(yè)中利用XML數(shù)據(jù)島和XML-DSO技術(shù),可以輕松實(shí)現(xiàn)XML數(shù)據(jù)的綁定,從而控制其顯示格式,并且XML數(shù)據(jù)島允許用戶在客戶端訪問(wèn)與操縱數(shù)據(jù)集,不必頻繁地與服務(wù)器交互,從而減輕數(shù)據(jù)庫(kù)服務(wù)器的負(fù)荷。XML已廣泛應(yīng)用于B/S結(jié)構(gòu)的應(yīng)用系統(tǒng),因此,如何由傳統(tǒng)的數(shù)據(jù)庫(kù)生成XML數(shù)據(jù)島及實(shí)現(xiàn)數(shù)據(jù)綁定則成為其中的關(guān)鍵技術(shù)。

1 XML數(shù)據(jù)島技術(shù)

在IE5及以后的版本里,增加了對(duì)<xml>元素的支持,利用<xml>元素可以在HTML文件內(nèi)直接嵌入XML數(shù)據(jù),也可以包含對(duì)某個(gè)外部XML文件的引用,被HTML頁(yè)面引用或包含的XML數(shù)據(jù)稱為XML數(shù)據(jù)島(Data Island)。

網(wǎng)頁(yè)中直接嵌入XML數(shù)據(jù)的格式如下:

<XML ID="xmldso">

<?xml version="1.0"?>

<students>

<student>

<number>041011200</number>

<name>zhang</name>

<sex>male</sex>

</student>

<student>

</student>

</students>

</XML>

引用外部XML文件的XML數(shù)據(jù)島格式為:

<XML ID="xmldso" SRC="students.xml"></XML>

在IE5網(wǎng)頁(yè)中,XML數(shù)據(jù)島可以被作為一個(gè)數(shù)據(jù)源對(duì)象(Data Source Object,DSO)使用。XML數(shù)據(jù)源對(duì)象(XML-DSO)是一個(gè)ActiveX控件。在Web頁(yè)面中,通過(guò)數(shù)據(jù)綁定或客戶端腳本可以對(duì)XML數(shù)據(jù)源對(duì)象的數(shù)據(jù)進(jìn)行操作。

2 XML數(shù)據(jù)生成與綁定機(jī)制

XML數(shù)據(jù)島的數(shù)據(jù)可以來(lái)源于內(nèi)嵌代碼、外部XML文件或數(shù)據(jù)庫(kù)。由于數(shù)據(jù)庫(kù)具有較好的數(shù)據(jù)管理和控制能力,適于數(shù)據(jù)的集中存儲(chǔ)和管理,而XML文件更適于數(shù)據(jù)的傳輸,因此可以通過(guò)數(shù)據(jù)對(duì)象(Activex Data Object,ADO)由數(shù)據(jù)庫(kù)動(dòng)態(tài)生成XML文件,然后引用到XML數(shù)據(jù)島中。

XML數(shù)據(jù)島技術(shù)作為一個(gè)數(shù)據(jù)源對(duì)象在客戶端創(chuàng)建了XML數(shù)據(jù)的緩存,利用數(shù)據(jù)綁定代理可以將HTML控件元素與DSO實(shí)現(xiàn)綁定,從而在Web頁(yè)中顯示和操縱XML數(shù)據(jù)。

XML數(shù)據(jù)生成與綁定機(jī)制如圖1所示。

在IE4和IE5中,許多HTML控件元素新增加了實(shí)現(xiàn)數(shù)據(jù)綁定的屬性如:DATASRC表示控件要綁定的數(shù)據(jù)源對(duì)象的ID;DATAFLD表示控件要綁定的數(shù)據(jù)記錄的字段;DATAFORMATAS表示控件要綁定的數(shù)據(jù)是文本還是HTML格式。

數(shù)據(jù)綁定代理對(duì)象提供了兩種類型的數(shù)據(jù)綁定:表格數(shù)據(jù)綁定和單記錄數(shù)據(jù)綁定。

(1) 表格數(shù)據(jù)綁定:將<table>的datasrc屬性設(shè)置為XML數(shù)據(jù)島的標(biāo)識(shí)#xmldso(前面必須加#),表格列<td>由于不能綁定數(shù)據(jù),所以需要加入<div>或<span>作為數(shù)據(jù)的容器,并將其datafld屬性設(shè)置為xml數(shù)據(jù)的相應(yīng)字段元素名。

<table id="xmltable" border=1 datasrc="#xmldso" datapagesize=4>

<thead><tr><th>學(xué)號(hào)</th><th>姓名</th><th>性別</th></tr></thead>

<tbody><tr>

<td><div datafld="number"></div></td>

<td><div datafld="name"></div></td>

<td><div datafld="sex"></div></td>

</tr></tbody>

</table>

(2) 單記錄數(shù)據(jù)綁定:許多HTML元素可以實(shí)現(xiàn)單值數(shù)據(jù)綁定,如:A,APPLET,BUTTON,DIV,F(xiàn)RAME,IFRAME,IMG,INPUT,LABEL,SELECT,SPAN等。將HTML元素(如<input>)的datasrc屬性設(shè)置為XML數(shù)據(jù)島的標(biāo)識(shí)#xmldso,datafld屬性設(shè)置為xml數(shù)據(jù)的相應(yīng)字段名。

<input type=text datasrc="#xmldso" datafld="number" width=20><br>

3 通用的XML數(shù)據(jù)島動(dòng)態(tài)生成和數(shù)據(jù)綁定方法

3.1 XML數(shù)據(jù)島動(dòng)態(tài)生成

ADO是Microsoft的一種數(shù)據(jù)訪問(wèn)接口,其對(duì)象集合中的Recordset對(duì)象存儲(chǔ)檢索到的記錄集。在ADO 2.1版中,增加了對(duì)XML格式的支持,可以使用Recordset對(duì)象的 Save方法將記錄集保存,格式如下:

Recordset.Save szdest,adPersistXML

其中:szdest可以是帶絕對(duì)路徑的文件名或Response對(duì)象;adPersistXML為常量。但是,該方法生成的XML文件帶有XML模式、每條記錄為1個(gè)元素,其格式結(jié)構(gòu)復(fù)雜,不便于數(shù)據(jù)綁定和操縱。在此給出一個(gè)XML數(shù)據(jù)結(jié)構(gòu)化良好且通用的XML數(shù)據(jù)島動(dòng)態(tài)生成方法,由服務(wù)器端的ASP程序?qū)崿F(xiàn)(程序名xmldata.asp)。

首先,設(shè)置Response對(duì)象的屬性:輸出流到客戶端、MIME類型為text/xml。

<%@ Language=VBScript %>

<%Response.Buffer=false

Response.ContentType="text/xml" %>

通過(guò)ADO從數(shù)據(jù)庫(kù)讀取數(shù)據(jù)到Recordset對(duì)象。

<%Set conn=Server.CreateObject("ADODB.connection")

Set rs=Server.CreateObject("ADODB.recordset")

conn.ConnectionString=<連接字符串>

conn.open

sqlText=<SQL語(yǔ)句>

set rs=conn.Execute(sqlText)

rs.MoveFirst

%>

分析Recordset對(duì)象,生成XML數(shù)據(jù),以Response的流形式輸出到客戶端。

<?xml version="1.0" encoding="gb2312"?>

<Months>

<%do while not rs.EOF %>

<Month>

<% for i=0 to rs.Fields.Count-1 %>

<<%=rs.Fields(i).Name %>><%=rs.Fields(i).Value %></<%=rs.Fields(i).Name %>>

<% next

rs.MoveNext %>

</Month>

<% loop %>

</Months>

關(guān)閉和撤消rs和conn對(duì)象:

<% rs.Close

set rs=nothing

conn.Close

set conn=nothing %>

以上x(chóng)mldata.asp程序的結(jié)果即是一個(gè)XML格式的文件,可被XML數(shù)據(jù)島引用。

3.2 動(dòng)態(tài)數(shù)據(jù)綁定

在Web頁(yè)中,數(shù)據(jù)島中可以如同XML文件一樣引用上面的“xmldata.asp”程序,然后使用客戶端腳本動(dòng)態(tài)地進(jìn)行表格數(shù)據(jù)綁定或單值數(shù)據(jù)綁定。以下是動(dòng)態(tài)表格綁定的代碼,單值數(shù)據(jù)綁定類似。

定義窗口載入函數(shù)腳本。首先,得到表格的表格頭行和表格體行的對(duì)象,以及數(shù)據(jù)島記錄集的引用:

<html>

<script language="vbscript">

sub window_onload()

set objtablehead=document.all("tbldata").rows(0)

set objtablebody=document.all("tbldata").rows(1)

set objxmlrs=document.all("xmldso").recordset

在表頭行中,使用表格行對(duì)象的insertcell方法(IE5的新增方法),根據(jù)數(shù)據(jù)島記錄集的字段數(shù)和字段名生成表頭行的表列:

for each objfield in objxmlrs.fields

if objfield.name<>"MYMText" then

set objheadcell=objtablehead.insertcell()

objheadcell.innerHtml=objfield.name

同上方法在表格體中生成數(shù)據(jù)列,并綁定數(shù)據(jù)島的相應(yīng)列,最后將整個(gè)表格綁定到數(shù)據(jù)島:

set objbodycell=objtablebody.insertcell()

objbodycell.innerHtml="<span datafld=′"&objfield.name;&"′></span>"

end if

next

document.all("tbldata").datasrc="#xmldso"

end sub

</script>

定義數(shù)據(jù)島(引用動(dòng)態(tài)生成XML數(shù)據(jù)的ASP程序)和表格,表格的數(shù)據(jù)綁定暫時(shí)為空,由以上腳本動(dòng)態(tài)綁定:

<body>

<xml id="xmldso" src="myxml1.asp"></xml>

<table id="tbldata" border=1>

<thead><tr></tr></thead>

<tbody><tr></tr></tbdoy>

</table>

</body></html>

4 結(jié) 語(yǔ)

服務(wù)器端專注于數(shù)據(jù)的管理和控制,XML數(shù)據(jù)用于傳輸,采用XML數(shù)據(jù)島、XML數(shù)據(jù)綁定和客戶端腳本來(lái)完成數(shù)據(jù)的顯示,這種工作方式很大程度上減少了服務(wù)器的訪問(wèn)次數(shù)和網(wǎng)絡(luò)傳輸?shù)臄?shù)據(jù)量,而且數(shù)據(jù)采用XML格式表示通用性更好,在B/S系統(tǒng)中得到廣泛采用。該文的XML數(shù)據(jù)島動(dòng)態(tài)生成和數(shù)據(jù)動(dòng)態(tài)綁定方法具有通用性,解決了數(shù)據(jù)庫(kù)到XML數(shù)據(jù)的生成和顯示問(wèn)題,具有廣泛的實(shí)用性。

參考文獻(xiàn)

[1]Michael Morrison.XML揭秘入門、應(yīng)用、精通[M].北京:清華大學(xué)出版社,2001.

[2]陳建紅,徐濤.Web數(shù)據(jù)庫(kù)與XML應(yīng)用[M].北京:高等教育出版社,2004.

[3]Mark Baartse,Richard Blair.ASP與XML高級(jí)編程[M].北京:清華大學(xué)出版社,2002.

[4]孫一中.XML理論和應(yīng)用基礎(chǔ)[M].北京:北京郵電大學(xué)出版社,2000.

[5]張文學(xué).基于XML數(shù)據(jù)島的客戶端數(shù)據(jù)操作的實(shí)現(xiàn)[J].洛陽(yáng)大學(xué)學(xué)報(bào),2005,20(2):57-60.

[6]郝森,朱戰(zhàn)立.對(duì)XML文檔結(jié)構(gòu)樹(shù)形表示的研究與實(shí)現(xiàn)[J].現(xiàn)代電子技術(shù),2007,30(18):83-84,90.

[7]馮少榮.基于XML的Web數(shù)據(jù)集成技術(shù)的研究[J].計(jì)算機(jī)應(yīng)用與軟件,2005,22(7):39-41.

[8]徐雪霖.Web數(shù)據(jù)庫(kù)訪問(wèn)技術(shù)探析[J].微計(jì)算機(jī)信息,2004(2):110-112.

[9]Xu Yu,Luo Daofeng,Meng Xiaofeng,et al.Dynamically Updating XML Data:Numbering Scheme Revisited[J].World Wide Web,2005,8(1):5-26.

[10]萬(wàn)常選.基于XML的Web數(shù)據(jù)庫(kù)技術(shù)[J].計(jì)算機(jī)與現(xiàn)代化,2002(4):49-53,57.

作者簡(jiǎn)介

張文學(xué) 男,1968年出生,碩士,副教授。從事數(shù)據(jù)庫(kù)和網(wǎng)絡(luò)技術(shù)教學(xué)和研究。

猜你喜歡
動(dòng)態(tài)生成數(shù)據(jù)庫(kù)
數(shù)據(jù)庫(kù)
數(shù)據(jù)庫(kù)
高效課堂下小學(xué)數(shù)學(xué)課堂動(dòng)態(tài)生成的研究
基于新課程理念下的語(yǔ)文教學(xué)策略探微
動(dòng)態(tài)生成,彰顯數(shù)學(xué)課堂活力
品德課堂“動(dòng)態(tài)生成”資源的運(yùn)用策略
問(wèn)渠那得清如許,為有源頭活水來(lái)
數(shù)據(jù)庫(kù)
數(shù)據(jù)庫(kù)
數(shù)據(jù)庫(kù)
主站蜘蛛池模板: 久久久精品国产亚洲AV日韩| 免费a在线观看播放| 97青青青国产在线播放| 国产精品亚洲αv天堂无码| 一区二区无码在线视频| 国产特级毛片| 99免费在线观看视频| 亚洲免费毛片| 一级在线毛片| 国产欧美网站| 国产H片无码不卡在线视频| 日本欧美成人免费| 国产一区二区三区日韩精品| 成人在线观看一区| 亚洲成aⅴ人在线观看| 日本三级黄在线观看| 国产乱人伦精品一区二区| 日韩欧美国产成人| 国产菊爆视频在线观看| 亚洲天堂色色人体| 韩日免费小视频| 99热这里都是国产精品| 国产Av无码精品色午夜| 超级碰免费视频91| 亚洲最黄视频| 久草视频精品| 国产亚洲一区二区三区在线| 欧美一级在线| A级毛片无码久久精品免费| 国产精品林美惠子在线观看| 日本福利视频网站| 国产在线八区| 国产在线自乱拍播放| 亚洲天堂精品视频| 免费在线观看av| 国产精品吹潮在线观看中文| 无码福利日韩神码福利片| 四虎成人精品| 在线日韩日本国产亚洲| 91美女视频在线观看| 呦女亚洲一区精品| 国产精品福利在线观看无码卡| 国产熟睡乱子伦视频网站| 国内精品小视频在线| 国产成人做受免费视频| 亚洲精品桃花岛av在线| 亚洲区第一页| 夜夜爽免费视频| 在线观看亚洲人成网站| 欧美区国产区| 日韩大片免费观看视频播放| 久久精品国产91久久综合麻豆自制| 精品综合久久久久久97超人| 国产一线在线| 欧洲极品无码一区二区三区| 波多野结衣久久高清免费| 国产精品冒白浆免费视频| 91香蕉视频下载网站| 亚洲精品无码在线播放网站| 国产网站黄| 日韩无码视频播放| 在线毛片网站| 免费观看成人久久网免费观看| 又黄又爽视频好爽视频| 一本色道久久88综合日韩精品| 97精品久久久大香线焦| 国产中文一区a级毛片视频| 日韩午夜片| 国产亚洲视频在线观看| 一级毛片免费的| 国产福利不卡视频| 欧美日韩国产综合视频在线观看| 国产精品尹人在线观看| 久久久成年黄色视频| 亚洲免费播放| 毛片最新网址| 2020最新国产精品视频| 久久性妇女精品免费| 成人无码一区二区三区视频在线观看| 久久女人网| 欧美伦理一区| 不卡网亚洲无码|