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| 狠狠干综合| 色妞www精品视频一级下载| 国产成人乱无码视频| 素人激情视频福利| 婷婷色一二三区波多野衣| 91福利免费视频| 国产综合网站| 一级毛片无毒不卡直接观看| 亚洲妓女综合网995久久| 青青草原国产av福利网站| 久草视频中文| 久久男人视频| 蜜臀AV在线播放| 亚洲国产精品日韩专区AV| 美美女高清毛片视频免费观看| 国产亚洲成AⅤ人片在线观看| 国产资源免费观看| 久久精品国产在热久久2019| 亚洲无码日韩一区| 夜精品a一区二区三区| 在线播放精品一区二区啪视频| 久久特级毛片| 久热精品免费| 久久9966精品国产免费| 国产精品视频系列专区| 亚洲欧美日韩中文字幕在线| 国产网站黄| 99久久精品国产综合婷婷| 欧美中文字幕在线二区| 国产午夜人做人免费视频中文| 国产av色站网站| 国产综合精品一区二区| 欧美a在线视频| 国产一区二区三区在线观看视频 | 99热这里只有免费国产精品| 亚洲国产av无码综合原创国产| 丁香五月亚洲综合在线| 国产精品三级专区| 国产精品永久久久久| 午夜福利网址| 欧美国产视频| 五月天综合网亚洲综合天堂网| 欧美天天干| 91久久国产成人免费观看| 日本不卡在线| 日韩无码黄色| 91成人在线免费视频| 青草娱乐极品免费视频| 国产精品人人做人人爽人人添| 久久天天躁夜夜躁狠狠| 国产激情在线视频| 久久精品国产精品一区二区| 亚洲欧美另类色图| 国产精品自在自线免费观看| 亚洲国产天堂久久综合226114 | 亚洲国产日韩在线观看| 第一区免费在线观看| 色噜噜狠狠色综合网图区| 亚洲成aⅴ人片在线影院八| 国产成人高精品免费视频| 中文字幕亚洲另类天堂| 91伊人国产| 狂欢视频在线观看不卡| 亚洲欧洲自拍拍偷午夜色无码| 久久这里只精品热免费99| 无码日韩精品91超碰| 激情亚洲天堂| 成人伊人色一区二区三区| 国产成人综合久久精品尤物| 青青操视频在线| 欧美精品亚洲精品日韩专区| 国产在线观看第二页| 欧美精品不卡| аⅴ资源中文在线天堂| 久久五月视频| 精品91视频| аⅴ资源中文在线天堂| 精品精品国产高清A毛片| YW尤物AV无码国产在线观看| 高清视频一区|