<desc>matchless beauty</desc>
</character>
<character>
<name>Loyal Dog</name>
<desc>sleepy</desc>
</character>
</characters>
<plot>
Cliff meets Lovely Woman. Loyal Dog sleeps, but wakes up to bark
at mailman.
</plot>
<success type="bestseller">4</success>
<success type="bookclubs">9</success>
</book>
</books>
XML
元素和属性名可以包含大写字母
A-Z
、小写字母
a-z
、数字
0-9、一些特殊字符和非英文字符以及三种标点
符号:连字符、下划线和句点。名字中不能出现其他标点符号。
XML 是大小写敏感的。这个例子中,<Book>
和
<book> 描述了两种不同的元素。两种形式都允许。使用
<Book>
和
<book> 描述两种不同的元素可能不是一种好办法,因为很容易出现笔误。
每个
XML
文档都有且只有一个根元素。根元素是
XML 文档中惟一没有父元素的元素。上例中的根元素是
<books>
。多数
XML 文档包含父元素和孩子元素。<books>
元素只有一个子元素,即
<book>。<book> 元
素有四个子元素,
<title>、<characters>、<plot>
和
<success>。<characters> 元素有三个子元素,
都是
<character>
元素。每个
<character>
元素都有两个子元素,即
<name>
和
<desc>。
除了形成父子关系的元素嵌套之外,
XML 元素还可以具有属性。属性是附加到元素起始标记上的名值对。名称和
“
值之间用等号
=”
分开。值用单引号或双引号括起来。上面的清单
1 中,<success> 元素有两个属
性,
"bestseller"
和
"bookclubs"
。关于属性的用法在
XML 开发者之间有不同的考虑。多数包含在属性的
信息也可以放在子元素中。一些开发者坚持认为属性信息应该是元数据,即关于数据的信息,而不是数据本身。
数据本身应该包含在元素中。是否使用属性实际上取决于数据的性质以及如何从
XML 中提取数据。
XML 的力量
XML
的优点之一是比较简单,可以使用简单的文本编辑器或者字处理程序来编写
XML,不需要专门的工具或软件。
XML 的基本语法由嵌套元素组成,部分元素具有属性和内容。元素通常包括两个标记,一个起始标记和一个结束
标记,分别用
<tag >
和
< /tag > 表示。XML 大小写敏感,而且空白是有意义的。看起来和众所周知的
HTML
很相似,但和
HTML
不同的是
XML 允许用更具描述性的名称命名标记。XML 的其他优点包括自描述、同
时供人类和机器读取、支持
Unicode(这使它支持不同语言的国际化)、严格的语法和解析要求。不幸的是,
UTF-8
在
PHP5
中有问题,这一不足也是推动
PHP6 开发的动力之一。
XML 的弱点
XML 非常罗嗦,带来的后果是存储体积大,消耗带宽多。尽管人们应该能够读取它,但是很难想象一个人会去阅
读包含
7
百万个节点的
XML 文件。最基本的解析器功能支持的数据类型不多,因此处理不规则或少见的数据
(经常会遇到这种情况)成为最主要的困难。
结构良好的
XML
符合全部
XML
语法规则的
XML
文档是结构良好的。结构不良好的文档从技术上讲就不是
XML。<br> 之类的
HTML
标记在
XML
中是不允许的,要想成为结构良好的
XML
,必须写成
<br />。解析器不能正确解析结构不良
好的
XML。此外,XML 文档有且只能有一个根元素。可以将根元素看成是有无穷层的文件柜。虽然只有一个文件
柜,但是在其中放什么和放多少没有什么限制。有数不清的抽屉和夹子可以存放信息。