XML和XML约束
文章目录
1.XML概述
1.1 介绍XML
HTML:Hyper Text Markup Language 超文本标记语言,由各种标签组成。
- 英文:XML eXtensible Markup Language 可扩展标记语言
- 标签组成:也是一种标记语言,文件内容由各种标签组成。
1.2 作用
- 数据交换,用于不同系统或不同数据库之间的数据交换。
- 作为配置文件,用于Spring等各种框架的配置。
数据库连接池的配置
<default-config>
<!--数据库连接配置-->
<!--驱动-->
<property name="driverClass">com.mysql.jdbc.Driver</property>
<!--连接字符串-->
<property name="jdbcUrl">jdbc:mysql://localhost:3306/day19</property>
<!--用户名-->
<property name="user">root</property>
<!--密码-->
<property name="password">root</property>
<!--与连接池相关的配置-->
<!--初始连接数-->
<property name="initialPoolSize">5</property>
<!--最大连接数-->
<property name="maxPoolSize">10</property>
<!--等待多久以后超时-->
<property name="checkoutTimeout">3000</property>
</default-config>
1.3 XML和HTML的区别
区别 | HTML超文本标记语言 | XML可扩展标记语言 |
---|---|---|
功能 | 用于表示层,直接面向用户。用于数据展示 | 用于数据访问层,用于数据的存储。 |
大小写 | 不区分大小写 | 区分大小写 |
语法严谨 | 不严谨,有错误浏览器也可以解析 | 非常严谨,只要有错误,解析器就不能解析 |
可扩展性 | 所有标签都有自己的功能,而且是固定好的 | 可以扩展的,所有的标签都是程序员自己创建出来。 |
1.4 XML的组成元素
- 文档声明
<?xml version="1.0" encoding="utf-8" ?>
声明的三个属性
version //使用的XML版本,我们取值为1.0
encoding //XML使用字符集,如果省略,默认是utf-8
standalone //很少使用,说明当前的XML文件是否是一个独立的文件,默认是yes。
- 元素ELement
如:<person>就是元素,又称为标签
//大小写区分
//命名不能有空格,不能有冒号
//每个文档只能有一个根元素
- 属性Atrribute
如<person id="110">,id是元素person的一个属性
// 属性必须出现在开始标签
// 必须使用引号,可以使用双引号也可使用单引号
// 一个标签可以有多个属性,单不能有同名属性
- 注释Comment
<!-- 注释内容 -->
- 实体字符(在xml中不能使用的字符使用转义字符替代)
说明 | 字符 | 转义字符 |
---|---|---|
小于 | < | < |
大于 | > | > |
双引号 | " | " |
单引号 | ’ | ' |
与符号 | & | & |
- 字符数据区
如果出现了大量需要转义的字符,又不想使用实体字符,可以使用字符数据区。
格式:<![CDATA[文本数据]]>
举例:
<sql>
<![CDATA[
select * from student where age < 20
]]>
</sql>
- 处理指令(很少使用)
<?xml-stylesheet type="text/css" href="文件名.css">
<!--可以导入样式。-->
2. XML文件的约束
2.1 约束的作用和分类
用来约束XML的数据,一个XML文件中能够出现哪些标签。每个标签中能够出现哪些子标签,每个标签能够有哪些属性。每个标签的主体内容可以出现哪些。
两种XML约束 |
---|
DTD约束 |
Schema约束 |
2.2 DTD约束
DTD:文档类型定义 Document Type Definition。
作用:用来约束XML文档,保证XML文件正确性和数据的有效性。
使用步骤
- 创建book.dtd约束文件(一般有现成的约束文件,不用自己写)
<!ELEMENT 书架 (书+)>
<!ELEMENT 书 (书名,作者,售价)>
<!ELEMENT 书名 (#PCDATA)>
<!ELEMENT 作者 (#PCDATA)>
<!ELEMENT 售价 (#PCDATA)>
- 创建xml文件,导入写好的dtd文件
<?xml version="1.0" encoding="UTF-8" ?>
<!--引入dtd约束文件-->
<!DOCTYPE 书架 SYSTEM "book.dtd">
<书架>
<书>
<书名>人鬼情喂鸟</书名>
<作者>保罗.克林吨</作者>
<售价>300</售价>
</书>
<书>
<书名>JavaEESSH</书名>
<作者>NewBoy</作者>
<售价>38</售价>
</书>
</书架>
导入约束文件的两个格式
<!--表示引用系统本地的DTD文件,使用范围比较窄,通常用于个人或公司或团队。-->
<!DOCTYPE 根元素 SYSTEM "DTD文件">
<!--表示公共DTD约束文件,通常在互联网上广泛使用的,后期使用这种比较多的。-->
<!DOCTYPE 根元素 PUBLIC "文件描述" "DTD文件">
2.3 Schema约束
作用:是一种用来代替DTD约束的新的方式,功能上比DTD更加强大,可以验证数据类型。本身还是一个XML文件。
扩展名:xsd- XML Schema Document
使用步骤
- 新建schema约束文件bookshelf.xsd(一般有现成的约束文件,不用自己写)
<?xml version="1.0" encoding="UTF-8" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.zmysna.cn"
elementFormDefault="qualified">
<xs:element name='书架' >
<xs:complexType>
<xs:sequence maxOccurs='unbounded' >
<xs:element name='书' >
<xs:complexType>
<xs:sequence>
<xs:element name='书名' type='xs:string' />
<xs:element name='作者' type='xs:string' />
<xs:element name='售价' type='xs:double' />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
- 创建xml文件,导入写好的dtd文件
- 导入文件的语法
<根元素 xmlns="命名空间" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="命名空间 xsd约束文件名">
</根元素>
创建xsd文件并导入
<?xml version="1.0" encoding="UTF-8" ?>
<书架 xmlns="http://www.itcast.cn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.itcast.cn bookshelf.xsd">
<书>
<书名>人鬼情喂鸟</书名>
<作者>张三</作者>
<售价>38.6</售价>
</书>
</书架>