`
小果果
  • 浏览: 117154 次
  • 性别: Icon_minigender_2
  • 来自: 广州
社区版块
存档分类
最新评论

XML学习手册(5)XML实例解析

    博客分类:
  • xml
阅读更多
第五章:XML实例解析

提纲:

一:实例效果

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

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

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

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

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

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

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

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

第一步:定义新标识。
根据实际的CD数据,首先新建一个名为<CD>的标识;其次建立它相关的数据标识,分别是:CD名称<Title>,演唱者<Artist>,出版年代<Year>,国家<Country>,发行公司<Company>和价格<Price>;最后还要建立一个名为目录<CATALOG>的标识。为什么要再建立一个<CATALOG>标识呢?因为在XML文档中规定,必须且只能有一个根元素(标识),我们有多个CD数据,这些数据是并列的关系,所以需要为这些并列的元素建立一个根元素。
以上元素的定义和关系都完全符合XML标准,不需要特别的DTD文件来定义,所以可以省略DTD定义。如果我们想使用DTD来定义,以上过程可以表示为:

<!ELEMENT CATALOG (CD)*>
<!ELEMENT CD (Title,Artist,Year,Country,Company,Price)>
<!ELEMENT Title (#PCDATA)>
<!ELEMENT Artist (#PCDATA)>
<!ELEMENT Year (#PCDATA)>
<!ELEMENT Country (#PCDATA)>
<!ELEMENT Company (#PCDATA)>
<!ELEMENT Price (#PCDATA)>

这段代码表示:元素CATALOG包含多个CD子元素,而子元素CD又依次包含Title, Artist, Year, Country, Company, Price 六个子元素,它们的内容都定义为文本(字符,数字,文本)。(注:具体的语法说明可以看上一章关于DTD的介绍)

第二步:建立XML文档。

<?xml version="1.0"?>
<CATALOG>
<CD>
<TITLE>Empire Burlesque</TITLE>
<ARTIST>Bob Dylan</ARTIST>
<COUNTRY>USA</COUNTRY>
<COMPANY>Columbia</COMPANY>
<PRICE>10.90</PRICE>
<YEAR>1985</YEAR>
</CD>
<CD>
<TITLE>Hide your heart</TITLE>
<ARTIST>Bonnie Tylor</ARTIST>
<COUNTRY>UK</COUNTRY>
<COMPANY>CBS Records</COMPANY>
<PRICE>9.90</PRICE>
<YEAR>1988</YEAR>
</CD>
<CD>
<TITLE>Greatest Hits</TITLE>
<ARTIST>Dolly Parton</ARTIST>
<COUNTRY>USA</COUNTRY>
<COMPANY>RCA</COMPANY>
<PRICE>9.90</PRICE>
<YEAR>1982</YEAR>
</CD>
<CD>
<TITLE>Still got the blues</TITLE>
<ARTIST>Gary More</ARTIST>
<COUNTRY>UK</COUNTRY>
<COMPANY>Virgin redords</COMPANY>
<PRICE>10.20</PRICE>
<YEAR>1990</YEAR>
</CD>
<CD>
<TITLE>Eros</TITLE>
<ARTIST>Eros Ramazzotti</ARTIST>
<COUNTRY>EU</COUNTRY>
<COMPANY>BMG</COMPANY>
<PRICE>9.90</PRICE>
<YEAR>1997</YEAR>
</CD>
</CATALOG>

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

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

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

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

<script for="window" event="onload">
xmldso.XMLDocument.load("cd.xml");
</script>

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

<table>
<tr><td>Title:</td><td><SPAN ID="title" DATASRC=#xmldso DATAFLD="TITLE"></SPAN></td></tr>
<tr><td>Artist:</td><td><SPAN ID="artist" DATASRC=#xmldso DATAFLD="ARTIST"></SPAN></td></tr>
<tr><td>Year:</td><td><SPAN ID="year" DATASRC=#xmldso DATAFLD="YEAR"></SPAN></td></tr>
<tr><td>Country:</td><td><SPAN ID="country" DATASRC=#xmldso DATAFLD="COUNTRY"></SPAN></td></tr>
<tr><td>Company:</td><td><SPAN ID="company" DATASRC=#xmldso DATAFLD="COMPANY"></SPAN></td></tr>
<tr><td>Price:</td><td><SPAN ID="price" DATASRC=#xmldso DATAFLD="PRICE"></SPAN></td></tr>
</table>

3.动作操作。
最后,为数据提供浏览按钮:
<INPUT TYPE=button VALUE="上一张CD" ONCLICK="moveprevious()">
<INPUT TYPE=button VALUE="下一张CD" ONCLICK="movenext()">

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

<script language="JavaScript">
function movenext()
{
if (xmldso.recordset.absoluteposition < xmldso.recordset.recordcount)
{
xmldso.recordset.movenext();
}
}
function moveprevious()
{
if (xmldso.recordset.absoluteposition > 1)
{
xmldso.recordset.moveprevious();
}
}
</script>

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

<html>
<head>

<script for="window" event="onload">
xmldso.XMLDocument.load("cd.xml");
</script>

<script language="JavaScript">
function movenext()
{
if (xmldso.recordset.absoluteposition < xmldso.recordset.recordcount)
{
xmldso.recordset.movenext();
}
}
function moveprevious()
{
if (xmldso.recordset.absoluteposition > 1)
{
xmldso.recordset.moveprevious();
}
}
</script>

<TITLE>CD Navigate</TITLE>
</head>

<body>
<p>
<object WIDTH="0" HEIGHT="0"
CLASSID="clsid:550dda30-0541-11d2-9ca9-0060b0ec3d39" ID="xmldso">
</object>

<table>
<tr><td>Title:</td><td><SPAN ID="title" DATASRC=#xmldso DATAFLD="TITLE"></SPAN></td></tr>
<tr><td>Artist:</td><td><SPAN ID="artist" DATASRC=#xmldso DATAFLD="ARTIST"></SPAN></td></tr>
<tr><td>Year:</td><td><SPAN ID="year" DATASRC=#xmldso DATAFLD="YEAR"></SPAN></td></tr>
<tr><td>Country:</td><td><SPAN ID="country" DATASRC=#xmldso DATAFLD="COUNTRY"></SPAN></td></tr>
<tr><td>Company:</td><td><SPAN ID="company" DATASRC=#xmldso DATAFLD="COMPANY"></SPAN></td></tr>
<tr><td>Price:</td><td><SPAN ID="price" DATASRC=#xmldso DATAFLD="PRICE"></SPAN></td></tr>
</table>

<p>
<INPUT TYPE=button VALUE="上一张CD" ONCLICK="moveprevious()">
<INPUT TYPE=button VALUE="下一张CD" ONCLICK="movenext()">
</p>

</body>
</html>

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


分享到:
评论

相关推荐

    XML轻松学习手册--XML实例解析之二

    文中介绍了建立相应的HTML文件的骤。

    XML轻松学习手册--XML实例解析之一

    文中介绍了一个简单的CD唱片数据检索功能。通过点击\\\"上一张\\\",\\\"下一张\\\"可以看到单张CD的有关信息。它完全是用XML来实现的。文中分析了它的制作过程。

    XML轻松学习手册--XML肯定是未来的发展趋势,不论是网页设计师还是网络程序员,都应该及时学习和了解

    • 第五章:XML实例解释 • 一.定义新标识 • 二.建立XML文档 • 三.建立相应的HTML文件 • 第六章:XML相关资源 五. XML和HTML的区别 XML和HTML都来自于SGML,它们都含有标记,有着相似的语法,HTML和XML的最大...

    xml轻松入门学习手册

    word文档,包括以下一些内容: XML快速入门,XML概念,XML的术语,XML语法,XML实例解析。

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part2

    3.2.4 用dom解析xml文档实例 53 3.3 使用sax解析xml文档 65 3.3.1 sax的处理机制 66 3.3.2 配置sax解析器 69 3.3.3 sax解析器工厂 70 3.3.4 sax的异常类 71 3.3.5 errorhandler接口 73 3.3.6 使用sax解析xml...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part3

    3.2.4 用dom解析xml文档实例 53 3.3 使用sax解析xml文档 65 3.3.1 sax的处理机制 66 3.3.2 配置sax解析器 69 3.3.3 sax解析器工厂 70 3.3.4 sax的异常类 71 3.3.5 errorhandler接口 73 3.3.6 使用sax解析xml...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part5

    3.2.4 用dom解析xml文档实例 53 3.3 使用sax解析xml文档 65 3.3.1 sax的处理机制 66 3.3.2 配置sax解析器 69 3.3.3 sax解析器工厂 70 3.3.4 sax的异常类 71 3.3.5 errorhandler接口 73 3.3.6 使用sax解析xml...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part4

    3.2.4 用dom解析xml文档实例 53 3.3 使用sax解析xml文档 65 3.3.1 sax的处理机制 66 3.3.2 配置sax解析器 69 3.3.3 sax解析器工厂 70 3.3.4 sax的异常类 71 3.3.5 errorhandler接口 73 3.3.6 使用sax解析xml...

    XML官方指南中文版(CHM) 下载

    XML 指南 ...你将学习如何在你的应用软件中使用XML。下面就开始学习XML吧。 XML 实例 ...通过例子来学习!...----------------------------------------------------------------------...XML实例 XML 例子 大量的XML例子!!

    XML宝典(第二版)

    本书提供了大量的XML应用实例,随书所带的光盘上涵盖了书中的所有实例以及与XML相关的浏览器和解析器,这些都为读者学习XML提供了极大的帮助。本书既可以作为学习XML的入门教程,也可以是软件开发人员、网页制作...

    Ajax完全自学手册(源代码).rar

    Ajax完全自学手册PPT和源代码分来上传了,需要PPT的请自己在我的资源里面查找。 1.本书1~22章所附代码的运行环境 操作系统:Windows 2003、Windows XP Professional,或者Windows 2000 开发环境:Microsoft Visual ...

    西门子GSDML文件用户手册.pdf

    讲述了西门子GSDML文件的组织架构及其子架构,每个子架构如何使用等等,方便初学者快速编写支持PROFINET网络的第三方GSDML文件。

    O r a c l e与X M L

    另一类是有兴趣学习怎样在Oracle产品中使用XML的读者。书中许多例子使用了Java,通过使用组件的命令行接口和简单的可以编辑XML、XSL、XSQL文件的文本编辑器,就可以试验XML的大量功能。怎样使用本书不必按顺序阅读...

    Web Services 教程

    XML实例文档 64 选择和过滤元素 65 XQuery 函数 68 XQuery 函数 68 XQuery 内建函数 68 函数调用实例 68 XQuery 用户定义函数 69 您已经学习了 XQuery,下一步呢? 70 XQuery 概要 70 您已经学习了 XQuery,接下来该...

    Ajax完全自学手册(PPT)

    第5章 JavaScript中的继承 Test4OO.htm 什么是对象 Test4OO.htm 对象分类 TestStatic.htm 作用域、静态作用域、this关键字 Test4Factory.htm 工厂方式 test4Constract.htm 构造函数 Test4Fixed.htm ...

    php5手册.chm

    "counter" 扩展 - 一个连续的实例 PHP 5 构建系统 扩展的结构 PDO 驱动 扩展相关 FAQ Zend Engine 2 API 参考 Zend Engine 2 操作码列表 Zend Engine 1 FAQ — FAQ:常见问题 一般信息 邮件列表 获取 PHP 数据库问题...

    php5中文手册20111124

    "counter" 扩展 - 一个连续的实例 PHP 5 构建系统 扩展的结构 内存管理 变量的使用 函数的编写 类和对象的使用 资源的使用 INI 设置的使用 流的使用 PDO 驱动 扩展相关 FAQ Zend Engine 2 API 参考 Zend Engine 2 ...

    php官方中文帮助手册

    ■"counter" 扩展 - 一个连续的实例 ■PHP 5 构建系统 ■扩展的结构 ■内存管理 ■变量的使用 ■函数的编写 ■类和对象的使用 ■资源的使用 ■INI 设置的使用 ■流的使用 ■PDO 驱动 ■扩展相关 FAQ ■Zend Engine 2...

    PHP官方正版中文帮助手册

     "counter" 扩展 - 一个连续的实例  PHP 5 构建系统  扩展的结构  内存管理  变量的使用  函数的编写  类和对象的使用  资源的使用  INI 设置的使用  流的使用  PDO 驱动  扩展相关 FAQ  Zend Engine 2...

Global site tag (gtag.js) - Google Analytics