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 实用教程》 陈作聪、苏静、王龙等编著

XML 文档的结构的更多相关文章

  1. 【Win10 应用开发】自适应Toast通知的XML文档结构

    老规矩,在开始之前老周先讲个故事. 话说公元2015年7月20日,VS 2015发布.于是,肯定有人会问老周了,C#6有啥新特性,我学不来啊.学不来的话你应该检讨.老周比较保守地计算一下,学会C# 6 ...

  2. Win 10 开发中Adaptive磁贴模板的XML文档结构,Win10 应用开发中自适应Toast通知的XML文档结构

    分享两篇Win 10应用开发的XML文档结构:Win 10 开发中Adaptive磁贴模板的XML文档结构,Win10 应用开发中自适应Toast通知的XML文档结构. Win 10 开发中Adapt ...

  3. 【Win 10应用开发】把文件嵌入到XML文档

    把文件内容嵌入(或存入)到XML文档中,相信很多朋友会想到把字节数组转化为Base64字符串,再作为XML文档的节点.不过,有人会说了,转化后的base64字符串中含有像“+”这样的符号,写入到XML ...

  4. iOS网络编程笔记——XML文档解析

    今天利用多余时间研究了一下XML文档解析,虽然现在移动端使用的数据格式基本为JSON格式,但是XML格式毕竟多年来一直在各种计算机语言之间使用,是一种老牌的经典的灵活的数据交换格式.所以我认为还是很有 ...

  5. Java高级特性 第13节 解析XML文档(1) - DOM和XPath技术

    一.使用DOM解析XML文档 DOM的全称是Document Object Model,也即文档对象模型.在应用程序中,基于DOM的XML分析器将一个XML文档转换成一个对象模型的集合(通常称DOM树 ...

  6. 解析XML文档大致流程以及相关方法

    ---恢复内容开始--- 使用dom解析XML文档的大致流程(要导入dom4j)1:创建SAXReader2:使用SAXReader读取xml文档,并生成对应的Document对象,该对象保存了该文档 ...

  7. Spring学习----- Spring配置文件xml文档的schema约束

    1.配置文件示例. <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="htt ...

  8. 关于Spring配置文件xml文档的schema约束

    最开始使用spring框架的时候,对于其配置文件xml,只是网上得知其使用方法,而不明其意.最近想着寻根问底的探究一下.以下是本文主要内容: 1.配置文件示例. <?xml version=&q ...

  9. [Xcode 实际操作]七、文件与数据-(16)解析XML文档

    目录:[Swift]Xcode实际操作 本文将演示如何解析XML文档. 项目中已添加一份XML文档:worker.xml <?xml version="1.0" encodi ...

随机推荐

  1. 2014ACM/ICPC亚洲区域赛牡丹江站现场赛-A ( ZOJ 3819 ) Average Score

    Average Score Time Limit: 2 Seconds      Memory Limit: 65536 KB Bob is a freshman in Marjar Universi ...

  2. C/C++获取当前系统时间

    个人觉得第二种还是比较实用的,而且也是最常用的~ 不过当计算算法耗时的时候,不要忘记second,不能只要用Milliseconds来减,不然后出现负值,若是算法耗时太长就得用minutes啦.再不然 ...

  3. Easypack容器系列之:Nexus 3:Docker私库

    Nexus作为私库管理最为流行的工具之中的一个,用于包的管理和Docker镜像管理的私库管理场景中非经常常使用.Easypack利用最新版本号的oss版Nexus作为基础镜像用于提供相似服务. 本文将 ...

  4. 通过浏览器查看nginx服务器状态配置方法

    通过浏览器查看nginx服务器状态配置方法 投稿:junjie 字体:[增加 减小] 类型:转载 这篇文章主要介绍了通过浏览器查看nginx服务器状态配置方法,本文讲解开启nginx-status的配 ...

  5. mongoDB 获取最后插入的文档的ObjectID/_id方法

    http://stackoverflow.com/questions/3338999/get-id-of-last-inserted-document-in-a-mongodb-w-java-driv ...

  6. TCP/IP --概述

    分层 网络协议通常分不同层次进行开发,每一层分别负责不同的通信功能.一个协议族,比如T C P / I P,是一组不同层次上的多个协议的组合.T C P / I P通常被认为是一个四层协议系统.,如图 ...

  7. 关于angularjs在IE里的坑——F12工具打开,功能正常,关闭之后,angularjs not working

    前端时间在做项目的时候,用到了angularjs,期间,发现了一个奇葩的问题,就是在IE11浏览器下,点击下方图1上箭头所示的位置,将此处的开关变为图2中箭头所示的样子,但是发觉没有反应,开关还是灰色 ...

  8. 【转载】checkbox复选框的一些深入研究与理解

    转载来自:原创文章,转载请注明来自张鑫旭-鑫空间-鑫生活[http://www.zhangxinxu.com] 一.一开始的唠叨最近忙于开发,自淫于项目的一步步完工,心浮躁了.舍近而求远,兵家之大忌. ...

  9. C++语言基础(14)-typeid

    typeid可用来判断类型是否相等: 例如有下面的定义: char *str; ; ; float f; 类型比较 结果 类型比较 结果 typeid(int) == typeid(int) true ...

  10. Spring 读取配置文件(一)

    注册 @Configuration 标识的类,spring 读取配置文件的时候该类会被自动装载 package cn.com.receive;import org.springframework.be ...