XML三大软件技术

南  凯

  XML(Extensible Markup Language,可扩展标记语言)是当前炙手可热的网络新技术之一。但是,勿庸讳言,XML技术的很多方面还处于开发和标准化过程中。本文着重介绍了XML的三个核心问题,为读者进一步深入探索XML作一个前导性分析。

孕育XML的条件

——在W3C(WWW联盟)的XML推荐标准中是这样描述XML的设计目标的:

——*能够被直接方便地用于Internet、兼容于SGML;

——*能支持广泛的应用,易于开发处理XML文档的程序;

——*XML中的可选特性应保持在最少,理想状态是零;

——*XML的设计应该是规范的、简明的,XML文档应该相当清楚;

——*XML文档是易于设计、易于创建的。

——然而,上述目标只代表了XML最初的设计思想。在XML推荐标准1.0版公布(1998年2月)以后,XML在全球迅速流行。在广泛的实际应用中,人们对XML的认识更加深入和全面了,同时对XML的期望和要求也在不断地调整和变化。

——至于XML产生的根本原因和需求主要有以下两个方面:

——◆Web的发展和HTML的局限性

——近十年来,HTML对Internet和Web的发展贡献巨大,而HTML的局限性又限制了Web的进一步发展。一方面,HTML的固定标记集使HTML无法支持Web上不断涌现的新应用;另一方面,各浏览器厂商对HTML的自行扩展又造成了浏览器之间越来越严重的不兼容问题。此外,HTML缺乏对文档的结构信息的描述,链接功能也不够强。所以,为克服HTML的局限性,必须设计一种功能更加强大的描述语言来为Web的发展提供强有力的支持。

——◆Internet对信息交换的迫切需求

——超越HTML是XML发展的原始动力,但是,如今人们却更多地把XML看作是一种信息交换的标准格式,尤其在电子数据交换和电子商务等应用领域内。信息交换需求可以简要地归纳为下面几项:

——*连接在Internet上的计算机要经常交换信息;

——*信息在网络链路上传输时要进行必要的编码,把各种结构的信息都转换成一种序列化的格式(字节流或比特流);

——*这种格式要能被所有参与通信的计算机所理解,换句话说,这个格式应该是通用的国际标准;

——*为了让使用者把精力集中在信息的内容本身,而不是格式上,这种标准格式应该既强大、又易用,有良好的适应性和可扩展性。

——虽然上面这些要求看起来并不复杂,但事实上,XML是目前唯一能满足上述信息交换要求的标准。

——总之,HTML的缺陷和基于Web的信息交换的需要促进了XML的诞生和发展。信息的描述方式(未来的Web上将有越来越多的XML页面)和信息的交换格式(XML将成为电子数据交换和电子商务的基石)是XML的两大发展目标。

XML真面目

——从根本上讲,XML是一种描述型的标记语言。谈到标记语言,就不能不说SGML(标准通用标记语言)。SGML的功能十分强大,同时也非常复杂,从二十世纪八十年代开始就已经广泛应用于出版等专业领域。HTML就是对SGML进行了大量简化后的一个应用,而XML也是SGML的一个应用子集,只不过鉴于HTML的教训,XML在减少复杂性的同时,保留了SGML最有活力的部分——可扩展能力。

——一篇XML文档由标记和内容组成,看起来和HTML文档很相似。元素是XML最主要的标记,与HTML本质的不同是XML中元素没有预定义,而是由用户对自己文档中使用的元素进行定义,这就需要加入“文档类型声明”(DTD)。通过DTD,一方面用户可以在文档中定义自己的标记,另一方面分析器也可以得到关于文档内容和结构方面的元信息。这样,XML文档就具有了可扩展性、结构性和可验证性,同时,XML文档也具备了存储结构化数据的能力。考虑到与HTML的兼容,DTD不是XML文档必须的成份,具有DTD的XML文档称作“Valid”文档,否则是“Well-formed”文档。

——其实,XML相关的技术规范和标准还有许多,它们共同组成了一个标准集,建立起一个信息表示和交换的完整平台。这里对其中主要的几项技术做一个简单的介绍。

——◆XML Linking

——作为一种Web语言,其链接能力是非常重要的。XML的链接和定址机制包括XLink、XPath和XPointer。XLink提供功能强大的链接方法,可以在文档之间建立单向或多向的复杂链接关系,还有注释链接、概要链接、扩展链接集等多种链接功能,这些链接功能相对于HTML都大有增强。XPath在XSLT和XPointer中使用,支持在XML文档中相对于结点和结点集的定位。XPointer在XPath的基础上提供对XML文档的内部结构(如一个字符串或选择的一个段落)的定位。

——迄今为止,XML Linking还没有W3C推荐标准产生,它仍处于研究开发阶段。

——◆CSS与XSL(XSLT)

——XML作为描述性标记语言,它的一大特点就是内容与格式分离,也就是说,XML文档中并不包含如何显示/表示文档的信息。CSS(Cascade Style Sheet)与XSL(XML Style Language)解决了XML文档的显示问题。

——CSS和XSL都是样式表(Style Sheet)语言。样式表可以控制文件内容在显示时的版面风格,如页面的左右边距、各式标题及文字的字体、颜色、对齐方式等。对同一份XML文档使用不同的样式表就可以得到不同的输出效果,这特别适合于将文档表示在不同的场合,如显示、打印、出版等。

——CSS是一种比较简单的样式表语言,可以用在HTML和XML中。XSL完全使用XML的语法,功能比CSS要强大,除了作为样式表以外,还用在不同格式文档之间的转换上,这就是XSLT(XSL Transformations)。

——◆DOM

——文档对象模型(Document Object Model)是一个与平台、语言无关的程序接口,它提供了动态访问和更新文档的内容、结构与风格的手段。可以对文档做进一步的处理,并将处理的结果更新到表示页面。

——DOM的目标就是为XML和HTML定义一个标准的编程接口,它包括核心、HTML和XML三部分。DOM的核心部分建立了一套低层的对象集,它们可以表示任何结构化的文档。虽然在这套接口中可以通过其自身来表示HTML和XML文档,但这个核心部分是一种操作文档内容的更紧凑、更精简的设计。HTML和XML部分提供了高层的接口,可以作为更方便的文档视图。DOM规范由对象和方法组成,通过它们,程序员可以更容易、更直接地对特定类型的文档进行访问和操作。

——◆Schema

——XML文档可以表示结构化数据,可作为文本数据库存储数据,也可作为行业中数据交换的标准表示。这些都需要对XML文件的数据进行描述,如数据类型、长度等,DTD就是完成这部分工作的。然而,由于DTD采用的是与XML文档完全不同的语法,也就是说,需要同时有两套分析器来处理DTD和XML文档本身。另外,DTD的语法也相对复杂和古怪,不大易用,所以,又产生了XML Schema。

——其实,XML Schema本身就是一个XML文件。但不同的是,Schema文件所描述的是引用它的XML文件中的元素和属性的具体类型。除了上面提到的以外,Schema比DTD还有以下优点:

——XML Schema利用Namespace将文档中特殊的结点与Schema说明相联系,一个XML文件可以有多个对应的Schema,而一个XML文件只能有一个对应的DTD。

——XML Schema内容模型是开放的,可以随意扩充,而DTD无法解析扩充的内容。

——DTD只能把内容类型定义为一个字符串,而XML Schema允许把内容类型定义为整型、浮点型、布尔型或者许多其它的简单数据类型。

——◆Namespaces

——在XML中,用户可以自己定义标记和元素。因此,如果把多个XML文件合并为一个,就很可能出现冲突。Namespaces(名域)解决了这个问题。

——对XML Namespaces严格的定义是:“Namespaces是用URI加以区别的、在XML文件的元素和属性中出现的所有名称的集合。”在没有Namespaces的XML 1.0文件里,元素和属性中出现的名称被称为“当地名称”(Local Names)。

XML用武之地

——XML标准发布以后,虽然还有许多相关技术仍处在开发与标准化过程中,业界的主要厂商就已纷纷表示支持,并视之为关键技术应用在产品中。如Adobe、IBM、Microsoft、Oracle、Sun等。现在,从Web浏览器(如IE)到大型数据库(如Oracle),越来越多的产品都使用或支持XML。

——对于用户来说,最关心的还是如何实际使用XML文档。当前主流的两大浏览器Internet Explorer和Netscape Navigator都宣称支持XML。其中,IE从4.0版开始就对XML提供部分支持,在5.0版中得到大大加强。Netscape似乎反应慢一些,不过在即将发布的6.0版中一定会对XML提供比较完整的支持。

——目前还没有非常流行、占主导地位的XML编辑器出现。早先,这方面多是一些功能不太强的免费或共享软件,现在则有越来越多的商业软件加入进来。

——如今,在绝大多数程序语言(Java、C/C++、Perl、……)中都已经实现了XML分析器以及相应的编程接口,如IBM的XML for Java和Microsoft的MSXML等。从处理方式上看,主要的有SAX与DOM两种。SAX(Simple API for XML)是基于流的、以事件处理方式工作的接口。DOM(Document Object Model)则是W3C标准,通过在内存中建立起完整的文档结构来完成各种操作。SAX对系统资源要求低、速度快,但对文档的操作是只读的;DOM的处理能力强大,但要求大量的系统资源,尤其是处理大的文档。

——XML也是一种用来定义其它语言的元语言,这些元语言作为XML的应用,也正得到迅速的发展。

——◆MathML

——MathML是在数学领域中使用的标记语言,一些重要的数学编辑软件已经在提供对MathML的支持,可能会在几年内大量取代TeX。与MathML类似的还有CML(Chemical Markup Language)等。

——◆XHTML

——XHTML是可扩展的HTML,它其实就是XML1.0的一个应用。XML新的语法和语义机制为XHTML将来的扩展提供了保障,并且只要遵循一些规则就可以与现有的HTML保持兼容。

——◆RDF

——RDF是W3C关于元数据的标准,它提供了一种处理元数据的通用方法。作为一种描述语言,RDF通过标识Web上各种资源的属性和相互关系来表示元数据。这些资源可以是具有一个Web地址的任何东西。也就是说,可以把元数据关联到Web页面、图像、声音或视频等各种资源。

——◆WML

——由于无线通讯技术的飞速发展,使得基于无线方式的信息交换变得非常现实和迫切。无线标记语言WML就是XML在这一领域内的一个应用。WML是一种经过压缩的XML,主要用于在无线电话之间传送信息。

——◆SMIL

——SMIL是XML在多媒体技术中的一个应用,主要用于控制由声音、视频、文字和图像等组成的多媒体资料在Web上的表现。简单地说,它可以让制作者指定什么资料在什么时间显示。例如,可以精确地控制一段录音的播放时间,以保证它与图像显示在屏幕上的时机吻合。

——◆SVG

——SVG是一种用XML来描述二维图形的语言。SVG中包括3种图形对象:向量图形、图像和文本。其中,文本可以在任何适用于这种应用的XML Namespace中,从而增强了SVG图形的可检索性和可访问性。一幅SVG图形可以是动态的,也可以是交互的。包括了XML DOM的SVG DOM允许通过脚本直接而高效地产生向量图形动画,丰富的事件处理机制也是SVG一个十分诱人的特性。目前,SVG还在进一步的开发中。

——在科技发展的道路上,有些技术最终得到广泛应用时并不遵照其最初的设想,典型的例子就像Java,XML多少也有一点类似。XML在以后的发展中也一定会有出乎其创造者意料的地方,然而,这并不是XML的失败,恰恰相反,这表明XML具有异乎寻常的适应性和本质上的优点。这种优点来源于XML剥离了信息的附加属性,而专注于内容,也就是信息本身

(《中国计算机报》2000.04.24)


关闭窗口