分类:
2008-05-27 22:01:39
本文节选于《Programming PHP》第二版(中译名《PHP程序设计》第二版,Haohappy等译,电子工业出版社出版)
XML(eXtensible Markup Language,可扩展标识语言),是一种标准化的数据格式。它看起来有点类似HTML,也有标签(
在很多情况下你可能会用到 XML。因为它是一种数据传送的通用格式,其他程序可以通过提取信息(解析)或者用HTML显示(转换)的方式让你使用XML文件。本章介绍如何使用 PHP内置的XML解析器,也介绍了如何使用可选的XSLT扩展来转换XML。我们还会简要介绍如何生成XML文档。
最近,XML已经被用于远程过 程调用(XML-RPC)。客户端将函数名和参数值用XML编码后通过HTTP发送至服务器,服务器收到后解码函数名和值,再决定如何处理,最后返回一个 XML编码的响应值。XML-RPC已经被证明是一种集成用不同语言编写的应用程序组件的好方法。在本章中,我们将会介绍如何编写XML-RPC服务器和 客户端。
11.1 入门指南
Lightning Guide to XML XML
大多数XML文档由元素(类似于HTML标签)、实体和规则数据组成。例如:
在HTML中,常常可以用不封闭的标签,最常见的例子:
但在XML中,这样是非法的。XML要求每个开始标签都必须有一个对应的结束标签。对于没有包含任何事物的标签,例如表示断行的
,XML使用如下语法:
标签可以嵌套但不能重叠,例如这样是合法的:
但这样是非法的,因为book和title标签重叠了:
XML也要求文档以处理指令开始中,以确定所使用的XML版本(或其他内容,如编码)。例如:
对于具有良好格式的XML文档,最重要的是文件顶级层次中只能有一个元素,如下面的格式是良好的:
下面的格式则是糟糕的,因为有三个元素在最顶级层次并列存在:
XML文档通常不是完全与众不同。XML文档中特定的标签、属性和实体,还有支配它们如何嵌套的规则构成了文档结构,有两种 方法可用于记录这种结构:DTD(Document Type Definition,文档类型定义)和Schema。DTD和Schema用来验证文档,也就是为了保证XML文档遵循其文档类型的规则。
大多数XML文档不包含DTD。许多XML文档用一个给定DTD的名称和位置(文件或URL)的标签将DTD指定为外部文档:
有时将一个XML封装到另一个XML是很方便的。例如一个显示邮件信息的XML可能会有一个带有附件的attachment元素。如果附件文件也是一个XML文档,就形成了一个
嵌套XML文档。如果邮件信息文件中有一个body元素(邮件主体),并且所带的文件也是XML格式,且也含有一个body元素,但是该元素与前者有着完全不同的DTD规则,那怎么办呢? 如何使body在文件的各部分含义不同但又是合法的?
这个问题可以用命名空间(或称名字空间,namespace)。命名空间可让你限定XML标签,如:email:body和human:body。
XML还有很多内容我们无法在此介绍,想更详细了解XML,可以阅读Erik Ray所著的《Learning XML》(由O'Reilly出版)。如果需要一本XML语法和标准的完全参考,可以阅读Elliotte Rusty Harold和W. Scott Means所著的《XML in a Nutshell》(由O'Reilly出版)。