Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2186179
  • 博文数量: 523
  • 博客积分: 11908
  • 博客等级: 上将
  • 技术积分: 5475
  • 用 户 组: 普通用户
  • 注册时间: 2009-04-03 15:50
文章分类

全部博文(523)

文章存档

2019年(3)

2013年(4)

2012年(71)

2011年(78)

2010年(57)

2009年(310)

分类: 数据库开发技术

2009-09-14 17:26:22

第五章:XML实例解析 

提纲: 

一:实例效果 

二:实例解析 
  1.定义新标识。
  2.建立XML文档。
  3.建立相应的HTML文件。 

XML在不同领域有着广泛的应用,比如在科技领域的MathML,无线通信应用的WML,在网络图象方面的SVG等等,我们这里侧重讨论XML在web上的应用。XML在web上应用主要是利用其强大的数据操作能力。一般用XML配合JavaScriptASP服务器端程序,可以实现网络上几乎所有的应用需求。 

考虑讲解方便,我们在下面介绍一个简单的实例,不包含服务器端程序。目的在于让您对XML的数据操作能力有一个感性的认识。 

好,我们首先[ 点击这里 ]来看实例的效果。(请用IE5.0以上版本浏览器打开) 

这是一个简单的CD唱片数据检索功能。你通过点击"上一张","下一张"可以看到单张CD的有关信息。这样的效果我们原来用两种方法可以实现: 

1.利用DHTML,将数据隐藏在不同的层中,通过鼠标事件依次显示; 

2.利用后台程序(如ASP,CGI,PHP,JSP等),调用服务器端的数据。 

但是在这个实例中,我们打开页面原代码可以看到,其中没有用DHTML的DIV,也没有表单的action,它完全是用XML来实现的。下面我们来分析它的制作过程:

第一步:定义新标识。
根据实际的CD数据,首先新建一个名为的标识;其次建立它相关的数据标识,分别是:CD名 称,演唱者<Artist>,出版年代<Year>,国家<Country>,发行公 司<Company>和价格<Price>;最后还要建立一个名为目录<CATALOG>的标识。为什么要再建立一 个<CATALOG>标识呢?因为在<a href="http://www.blue1000.com/bkhtml/c21/" title="XML教程">XML</a>文档中规定,必须且只能有一个根元素(标识),我们有多个CD数据,这些数据是并列的关系,所以需要为这些并列的元素建立一个根元素。<br>以上元素的定义和关系都完全符合<a href="http://www.blue1000.com/bkhtml/c21/" title="XML教程">XML</a>标准,不需要特别的DTD文件来定义,所以可以省略DTD定义。如果我们想使用DTD来定义,以上过程可以表示为:</p> <p><!ELEMENT CATALOG (CD)*><br><!ELEMENT CD (Title,Artist,Year,Country,Company,Price)><br><!ELEMENT Title (#PCDATA)><br><!ELEMENT Artist (#PCDATA)><br><!ELEMENT Year (#PCDATA)><br><!ELEMENT Country (#PCDATA)><br><!ELEMENT Company (#PCDATA)><br><!ELEMENT Price (#PCDATA)></p> <p>这段代码表示:元素CATALOG包含多个CD子元素,而子元素CD又依次包含 Title, Artist, Year, Country, Company, Price 六个子元素,它们的内容都定义为文本(字符,数字,文 本)。(注:具体的语法说明可以看上一章关于DTD的介绍) </p> <p>第二步:建立<a href="http://www.blue1000.com/bkhtml/c21/" title="XML教程">XML</a>文档。</p> <p><?<a href="http://www.blue1000.com/bkhtml/c21/" title="XML教程">XML</a> version="1.0"?><br><CATALOG><br><CD><br><TITLE>Empire Burlesque
Bob Dylan
USA
Columbia
10.90
1985


Hide your heart
Bonnie Tylor
UK
CBS Records
9.90
1988


Greatest Hits
Dolly Parton
USA
RCA
9.90
1982


Still got the blues
Gary More
UK
Virgin redords
10.20
1990


Eros
Eros Ramazzotti
EU
BMG
9.90
1997

 

上面代码首先用XML version="1.0"?>声明语句表明这是一个XML文档,它的格式遵守XML 1.0标准规范。然后是文档内容,结构树非常清晰:


...... 


...... 


一共定义了5组数据。我们将上面的代码存为cd.XML文件,以备调用。 


第三步:建立相应的HTML文件。
1.导入XML数据。
我们知道,目前流行的浏览器中,暂时只有微软的IE5.0以上版本浏览器支持XML。IE是通过在HTML中的object物件来支持插入XML,并通过js的XMLDocument.load()方法来导入数据。我们看代码: CLASSID="clsid:550dda30-0541-11d2-9ca9-0060b0ec3d39" ID="XMLdso">

定义一个object,ID名为XMLdso。然后在head区用js引入xml数据:


XMLdso.XMLDocument.load("cd.xml");

2.捆绑数据。
然后将用标识来将XML数据绑定在表格中。其中ID,DATASRC,DTATFLD都是的属性。代码如下:








Title:XMLdso DATAFLD="TITLE">
Artist:XMLdso DATAFLD="ARTIST">
Year:XMLdso DATAFLD="YEAR">
Country:XMLdso DATAFLD="COUNTRY">
Company:XMLdso DATAFLD="COMPANY">
Price:XMLdso DATAFLD="PRICE">

3.动作操作。
最后,为数据提供浏览按钮:
value="上一张CD" onCLICK="moveprevious()">
value="下一张CD" onCLICK="movenext()">

并利用js来完成两个鼠标点击功能:movenext()和moveprevious()。在head区加入如下代码:

JavaScript">
function movenext()
{
if (XMLdso.recordset.absoluteposition < xmldso.recordset.recordcount)
{
XMLdso.recordset.movenext();
}
}
function moveprevious()
{
if (XMLdso.recordset.absoluteposition > 1)
{
XMLdso.recordset.moveprevious();
}
}

好,我们先看HTML文件的全部原代码:

<HTML>


XMLdso.XMLDocument.load("cd.xml");

JavaScript">
function movenext()
{
if (XMLdso.recordset.absoluteposition < xmldso.recordset.recordcount)
{
XMLdso.recordset.movenext();
}
}
function moveprevious()
{
if (XMLdso.recordset.absoluteposition > 1)
{
XMLdso.recordset.moveprevious();
}
}

CD Navigate



CLASSID="clsid:550dda30-0541-11d2-9ca9-0060b0ec3d39" ID="XMLdso">








Title:XMLdso DATAFLD="TITLE">
Artist:XMLdso DATAFLD="ARTIST">
Year:XMLdso DATAFLD="YEAR">
Country:XMLdso DATAFLD="COUNTRY">
Company:XMLdso DATAFLD="COMPANY">
Price:XMLdso DATAFLD="PRICE">


value="上一张CD" onCLICK="moveprevious()">
value="下一张CD" onCLICK="movenext()">


HTML>

将以上代码存为cd.htm文件,于第二步的cd.XML文件放在一起。打开cd.htm文件,你就看见和上面实例一样的效果了。

好,到今天为止,我们已经学习了关于XML的 不少知识,我们来总结一下前面五个章节,分别是XML快速入门,XML的概念原理,XML的术语,XML的语法和本章的实例解析。到这里,教程部分就结束 了。在写作过程中,阿捷尽最大努力将有关XML概念讲得通俗易懂,尽量把自己的理解告诉给大家,但因为本人学习XML时间也不长,对整个XML的技术把握 还不够系统和深入,所以难免有疏漏的地方,请大家指正和谅解,谢谢!
阅读(847) | 评论(0) | 转发(0) |
0

上一篇:XML语法

下一篇:socket与TCP/IP

给主人留下些什么吧!~~
评论热议
请登录后评论。

登录 注册