一、定义
XML Schema文件自身就是一个XML文件,但它的扩展名通常为.xsd,schema约束最大的作用是为了验证xml文件的规范性的,是为了解决dtd约束不够的问题,相应的它的配置就变得比较复杂。
注意: 一个xml文件可以引用多个schema约束,但是只能引用一个DTD约束。
如果有多个schema约束,我们可以在文档引用的时候
<根标签
xmlns:aa ="约束文档名称空间1"
xmlns:bb ="约束文档名称空间2"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="约束文档名称空间 xsd约束文件名称">
<aa:name></aa:name>
<bb:name></bb:name>
二、文档声明(创建文档后自动生成)
<?xml version="1.0" ncoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="本文档名称空间"
xmlns="本文档名称空间(缺省)"
elementFormDefault="qualified">
<xs:schema> 是所有XSD文档的根元素,其属性描述文档的名空间及文档引用
xmlns:xs="..." 指示使用xs:作前缀的元素、属性、类型等名称是属于...名称空间的
targetNamespace="..." 指示本文档定义的元素、属性、类型等名称属于...名称空间
xmlns="..." 指示缺省的名空间是...,即没有前缀的元素、属性、类型等名称是属于该名称空间的
elementFormDefault="qualified" 指示使用本XSD定义的XML文档所使用的元素必须在本文档中定义且使用名称空间前缀
三、文档引用
<根标签 xmlns="约束文档名称空间"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="约束文档名称空间 xsd约束文件名称">
xmlns="..." 指示本文档缺省的名空间,即没有前缀的所有的元素应在该空间中定义
xmlns:xsi="..." 指示本文档要引用...名称空间定义的名称,其前缀是xsi
xsi:schemaLocation="... xxx" 指示本文档要引用的...名称空间的XSD文档是xxx
四、元素声明
1.简单元素
<schema xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.mark.com/teacher"
elementFormDefault="qualified">
<element name="teachers"></element>
<element name="teacher"></element>
<!-- 以下两个是简单元素 -->
<element name="name" type="string"></element>
<element name="age" type="int"></element>
</schema>
2.复杂元素(嵌套)
<schema xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.mark.com/teacher"
elementFormDefault="qualified">
<element name="teachers"></element>
<!-- 这是一个复杂元素 -->
<element name="teacher">
<!-- 声明这是一个复杂元素 -->
<complexType>
<!-- 下面子元素是有序的 -->
<sequence>
<!-- 以下两个是简单元素 -->
<element name="name" type="string"></element>
<element name="age" type="int"></element>
</sequence>
</complexType>
</element>
</schema>
五、实例
1.文档声明
<schema xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.mark.com/teacher"
elementFormDefault="qualified">
<element name="teachers">
<complexType>
<sequence maxOccurs="unbounded"> <!--maxOccurs最大出现次数不限制-->
<!-- 这是一个复杂元素 -->
<element name="teacher">
<complexType>
<sequence>
<!-- 以下两个是简单元素 -->
<element name="name" type="string"></element>
<element name="age" type="int"></element>
</sequence>
</complexType>
</element>
</sequence>
</complexType>
</element>
</schema>
2.文档使用
<?xml version="1.0" encoding="UTF-8"?>
<teachers
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.mark.com/teacher"
xsi:schemaLocation="http://www.mark.com/teacher teacher.xsd">
<teacher>
<name>mark</name>
<age>19</age>
</teacher>
<teacher>
<name>tom</name>
<age>29</age>
</teacher>
<teacher>
<name>tom</name>
<age>29</age>
</teacher>
</teachers>