跳到主要内容

05、XML 语法规则

XML是自描述的数据传输语言

XML的语法规则很简单,且很有逻辑

XML的语法规则很容易学习,很容易记住,更很容易使用

XML 文档必须有根元素

XML必须包含根元素,它是所有其他元素的父元素,

比如以下 XML 文档中 root 就是根元素

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

下面XML 文档中 note 是根元素

<?xml version="1.0" encoding="UTF-8"?>
<note>
  <to>小明</to>
  <from>小红</from>
  <heading>短信</heading>
  <body>I miss you so much</body>
</note>

XML 声明

XML声明部分的可选部分,如果存在需要放在文档的第一行,如下所示:

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

这个声明包含 XML 版本(1.0)文件编码格式(UTF-8)

虽然声明是可选的,但我们推荐你的 XML 文档都要有 XML 声明

所有的 XML 元素都必须有一个关闭标签

在HTML4 中,某些元素不必有一个关闭标签

<p>这是一个段落。
<br>

但在XML 中,省略关闭标签是非法的。所有元素都 必须 有关闭标签

<p>这是一个段落。</p>
<br />

你也许已经注意到 XML 声明没有关闭标签。这不是错误 声明不是 XML 文档本身的一部分,它没有关闭标签

XML 标签对大小写敏感

XML 标签 对大小写敏感。

标签<Letter> 与标签 <letter> 是不同的

必须使用相同的大小写来编写打开标签和关闭标签

<Message>这是错误的</message>
<message>这是正确的</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>Tove</to>
<from>Jani</from>
</note>

这个才是正确的

<note date="12/11/2007">
<to>Tove</to>
<from>Jani</from>
</note>

第一个文档中的错误是:note 元素中的 date 属性没有加引号

实体引用

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

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

这样会产生 XML 错误

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

看到红色部分了没,那就是表示 XML 解析器出错了,出错第地方用红色显示

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

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

XML 有 5 个预定义的实体引用

引用 实体 描述
&lt; < 小于号
&gt; > 大于号
&amp; & 与号
&apos; ' 单引号
&quot; " 双引号

在XML 中,只有字符 "`<" 和 "&" 是非法的。大于号是合法的 用实体引用来代替它是一个好习惯

XML 中的注释

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

XML注释以 <!-- 开头,以 --> 结尾,可以跨行,但不可以嵌套

这是注释

<!-- This is a comment -->

这也是注释

<!-- author: DDKK.COM 弟弟快看,程序员编程资料站(www.ddkk.com)-->
<!-- Copyright © 2015-2065 www.ddkk.com. All rights reserved. -->

XML 中的空格会被保留

HTML 会把多个连续的空格字符合并为一个

"Hello           Tove" 输出为 "Hello Tove"

在XML 中,文档中的空格不会被合并

XML 以 LF 存储换行

XML以 换行符(\n)) 存储换行

在Windows 中,换行通常以 回车换行符(\r\n) 来存储

在Unix 和 Mac OSX 中,换行以 换行符来存储(\n)

在旧的Mac 系统中,换行以 回车符(\r) 来存储