【JavaWeb】Schema约束

261 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第1天,点击查看活动详情

哈喽大家好,这里是颜颜颜yan_的掘金博客~

个人主页:颜颜颜yan_

❀欢迎关注👀点赞👍收藏❤留言🖊

还请大家多多指教吖~

1、什么是Schema约束

XML Schema是一种用于定义和描述XML文档结构与内容的模式语言,它的出现克服了DTD的局限性。 那么XML Schema有哪些显著优点呢?这里我们通过以下比较来看看。

XML Schema与DTD的比较:

DTD采用的是非XML语法格式,缺乏对文档结构、元素、数据类型等全面的描述。

XMLSchema采用的是XML语法格式,而且它本身也是一种XML文档,所以XML Schema语法格式比DTD更好理解。

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

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

DTD支持的数据类型非常有限,XML Schema支持更多的数据类型,包括用户自定义的数据类型。

DTD定义约束的能力非常有限,无法对XML实例文档作出更细致的语义限制,而XMLSchema定义约束的能力非常强大,可以对XML实例i文档作出细致的语义限制。

XML Schema的功能比DTD强大很多,但相应的语法也比DTD复杂很多。

2、名称空间

一个XML文档可以引入多个约束文档,但是,约束文档中的元素或属性都是自定义的,所以在XML文档中,极有可能出现代表不同含义的同名元素或者属性,导致名称发生冲突。为此,在XML文档中,提供了名称空间,它可以唯一标识一个元素或者属性。

名称空间的声明

名称空间的声明就是在XML实例文档中为某个模式文档的名称空间指定一个临时的简写名称,它通过一系列的保留属性来声明,名字必须是以xmlns或者xmlns: 作为前缀。 声明的语法格式如下:

<元素名 xmlns:prefixname=“URI”>

元素名指的是在哪一个元素上声明名称空间,在这个元素上声明的名称空间适用于声明它的元素和属性,以及该元素中嵌套的所有元素及其属性。

xmlns:prefixname指的是该元素的属性名,对应的值是一个URI引用,用来标识该名称空间的名称。

如果有两个URI并且其组成的字符完全相同,就可以认为它们标识的是同一个名称空间。

3、引入Schema文档

使用名称空间引入XML Schema文档

通过属性xsi:schemaLocation来声明名称空间的文档,xsi:schemaLocation属性是在标准名称空间www.w3.org/2001/XMLSch…

第一个URI是名称空间的名称,第二个URI是文档的位置。

总结

以上就是JavaWeb中Schema约束的学习内容啦,期待您的鼓励支持~

image.png