admin 管理员组文章数量: 1184232
2024年4月19日发(作者:公共变量的作用域是)
维普资讯
~
何莹莹
【华东交通火学,南昌330013)
(East China Jiaotong Unl versify。Nanchang 3300l3】
摘要:本文结音_网上教学ee的应用实践,研究了在客户端浏览器中利用Javascript脚本访问XML文档井实现数据的关
联显示处理的典型方法.如此可提高课件的动冬交互访问效率 课件可用干备粪Web服务器平台.也可直接在光盘上浏览诫
件
关键词:)(ML Oavascrip ̄:DOM;数据动态关联显示:浏览器
中田分类号:TP311 文献标识码:A 文章编号:l671—4792一(2006)I一0094—03
Abstract'.1ncocpora ̄e wjth the design of network coursew ̄re Intm acti V。process・the paper introdu e。th
methods of using Javascrlpt auesslng the XML documenL to{mplement the data relati on di splaY in browser・The
ef ̄icJent of dynami c process is improved 8n 1 course ̄are can be used ith any web server.al so Carl be directly
accessed jn di sk
Kevword:xM1 ;Javascript:Document Object Model;Data I.elat ̄on display:B1’owser
<student>
0引育
XMI 作为一种很好的数据丧永方式,枉应用系统集成设
计中受到J“泛采用。为r提高心用系统的娥率将数据带到洲
览器客户端.利用脚本语育实现动恋交互处理,在很大程度
<usern8llIe>杨璞(/username>
<userid>20010210040101‘{userid>
<logintimes>25</logimtImes>
</student>
‘student
卜可以提高整个应用的效率 该应用模式可节省网络带宽.
避免 服务器的频繁变瓦,I叫时加快虚J_f】响成速度 在笔者
研制的网络教学支撑平台中.为了形成一个新版的能脱离数
据库环境使用的网络课件,同l对叉要保持原谋件中数据访1i_]j
的动态变化特点,采用j.-一种巢十XML的动态交互方察。首
先通过转换程序将数据库数据转化为× L文档,然后通过
;avasc!,ipt访问x札文档的方式来实现数据的动态访问 采
用这・技术实现的课件其有蜓广泛的应用{叫_.可将谦件部鬻
在任何类型的Web暇务器上,也町以文件游州方式直接浏惋
光盘l 的课件 在客户浏览器端通过对 文档的动态检索
.
‘fstudent>
</cIBSS ̄
‘class name=’计算机2001—2’>
</c1as9
ciassee>
结台DHT 技术实现动态交=】j==显示 本文拟就应埔蕊丽问的
数据关联显示处理的若干技术进行总结。
1 同一页面中数据的关联丑示
以班级学生倩息]匿询为例.xML文件c1assstudont. mI
小包括备班学生的相关倩息
c1asses>
在如图…所示的页面中,点击菜班将显示该班的所有学
生的相关债息,也就是页面F半部分学生倌息的显示取决于
1词一页耐中上半部分所选择的班级,想查哪个班的学生信息
只要点击相应班级即可
r, j
】 :
i*一
+
_
-
-
.
:
i
j t
一— ’一
mclBs8 name=’计算机2001—1’)
维普资讯
图一班级与学生信息的关联显示
为了达到上述要求,需要解决如下问题:
首先要检索出所有的班级(1)XML数据的检索
,
在用户选择了班级后要进一
步找出该班学生的信息。 ‘
(2)数据的显示处理
无论是班级的显示还是学生信息的显示均要转化为耵儿
标记来实现。因此,要将数据拼接为特定的格式,然后将其
显示在指定的位置。
(3)事件处理
与用户的交互将通过事件触发来实现。因此,在内容显
示中要设定事件调用,并编写事件处理代码。
1.1 XML数据的访问
x、iL文档以数据岛的形式引入页面中,脚本语言采用广
泛支持的Javascript编程。在Javascript代码中通过XML文
档对象模型访问XML数据。XML文档在结构上为树型层次结
构,利用x、iL文档对象模型提供的各种搜索处理方法可方便
检索到结点信息 例jc 通过结点对象的childNodes属性可
获取所有子结点,通过getElementsByTagName方法可查找带
有某标记的结点集,通过selectXodes和selectSingleNode
来选取符合Xpath限制设定的结点。在获取结点的基础上,
通过元素结点的text属性可得到其对应的文本数据,通过
getAttribute方法可得到结点的某个属性值。
1.2将结果数据拼接为要显示的串
班级的显示处理通过文档的onload事件触发执行,在
body标记中我们设定其调用dispclass()方法。在该方法
中通过J ,ascr iPt程序访问XML文档可获取所有班级
(class)结点的classname屙陛,然后拼接成一个HTML表格
形式的串(str),每行显示3个班级。
1.3利用DHT ̄L技术显示结果
为了实现内容的动态显示,需要利用DHTML技术。在页
面中通过<div>标记定义两个层bJ和student,分别用来显
示班级列表和学生信息。以下代码可将拼接后的含所有班级
的HTML字符串显示在bJ处。
bj.innerHTML=str:
I.4为关联显示设置事件处理
为了让班级名能进行点击,将班级定义为超链显示,同
时在该超链标记上通过onclick属性设置单击事件对应的函
数dispStudent(),它将根据班级名去访问XML文档,得到
本班的所有学生信息,经过拼接处理后显示在标识为stu--
dent的层处,从而实现班级与学生信息在同一页面中的动态
关联显示。以下为关键代码:
<XML spc=”classstudent.xm1..ID=”xml d sol”
async=”false”></XML>
<script type=”text/Javascript”>
/““dispClass函数:显示所有班级““/
function dispClass(){
root=xmldso1.documentElement://根结点
m=root.childNodes.1ength; //求班数
Str=”<table width=90%>”;
x--
f
root.chi
or(i=I;i
l
-
dNode
硼;i++){/
s.i
/
tem(i—I).getAttr
处理所有班
i bu te
堇
r
(”elassname”); 数
str=str+”<td><A href onelick=check( +_\十t.’) 据
style=’cursor:hand’ -bX-b” /f^ td>
在
制
if(i%3 ̄0) str=str+” tr ”://每隔3个班换行 览
)
str=str+”
</table>”;
强
的 师
) 动
bj.innerHTML=str; //在层bJ中显示所有班级 态
) 关
/””dispStudent函数:显示班级学生““/ 联
functJon dispStudent(mybd){
垦
q,X
xml dso2=xml d so1.selectSi ngl eNode(”//e 1 ass 处
[@elassname=…+mybLj+…]'t);//找该班级 哩
str=””;
研
究
m=xmldso2.childNodes.1ength:
l
strm”<b><font color=’#800080 size=4 ̄生名单</
fontx/bxtable width=90%><td>姓名</tdxtd 登录次数
</td>… tr ”;
s=xmldso2.getElementsByTag ame(”student”);
for(i=O;J<S.1ength;i++) { x l=S.j tem(i).
selectSingleSode(”username”).text;X2=s.item(i).
selectSingle de(”userid”).text;
…. str=str+”<t一>”+x1+“</font></td>+….
)
strmstr+”</table>”;
student.innerHTML=s ̄tr;
】 .
</script>
<body onload=”dispClass()”
<font size=…4 color ̄”#000080”><b>选择班级</font></
b>
<div id=”bj”></div><br>
<div id= student”x/div><br>
</body>
2多级页面间数据关联显示处理
如果需要进一步查询每个学生的详细资料,可以在学生
显示处安排查询超链。比如查某学生发表的讨论内容,我们
需要在一个新页面中显示结果,问题是新页面如何得到学生
的标识信息。现在不是像ASP脚本语言那样的动态页面,可
通过request对象获得前一页面提交的参数。笔者采用的办
法是将学生标识记录在cookie变量中。对Cookie的读写访
问可用Javascript实现。通过对超链接的点击触发执行
setCookie()函数并保存学生标识到Cookie变量st中。具
体代码如下,其中,x1和x4分别是学生标识和讨论发表数。
・
1 1
维普资讯
<a href= ta1klist.htm
。”十x1十 )>“十x4十“(/a>
/”setCookie函数:设置Cooki e变量值一/
function setCookie(name,val ue)(
document.cookie=name+”=”+escape(value)+”;。
)
在实现讨论内容显示 ̄talklist.htm页面巾,将通过页
面装载事件触发执行dispDiscuss()方法。它通过GetCookie
(“st“)得到学生标识,并根据该标识从讨论区对应的XML文
件中提取该学生发表的帖子并显示出来。具体代码如下:
functi011 dispDiSCHSS0{
stid=GetCookie(”st“);
m y t a 1 k s=x m 1 d S 0 1.S e 1 e c t N 0 d e s(“//t a l k
【UserName=~。+stid十…=l__);//过滤该生发表的帖子
sZr=“<pre>“;
for(i=O;i<myra1ks.1ength;i十十)
(x=mytalks.item(i).chiidNodes.item(1).text;
str=str ̄”标题:<font color--。e723a1。>“+×+
</fontxbr>“;//拼接要显示的内容
)
GetCookie()函数的具体实现比较常见,这里略去。
3同一页面的多帧数据关联显示处理
本教学系统中安排了3帧:①章节导航帧;②内容显示
帧;③功能选择帧。学生可以通过章节导航帧选择当前学习
的知识点,每次变换知识点在内容帧将显示相关教学内容。
同时,学生可以在功能选择帧选择各种练习超链让内容显示
帧显示出对应章节的习题供学生操练,如图二所尔,从而实
现边学边练的目标。本系统中,所有练习、讨论均与知识点
建立关联,也就是调出的习题、讨论内容应该随章节导航选
取的知识点而改变。
图二知识点与练习关联
显然,为了记住知识点,可以采用前面介绍的cookie变
量的方式,但建议尽可能少用cookie,因为Cookie的使用
有一定限制。这里,笔者推荐采用隐含域来记录状态信息。
在浏览章节时通过触发执行的事件代码将知识点存放到页面
的一个隐含域(如me)中,其它帧要得到知识点信息可以通
过访问该帧(nav)的隐含域,然后再根据知识点检索相关
的练习题。其关键代码如下所示:
zsd=parent.frames[__nav”].document.al1.me.value;
xm I d S0 2=Xm 1 d S 0 1.S e 1 e c tN0d O S(”//q u e st{o n
[point=…+zsd ̄…¨l1);
在此基础上我们可以进一步实现试题的显示处理。由于
每次只显示一道试题,因此涉及对检索到的哪道试题进行显
示的问题,以及如何实现试题的解答对错提示和翻动试题的
问题。文献f 1]中给出了利用数据岛记录集对象实现对试题
的翻动显示处理。另一个更高效的办法是利用一个全局变量
记录当前处理的试题序号(cm),然后通过改动该序号实现
试题的翻动访问,通过序号也可得到当前试题的内容和答
案。以下为单选试题解答对错的判定处理检查函数。
functi on check(X) {
m=xmldso2.item(cm).selectsingleNode(“answer“).text;
//获取当前试题答案
{f(x.value==m) {//选项的值与标准答案一致否
alert(“对!“); ・
)else
(
ale:、t(”错 ;
)
)
以_I二代码中,参数x为解答按钮对象 所有选项按钮含
如下形式的HTML代码:
<input type=”radio”name:“ans“value=”A“oncl ick= check
(thi s)”>
4结束语
文章结合网上教学的应用实践介绍厂如何在客户浏览器
端实现XML数据的关联显示处理。利用本文介绍的技术可将
网上积累的课件转化为XML形式进行发布。基于XML的新课
i 鞋 黔 } t々 静 瓢
件仍然可以保留原有课件中的动态交互功能。由于所有内容
显示处理均在客户浏览器上进行,所以,课件可放置到任何
类型的Web服务器上,也可以通过光盘直接浏览访问,具有
很人的实用性。希望本文能对开发基于XML的动态交互应用
有所帮助。
参考文献
[1](美)Kurt Cagle著.周生柄译.X. ̄IL高级开发指南
[M】.北京:电子工业出版社,2001.
作者简介
何莹莹,女,在读工程硕士,主要研究方向:电子商务
版权声明:本文标题:XML数据在浏览器端的动态关联显示处理研究 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/p/1713490940a637321.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论