XML 文档的结构
XML 文档的组成
一个XML文档由两部分构成:第一部分是文档序言,第二部分是文档元素(节点)。
1.文档序言
文档序言通常位于XML文档的顶端,根元素之前出现,它是一个特定的包含XML 文档设定信息的部分。XML 文档序言由如下几个部分组成:
- XML 声明:用来设置XML文档解析时所需的基本参数。
- 处理指令:为某个特定类型的软件反馈一条特殊的指令。
- 文档类型定义:用来设置更多高级的信息,如实体、属性及有效性相关的信息。
- 注释:用于提醒XML文档作者或临时标注出文档中不完善的部分。
2.文档元素
XML 文档元素形成的是一个树状结构,因此文档元素也被称为根元素。根元素包含了文档的所有其他元素和数据内容。
XML 文档的声明
XML 文档声明是为XML 解析器进行文档处理时提供相关信息的一个很小的配置信息集合。每一个XML 文档应当包含一个XML 声明,并且XML 声明必须放在文档的第一行。XML 声明的语法格式如下所示:
<?xml 属性1 属性2 ... ?>
XML 声明中包括三个属性,每个属性设置的具体形式为:属性名称="属性值"。其中属性值需要是使用双引号或者单引号括起来,多个属性之间使用空格进行分隔。XML 声明中的三个属性的名称分别是:version、encoding和standalone。
1.version
version属性用来声明XML 文档所遵循的XML 标准版本。现在通常情况下该属性的值都是1.0,尽管 XML 1.1 已经称为 W3C 的推荐标准,但是大部分的 XML 解析器还是采用 XML 1.0 标准。version 是 XML 声明中必须包含的一个属性。
2.encoding
encoding 属性用来告诉 XML 解析程序当前 XML 文档使用什么样的字符编码。该属性是可选的。当 XML 声明中没有明确给出字符编码方式时,XML 解析程序将默认为 XML 文档采用的是 UTF-8 字符编码。
3.standalone
standalone 属性定义了是否可以在不读取任何其他文件的情况下处理该文档。例如,XML 文档没有引用任何其他文件,则可以指定属性值为 yes。如果 XML 文档引用其他描述该文档可以包含的文件,则可以指定属性值为 no。因为 no 是 standalone 属性默认的属性值,所以较少会在 XML 声明中看到 standalone 属性。
需要注意的是,如果同时设置了 encoding 和 standalone 属性,standalone 属性必须位于 encoding 属性之后。
XML 文档的处理指令
XML 的处理指令简称PI(Processing Instruction),其用途是为XML 解析器提供传送给应用程序或脚本程序的信息,也可以利用处理指令来指定应用程序处理或显示文档的方式。XML 文档开头的声明语句就是处理指令的一个特例。
处理指令一般具有下列语法格式:
<? 目标程序名 指令 ?>
”目标程序名“是指指令被引导到的处理软件或脚本程序的名字,需要注意大写字母或小写字母的 xml、xsl 等名称都已被保留,不能再作为其他处理软件或脚本程序的名字;“指令”是被传送到处理软件或脚本程序的信息,可由除了“?>”字符之外的任何连续字符组成。
可以在 XML 文档中使用的特殊处理指令是根据文档的解析器来决定的。如果使用IE浏览器作为 XML 解析器,则可使用标准处理指令来高速 IE 浏览器如何处理或显示文档。
例如,下面的代码指定了一个到 CSS 样式表的引用:
<?xml-stylesheet type="text/css" href="mystyle.css" ?>
处理指令中的第一项是一个名字,称为指令的目标。上面的名字是“xml-stylesheet”。以xml开头的名字被保留为 XML 专用的处理名字。后面的指令告诉 IE 浏览器使用 mystyle.css 的层叠样式表来显示该文档。
可以将处理指令添加到 XML 文档中的任何地方,即可将处理指令放置在文档的序言中,也可放置在元素的内容中。此外,在需要时还可以将处理指令放置在文档类型定义(DTD)中,只要处理指令不是放在 DTD 文档的标记之中即可。
参考:
《XML 实用教程》 陈作聪、苏静、王龙等编著