长文预警,可以收藏慢慢看,本文适合零基础学习,你们的三连是羽毛最大的动力
优质文章导读:
Servlet入门(零基础教程)
一文了解Java反射
目录
XML是什么
- XML的全程是EXtensible Markup Language,可扩展标记语言
- 编写XML就是编写标签,与HTML非常类似,扩展名 .xml
- 具有良好的人机可读性
XML与HTML的比较
- XML与HTML非常相似,都是编写标签
- XML没有预定义标签,HTML存在大量预定义标签
- XML重在保存与传输数据,HTML用于显示信息
XML的用途
- Java程序的配置描述文件
- 用于保存程序产生的数据
- 网络间的数据传输(例如webservice底层soap协议)
XML文档结构
- 第一行必须是XML声明
- 有且只有一个根节点
- XML标签的书写规则与HTML相同
XML声明
XML声明说明XML文档的基本信息,包括版本号与字符集,写在XML第一行
<?xml version="1.0" encoding="UTF-8"?>
//version 代表版本号1.0 encoding UTF-8 设置字符集,用于支持中文
在XML中所有的标签和属性都是可以进行自定义的,所以我们写的时候尽量让它与内容相匹配,增强可读性
例如:
<?xml version="1.0" encoding="UTF-8"?>
<!-- 人力资源管理系统 (这是注释) -->
<hr> <!-- 根节点 -->
<employee no="857857">
<name>张三</name>
<age>31</age>
<salary>4000</salary>
<department>
<dname>会计部</dname>
<address>XX大厦-A103</address>
</department>
</employee>
</hr>
如何使用IDEA创建xml文件:使用IDEA创建xml文件
目前大多数的浏览器对于xml提供了良好的校验和检查
如何使用浏览器对xml进行结构检查
XML标签书写规则
XML标签书写规则请移步此篇文章:XML标签书写规则
XML语义约束
- XML文档结构正确,但可能不是有效的(例如,员工档案XML中绝不允许出现"植物品种"标签。XML语义约束就是用于规定XML文档中允许
出现哪些元素.) - XML语义约束有两种定义方式: DTD 和 XML Schema
DTD
DTD(Document Type Definition,文档类型定义)是一种简单易用的语义约束方式.
DTD文件的扩展名为.dtd
DTD定义节点
- 利用DTD中的<!ELEMENT>标签,我们可以定义XML文档中允许出现的节点及数量
<!-- 定义hr节点下只允许出现1个employee子节点 -->
<!ELEMENT hr (employee)>
<!-- employee节点下必须包含以下四个节点,且按顺序出现 -->
<!ELEMENT employee (name,age,salary,department)>
<!-- 定义name标签体只能是文本,#PCDATA代表文本元素 -->
<!ELEMENT name (#PCDATA)>
DTD定义节点数量
- 如某个子节点需要多次重复出现,则需要在子节点后增加相应的描述符
<!-- hr节点下最少出现1个employee子节点 -->
<!ELEMENT hr (employee+)>
<!-- hr节点下可出现0-n个employee子节点 -->
<!ELEMENT hr (employee*)>
<!-- hr节点下最多出现1个employee子节点 -->
<!ELEMENT hr (employee?)>
XML引用DTD文件
- 在XML中使用<!DOCTYPE>标签来引用DTD文件
书写格式:
创建并使用DTD文件
现在有一个.xml文件,要创建.dtd文件并且添加约束
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hr SYSTEM "hr.dtd">
<!-- 人力资源管理系统 -->
<hr>
<employee no="1111">
<name>张三</name>
<age>18</age>
<salary>4000</salary>
<department>
<dname>会计部</dname>
<address>XX大厦</address>
</department>
</employee>
</hr>
创建一个.dtd文件(IDEA如何创建.dtd文件可以参考 IDEA如何创建.dtd文件)
<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT hr (employee+)> <!-- hr节点下最少出现一个employee节点 -->
<!ELEMENT employee (name,age,salary,department)> <!-- employee 节点下必须包含这四个节点,并且按顺序出现 -->
<!ATTLIST employee no CDATA ""> <!-- 约束no 标签以 CDATA的格式出现 -->
<!ELEMENT name (#PCDATA)> <!-- 使name只能以纯文本出现 -->
<!ELEMENT age (#PCDATA)>
<!ELEMENT salary (#PCDATA)>
<!ELEMENT employee.department (dname,address)>
<!ELEMENT department (#PCDATA)>
<!ELEMENT dname (#PCDATA)>
<!ELEMENT address (#PCDATA)>
XML Schema
- XML Schema 比 DTD更为复杂,提供了更多功能
- XML Schema 提供了数据类型,格式限定,数据范围等特性
- XML Schema 是W3C标准
(IDEA如何创建XML Schema文件可以参考 IDEA如何创建XML Schema文件)
如何使用在代码中体现:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.w3school.com.cn"
xmlns="http://www.w3school.com.cn"
elementFormDefault="qualified">
<xs:element name="hr">
<!-- complexType标签含义是复杂节点,包含字节点时必须使用这个标签 -->
<xs:complexType>
<xs:sequence><!-- sequence 元素要求组中的元素以指定的顺序出现在包含元素中 -->