1.2 XML的优势
XML能够广泛应用于企业应用开发的各个领域,是由于其本身具有几大优势。简单地说,XML具有如下3个优势。
1.2.1 简单易用的标记语言
从某种程度上讲,XML比HTML更简单。由于XML不像HTML那样提供了大量预置标签,因此开发者甚至不需要记住什么标记,而可以使用任何标记来定义XML文档,只需遵守XML基本规则即可。
例如,要定义一份我们喜欢的游戏的列表,可以定义如下XML文件:
程序清单:codes\01\1.2\games.xml
这份文件其实只是一份普通的文本文件,其中包含3个游戏的名称和类型。除此之外就是自定义标签,XML文件对自定义标签没有过多要求。
正因为XML简单易用,所以才保证了它可以广泛应用于软件开发的各个方面。
1.2.2 严格的格式
XML虽然简单易用,但又不像HTML那么自由,而是具有严格的格式,从而保证了计算机程序可以方便地读取其中包含的信息。
一份XML文件至少应满足如下几个要求:
整个XML文档有且仅有一个根元素。
每个元素都由开始标签和结束标签组成(例如<abc>和</abc>就分别是开始标签和结束标签),除非使用空元素语法(例如<abc />就用了空元素语法)。
元素与元素之间应该合理嵌套。例如<a><b>疯狂Java讲义</b></a>,可以很明确地看出<b…/>元素是<a…/>元素的子元素,这就是合理嵌套;但<a><b>疯狂Java讲义</a></b>这种写法就比较混乱,也就是所谓的不合理嵌套。
元素的属性必须有属性值,而且属性值应该用引号(单引号和双引号都可以)引起来。
当XML文档遵循上面的4个基本规范时,可以准确地转换成树状结构,因此XML文档也称为结构化文档。例如上面关于游戏列表的XML文档可以转换为图1.2所示树状结构。
图1.2 XML文档对应的树状结构
由于XML文档具有严格的格式,可以非常方便地转换成对应的树状结构,因此可以更方便地编写程序来进行处理(包括读取XML文档中包含的信息和将信息保存到XML文档中两个方面)。这就为XML作为数据交换工具提供了基础。
试想一下,当Windows平台上的一个程序需要将数据传给Linux平台上的另一个程序时,我们可以在Windows程序中使用XML文档来保存这些数据,然后将该文档传给Linux平台上的程序,该程序就可以获取这些数据了。在这个过程中,Windows平台上的程序需要将数据保存到该XML文件中,Linux平台上的程序则需要读取其中的数据——这两个过程都得益于XML文档良好的格式。
XML是平台无关的数据交换语言,而Java是平台无关的编程语言,因此有人说XML和Java是天生的一对。
1.2.3 数据逻辑和显示逻辑分离
从前面的介绍可以看出,XML文档主要关注于数据的传输和存储,对数据如何显示则并不关心。从这个意义上看,XML文档有点类似于MVC(模型、视图和控制器)模式里的数据模型,它只负责提供逻辑数据,至于以何种方式显示则由视图决定。
至于XML的显示,可以依赖于简单的CSS,也可以使用XSLT,甚至可以使用JSP页面来负责解析、显示。
从这个意义上看,可以说XML本身没有可显示性,XML文档只包含需要显示的数据。但正因为没有与任何显示方式绑定,它反而可以任意形式显示出来。
例如用Firefox打开前面关于游戏列表的XML文档,可看到图1.3所示结果。
图1.3 以Firefox浏览XML文档
从图1.3中可以看出,由于该XML文档未包含任何样式信息,因此只是显示为一棵简单的文档树。即便如此,这棵简单的文档树也是Firefox为我们提供的“视图效果”。至于如何使用CSS和XSLT来显示XML文档,后面会有详细介绍,此处不再赘述。