分享
 
 
 

XML入门 (上)

王朝other·作者佚名  2006-12-16
窄屏简体版  字體: |||超大  

如果你已经有了自己的个人网站或自己的公司网站,或者你已对Web有了相当的了解,那你可能已经注意到了有关一门新的Web技术的疯狂地讨论---XML。在今年早些微软公司发布了IE5(第一个商业化的支持XML标准的浏览器)后,这种疯狂的热情已经变成了大家争相参与的事实。在这里,你也许会问自己一个很重要的问题:

1.什么是XML?

XML是可扩展标志语言(eXtensible Markup Language)的简称.象HTML一样,XML是从所有标志语言的元语---标准通用标志语言SGML(Standard Generalized Markup Language)那里派生出来的.SGML是一种元语言,也可以称为一个定义诸如HTML等标志语言的系统.XML也是一种元语言,一个定义Web应用的SGML的子集.和SGML一样,你也可以用XML来定义种种不同的标志语言满足不同的需要,特别在数据表现方面.

随着Web应用的不断发展,HTML的局限性也越来越明显的体现出来了:

首先,HTML是一种界面技术:它把数据和数据的表现形式混在了一起,这使得分开两者变得相当的困难.

它有一个复杂的标签集:你不能用你自己的特定应用标签来扩展它.

它是"平面型"的:你不能指定一种数据的层次结构来表现数据间诸如包含,重要性等这些细节.

它不能把数据简单地传送给客户端让客户端自行进行进一步的处理.事实上,HTML总是在服务器端产生,客户端只是一个显示机器.

它只能提供一种显示方式给你的数据.如果你想提供不同的显示方式,你就不得不在服务器端重新产生这些数据和完整的HTML页,这样才能在客户端显示出来.如果数据和显示形式是分离的话,那你就可以把数据下载到客户端,之后根据你的需要随意发送有关这些数据的不同的显示方式.

它的可读性不强,无论是人读还是计算机读都是一样.HTML也不是很严谨.有些标签需要匹配开始符和结束符

(象<body>和</body>),但是也有一些只有开始符没有结束符(象<p>和<b>).HTML解释器不得不处理这些有点随机的格式.

HTML和XML是World Wide Web Consortium,简称W3C 制定的标准.W3C的成员意识到随着互联网的飞速发展,必须要找到一种办法将数据和网页的表现方式分离开来----因此XML诞生了.为什么不就用SGML呢?这里我不想列举那些恼人的细节,反正有足够的理由来证明SGML相当的复杂(它的说明有500多页);XML标准远比它简单(只有少少的26页).

尽管严格地讲,XML只是一种数据标志说明语言,但它已经开始渐渐地把一系列相关的技术包含进来了,象XML DOM,XSL,XLL,XML 命名空间和VML.在本文中,我们将看到XML,XSL(eXtensible Style Language可扩展形式语言),和XML DOM (Document Object Model文档对象模型)这几种先进的技术,我们还会介绍其他的标准.

2.剖析一个XML文件

XML 1.0标准可以在www.w3.org/TR/REC-xml这个网址上找到.不过要注意,虽然那不是学习XML的最好去处,但在你看完这篇文章后,请再看看它,相信你会有更深的体会.

在看第一个例子之前,让我们先熟悉一下XML的命名系统.与HTML类似,一个XML的开始标签是这样声明的<标签>.结束标签也类似,不过在小于号后面要加一个前斜杠</标签>.一个标签对和它中包含的内容,象<movie>Gone with the Wind</movie>,被称为一个元素.所有在一个开始标签和一个结束标签中的东西都被称为一个元素的内容.在上面的例子中,Gone with the Wind是movie这个元素的内容.XML的开始标签也可以是属性列表,象<tag attribute1="100" attribute2="200">.

如果XML文件遵循了基本的标准规则(以后会详细介绍),那么它们就是格式正确的XML文件.而所要遵循的最基本的规则就是每一个有开始标签的元素都要有一个相应的结束标签,而且子元素的结束标签一定要在包含它的母元素的结束标签之前.

例如,这就是不和规则的形式:

<auction_item>

<description>

</auction_item>

</description>

而这是合乎规则的形式:

<auction_item>

<description>

</description>

</auction_item>

在W3C的XML标准中有完整而详细的规则列表.一个格式正确的XML文件必须至少包含一个元素.也就是说,文件中必须有根元素(不在其他任何一个元素中的元素).这使得每一个XML文件都是一个层次分明的元素列表.XML文件通过把元素置于其他标签对中,来定义产生这种元素间的层次关系(父子,兄弟关系).

为了说明这一点,让我们来看一个例子:

表 A: XML格式的航空公司的航线数据示例

<?xml version='1.0'?>

<!-- This is an example of airline flights in XML -->

<flight_schedule>

<flight flight_number="1073/61">

<origination>

<city> Raleigh, NC </city>

<airport> RDU (Raleigh Durham Intl.)</airport>

</origination>

<destination>

<city> San Francisco </city>

<airport> SFO (San Francisco Intl.)</airport>

</destination>

<connection>

<city> Charlotte, NC </city>

<airport> CLT </airport>

</connection>

<airline> US Airways </airline>

<price>1492.00</price>

<aircraft>

<manufacturer> Boeing </manufacturer>

<model> 747 </model>

</aircraft>

<movie> No </movie>

<meal> dinner </meal>

<departure_time> 11:00 </departure_time>

<arrival_time> 14:00 </arrival_time>

</flight>

<!-- More flights would go here, check the data file for an example -->

</flight_schedule>

表A是一些以XML格式表述的航空公司的航线数据.你可以看到XML相对来说可读性比较强.标签和它们的内容都具有相当的自释性.如果在一个HTML表单中又会是怎样的呢?

你几乎不可能把数据从网页中分离出来.但在XML格式下,我们可以轻松地用一个旅行代理程序得到这些数据,把它们存到一个数据库中,或重新格式它的显示方式.

现在让我们进一步剖析这个例子.第一行是XML的标准标题:

<?xml version="1.0" ?>

这个标题告诉处理程序(在这里指IE5 XML解释器和浏览器)这是一个XML文件,同时声明这个文件遵从哪一个XML版本(到现在为止只有1.0版).

文件的下一行是一个注释:

<!--An example of airline flights in XML-->

XML的注释格式和HTML一样,你可能对此早已熟悉.但是与HTML不同的是,XML文件中所有的开始标签都必须匹配一个结束标签,所以在层次结构首部的开始标签<flight_schedule>,必须有一个匹配的结束标签,</flight_schedule>,在文件的结尾.

剩下的则是一系列被开始标签和结束标签定义的元素.这个例子描述了一个有两个航班的航班时间表.每一个航班都包含了下面所示的层次化的数据:

Origination

City

Airport

Destination

City

Airport

Connection

City

State

Airport

Airline

Price

Aircraft

Manufacturer

Model

Departure_time

Arrival_time

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有