xml约束

xml约束:

一、概念:

由于xml文件是可扩展的,且里面的标签可以自定义的,只要符合xml的最基本要求,那么就可以写一个xml文件。但是在实际应用中,我们需要针对某一个特定的应用,给xml中引入一下语法,这些语法用来检测特定应用的xml文件编写是否正确。

例如mybatis中使用的DTD约束,spring中使用的shema约束。

作用:

规定xml文档的书写规则

二、dtd约束:

1.概念

DTD(Document Type Definition),全称为文档类型定义。一种简单的约束技术,功能单一

2.dtd文件的语法:

(1)定义元素(标签)

格式:<!ELEMENT 元素名称 (元素内容)>

元素内容的三种定义:

EMPTY

内容只能为空

(#PCDATA)

普通文本,不能写标签。

ANY

是任何内容。

 

(2)定义子元素(子标签)

格式:<!ELEMENT 元素名称 (子元素名称 1,子元素名称 2,.....)>

注意:

若子元素用逗号分开,说明须按照声明顺序从左到右编写XML文档。

如果子元素用“|”分开,说明任选其一

用+、*、?来表示元素出现的次数,默认是1次;

(3)定义属性

格式:<!ATTLIST 元素名称 属性名称 属性类型 默认值>

属性类型:

CDATA

值为字符数据 (character data)

(en1|en2|..)

此值是枚举列表中的一个值

ID

值为唯一的 id(属性值不能是“”或有相同的值)

默认值:

#REQUIRED

属性值是必需的

#IMPLIED

属性不是必需的

#FIXED value

属性值是固定的

例子

注意:dtd文档必须用utf-8编码格式保存

3.引入dtd文档到xml文档中

(1)内部dtd

例子:DTD约束和xml写在一个文件中。

(2)外部dtd

1).引用本地的DTD文档时:

格式:<!DOCTYPE  根元素  SYSTEM "dtd文件的位置"> ,其中,SYSTEM :本地文件系统

例子:

 

2).引用公共网络上的DTD文档时:

格式:<!DOCTYPE  根元素  PUBLIC "DTD文件名字" "DTD文件网络文件位置的url">

 

三、schema约束:

 

1.概念:

一种复杂的约束技术, 一个标识,标识一个xml文档被哪个Schema文档约束

通过schema来解决DTD的不足,dtd里面有PCDATA类型,但是在schema里面可以支持更多的数据类型,比如 年龄只能是整数,在schema可以直接定义一个整数类型,schema语法更加复杂,schema目前不能替代dtd

 

2.优点:

XML Schema符合XML语法结构。

DOM、SAX等XML API很容易解析出XML Schema文档中的内容。

XML Schema对名称空间支持得非常好。

XML Schema比XML DTD支持更多的数据类型,并支持用户自定义新的数据类型。

XML Schema定义约束的能力非常强大,可以对XML实例文档作出细致的语义限制。

XML Schema不能像DTD一样定义实体,比DTD更复杂,但XML Schema现在已是w3c组织的标准,它正逐步取代DTD。

 

3.定义schema文档:

例子:声明schema根元素并定义元素;

注意:

在schema中, 每个约束模式文档都可以被赋予一个唯一的使用URI标识的名称空间,

XML文件引用schema约束的时候, 便是通过这个名称空间来声明来自哪个shema约束文档的.

在xsd文档中, 至少要包括shema根元素和xml模式命名空间的定义, 元素定义等

 

4.引入schema约束:

在新建的xml文档中加入声明后, 引入schema的约束文档

1.首先声明约束来自哪个名称空间, 使用xmlns="" 来指定, 

2.引入的名称空间和哪个xsd文件对应,

使用schemaLocation="" 来指定, 第一个为名称空间, 第二个为xsd文件路径.

 例子:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值