Java Web程序设计——XML基础(二)
同理,放上思维导图,前面的内容请见https://blog.csdn.net/DTRblank/article/details/104479567
Schema约束
什么是Schema约束
- 同DTD约束基本一样,也是用来规范XML文件内容的书写规范,只不过Schema的约束比DTD更加强大。
区别
- DTD约束文件的后缀名为dtd,Schema约束文件后追命为xsd,它是基于XML语法格式
- DTD支持的数据类型比较有限,Schema支持更多的数据类型,包括用户自定义的数据类型
- DTD几乎不支持名称空间,Schema对名称空间非常友好
ps:此处只是列举了个别几个,区别还有很多,只需了解即可,因此不难发现Schema的相应语法比DTD复杂很多。
名称空间
- XML文档可以引入多个约束文档,有时会出现名称的冲突,所以在XML文档中提供了名称空间,它可以唯一标识一个元素或者属性。
语法格式:
<元素名 xmlns:prefixname="URI">
- 元素名:指的是在哪一个元素上声明名称空间
- xmlns:prefixname:指该元素的属性名,所对应的值是一个URI引用
引入Schema文档
- 使用名称空间引入Schema文档,通过属性
xsi:schemaLocation
来声明名称空间文档 - 不使用名称空间引入Schema文档,通过属性
xsi:noNamespaceSchemaLocation
直接指定
Schema语法
元素定义
语法格式:
<xs:element name="xxx" type="yyy"/>
element:用于声明一个元素
xxx:指元素的名称
yyy:指元素的数据类型
XML Schema中有很多数据类型,常用以下几种:
- xs:string:表示字符串类型
- xs:decimal:表示小数类型
- xs:integer:表示整数类型
- xs:boolean:表示布尔类型
- xs:date:表示日期类型
- xs:time:表示时间类型
例如:
<lastname>Ann</lastname>
<age>21</age>
<dateborn>1998-01-01</dateborn>
上述代码中,定义了3个元素,对应的Schema定义如下:
<xs:element name="lastname" type="xs:string"/>
<xs:element name="age" type="xs:integer"/>
<xs:element name="databorn" type="xs:date"/>
属性定义
语法格式:
<xs:attribute name="xxx" type="yyy"/>
xxx:属性名称
yyy:属性的数据类型(属性的常用类型与元素相同)
简单类型
- xs:minInclusive和xs:maxInclusive元素对值的限定,比如:当一个公司招聘员工年龄要求在18~25岁之间,此时就需要对“age”这个元素进行限定
- xs:enumeration元素对一组值的限定
- xs:pattern元素对一系列值的限定,比如:要定义一个单词“forget”,要求可接受的只能是字母a~z中的其中一个
- xs:restriction元素对空白字符的限定
复杂类型
- 空元素,不包含内容,只包含属性的元素
- 包含其他元素的元素
- 仅包含文本的元素
- 包含元素和文本的元素
ps:以上简单了解即可,此处不进行详细列举