译 者 序
XML让Web应用程序焕然一新!
在开发者逐步趋向使用浏览器作为Web应用程序的通用客户端之后,浏览器所承担的任务的复杂性也在不断升级。与此同时,Web应用程序相对于传统专用客户端应用程序而言,其用户使用体验的不足也一直为人所诟病。基于浏览器的Web应用程序的发展一直面临着两方面的问题:一是如何使其更适合于实现更为复杂的较大规模的应用;二是如何给用户提供更好的使用体验。
在上述两个方面,XML都发挥了极其重要且不可替代的作用。在程序的结构方面,XML成功地扮演了“胶水”和“信使”的角色,这使程序的层次划分更为清晰而自然。这种结构层次的细化以及层次间耦合度的降低,使Web应用程序成功地进入了更广泛的应用领域,并显示了实现更为复杂的应用逻辑的强大能力。而在提高用户体验方面,由于各种基于XML的相关Web词汇的出现和应用,尤其是以XML为重要基础的Ajax技术和方法的日益普及,使浏览器表现出了毫不逊色于传统专用客户端的表现和交互能力。
可以肯定地说,今天的Web应用程序已经完全离不开XML。熟悉XML的概念和规则,并将其完美地应用于各种技术,已经成为对Web开发者非常重要的基本要求。本书对于XML的讲解全面而深入,并且收集了大量对开发工作非常有价值的资源。对于有志于从事Web开发的人们来说,本书既是一本优秀的XML教材,同时也是一本较全面的XML参考手册。
许劲松 2007年春
本章将介绍XML(可扩展标记语言),并解释它的一些基本概念。如果你对XML还比较陌生,这将是一个理想的起点。这里介绍的概念将在本书后续部分做更详细的阐述。
Web开发者往往对XHTML(可扩展超文本标记语言)很熟悉,但却经常搞不清它与XML的关系,也不清楚自己为什么需要同时学习XML。但是可以肯定的是,对于开发者来说,这两种技术都是重要的。
XML是用来编写其他语言(称为XML词汇)的元语言。XHTML是这些词汇中的一种,所以如果理解了XML,你也就能理解作为XHTML基础的一些规则。XHTML是遵循XML规则的HTML语言,后面我们将会介绍更多有关的内容。
XHTML有很多的局限性。虽然它擅长于组织Web浏览器中的信息并进行显示,但它的主要任务并不是对数据进行标记。XHTML无法提供一些高级功能,如不能对内容进行排序和过滤等。描述XHTML文档内容的标签不能自己进行定义。XHTML的标签是固定的,它们通常无法与其所包含内容的类型进行关联。例如,段落标签是可用于任何类型的内容的通用容器。
XML解决了这些HTML常见的局限性问题。它比HTML灵活性更高,因为它可以与其他一些支持表现、组织、转换和导航的标准一起工作。XML文档是自描述的,在它们的文档结构中可使用可描述的标签对其所标记的内容进行识别。
本章将更详细地讨论这些问题,对XML做更多的解释并说明为什么需要在你的工作中使用XML。本章将包含以下内容:
l XML的定义及其简史; l 如何编写XML文档; l 如何处理XML内容。
本章将首先介绍XML到底是什么,以及它适合于Web开发的哪些领域。
1.1 XML是什么
对XML第一点也是最重要的一点认识就是,它本身并不是一个编程语言,而是一个用于构造其他语言也就是所谓词汇的元语言。XML描述了创造这些词汇的规则。每种语言都互不相同,但都使用标签来标记内容。标签的名称和结构可自由选择。对于认同标准XML词汇的组织来说,这是通用的,这样他们就可对信息进行共享。
XML语言的一个例子就是XHTML。XHTML描述了一套标准的标签,这些标签只能以一种特定的方式使用。每个XHTML页面包含两个部分,分别使用
和标签描述。每个部分都只能包含特定的标签。例如,不能将标签置于部分中。世界各地的Web开发者都有一个共同的标准方法,这样浏览器就知道如何来呈现XHTML标签了。XML是W3C(万维网联盟)的推荐标准,这意味着它是可以免费使用的。W3C在它的术语表(http://www.w3.org/TR/DOM-Level-2-Core/glossary.html)中提供了一个关于XML的更正式的定义,内容如下:
XML(可扩展标记语言)是SGML中的一个简单子集。它的目标是使通用的SGML可以如同当前的HTML一样,在网络上进行服务、接收和处理。XML设计得非常便于实现,且与SGML和HTML都具有互操作性。
1.1.1 XML简史
XML于1998年问世,它是基于SGML(标准通用标记语言)的。SGML是一个国际标准,可以将其理解为是定义其他文档标记语言的语言。HTML是基于SGML的。SGML最主要的问题是它难于使用,而XML的目标就是要变得更简单。
XML也从HTML中获益良多。HTML专注于内容的显示;你不能用它来完成诸如排序和过滤等更高级的功能。HTML不是一个非常精确的语言,它不区分大小写。即使不正确的HTML内容也可能被某个浏览器正确地进行显示。
XML纠正了HTML中的很多缺陷。1999年,HTML被使用XML语言构造规则改写为XHTML。XHTML文档的构造规则比HTML的要精确得多。这些规则的严格程度取决于在XHTML页面中所指定的文档类型声明(DOCTYPE)。第3章将对DOCTYPE进行更多的讨论。
从1998年起,XML已明显成为管理信息的一个强有力的方法。XML文档使数据易于共享。一系列相关的W3C推荐标准解决了在XML文档内进行转换、显示和导航的问题。第2章将会详细介绍这些推荐标准。
XML的要点总结如下:
l XML不是一个语言,它的规则用来构造其他语言;
l XML创建了用来标记内容的基于标签的语言;
l XHTML是由XML创建的语言的一种,也是对HTML的重新构造; l XML是基于SGML的。
1.1.2 XML的目标
SGML的异常复杂使W3C非常清楚地看到XML所要达到的目标。这些目标可参见http://www.w3.org/TR/REC-xml/#sec-origin-goals:
(1) XML应该在因特网上易用; (2) XML应支持多种不同的应用; (3) XML应与SGML兼容;
(4) 处理XML文档的程序应易于编写;
(5) XML中的可选特性将减到最小,理想状态为零; (6) XML文档应是清晰、易读的; (7) XML的设计应该比较快捷; (8) XML的设计应该是形式化而精练的; (9) XML文档应该易于创建; (10) XML不追求标记的简洁。
这些目标中有几点值得注意。第一,W3C希望XML是非常简单的;实际上,好几个目标都包含了“容易”和“清晰”的含义。
第二,W3C赋予了XML两个目标:供人阅读和供XML处理程序处理。XML处理程序或者解析器是用来处理XML文档的软件包。处理程序可以识别XML文档的内容,也可以读、写或修改已存在的文档,或是直接创建新的文档。
其目的是通过保持开发的简单性来打开XML处理程序的市场。严格的构造规则意味着所需要进行的处理会比较少。因而也意味着XML文档可应用于移动设备,诸如手机和PDA。
通过使文档可供人阅读,你可以更方便地使用数据,也可以更容易地开发和调试应用程序。Unicode的应用程序开发者可以使用很多不同的语言创建XML文
档。然而,其产生的问题是XML文档可能变得比较罗嗦,用XML来描述数据也会比采用其他方式更冗长。
Unicode
XML支持Unicode字符集以保证对多语言的支持。Unicode提供对231字符的支持。它包含了你可能需要的每一个字符,同时也有很多是你永远也用不上的。
可以使用8位Unicode转换格式(UTF-8)来编码Unicode字符,从而使得这些字符与它们在ASCII中的编码保持一致。显然,这提供了与老系统更好的兼容性。中文和日语这样的语言需要UTF-16编码。可以在http://www.unicode.org中了解更多关于Unicode的内容。
第三,请注意术语XML文档(document)。这个术语的含义比传统意义上的物理文档更为丰富。一些XML文档以物理形式存在,但另一些是作为遵循XML构造规则的信息流的形式创建的。例如,Web 服务以及内容以XML形式返回的数据库调用结果。
在理解了XML是什么以后,现在来深入地研究XML语言的构造规则。
1.2 XML语法
XML语言使用标签来标记文本。作为Web开发者,你应该很熟悉标记文本的含义:
上面一行是XHTML,同时也是XML。在XHTML中,
标签表示一段文本。XHTML中的所有标签都有预先定义好的含义。
XML允许你创建自己的标签,因而你可以将原先的标记改写为:
在本例中,