位置:海鸟网 > IT > XML >

基础知识认识XML:下一代网络的基石

随着互联网的迅猛发展和普及,人们可以通过计算机与互联网联接,从世界各地实时的接收和发送大量、最新的信息,但在信息交换的过程中存在着一个突出的问题,就是多种多样的数据格式,给信息的有效使用带来了障碍。所以在信息时代,如何以最便捷、最可靠、最有效的方式获取所需的信息是一个很大的困扰。人们期待着能够找到一种可以描述任何逻辑关系的数据格式来统一电子数据的存储,从而不再因为数据格式的不统一而苦恼和困惑。目前,能够担当此任的就是xml(extensible markup language,可扩展符号化语言)。

可以说,xml的出现给数据交换带来了一场革命;xml的出现是至今为止最聪明的一种符号化语言;xml成为下一代网络发展的基石。

xml诞生的背景

sgml介绍

说到xml,我们一定要先了解一下sgml (standard generalized markup language) 。sgml最初是由ibm开发的一种用于排版的符号化语言,称为gml。经过若干年的发展,1984年国际标准化协会(iso)开始对此提案进行讨论,于1986年正式承认sgml为国际标准规范(iso8879)。

基础知识认识XML:下一代网络的基石

 图:xml作为电子数据交换的统一格式

sgml实际上是一种通用的文档结构描述符号化语言,主要用来定义文献模型的逻辑和物理类结构。一个sgml语言文件由三部分组成,即语法定义、文件类型定义dtd(definition type document)和文件实例。语法定义部分定义了文件类型定义和文件实例的语法结构;文件类型定义部分定义了文件实例的结构和组成结构的元素类型;文件实例是sgml语言程序的主体部分。

在sgml的实际使用中,每一个特定的dtd都定义了一类文件。因此,人们习惯上把具有某一特定dtd的sgml语言,称为某某符号化语言。这样sgml就成为那些派生语言的元语言。

html的出现

1989年,欧洲物理量子实验室(cern)的信息专家蒂姆·伯纳斯·李发明了超文本链接语言, 使用此语言能轻松地将一个文件中的文字或图形连到其它的文件中去,这就是html的前身。1991年,蒂姆·伯纳斯·李在cern定义了html语言的第一个规范,之后成为w3c组织为专门在互联网上发布信息而设计的符号化语言规范。可以说,html(hypertext markup language)是sgml的一个实例,它的dtd作为标准被固定下来。因此,html不能作为定义其它符号化语言的元语言。

作为world wide web的一个组成部分,html语言发展很快,在短短的几年里,它已历经了html1.0、html2.0和html3.0、html4.0等多个版本,同时dhtml (动态)、vhtml(虚拟)、shtml等也飞速发展起来。html以简单精练的语法、极易掌握的通用性与易学性,使web网页可以亲近于每一个普通人,互联网因此得以普及发展以至今日辉煌。

但是,目前的html还不稳定,不同的浏览器会产生不同的显示效果。此外  ,由于html对超级链接支持不足,并缺乏空间立体描述,处理图形、图像、音频、视频等多媒体能力较弱,图文混排功能简单,不能表示多种媒体的同步关系等缺点,也影响html的大规模应用以及用于复杂的多媒体数据处理。

xml的诞生

xml是由w3c于1998年2月发布的一种标准。它同样是sgml的一个简化子集,它将sgml的丰富功能与html的易用性结合到web的应用中,以一种开放的、自我描述方式定义了数据结构。在描述数据内容的同时能突出对结构的描述,从而体现出数据之间的关系。这样所组织的数据对于应用程序和用户都是友好的、可操作的。之后,w3c又用xml设计出一个与html4.01功能等价的语言,称为xhtml1.0 (extensible hyper text markup language)使之与html相兼容。

xml是sgml的一个子集,严格地讲,xml也还是sgml。与html不同的是xml有dtd,因而也可以像sgml那样作为元语言来定义其它文件系统,或称其它符号化语言。如果把符号化语言分为元符号化语言和实例符号化语言的话,sgml和xml都是元符号化语言,而html和由xml派生的xhtml都是实例符号化语言。

所以可以说,xml的出现,使html存在的问题可以得到很好的解决。

xml的特点

xml作为引人注目的核心技术应用于btob、web服务、.net等许多系统中。xml是it界谈话中不可缺少的一个关键词。因此,xml对于计算机工程师来说,是必不可少的一门知识。

xml可以作为电子数据交换的统一格式

10年来,web存储格式语言,从html发展到dhtml,直到今天最新的xml,发展的每一步,都是为了适应web应用发展的需求。虽然xml原本是为出版界设计的一种文档描述语言,即sgml派生而来的一种符号化语言,但是它也是为互联网的数据交换而设计的。从而,xml不仅仅是sgml定义的用于描述的文档,而且在电子商务等各个领域使数据交换成为可能。

xml能够应用于各种领域的原因,就是xml具有到目前为止其他方法所不具备的数据描述特点,控制信息不是采用应用软件的独有形式,而是采用谁都可以看得懂的标记形式来表现,所以xml最适合作为数据交换的标准,这也是 xml受人关注的原因。

用xml可以对数据关系进行定义形成特有的标准,因此各行各业都在建立自己的行业化标准,以应用于网络上处理电子商务,把后台系统通过web站点表现出来。xml还可以作为数据仓储,一个xml文件就是一个小的数据库,通过对数据关系的定义形成各种关系、属性的数据,实现数据交换、上下文检索、多媒体传输。

xml具有其他方法所不具备的数据描述特点

xml是以文本形式来描述的一种文件格式 由于xml是以文本形式描述的,所以适合于各种平台环境的数据交换。同样由于使用文本来描述内容,可以越过不同平台的障碍进行正常的数据交换。但是,文本形式也会因为文字代码的不同造成不能阅读的问题,在这一点上xml有着非常完美的解决方案。

xml使用有意义的标记(tag) 在xml中文件是由一个个称之为元素(element)的部件构成。使用标记(tag )来描述元素。由于使用了标记的描述方法,可以保持原数据的意思和构造在互联网上进行数据交换,进而可以保持不同系统之间数据交换的灵活性。

为什么具有上述的优点呢?首先是使用标记描述数据的话,可以具体指出开始元素(开始标记)、结束元素(结束标记),在开始和结束元素之间是要表现的元素数据。这就是用元素表现数据的方法。

标记可以作为子元素 xml中用标记符号化的元素可以作为子元素形成数据嵌套。

xml的标记名和关系可以自由定义 就像许多文章中介绍的那样“xml是用标记描述的语言”,而且xml的标记名标记的层次结构等都可以由用户定义。也就是说,根据xml语法可以定义用户特殊用途的标记集合形成一个全新的符号化语言。这就是xml“可扩充(extensible)”名字的来源。

可以说,xml是“定义语言的语言”,也即是一种元语言。由于xml具有元语言的功能,所以可以成为描述电子商务数据、多媒体演示数据、数学公式等各种各样数据应用语言的基础语言。下面提供几个以xml为基础生成的数据描述语言(本文亦称为xml应用语言)的应用例子,即出版媒体:open ebook(电子书籍)、newsml(新闻媒体);科学:mathml(数学表达式)、cml(化学);电子商务:cxml(电子商务)、fpml(金融);多媒体:smil(多媒体演示)、bml(卫星数据传送)。

另外,就像我们使用的自然语言,讲这种语言的人多了就会把它当作不认识的人之间的初次交流时的工具。同样,在特定的企业之间或在业界内归纳出一套标记集合,即约定用一套特定的xml应用语言作为交流工具是很有价值的。但是,许多xml用户都是用业界或集团标准化以后的应用语言,很少有人自己制作一套新的xml应用语言。

xml的不足之处

xml作为数据描述语言是非常优秀的,但是并不是所有的电子数据都是转换到xml是最有效的。例如xml的文本表现手法、标记的符号化等会导致xml数据比二进制表现方法数据量增加,尤其当数据量很大时,会成为很大的问题。也就是说,xml的导入要根据具体需求,比较其优缺点,在充分发挥xml优点的领域进行。

尽管xml具备了作为通用数据描述语言的优秀特征,但是xml不是编程语言,说到底它是一种数据描述的技术。因此xml文件的显示、文件结构的变更、应用程序的操作等xml相关技术也是非常重要的。

xml的主要相关技术分类

xml是描述内容的数据格式,在使用xml数据时,还需要xml数据的显示、打印、数据结构的变更等许多相关技术。如果这些相关技术也都标准化的话,即使在不同平台开发应用程序也都可以用相同的方法,使开发难度降低。

处理xml数据时,一定要使用xml processor(也就是xml parser),把xml数据结构的检查等交给xml parser去做。

关于xmlprocessor有许多软件产品,当然,也有不少免费的。开发工程师只需将xml数据的检查工作交给xmlprocessor即可,集中精力开发应用程序部分,减少了不小的负担。

应用程序对接收到xmlprocessor传递来的xml树进行处理,向用户提供服务。此时,不管是电子商务,还是知识管理,都是定义xml数据结构的技术、显示打印xml数据的技术、xml数据结构变更技术、xml数据联接整合技术、用程序操作xml树的api和其它应用技术的组合。

定义xml数据结构的技术

在xml中用户可以自由的定义标记名以及与标记相关的元素及元素层次,这是xml的主要特征。但是,如果定义的都是只有自己才能理解的标记,就无法与其他人进行交换数据。为了在企业团体之间进行xml格式的数据的交换,xml数据的结构、元素的名称、元素的数据类型以及元素的亲子关系都需要仔细考虑,一定要设计成人和系统能够理解的语言。这样设计的xml数据结构在xml领域称为schema,描述schema的语言称为schema语言。

dtd 最普通xml的schema语言是dtd(document type definition:文档类型定义)。dtd是远在sgml时期就一直使用的schema语言,1998年制订xml语法时,沿用了描述schema的dtd。

xml schema 在xml中,所谓的“dtd”就是schema文件。dtd描述的schema应用非常广泛。但是,随着xml的应用的发展,从sgml继承下来的dtd显然有许多不足的地方。为了解决这些问题,w3c制订了schema语言xml schema。

xml schema中有下述dtd中不具备的特征:多个schema复合使用xml名字空间;用xml语法描述;可以详细定义元素的内容及属性值的数据类型。

由于在xml schema中的数据结构也都是用xml数据来表现的,与dtd相比数据量增大很多。但是,xml schema的表现力要远比dtd强得多,不仅支持字符串、10进制数、浮动小数点、日期等,还支持m回以上和n回以下出现的元素(m、n为整数)的指定。例如“邮编xxxxxx”(x是字符)是邮政编码元素的格式指定等都是dtd所不能表现的内容。xml schema于2001年5月成为w3c的推荐规范,对xml的利用产生了重要的影响。

显示和打印xml数据的技术

xml数据定义打印、显示排版信息主要有3种方法: 用css定义打印和显示排版信息;用xslt转换到html进行显示和打印;用xslt转换成xsl的fo(formatter object) 进行显示和打印。

css 指定文件排版信息的数据称为样式表,描述html样式表的语言是css(cascading style sheet)。这里介绍的是使用css来浏览、打印xml数据的方法,具体来讲css是给html的每个标记元素指定排版信息,同样也可以用来给xml的标记元素定义显示排版方法。css不能改变xml的结构,只能在简单的定义排版信息的时候使用。

xslt 还有一种是使用改变xml数据结构的语言xslt(extensible stylesheet language transformations)的方法。使用xslt,可以改变xml元素名、属性名、元素层次结构等,根据xslt的指定,可以将xml的元素转换为html元素,则可以是用浏览器浏览。現在,这种用浏览器显示xml数据的方法是最常用的方法。

xsl xsl(extensible stylesheet language)是用xml描述的文件。它是一种可以详细描述商用印刷排版水平的规范,xsl排版信息的定义。用xsl指定排版信息的方法由2步组成:

将要打印、显示的原xml树进  行结构变换,追加排版信息生成新的树结构(xsl-fo树);将这个新树传递给xsl-fo对应的打印和显示引擎进行相应的操作。

xml数据结构转换技术

在xml的应用中,有的xml数据需要转换到其他结构的xml数据,为此w3c制订了描述标准化的xml数据结构转换规则的语言xslt。

xslt是为显示和打印xml,而从xsl规范独立出来的规范,原本是描述排版信息的语言,因此,用xslt制作的程序称为样式表。但是,xslt也可以用于排版以外的各种用途。

例如,使用了不同schema(标记集合)的企业团体之间交换xml数据时,需要将使用了各公司独自数据格式的xml数据向双方系统共同采用的业界标准格式结构转换以后,才可能进行数据交换。在xslt中不仅描述了转换规则,结构转换还可以交给xslt样式表的执行引擎(xslt processor)。为了跨过业界之间的障碍实现数据交换,其它文件格式的数据交换也会经常发生,尽管如此,结构转换时如果利用xslt,可以不改更程序只改变样式表就可以了。

随着xml的普及,xslt的应用也会更加广泛。在windows上,只需进行简单的环境设定,用ie 5.x和任意一个文本编辑器就可以制作和执行xslt。即使只会一点点制作xslt样式表的方法,就可以很简单的进行xml的处理了,非常方便。

随着计算机和网络技术的不断发展深入xml技术的应用也将不断扩大。该技术不仅在传统的银行之间数据交换、证券公司对上市公司情况的数据统计、图书馆对图书的查询检索、企事业文件档案管理等领域的应用更加迫切,在电子商务、搜索引擎软件、自动智能翻译、文档发声软件等领域也将得到更大的发展,特别是近期发展起来的移动通讯网络服务的发展,将使各种各样的信息经过格式转换到达pda、甚至到达手持电话机,将来我们可以通过网络数据格式转换服务使小小的手机可以阅读到大千世界的丰富信息。