XML简介
1、什么是 XML文件
XML即可扩展标记语言(EXtensible Markup Language)。标记是指计算机所能理解的信息符号,通过此种标记,计算机之间可以处理包含各种信息的文章等。
通俗的讲,XML文件一般用来保存有关系的数据。除此之外,在程序开发中,我们通常用来做各种框架的配置文件(PS:经过时代发展,目前xml替代方案有很多,比如更加轻量级的json,yml,各有优缺点,这里暂时不做对比)。
归纳如下:
①、XML 指可扩展标记语言(EXtensible Markup Language);
②、XML 是一种标记语言,很类似 HTML;
③、XML 的设计宗旨是传输数据,而非显示数据(HTML作用是显示数据);
④、XML 标签没有被预定义,需要自行定义标签;
⑤、XML 被设计为具有自我描述性;
⑥、XML 是 W3C 的推荐标准。
2、XML 文件组成
主要由如下六大部分组成:
①、文档声明
②、元素
③、属性
④、注释
⑤、CDATA区、特殊字符
⑥、处理指令(processing intruction)
2.1、文档声明
在编写 XML 文档时,需要首先使用文档声明,声明 XML 文档的类型。
①、最简单的语法:
<?xml version="1.0" ?>
②、用 encoding 属性说明文档的字符编码:
<?xml version="1.0" encoding="utf-8" ?>
常见的字符编码:gbk,gb2312,utf-8,基本上我们使用utf-8,全世界通用,不会出现乱码的现象。
③、用 standalone 属性说明文档是否独立:
<?xml version="1.0" encoding="utf-8" standalone="no" ?>
standalone有两个属性,yes和no。如果是yes,则表示这个XML文档时独立的,不能引用外部的DTD规范文件;如果是no,则该XML文档不是独立的,表示可以用外部的DTD规范文档。
2.2、元素
①、XML 元素指的是 XML 文件中出现的标签,一个标签分为开始标签和结束标签,分为两种写法:
1、包含标签体:<user>Tom</user>
2、不包含标签体:<user></user>,也可以简写为<user/>
②、一个标签中也可以嵌套其他的若干个子标签。但所有的标签必须合理的嵌套,绝不允许交叉嵌套:
合理写法:<users>
<name>Tom</name>
</users>
错误写法:<users><name>Tom</users></name>
③、格式良好的 XML 文档必须有且仅有一个根标签,其他的标签都是这个标签的子孙标签。
④、对于 XML 标签中出现的所有空格和换行,XML 解析都会当做标签内容进行处理。比如下面两个是不一样的
1、<name>Tom</name>
2、<name>
Tom
</name>
注意:由于在 XML 中,空格和换行都会作为原始内容被处理,所以在编写 XML 文件的时候使用换行和缩进等方式来让原文件中的内容清晰可读的良好习惯可能要被迫改变。
这和 HTML 标签的书写是有点区别的。
⑤、元素的命名规范:
1、区分大小写,例如:<P>和<p>是不一样的
2、不能以数字或下划线“-”开头
3、不能以 xml(或XML,Xml)作为开头
4、不能包含空格
5、名称中间不能包含冒号“:”
2.3、属性
①、一个元素可以有多个属性,每个属性都有它自己的名称和取值,比如:
<input name="tom" />
②、属性值一定要用双引号或单引号引起来
③、属性的命名规范和元素的命名规范一样
④、XML 文件中,元素属性所代表的信息,也可以改为用子元素来表示,比如:
<input name="tom" />
可以写为:
<input>
<name>tom</name>
</input>
2.4、注释
①、XML 文件中注释采用:"<!-- 注释 -->" 这样的格式
②、XML 声明之前不能有注释
③、注释不能嵌套,比如下面不合规范:
<!-- 全局注释 <!-- 局部注释 -->-->
2.5、CDATA区和特殊字符
①、在编写 XML 文档时,有些内容可能不想让解析引擎解析执行,而是当做原始内容处理,那么我们就可以把这些内容放到 CDATA区里面,对于 CDATA 区里面的内容,XML 解析程序不会处理,而是原封不动的输出。
语法:<![CDATA[内容]]>
比如:<![CDATA[
<input>
<name>tom</name>
</input>
]]>
注意:CDATA和[内容]之间不能有空格
②、转义字符:对于一些单个字符,如果想显示其原始样式,可以使用转义的形式
2.6、处理指令processing instruction
①、用来解析引擎如何解析 XML 文档内容
比如:在 XML 文档中可以使用 xml-stylesheet 指令,通知 XML 解析引擎,应用 CSS 文件显示 XML 文档内容
<?xml-stylesheet type="text/css" href="a.css"?>
处理指令必须以<? 开头,以 ?> 结尾
3、XML 约束
3.1、什么是 XML 约束?
在 XML 文档中,可以编写一个文档来约束它的书写规范,这称为 XML 约束
3.2、为什么需要 XML 约束?
因为往往我们写一个 xml 文档,里面的元素基本上是需要确定的,以便于我们方便的解析数据。如果没有约束,那编写 XML 文档的人员可以随便写,而且万一元素不小心写错了,这也会对我们后期解析造成困难。如果有 XML 约束以后,那 XML 文档的元素便是确定的,不会发生写错的情况(写错了文档会提示报错的)
3.3、常用的约束技术
①、XML DTD(Document Type Definition)
比较简单的约束文档,保证XML文件数据的正确性和有效性。
②、XML Schema
由xml文件编写的描述了xml的文档的结构,弥补了dtd约束文档的缺陷(dtd定义的标签里面的值不能进行限制),Schema支持命名空间,支持数据类型,并且支持自定义数据类型,功能更完善,更强大,提供了无限的可扩展性。而且Schema是W3C的标准。