XML 语法规则

XML 的语法规则很简单,且很有逻辑。这些规则很容易学习,也很容易使用。

XML 文档必须有根元素

XML 文档必须包含一个根元素,该元素是所有其他元素的父元素

<root>
  <child>
    <subchild>.....</subchild>
  </child>
</root>

在此例中,<note> 是根元素:

<?xml version="1.0" encoding="UTF-8"?>
<note>
  <to>George</to>
  <from>John</from>
  <heading>Reminder</heading>
  <body>Don't forget the meeting!</body>
</note>

XML 序言(XML Prolog)

这一行称为 XML 序言

<?xml version="1.0" encoding="UTF-8"?>

XML 序言是可选的。如果存在,则必须位于文档的第一行。

XML 文档可以包含国际字符,例如挪威语 øæå 或法语 êèé。

为了避免错误,您应该指定所使用的编码,并将 XML 文件保存为 UTF-8。

UTF-8 是 XML 文档的默认字符编码。

您可以在我们的字符集教程中进行学习字符编码。

提示:UTF-8 也是 HTML5、CSS、JavaScript、PHP 和 SQL 的默认编码。

所有 XML 元素都必须有结束标签

在 XML 中,省略结束标记是非法的。所有元素都必须有结束标签:

<p>This is a paragraph.</p>
<br />

注意:XML 序言没有结束标签!这不是错误。序言不属于XML本身的组成部分。它不是 XML 元素,也不需要关闭标签。

XML 标签区分大小写

XML 标签区分大小写。标签 <Letter> 与标签 <letter> 不同。

开始和结束标签必须使用相同的大小写:

<message>This is correct</message>

注释:打开标签和关闭标签通常被称为开始标签和结束标签。不论您喜欢哪种术语,它们的概念都是相同的。

XML 元素必须正确嵌套

在 HTML 中,您可能会看到没有正确嵌套的元素:

<b><i>This text is bold and italic</b></i>

在 XML 中,所有元素必须正确地相互嵌套:

<b><i>This text is bold and italic</i></b>

在上面的例子中,正确嵌套的意思是:由于 <i> 元素是在 <b> 元素内打开的,那么它必须在 <b> 元素内关闭。

XML 属性值必须加引号

与 HTML 类似,XML 也可拥有属性(名称/值对)。

在 XML 中,XML 的属性值须加引号:

<note date="12/11/2007">
  <to>George</to>
  <from>John</from>
</note>

实体引用

在 XML 中,一些字符拥有特殊的意义。

如果你把字符 "<" 放在 XML 元素中,会发生错误,这是因为解析器会把它当作新元素的开始。

这样会产生 XML 错误:

<message>if salary < 1000 then</message>

为了避免这个错误,请用实体引用来代替 "<" 字符:

<message>if salary < 1000 then</message>

在 XML 中,有 5 个预定义的实体引用:

&lt; < 小于
&gt; > 大于
&amp; & 和号
&apos; ' 单引号
&quot; " 引号

注释:在 XML 中,只有字符 "<" 和 "&&quot; 确实是非法的。> 是合法的,但是用 > 来代替它是一个好习惯。

XML 中的注释

在 XML 中编写注释的语法与 HTML 的语法很相似:

<!-- This is a comment -->

注释中间不允许有两个破折号:

<!-- This is an invalid -- comment -->

XML 中保留空白

HTML 会把多个连续的空格字符裁减(合并)为一个,在 XML 中,文档中的空格不会被删节:

XML:	Hello           George

HTML:	Hello George

XML 将新行存储为 LF

在 Windows 应用程序中,换行通常以一对字符来存储:回车符 (CR) 和换行符 (LF)。这对字符与打字机设置新行的动作有相似之处。

Unix 和 Mac OSX 使用 LF。

旧的 Mac 系统使用 CR。

XML 将新行存储为 LF。

格式良好的 XML

符合上述语法规则的 XML 文档被称为“格式良好”的 XML 文档。