admin 管理员组

文章数量: 1087139


2024年4月19日发(作者:imgplay字体)

维普资讯

买罨第一 

智慧密集 

用DSO在HTML主页中浏览XML数据 

施明辉孙荣胜 

摘要本文详迷了用DSO绑定XML文档的方法,并用实倒说明了如何利用DSO技术在 

HTNI 主页甲浏览XML数据。 

DSO,绑定,XMI 关键词

引言 

目前,Micro ̄ft、Oracle IBM等著名大公司纷纷推出基于 

个DSO对象,然后用此DSO对象创建r个DOM对象,接 

着用DOM对象加载一个主页外部的XML文件。加载好XML 

文件以后,就可以利用DSO对象将XML文件中的数据绑定到 

HTML元素中了 

为了更容易理解,我们可以把创建并加载好XML文件的 

DSO对象看作是一个关系数据库中的记录集对象 XML文件 

中的属性名和标记名作为字段名,而标记的属性值和内容作为 

字段值 在HTML主页的脚本中,我们可以象操作关系数据库 

中的记录集一样,使用DSO对象来操作XML数据 

xML(exkn k Markup Language,可扩展标i 语言)的解决方 

案 XML以其简单而有效的特性在软件业的许多领域得到迅 

速发展。其中,数据存储是XML应用的一个方面。由于XML 

文档是以简单的文本格式存放数据,不像关系数据库那样以复 

杂格式存放数据,因而能够带来许多好处 比如数据能方便地 

跨平台使用;同样的数据易于用不同的方式显示等。将来,许 

多的数据必将以XML文档格式存储。但是XML文档本身不具 

备显示功能 CSS(Cascading Style Sheets层叠样式表)和XSL 

三、实例 

在一个餐饮项目开发中,我们用DSO技术将包含菜谱信 

息的XML文档绑定到HTML页面中,使得在浏览器中能通过 

按纽非常方便地浏览XML文档中的数据 下面介绍使用方 

法。为了减少篇幅,本文将原项目中的XML文档和HTML页 

面作了简化处理,但足以说明问题。 

首先.编写一个XML文件nllelltl8.xml如下所示: 

<?xml version= 1 0 encoding= gb231 2— > 

<menus> 

(XML Style Language可扩展类型语言)可以用来显示XML数 

据,但都必须编写样式文件。而DSO(Data Source Object数据 

源对象)可以直接将XML数据绑定到HTML主页中。这样.通 

过浏览器来操纵XML数据就显得非常灵活方便了。 

二、DSO介绍 

实际上,1360在XML出现以前就有了。DSO是在HTML 

主页中可以加人结构化数据{包括XML)的一类对象 不同类 

型的数据格式有不同类型的DSO。目前,主要有三种类型的 

DSO:表格式数据控制{Tabular Data Control TDC)、远程数据 

服务{原来的ADC)、XML数据源 这三种类型的DSO分别适 

用于结构化文本文件、SQL数据库中的记录集、XML文件格 

式的数据 起初,只有前阿种类型的DSO。随着XML的出 

现,用于XMI 数据存储的DSO才被开发出来 

DSO可以看作是一个在客户端像数据库一样运行的对象: 

它可以接收按某种方式组织的信息(比如XML文件格式的数 

据).并使用DSO自身的数据库引擎对信息进行操作。与使用 

其它对象一样,我们可以用DSO提供的接口来操作数据。 

IE5提供了用C++编写的DSO。这种DSO不仅支持数据 

(menu id= 1 > 

<菜名 宝粥<,菜名> 

<特色>色泽 吉白 香甜 口<,特色> 

<价格)8元< 价格> 

</q3enU> 

<meniJ id= 2 ) 

<菜名>杏仁豆腐谬< 菜各 

特色 杏仁味香.睬极清雅 ,斗寺色 

(价格>1 0元</价格> 

< menu> 

<menu id= 3 ) 

<菜名埔 由炒虾仁<,菜名 

<特色 色泽洁白.成鲜昧美 ,斗寺色> 

与HTML元素的绑定.同时还创建了一个加载XMI 文件的 

DOM(Document Objcte Model文档对象模式) 因此,我们可 

在HTML主页中这样来使用DSO 首先利用object元素刨建 

<价格>1 2元</价格> 

</meniJ> 

<tTIecru id= 4 > 

c衄叩曲靠蝻 哆 j啦s 11 

维普资讯

实用第一 

应用托 

智慧密集 

表xmldso 

荨芒 耳炒肉r < 苇若 

特 巧丑色NIq.滑嫩脆翼(对寺色> 

( 

<。n1e1U> 

) 4元</ 幅) 

id 

1 

2 

菜名 

八宝粥 

杏仁豆腐汤 

特色 

色泽洁白,香甜可口 

杏仁味香,味极清雅 

价格 

8元 

10元 

</me us> 

然后,在HTML文件中做如下几步: 

1.建立DSO对象 

3 

4 

滑油炒虾仁 

术耳炒肉片 

色泽洁白,成鲜味美 

双色相同,滑馓脆爽 

12元 

14元 

与使用其它对象一样,我们必须创建一个DSO的实例对 

象 我们使用HTML的object元素来完成对象创建: 

<OBJECT CLASS D= cIsid: 550dda30—0541—1 1 d2— 

9ca9—0060bOec3d39 D=xmIdso > 

(/OBJECT> 

既然可以把Y,.NL结构看作表的结构,那么我们也可以在 

ttTML主页中象操作关系数据库中的记录集一样使用DSO对 

象来操作XML数据。例如在HTML主页的脚本中加入以下代 

码: 

funct on fi rst() 

{ 

xmldso recordset movefi rst; 

这样.我们就得到了一个名为 ̄ml&o的DSO对象 注意 

DSO的clsid不能写错 

2加载XML文件 

在HTML主页中,加入以下脚率代码: 

<SCRIPT language: lavascript 

load> 

o r=w Jnoo' ̄.,event.=on— 

】 

函数flnit(】可以将DSO对象xmldso与lllenlls xml中第一 

对<menu>(/menu>. ̄2问的内容绑定,类似于绑定到表中的第 

IoadxmIdata『). 

</SCRlPT> 

条记录 

类似地,在以下脚本代码中,next()函数可以将DSO对象 

xmldso绑定到menas xml的下一对<menu></menu>之间的内 

容,类似于绑定到表中的下一条记录。 

funct;on nextll 

<scqIPT language= javascript ) 

f nction Ioadxmidata c) 

{ 

var doc=xmldso×mIdocu en1.: 

doe loadf menus xml )t 

x,-r,Idso recordset movenext 

f I xmldso recordset eofI 

< SCRlPi 

{ 

选段代码在主页的onload事件中执行Ioadxsddata(1函数: 

]oadxmldataI1函数完成了耐当前目录中的menH8 xm]文件的加 

alertI已到最后一页.单j确是 等转到第一页 

xmldso recordset movef rst; 

载:首先用 v doc xmldso xmldocument 创建了一个DObI 

对象(对象名为duc),然后通过DOM对象doc加载XML文 

件~这里加载的是当前目录中的menll8.xm1 当然、读者也可 

函数中的if语句的作用类似于在当前记录下移到最后一 

条记录之外时,发出提示信息.并将当前记录转移到第一条记 

录。 

以加载指定路径的其它XML文件.只须在load()函数中指定 

路径即可 

3.绑定XML数据 

5源代码及运行结果 

我们将这个实例的源代码dsomenu.htm与大家共享 读者 

可以将此文件与melltls.xml放在同一目录下.然后,在IE5中 

运行dsomena.htm,即可看到结果 

源代码如下: 

<HTML 

<HEAD 

HTMI有一些元素具有绑定属性。拿SPAN和INPL1这两 

个HTML元素为例.我们可以如下使用: 

(span D&TASRC=#xmldso DATAFLD= id ><,span) 

<,nput t'4pe=text DATASRC= xmIdso DATAFLD: 蓁 

若 

这里,两个元素的DATASRC属性都指定了数据源是取名 

为xmldso的DSO对象。Span元素的DATAFLD属性指定了绑 

定的数据是XML标记的属性砒的值。Input元素的DATAFLD 

<T TLE>,XlI竖菜堕(/TITLE> 

<OBJECT 

CLASSID= cls d。550dda30—0541—1 1 d2一gca9—0060b0一 

ec3d39 lD= xmidso) 

(’0BJECT> 

属性指定了绑定的数据是XML标记“菜名”中的内容 对于 

meltH ̄xml这样结构规则而简单的XML文件,DSO把它看作 

娄似于关系数据库中一张表的结构:表的名字是DSO对象 

名.表的宁段名是XML文件中的属性名或标记名,表的字段 

值为标记的属性值和内容,如下表所示: 

4.编写脚本代码 

<SCRIPT language= iavascnpt fo r= iIdow event=onload> 

Ioadxml0a:a I I. 

</SCRlPT> 

( HEAD> 

12 电髓编程技巧与维护.2002.5 

维普资讯

实用第一 

<BODV> 

智慧密集 

<table border=1> 

xmIdso race reset movenext. 

<t r><td aign=cente r> ̄<span 

xm'dso DATAFLD= id )<.,span 

<t r> 

DATASRC= 

i I×~Idso reeo rdset ec I 

<一td><,t r> 

{ 

alertI己 j最后…j早j确暑牟苣 I莆一 

<td) 

(伯bie be rde r=1 id=tabIe1 ) 

XFF'Idso re:9 ̄dset~evef rat. 

(tr)(td>蓁名(/td><td><input type=text 

DATASRC=#xmldso DATAFL0= 菜名 >< )(/tr> 

fun :ion f t I 

<tr><td>斗寺色(/td><td>(inpu:type=text 

( 

xmfoso reco rdset I]]OVe I rst 

DATASRC=#xmldso DATAFL0= 崎色 >(/ a>< tr> 

<tr><td:q')i-格(/td><td><input type:text 

DATASRC=#xmldso datafld= 价格 ></td></t r> 

< table> 

</td> 

< ) 

} 

function Iast f I 

( 

xmIOSO recordset movelast 

<tr> 

</sc ript) 

( d> 

< ab Je bo rde r=1> 

<tr> 

</HTML) 

在1E5中的运行结果如 

<td align=center> input type= button value= 

<一一 name= previous onclick=previous cl>< t0) 

<td align=cente r><input type= button value= 

一一

> name= next oncIick=next(1>< td> 

(/tr> 

(tr> 

<td><input type= but 

name= first oncIIck=first¨></td> 

value=菜谱第一页 

(ta)<input type= button value=苹谱景后一 

页 name= lest onc Jick=last¨></td> 

</tr> 

</tabIe> 

(/td> 

</t r> 

(.."table> 

<script language= javascript ) 

function IoadxmIdata cl 

四、结束语 

相信读者已开始赞叹DSO使用之方便 实际上DSO不仅 

va r dec:xmIdso xmIdocument 

仅用来浏览数据 它的绑定功能是非常强大的, 至于我friar 

以把许多以前必须在服务器端实现的功能放到客户端实现,H 

而减轻服务器端的负荷 在我们餐饮项目开发的B/S结构 

dec Ioad( menus xmI }, 

function p revious l】 

( 

xmldso recordset mOveDrevf0us 

中,我们不仅用DSO在Bower端浏览XML数据,而艮利用 

DSO快捷地实现了在Bowser端修改 添加、删除Server端的 

XML文档,只不过在Se ̄'er端加了些代码 

if fxmldso recordset bet) 

( 

ale rt( 已到第一页,单击 硅定 辱转 最后一页 

xmldso recordset movelast; 

参考文献 

1陆新年、陆新字等译XML揭密^门、应用、精通 

1 

清华大学出版社 

2 http://msdn.microsoft.corn/workshop/author/datablind/ 

datasources.asp 

(收稿粤期:2002年1月22日) 

c。唧mr釉 a|玎 咖雌 &-№ 曲 2 .5 13 


本文标签: 数据 对象 绑定 属性 操作