1.1 XML的起源
XML是一种应用非常广泛的标记语言,与另一种广为人知的标记语言HTML相似,它只是通过在文本文件中添加一些额外的标记,来传递更多附加信息。与所有标记语言一样,XML本身并无任何“动作行为”。
1.1.1 标记语言
标记语言不是像Java、C一样的编程语言,它本身并无任何“动作行为”。标记语言只是用一系列约定好的标记来对电子文档进行标记,从而为电子文档额外增加语义、结构和格式等各种方面的信息。
简而言之,标记语言专为信息增加额外的标记,也就是增加一些特殊标识。例如有些阅读过的书,在某一段文字下画有一道线,这道线就是一种标记。该标记用于传递一种附加的信息:这段文字很重要。
实际上,所有的标记语言都用于为被标记内容附加一些额外的信息:例如最常见的标记语言HTML。假设在HTML页面中有如下代码:
上述代码中的<font…/>标记用于向浏览器传递额外的信息:被<font…/>标记的文字需要采用红色显示。由此可见,HTML页面中的标记主要用于向浏览器传递各种显示信息。
标记语言可传递非常丰富、全面的信息,不仅可传递各种显示信息,还可传递其他的各种额外信息。标记语言家族有两个先驱:GML和SGML,其中GML(Generalized Markup Language,通用标记语言)由IBM的研究人员于20世纪60年代创建。创建GML的初衷是建立一种通用的文档格式,以提高系统的可移植性。显然,这种通用的文档格式必须遵守特定的标记规则。
再后来,IBM的研究人员进一步完善并规范了GML,将其称为SGML(Standard Generalized Markup Language,标准通用标记语言)。1986年,国际标准化组织(ISO)采纳SGML作为工业标准。今天,SGML主要用来定义文献模型的逻辑和物理类结构等。
GML和SGML是标记语言的两个先驱,但这两个先驱都没有得到广泛应用,应用最广的是另外两个标记语言:HTML和XML。
图1.1大致显示了标记语言的发展历史。
图1.1 标记语言的发展历史
通过上面的介绍可以看出,标记语言比编程语言简单得多,只需按规定为文本文件添加一些特殊标记即可,这些特殊的标记用于传递更多额外的信息。
1.1.2 XML的基本概念
XML(Extensible Markup Language,可扩展标记语言)由SGML简化而来,它不仅具备SGML的各种优势,同时还摈弃了其复杂、难于使用的缺点。
SGML从20世纪80年代初开始应用,其主要作用是:用于创建其他的标记语言。它为语法标记提供了强大的工具,同时还具备极好的可扩展性,因此在分类和索引数据中非常有用。SGML非常复杂,因而对于网络上的日常应用难以适应。最重要的是,包括Netscape在内的一些浏览器厂商明确拒绝支持SGML,这样就妨碍了SGML的传播。
XML对SGML进行了简化,但并没有弱化它的功能,SGML能实现的功能,XML几乎都可以实现,这也是XML最吸引人的地方。
1998年2月10日,XML正式成为W3C 的推荐标准。
与HTML不同的是,XML被设计用于传输和存储数据,而不是用来显示数据。
XML是可扩展标记语言,因此没有预定义任何标签,开发者可以自行定义任意的标签。
例如如下代码定义了疯狂Java实训营的教材:
上面这份XML代码列出了5本图书的书名,该文件中的各种标记都是自定义的,开发者完全可以自定义符合约定的标记。
需要指出的是,XML文件只是一份静态的文本文件,它可以对外提供一些信息,但不能完成任何“动态行为”。我们必须自行编写软件或程序,才能传送、接收和显示出这个文档。
XML没有任何特别之处,它只是纯文本而已,任何有能力处理文本文件的软件都可以编辑XML文件。当然,如果希望程序能读懂XML文件,并有针对性地处理其中的标签,就需要编写处理它的应用程序了。
由此可见,XML并不是传统意义上的编程语言,而只是一种独立于软件和硬件的信息传输工具。
现在,XML在企业应用中的作用甚至超过了传统的HTML,大批的软件开发商采用它作为数据交换的标准。XML是各种应用程序之间进行数据传输的最常用工具,它在信息存储和描述领域正变得越来越流行。
1.1.3 XML和HTML
HTML具有免费、简单的特点。几乎所有的浏览器都支持HTML标记。HTML最初于1990年由CERN设计,它是种非常简单的SGML,可以方便普通人的使用。因此,HTML得到了广泛应用。但它同时具有与生俱来的缺陷:不具备可扩展性;数据逻辑与表现逻辑混杂,导致难以阅读,难以维护。
与HTML不同的是,XML被设计用来传输和存储数据,而且它允许开发者自定义标记,因此功能更强大。值得指出的是,XML并不是用来代替HTML的,二者是为不同目的而设计的。
表1.1对XML和HTML各方面存在的差别进行了对比。
表1.1 XML和HTML的对比