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
版权声明:本文标题:用DOS在HTML主页中浏览XML数据 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://roclinux.cn/b/1713472198a636352.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论