(作者:廖家序2000年12月04日 12:46)
XML(eXtensible Markup Language,可扩展标记语言),是当前最热门的网络技术之一,被称为“第二代Web语言”、“下一代网络应用的基石”。自它被提出以来,几乎得到了业界所有大公司的支持,丝毫不逊于当年HTML被提出时的热度。所以,趁现在XML还未普及的时候,赶快抢先学学,以保住将来的饭碗。
HTML的缺点
谈XML,不得不先说说“第一代的Web语言”——HTML。HTML老矣,已经快被淘汰了(夸张了一点,不过HTML 4.0后就没有了,取而代之的是依据XML定义的XHTML)。可怜我们这些人,好不容易刚刚能够凑合着会使用HTML了,却又不得不被迫丢弃。为什么呢?HTML对带动这些年来WWW的蓬勃发展,可谓功不可没。想要在Internet上作点事情,几乎无HTML不行。但是HTML有一个致命的缺点,就是:只适合于人与计算机的交流,不适合计算机与计算机的交流。
大家都知道,HTML是通过一大堆的标记来定义文档内容以什么样的形式显现在我们面前,也即,HTML是一种“显示描述”语言,它仅仅描述了Web浏览器应该如何在页面上布置文字、图形等,并没有对Internet上最重要的东西——信息的本身含义进行描述。这些通过HTML表现出来的文字、图形内容很容易被人理解,而要计算机去理解这些标记内的文字的含义,就很困难了。
举个例子来说,我们设计一个程序,它可以自动地到各大网上商场去将最新的价目抓回来。但问题是,每个网上商场可能在网页中写商品名称和价格时,都有他们自己的一套写法,如:甲用〈B〉价格〈/B〉,而乙用〈H〉价格〈/H〉,还有更为复杂的表格。那么我们的程序怎样才知道,哪种标记里面的东西才是要抓的价格信息呢?再比如:在HTML里,〈B〉Apple〈B/〉只代表了Apple这个单词在Web浏览器里用粗体来表现,并没有指出Apple代表什么,是苹果?是苹果计算机公司?还是其它什么?这造成了HTML不能揭示文件中信息的含义。
另外,HTML的另一个问题就是它的标记的集合是固定的,用户不能增加自己的有意义的标记。而且各大浏览器的规格不尽相同,要使我们用HTML做的网页能够被所有浏览器正常显示,我们只能够使用W3C给我们定义好了的标记来创建网页。
在当今的网络世界里,随着电子商务的蓬勃发展和基于Web的应用日益广泛,大量的信息需要被快速地处理。实际上,在Internet上的大部分信息,在最初都是被存放在结构良好的数据库里面,信息按照它的意义被存放在相应的字段里,比如:员工档案,名称、性别、部门等。对于“张三”这个数据,计算机能够根据它所存放的位置,知道它代表一个员工的姓名。但是,一旦这些数据被调出来,经过CGI、ASP、JSP、PHP等转换成HTML后,原本有意义的数据就变成了一些无特定含义的HTML标记的组合。用户必须通过自己的“头脑”才能解析这些数据,进而“手动”将它们进行记录、处理,显然处理信息的速度会很慢。如果我们能够将最初保存在数据库中的原始结构的数据在计算机之间传递,那么肯定会加快信息处理的速度。显然利用HTML办不到,并且,由于计算机体系、操作系统以及所使用的数据库不同,不同的计算机之间要想互相理解对方的数据库格式是相当困难且非常麻烦的,为了使各种不同的计算机之间能够互相交换信息,似乎HTML又必不可少。怎样来解决这个难题呢?
迎接XML
使用XML可以解决上述的难题。W3C对XML作了如下描述:“XML描述了一类被称为XML文档的数据对象,并部分描述了处理它们的计算机程序的行为。XML是SGML的一个应用实例或一种受限形式。从结构上说,XML文档遵从SGML文档标准。”同HTML一样,XML也是一种基于文本的标记语言,都是从SGML(Standard Generalize Markup Language,标准通用标记语言,是一种老的标记语言,最初用于出版行业,非常复杂,依据SGML开发的应用非常昂贵,只在少数大公司和政府部门有应用)发展而来的,XML保留了SGML 80%的功能,降低了20%的复杂程度,这样使得开发有关XML的应用变得很便宜,使XML能够进入“寻常百姓家”。
提示:HTML只适合于人与计算机的交流,不适合计算机与计算机的交流。
XML与HTML的不同在于:XML可以让我们根据我们要表现的文档,自由地定义标记来表现具有实际意义的文档内容,比如:我们可以定义〈文档名称〉〈/文档名称〉这样具有实际意义的标记(可以用中文)。在XML中,我们只需要注意文档的内容,而文档的表现形式则交给CSS(层叠样式表)和XSL(可扩展样式语言)来完成,如果XML文件只用于计算机与计算机之间交流信息,仅仅需要一个XML文件即可,如果要将XML文件中的信息以某种形式显示出来,如通过浏览器显示,则可引用一个样式表文件来定义浏览器怎样来显示XML文件中信息。而且XML不像HTML那样具有固定的标记集合,它实际上是一种定义语言的语言,也就是说使用XML的用户可以定义无穷的标记来描述文档中的任何数据元素,突破了HTML固定标记集合的约束,将文档的内容组织成丰富复杂的完整的信息体系。XML主要有三个要素:Schema(模式)、XSL(eXtensible Stylesheet Language可扩展样式语言)和XLL(eXtensible Link Language可扩展链接语言)。Schema规定了XML文档的逻辑结构,定义了XML文档中的元素、元素的属性以及元素和元素的属性之间的关系,它能够帮助XML的解析器校验XML文档标记是否合法;XSL是用来规定XML文档表现形式的语言,同CSS类似;XLL则进一步地扩展了当前Web上已有的简单链接。
XML是一种定义语言的语言,现在已经有几个以XML规范为主所创建的标记语言,如:Chemical Markup Language(CML:定义怎样描述化学分子式的结构,将它显示在网页上)、Mathematical Markup Language(MathML:将复杂的数学公式以网页的形式显示在浏览器中)、Synchronized Multimedia Integration Language(SMIL:如何将多媒体信息展现在WWW中)。
XML文件的解析器(一种检查XML文件是否有结构上的错误,将XML文件中的标记剥离,读出正确信息的工具)大多数是使用Java语言写成的,这样,只要计算机支持Java虚拟机,都可以支持XML(几乎所有的计算机都支持Java虚拟机)。所以,即使是异构系统,也不用担心读不懂对方的资料,大家都用XML文件作为传送资料的介质即可,因为只要对方计算机上有合适的XML解析器,就可以正确地读取信息。现在,几大数据库厂商的数据库产品,如:Oracle 8i、Informix、IBM DB2等都开始支持XML,输入数据库的数据可以轻易地转化为XML,甚至可以直接以XML的形式输入数据。有预言称:将来的电子文档必将是XML的天下。
提示:XML保留了SGML 80%的功能,降低了20%的复杂程度,这样使得开发有关XML的应用变得很便宜,使XML能够进入“寻常百姓家”。
学习XML并不困难,因为XML的规范很简洁,整个标准打印出来也只有几十页,而且XML的写法和HTML类似,都是把标记用〈 〉符号括起来。更加方便的是,我们能够使用中文创建XML标记,比如,我们能够创建〈价格〉...〈/价格〉这样的标记,在此标记内的内容,它的含义就是某件东西的价格。想象一下,如果各大网上商场都用这样的XML标记来说明他们网页中文字的含义,那么我们就可以一个自动化的软件去抓取我们感兴趣的东西,比如:我们想了解以下有关XML书籍的信息,这个软件就自动去抓取各个网页中〈XML书籍〉...〈/XML书籍〉标记内的字段,这该是多么方便。
XML具有卓越的性能,它具有四大特点:优良的数据存储格式、可扩展性、高度结构化以及方便的网络传输。因为XML能针对特定用户的应用定义自己的标记,这就使XML能够在多种行业的信息交换中一显身手,根据不同行业来提供具有各自特色的解决方案。