目录
1. XML基本介绍
XML -- Extensible Markup Language,即可扩展标记语言。
XML 特点:可扩展的,标签都是自定义的;语法十分严格。
1.1 XML的作用
存储数据:通常,我们在数据库中存储数据。不过,如果希望数据的可移植性更强,我们可以把数据存储 XML 文件中。
配置文件:更多是作为各种技术框架的配置文件使用。
在网络中传输:客户端可以使用 XML 格式向服务器端发送数据,服务器接对 XML 格式数据进行解析。
1.2 XML的语法
1.2.1 XML 文档声明格式
文档声明必须为结束且必须写在第一行。
versioin:指定 XML 文档版本,是必需属性,因为不会选择 1.1,只会选择 1.0。
encoding:指定当前文档的编码,是可选属性,默认值是 utf-8。
<?xml version="1.0" encoding="UTF-8"?>
1.2.2 元素
Element 元素:是 XML 文档中最重要的组成部分。
命名规则:
- 不能使用空格,不能使用冒号
- XML 标签名称区分大小写
- XML 必须有且只有一个根元素
- XML 必须有且只有一个根元素,它是所有其他元素的父元素,比如以下 users 就是根元素。
<?xml version="1.0" encoding="utf-8" ?>
<users>
</users>
普通元素的结构开始标签、元素体、结束标签组成。
<hello>大家好</hello>
元素体:元素体可以是元素,也可以是文本。
<hello>
<a>您好</a>
</hello>
空元素:空元素只有开始标签,而没有结束标签,但元素必须自己闭合。
<close/>
1.2.3 属性
- 属性是元素的一部分,它必须出现在元素的开始标签中。
- 属性的定义格式:属性名 = "属性值",其中属性值必须使用单引或双引。
- 一个元素可以有 0 ~ N 个属性,但一个元素中不能出现同名属性。
- 属性名不能使用空格、冒号等特殊字符,且必须以字母开头。
<bean id="1" class="x"></bean>
1.2.4 注释
XML 的注释:
以 <!-- 开始,以 --> 结束
注释内容会被XML解析器忽略。
1.2.5 使用 XML 描述数据
<?xml version="1.0" encoding="UTF-8" ?>
<employees>
<employee eid="2">
<ename>林黛玉</ename>
<age>20</age>
<sex>女</sex>
<salary>5000</salary>
<empdate>2019-03-14</empdate>
</employee>
<employee eid="3">
<ename>杜甫</ename>
<age>40</age>
<sex>男</sex>
<salary>15000</salary>
<empdate>2010-01-01</empdate>
</employee>
</employees>
2. XML约束
在 XML 技术里,可以编写一个文档来约束一个 XML 文档的书写规范,这称之为 XML 约束。
常见的 XML 约束:DTD,Schema。
“用户程序员”阅读 XML 约束文档,编写 XML 文档;
软件框架编写 XML 约束文档,解析 XML 文档;
XML 约束文档规定了 XML 文档的书写规则。
2.1 DTD约束
DTD - Document Type Definition,文档类型定义,用来约束 XML 文档。规定 XML 文档中元素的名称,子元素的名称及顺序,元素的属性等。
通过框架提供的 DTD 约束文档,编写对应的 XML 文档。常见框架使用 DTD 约束有:Struts2、hibernate 等。
引入 DTD 文档到 XML 文档中有两种方式:
- 内部 DTD -- 将约束规则定义在 XML 文档中。
- 外部 DTD -- 将约束的规则定义在外部的 DTD 文件中。
创建约束文件 student.dtd
<!ELEMENT students (student+) >
<!ELEMENT student (name,age,sex)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT age (#PCDATA)>
<!ELEMENT sex (#PCDATA)>
<!ATTLIST student number ID #REQUIRED>
<!--
ELEMENT: 用来定义元素
students (student+) : 代表根元素 必须是 <students>
student+ : 根标签中至少有一个 student子元素, + 代表至少一个
student (name,age,sex): student 标签中包含的子元素,按顺序出现
#PCDATA: 是普通文本内容
ATTLIST: 用来定义属性
student number ID #REQUIRED
student子元素中 有一个ID属性叫做 number,是必须填写的
ID: 唯一 值只能是字母或者下划线开头
-->
引入约束文档到 student.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE students SYSTEM "student.dtd">
<students>
<student number="s1">
<name>布莱尔</name>
<age>22</age>
<sex>男</sex>
</student>
<student number="s2">
<name>张三</name>
<age>55</age>
<sex>男</sex>
</student>
</students>
2.2 Schema约束
Schema 是新的 XML 文档约束,比 DTD 强大很多,是 DTD 替代品。