首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 开源 FAQ 第二书店 博文视点 程序员
频道: 研发 数据库 中间件 信息化 视频 .NET Java 游戏 移动 服务: 人才 外包 培训
    图书品种:235680
       
热门搜索: ASP.NET Ajax Spring Hibernate Java

XML(eXtensible Markup Language,可扩展标识语言),是一种标准化的数据格式。它看起来有点类似HTML,也有标签(<example>like this</example>)和实体(如&amp;)。但和HTML不一样的是,XML设计的目的是为了便于被解析,并且在XML文档中你要遵循很多规则(哪些是你可以做的,哪些是你不能做的)。现在,在出版、工程、医药等很多领域,XML已经成为一种标准化的数据格式。XML可用于远程过程调用(RPC, Remote Procedure Calls)、数据库、商品订单等等。

在很多情况下你可能会用到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标签)、实体和规则数据组成。例如:

<book isbn="1-56592-610-2">

  <title>Programming PHP</title>

  <authors>

    <author>Rasmus Lerdorf</author>

    <author>Kevin Tatroe</author>

    <author>Peter MacIntyre</author>

  </authors>

</book>

在HTML中,常常可以用不封闭的标签,最常见的例子:

<br>

但在XML中,这样是非法的。XML要求每个开始标签都必须有一个对应的结束标签。对于没有包含任何事物的标签,例如表示断行的<br>,XML使用如下语法:

<br />

标签可以嵌套但不能重叠,例如这样是合法的:

<book><title>Programming PHP</title></book>

但这样是非法的,因为book和title标签重叠了:

<book><title>Programming PHP</book></title>

XML也要求文档以处理指令开始中,以确定所使用的XML版本(或其他内容,如编码)。例如:

<?xml version="1.0" ?>

对于具有良好格式的XML文档,最重要的是文件顶级层次中只能有一个元素,如下面的格式是良好的:

<?xml version="1.0" ?>

<library>

  <title>Programming PHP</title>

  <title>Programming Perl</title>

  <title>Programming C#</title>

</library>

下面的格式则是糟糕的,因为有三个元素在最顶级层次并列存在:

<?xml version="1.0" ?>

<title>Programming PHP</title>

<title>Programming Perl</title>

<title>Programming C#</title>

XML文档通常不是完全与众不同。XML文档中特定的标签、属性和实体,还有支配它们如何嵌套的规则构成了文档结构,有两种方法可用于记录这种结构:DTD(Document Type Definition,文档类型定义)和Schema。DTD和Schema用来验证文档,也就是为了保证XML文档遵循其文档类型的规则。

大多数XML文档不包含DTD。许多XML文档用一个给定DTD的名称和位置(文件或URL)的标签将DTD指定为外部文档:

<!DOCTYPE rss PUBLIC 'My DTD Identifier' 'http://www.example.com/my.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出版)。

查看所有评论(0)条】

最近评论



正在载入评论列表...
热点评论