详解xml约束中schema约束
开始时间:2018年9月27日20:56:14
结束时间:2018年9月27日23:18:30
累计时间:2小时
xml自定义:
一: 约束
1: dtd约束:
2: schema 约束:
优点: 比dtd 更能更加强大。 提供了更加丰富的数据类型。
XML Schema 可针对未来的需求进行扩展
XML Schema 更完善,功能更强大
XML Schema 基于 XML 编写 (schema本质上就是一个 xml文件)
XML Schema 支持数据类型 (提供的更加丰富的数据类型)
XML Schema 支持命名空间
(同一个xml文件可以被不同的schema约束。 通过名称空间约束)通过名称空间来区分多个schema约束。
那么何为不同的名称空间?https://blog.****.net/CristianoJason/article/details/51147028
好比同一个文件夹下不能存放同名文件,放在不同的文件夹下 即可。所以放在不同包下面就ok啦。
3: 原理: 图解:
4: 入门的案例:
a: 编写一个被约束的文件: person.xml
b: 编写一个schema文件: 本质上也是一个xml文件:
后缀名称 xsd
c: 文件内容的说明:
<?xml encoding="" version=""?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.example.org/person"
elementFormDefault="qualified">
</schema>
解释说明:
schema: xml当中的根标签:
xmlns="http://www.w3.org/2001/XMLSchema"
当前的xml文件是一个约束文件。
targetNamespace="http://www.example.org/person"
被约束文件使用。 被约束的文件通过引入该地址,引入当前的schema文件。
elementFormDefault="qualified">
元素的默认格式
d: 开发具体的约束:
(1) 看xml文件当中有多少个元素: <element>
(2)观察该元素是简单的元素还是复杂的元素:
复杂元素:
<element name="元素的名称" >
<complexType>
<sequence>
//简单元素: name="简单元素的名称" type="简单元素值的类型"
<element name="" type=""/>
</sequence>
</complexType>
</element>
复杂元素:
<sequence> 表明元素必须按照顺序出现。
<all> 元素的顺序可以任意。 但是元素出现的次数有且仅有一次。
<choice> 简单元素只能出现其中的一个。
具体可以看这个人的:
简单元素: https://blog.****.net/CristianoJason/article/details/51282739简单元素的约束写的很清楚了
复杂元素:https://blog.****.net/CristianoJason/article/details/51327041(看了这个人两篇写的还行)
*简易元素:仅包含文本(文本可以有很多类型,也可以是自定义的类型),但不会包含任何其他的元素或属性。
maxOccurs="unbounded" 出现的次数 不受任何的限制。 任意次。
maxOccurs="1" 简单元素只能出现一次; 修改值, 指定简单元素出现的次数。
复杂元素可以层层嵌套 (如果复杂元素里面还是复杂元素)
e: 在被约束文件当中引入schema文件:(图解)
xmls:是可以自定义的名字
右边的 xsi:也可以自定义,但是官方建议xsi (为了防止和下面重名)
instance意思是实例 指的是右边是左边约束的一个实例。
右边第三个 有两个参数
5:schema约束 分两种:
标签约束:类似于
这种约束
<sequence> 表明元素必须按照顺序出现。
<all> 元素的顺序可以任意。 但是元素出现的次数有且仅有一次。
<choice> 简单元素只能出现其中的一个。
约束属性:
(1)在</complexType> 之前: 写一个<attribute name="" type="" use="">
name:属性的名称: 自定义
type: 属性的类型: int string 约束文件提供的合法的类型
use:属性的约束:
值:required 属性必须:
optional 可选择
prohibited 禁止的: 属性不能出现
再放一个例子
执行约束的文件:
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.example.org/person"
xmlns:tns="http://www.example.org/person"
elementFormDefault="qualified">
<element name="person">
<complexType>
<!-- <sequence> -->
<!-- <all> -->
<choice>
<!-- 简单元素: -->
<element name="name" type="string" maxOccurs="unbounded"></element>
<element name="sex" type="string"></element>
<element name="des" type="string "></element>
</choice>
<!-- </all> -->
<!-- </sequence> -->
<!-- 加入属性约束 -->
<attribute name="id" type="int" use="required">
</attribute>
<attribute name="code" type="string" use="prohibited"></attribute>
</complexType>
</element>
</schema>
被约束的文件:
<?xml version="1.0" encoding="UTF-8"?>
<person
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.example.org/person"
xsi:schemaLocation="http://www.example.org/person person.xsd"
id="21">
<name>ss</name>
<name>ss</name>
<name>ss</name>
<name>ss</name>
</person>