XML简明教程
李永阔 张立东
2001年 60期
#1 一、XML的背景和应用前景
(一)起源
XML(eXtended Markup Language)是从SGML(Standard Generalized Markup Language)进化来的,最初SGML是为了解决文档及其格式问题的一种标记语言,所以非常的复杂和难以使用,那时计算机的应用水平还处在很低的阶段,并且那时人们只需要传递和显示一些简单的数据。因此,89年Tim Berners-lee依据SGML开发出一种超文本格式,就叫HTML(HyperText Markup Language),非常的简单。当计算机的应用水平也大幅度的提高的时候,人们已经对太简单的HTML开始不满意,因此又开始对其进行修改、升级,就这样HTML从1.0一直升到4.0的版本,扩展了许多的命令,实际上也是为了让HTML解决更多的问题,但是因为HTML本身的缺陷,为了解决更多的问题,是不是会把简单的HTML变成一个非常复杂的,难以理解的语言,就连现在看一个HTML的源文件,都会头大好几圈,再加上HTML是把数据和显示格式一起存放的,如果我们只想使用数据而不需要格式,可以想象,分离这些数据和格式是多么的困难。而随着Internet的发展, 98年1月W3C公布了XML1.0版本,立即成为计算机史上一个重要的里程碑。
XML包括XML元数据文件、Schema文件、XSLT显示文件、XLL链接、Xpath等一系列相关部分,但是对于不是计算机方面的专业人士来讲,最好只看它的元数据文件,而把别的问题交给开发和制作人员,这样就可以让非专业人士脱离看懂那些头疼的术语的痛苦。在此就先说说XML的特点:
1. 电子数据交换(EDI)
2. 灵活的开发
因为XML是数据和格式分离设计的,所以XML元数据文件就是纯数据的文件,这样就可以使用同一个数据源,显示多种样式了。而使用HTML的话,每显示一种式样,就必须重新把数据和格式混到一起,这是一件很痛苦的事情。
XML采用的TAG是自己定义的,这样我们的数据文件的可读性就能大大提高,也不再局限于HTML文件那些标准的TAG了。而且因为XML支持Unicode,所以我们就可以使用中文标记(TAG),是不是感觉很自由呢?看看这样一个存放职员数据的XML数据文件:
<职员>
<姓名>于青姓名>
<性别>女性别>
<年龄>23年龄>
<学历>学历>
<教育经历>
<毕业学校>北京大学毕业学校>
<入学时间>1996-09-01入学时间>
<毕业时间>2001-07-01毕业时间>
<专业>中文专业>
教育经历>
职员>
看到这个文件感觉是不是很棒?这样的文件不需要使用很复杂和专业的工具就可以增加、修改和编辑(使用微软的记事本就可以做到这些),而且大部分人都可以使用,可以让一个非计算机的专业人士,在10分钟内学会,这就是一个XML元数据文件的样子。当然XML文件也不象HTML那样可以写的不完整,XML必须写的中规中矩(well formed),否则XML的解析器就会报错。
3. 面向对象的特性
XML的文件是以树状方式存储,同时也有属性,这非常符合面向对象方面的编程,而且也体现了以对象方式存储,ORACLE数据库就使用了这种面向对象的特性,但是ORACLE数据库的根本是关系型的数据库,因此速度和稳定性都有一定的问题,而且特别的复杂,所以大家基本上是很少使用它的这一特性,深怕跳到坑里去!
4. 缺陷
世界上永远也不会出现完美的语言的,XML也是一样,它也有很多的缺陷,虽然它是树状存储的,搜索的效率极高,但是问题不是在搜索,而是在于目前它的插入和修改,!
#1 二、XML基础
(一)XML术语
在学习XML之前,我想先给大家介绍一些XML使用的术语。平常我们学习新的语言时,总会遇到许多难以理解的术语,在这里就先介绍一些主要的给大家。
元素(Elements):代表XML文档中的每一个组件,包含字符、元素或者两者皆有,允许有空元素(empty element)。
属性(Attributes):放在元素后面的数据,代表这个元素的另一种特性和特征。
统一编码(Unicode):一种字符集,包括了全世界各种语言中有用的字符。
实体:“文本片”,实体也像一个缩写,一个实体可以是一个字符也可以是一个文档的数据,是XML文本的基本单位。
标记(Markup):像标记(TAG)、实体引用(Entity reference)和声明这样的构件。
样式表(XSL):描述XML的元数据文件格式的语言(因为CSS对于XML来讲不够用)。
序言(Prolog):关于文档实例表现形式的信息。
文档实例(Document instance):以元素的层次结构组织的实际文档数据。
(二)XML语法简介
1.看一个简单的例子
这是一个关于库存物品清单的简单例子,大家可以从中发现XML的许多特性,并且可以体会到XML的元数据文件是非常清晰易读的:
<库存清单>
<库存物品>
<名称>毛巾名称>
<规格 单位="cm">25*50规格>
<生产厂家>中国棉纺厂生产厂家>
<生产日期>20010-09-01生产日期>
<数量 单位="条">400数量>
<进货价 单位="元">2.5进货价>
<零售价 单位="元">6.5零售价>
库存物品>
<库存物品>
<名称>碗名称>
<规格 单位="cm">5*15规格>
<生产厂家>中国搪瓷厂生产厂家>
<生产日期>20010-09-11生产日期>
<数量 单位="个">200数量>
<进货价 单位="元">1.5进货价>
<零售价 单位="元">4.5零售价>
库存物品>
<库存物品>
<名称>筷子名称>
<规格 单位="个">1*10规格>
<生产厂家>中国搪瓷厂生产厂家>
<生产日期>20010-09-11生产日期>
<数量 单位="把">200数量>
<进货价 单位="元">1.5进货价>
<零售价 单位="元">3.5零售价>
库存物品>
库存清单>
看过了XML语言的基本格式,下面将详细讲解XML元数据文件的各个组成部分,实际就上面这些而言是非常简单的,当然,我们要想更清楚的了解和学习XML,就必须清楚地知道这些定义的意义。
2.声明(Declaration)
XML数据文件的定义不象HTML那样自由,它是非常严格的,缺少一个就会出错!因为每个XML的解析器第一步要做的事情就是检查XML文件是否合格,就是“well-formed”,所以大家看到第一句是这样些的:
注意的是:不能漏掉此句,否则解析器不予解析的!当然里面的encoding可以不用写,缺省是Unicode,在此对XML使用的字符编码作一下说明,大家都应该知道中文和英文的区别吧,呵呵,有人说了,这也太简单了,实际上平时有区别就罢了,结果闹到计算机上真是比较麻烦,大家用过古董DOS的就知道使用汉字在计算机上是一件多么困难的事情,别人26个字母就可以搞定,汉字却要好几万个。现在的计算机的发展虽然神速,可国际化的问题却一直存在,况且不属英语语系的国家也都有此类问题,因此美国的各大电脑厂商组成了一个Unicode促进会,结合ISO的字库标准,推出了Unicode,这个编码可以满足绝大多数语系的需要!
3.元素(Elements)和属性(Attributes)
<元素名 属性名=”属性值”>
<子元素>元素的数据子元素>
元素名>
大家看上面的这个例子,就能很形象的理解什么是元素什么是属性,但是需要注意的是元素的大小写是不一样的,也就是说