XML概念
XML指可扩展标记语言(EXtensible Markup Language)
XML没有预定义标签,需要自行定义标签<标签></标签>
XML特点
- XML数据以纯文本格式存储
- 实现不同应用程序之间的数据通信
- 实现不同平台间的数据共享
- 实现不同平台间的数据通信
- 使用XML将不同的程序,不同的平台间联系起来
XML的作用
数据存储和数据传输,可以用来做配置文件,javaEE开发中用xml来配置文件,SSM,DUBOO分布式框架等等
XML和HTML之间的差异
HTML里面的标签是已经设计好的,我们需要学习使用XML是自己来定义标签,以<标签></标签>格式定义
一个标准的XML文档:
<?xml version="1.0" encoding="UTF-8" ?>
<books>
<book id="1001">
<name>java</name>
<author>张三</author>
<price>98.5</price>
</book>
</books>
可以看出xml是树形结构,由成对的标签构成元素,元素中间加入文本,元素之间有父子元素结构.
XML基本语法
<?xml version="1.0" encoding="UTF-8" ?>
<books>
<book id="1001">
<name>java</name>
<author>张三</author>
<price>98.5</price>
</book>
</books>
<!-- <?xml version='1.0' encoding='UTF-8'?>
文档的声明必须写在xml文档第一行,对当前xml文件进行约定:
<?xml>
文档声明标签
version
指定解析当前xml文件的xml解析器版本为1.0,encoding='UTF-8'
,当前文档编码类型
- 有且只有一个根元素
- XML文档声明必须放在文档第一行
- 所有标签必须成对出现
- XML标签严格区分大小写
- XML元素可以嵌套其他元素
- XML属性必须加引号
- XML中可以应用适当注释
XML元素
XML元素指的是开始标签到结束标签的部分,一个元素中可以包含其他元素,普通文本,属性,以上的混合
XML命名规则
- 名称可以包含字母,数字以及其他字符
- 名称不能以数字或者标点符号开始
- 名称不能以字母xml开始(xml是关键字)
- 名称不能含空格
XML约束
为了解决对数据描述的模棱两可,解析数据获取不知道取那个值,所以使用xml约束
DTD
语法自成一派,早期出现,可读性较差
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE student [
<!ELEMENT student (name,school,age,loc)> <!--指定约束student标签下只能包含子标签:name,age,school,loc四个标签,出现顺序也要一致-->
<!ELEMENT name (#PCDATA)> <!--对name标签的描述,数据类型是:#PCDATA文本类型-->
<!ELEMENT age (#PCDATA)>
<!ELEMENT school (#PCDATA)>
<!ELEMENT loc (#PCDATA)>
]>
<student>
<name>李四</name>
<school>长沙市一中</school>
<age>22</age>
<loc>长沙岳麓区</loc>
</student>
元素个数:
+ 一个或多个
* 零个或多个
? 零个或一个
Schema技术
Schema 是 DTD 的代替者,名称为 XML Schema,用于描述XML 文档结构,比 DTD 更加强大,最主要的特征之一就是XML Schema 支持数据类型
Schema 是用 XML 验证 XML 遵循 XML 的语法
Schema 可以用能处理 XML 文档的工具处理
在一个xml文档中要引入多个约束文件时得使用Schema
<?xml version='1.0' encoding='UTF-8'?>
<student
xmlns="http://www.w3school.com.cn"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.w3school.com.cn abc.xsd"> <!--引入外部Schema约束-->
<name>李四</name>
<age>22</age>
<school>长沙市一中</school>
<school>长沙市一中</school>
<loc>长沙岳麓区</loc>
</student>
<?xml version="1.0"?>
<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="student">
<xs:complexType> <!--complexType:表示当前元素是复合元素(含有子元素的称为复合元素)-->
<xs:sequence> <!--表示子元素按序列来约束-->
<xs:element name="name" type="xs:string"/>
<xs:element name="age" type="xs:string"/>
<xs:element name="school" type="xs:string"/>
<!--如果含有多个相同的子元素,就写多个-->
<xs:element name="school" type="xs:string"/>
<xs:element name="loc" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
xmlns
表示引入Schema的命名空间,来验证Schema文件结构本身是否合法,xs表示xmlns的别名targetNamespace
目标命名空间xmlns="http://www.w3school.com.cn":
引入目标命名空间elementFormDefault="qualified"
:引入xsd的全局元素的时候需要添加前缀xs
unqualified:
引入xsd的全局元素的时候不需要添加前缀xs
所有的Schema文档使用schema作为其根元素