Schema的简单介绍
和DTD一样,是对XML的约束。不一样的是,Schema是基于XML语言规范的,并且相比于DTD,它包括了所有DTD能实现的功能,而且大大扩充了数据类型,扩展性强、可对整个XML文档或文档局部进行验证。灵活性强、支持名称空间等等优点。
Schema的定义
如果有自定义命名空间,需要在IDEA的设置中添加该自定义命名空间的URL,如下图
新建一个xsd文件,编写如下代码:
<?xml version="1.0" encoding="UTF-8" ?>
<!--
xmlns:xs="http://www.w3.org/2001/XMLSchema" 表示标准命名空间,每个schema约束都会包含一个
xs是默认前缀,"http://www.w3.org/2001/XMLSchema"是该默认前缀的命名空间的URL
targetNamespace="www.peng-yujun.cn" 表示自定义命名空间
-->
<xs:schema
xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.peng-yujun.cn"
elementFormDefault="qualified"
>
<!-- 定义元素结构 -->
<xs:element name="scores">
<!-- complexType表示student元素是复杂元素,该复杂元素可包含其它子元素 -->
<xs:complexType>
<!--
sequence表示按照顺序出现
maxOccurs:表示最大出现次数
minOccurs:表示最小出现次数
-->
<xs:sequence maxOccurs="3" minOccurs="1">
<xs:element name="student">
<!-- student也是复杂标签 -->
<xs:complexType>
<xs:sequence>
<xs:element name="name" type="xs:string" />
<xs:element name="coures" type="xs:string" />
<xs:element name="score" type="xs:double" />
</xs:sequence>
<!-- student标签必须包含id属性,type定义属性值的类型,use定义是否必须 -->
<xs:attribute name="id" type="xs:int" use="required" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
连接Schema 到XML
<?xml version="1.0" encoding="UTF-8"?>
<!--
连接schema:
1.有目标命名空间,如:xmlns="http://www.peng-yujun.cn" xsi:schcemaLocation="http://www.peng-yujun.cn test.xsd"
2.若无目标命名空间,可以为: xsi:noNamespaceSchemaLocation="xxx.xsd" >
-->
<scores
xmlns="http://www.peng-yujun.cn"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schcemaLocation="http://www.peng-yujun.cn test.xsd"
>
<student id="1">
<name>王同</name>
<coures>java</coures>
<score>89</score>
</student>
<student id="2">
<name>李佳</name>
<coures>sql</coures>
<score>58</score>
</student>
</scores>