XML Schema 使用一套预先定义好元素和属性 开发的
----- 预先定义好元素和属性 规定了schema 结构和内容
----- 定义schema 规定xml文档 格式和内容
预先已经定义好元素和属性 ------ 定义schema ------- 定义xml实例
Schema本身也是xml ,不像DTD使用单独语法
将schema中定义元素,绑定URI地址(名称空间)上,用来唯一标识元素来自哪个schema 。
* 为什么要有名称空间? 一个xml实例 引用多个Schema ,当两个schema定义同名元素,为了区分同名元素引用自哪个文档。
Schema快速入门
1、编写数据xml文件
2、编写schema文件 .xsd
1) 引入 W3C 名称空间 xmlns="http://www.w3.org/2001/XMLSchema"
每一个元素 对应 <element>
books.xsd
<?xml version="1.0" encoding="UTF-8"?>
<!-- 引用w3c的schema -->
<schema xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.huanghuai.edu.cn/books" --<> 路径
elementFormDefault="qualified">
<!-- 每一个元素 对应 element -->
<element name="books">
<!-- 包含子元素和属性的元素 复杂元素 -->
<complexType>
<!-- 强调子元素出现顺序 -->
<sequence>
<!-- 让book元素出现多次 * -->
<element name="book" minOccurs="0" maxOccurs="unbounded">
<complexType>
<sequence>
<!-- 对于简单元素,编写type属性 -->
<element name="name" type="string"></element>
<element name="price" type="double"></element>
</sequence>
</complexType>
</element>
</sequence>
</complexType>
</element>
</schema>
区分复杂元素和简单元素
2) 为schema定义元素指定名称空间 URI (URI可以是任何路径)
3、在xml实例数据文件中 ,引用自定义Schema
books.xml
<?xml version="1.0" encoding="UTF-8"?> <books xmlns="http://www.huanghuai.edu.cn/books" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.huanghuai.edu.cn/books books.xsd"> <book> <name>Core Java</name> <price>45</price> </book> <book> <name>Core Java</name> <price>45</price> </book> </books>
Result:
elementFormDefault="unqualified"
1、如果schema 将 elementFormDefault="unqualified" ,xml 实例文档 引用名称空间必须使用前缀 ---- 前缀修饰根元素
2、当前xml实例文档所有子元素必须不能用前缀
名称空间 作用 --- 唯一标识schema当中定义元素
简单元素 直接编写type属性 、复杂元素 <complexType>