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ù)
主站蜘蛛池模板: 亚洲天堂2014| 亚洲成人精品在线| 日本成人不卡视频| 91精品视频在线播放| 国产凹凸一区在线观看视频| 成人福利在线视频免费观看| 欧类av怡春院| 国产精品偷伦在线观看| 日本高清免费不卡视频| 欧洲亚洲一区| 2021国产精品自拍| 国产亚洲精品在天天在线麻豆| 91系列在线观看| 精品国产一区二区三区在线观看| 国产欧美中文字幕| 五月天福利视频| 久久亚洲国产一区二区| 尤物特级无码毛片免费| 中文字幕无码av专区久久| 91在线一9|永久视频在线| 综合亚洲色图| 青青草91视频| 国产精品自在拍首页视频8| 99ri国产在线| 91热爆在线| 免费精品一区二区h| 亚洲精品国产乱码不卡| 国产在线观看99| 日本高清视频在线www色| 18禁不卡免费网站| 97视频免费在线观看| 一级全免费视频播放| 国产福利观看| 亚洲伊人久久精品影院| 国产乱子伦视频三区| 波多野结衣第一页| 亚亚洲乱码一二三四区| 国产高潮流白浆视频| 亚洲视频一区在线| 色悠久久久| 国产91蝌蚪窝| 一本一本大道香蕉久在线播放| h网址在线观看| 精品91视频| 尤物国产在线| 国产精品久线在线观看| 欧美无遮挡国产欧美另类| 国产尤物jk自慰制服喷水| 久久女人网| 少妇极品熟妇人妻专区视频| 亚洲午夜福利精品无码| 无码专区在线观看| 成人精品午夜福利在线播放| 亚洲综合在线网| 91成人试看福利体验区| 成人另类稀缺在线观看| 欧美精品亚洲精品日韩专| 欧美乱妇高清无乱码免费| 人人澡人人爽欧美一区| 久久99久久无码毛片一区二区| 国产亚洲精久久久久久无码AV| 久久久久无码国产精品不卡| 91人妻日韩人妻无码专区精品| 国产成人亚洲综合a∨婷婷| 成人免费黄色小视频| 国产黄色视频综合| 日韩在线欧美在线| 久久天天躁狠狠躁夜夜2020一| 国产乱人免费视频| 91视频青青草| 在线一级毛片| 91在线播放国产| 国产精品99在线观看| 野花国产精品入口| 亚洲天堂久久| 国产欧美日韩在线一区| 一区二区三区国产精品视频| 亚洲日本精品一区二区| 久久91精品牛牛| 亚洲欧美日韩成人高清在线一区| 亚洲午夜片| a级高清毛片|