首页技术文章正文

什么是Schema约束?有什么优势?

更新时间:2020-12-29 来源:黑马程序员 浏览量:

什么是Schema约束

同DTD一样,XML Schema也是一种用于定义和描述XML文档结构与内容的模式语言,它的出现克服了DTD 的局限性。接下来,通过XML Schema与DTD的比较,将XML Schema所具有的一些显著优点进行列举,具体如下:

1、DTD采用的是非XML语法格式,缺乏对文档结构、元素、数据类型等全面的描述。而XML Schema采用的是XML语法格式,而且它本身也是一种XML文档,因此,XML Schema语法格式比DTD更好理解。

2、XML有非常高的合法性要求,虽然DTD和XML Schema都用于对XML文档进行描述,都被用作验证XML合法性的基础。但是,DTD本身合法性的验证必须采用另外一套机制,而XML Schema则采用与XML文档相同的合法性验证机制。

3、XML Schema对名称空间支持得非常好,而DTD几乎不支持名称空间。

4、DTD支持的数据类型非常有限。例如,DTD可以指定元素中必须包含字符文本(PCDATA),但无法指定元素中必须包含非负整数(nonNegativeInteger),而XML Schema比XML DTD支持更多的数据类型,包括用户自定义的数据类型。

5、DTD定义约束的能力非常有限,无法对XML实例文档作出更细致的语义限制,例如,无法很好地指定一个元素中的某个子元素必须出现7到12次;而XML Schema定义约束的能力非常强大,可以对XML实例文档作出细致的语义限制。

通过上面的比较可以发现,XML Schema的功能比DTD强大很多,但相应的语法也比DTD复杂很多,接下来,看一个简单的Schema文档,如下面案例所示。

<?xml version=”1.0”?>
<xs:schema xmlns:xs=”http://www.w3.org/2001/XMLSchema”>
   <xs:element name=”root”  type=”xs:string”/>
</xs:schema>

在上面案例中,第1行是文档声明,第2行中以xs:schema作为根元素,表示模式定义的开始。由于根元素xs:schema 的属性都在http://www.w3.org/2001/XMLSchema名称空间中,因此,在根元素上必须声明该名称空间。



猜你喜欢:
JSTL标签有哪些?常用JSTL标签介绍

IOC和AOP分别是什么?如何理解?

Java AQS是什么?如何理解AQS?

黑马程序员Java培训课程

分享到:
在线咨询 我要报名
和我们在线交谈!