版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sun8112133/article/details/89173479
版权声明:本文为 小异常 原创文章,非商用自由转载-保持署名-注明出处,谢谢!
本文网址:https://blog.csdn.net/sun8112133/article/details/89173479
Schema:它其实就是一个XML,使用 XMl的语法规则,XML的解析器解析起来比较方便,其目的是为了替代DTD。但是Schema约束文本内容比 DTD的内容还要多。所以目前也没有真正意义上的替代DTD。扩展名为.xsd。
一、Schema小栗子
1、约束文档(.xsd)
<?xml version="1.0" encoding="UTF-8"?>
<!--
xmlns(xml namespace) : 名称空间 / 命名空间
targetNamespace : 目标名称空间。下面定义的那些元素都与这个名称空间绑定上。
elementFormDefault : 元素的格式化情况。
-->
<schema xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.example.org/teacher"
elementFormDefault="qualified">
<element name="teachers">
<complexType>
<!--
maxOccurs/minOccurs : 出现的最大或最小次数
maxOccurs="unbounded" : 无限大
-->
<sequence maxOccurs="unbounded" >
<!-- 这是一个复杂元素 -->
<element name="teacher">
<!-- 这是用于声明这个teacher元素是复杂元素 -->
<complexType>
<!-- 按顺序排序 -->
<sequence>
<!-- 以下两个是简单元素 -->
<element name="name" type="string"></element>
<element name="age" type="int"></element>
</sequence>
</complexType>
</element>
</sequence>
</complexType>
</element>
</schema>
2、实例文档(.xml)
<?xml version="1.0" encoding="UTF-8"?>
<!--
xmlns:xsi : 这里必须是这样的写法,也就是这个值已经固定了。
xmlns : 这里是名称空间,也固定了,写的是schema里面的顶部目标名称空间
xsi:schemaLocation : 有两段:前一段是名称空间,也是目标空间的值,后面是约束文档的路径。
-->
<teachers
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aa="http://www.example.org/teacher"
xmlns:bb="http://www.example.org/teacher"
xsi:schemaLocation="http://www.example.org/teacher teacher.xsd"
>
<teacher>
<aa:name>张三</aa:name>
<age>19</age>
</teacher>
</teachers>
二、名称空间的作用
一个XML如果想指定它的约束规则,假设使用的是DTD,那么这个XML只能指定一个DTD,不能指定多个DTD。但是如果一个XML的约束是定义在Schema里面,并且是多个Schema,那么是可以的。(简单的说:一个XML可以引用多个Schema约束,但是只能引用一个DTD约束。)
名称空间的作用就是在 写元素的时候,可以指定该元素使用的是哪一套约束规则。默认情况下,如果只有一套规则,那么都可以这么写:
<name>张三</name>
<aa:name></aa:name>
<bb:name></bb:name>