xml实现约束规则校验的两种方法:
1:直接用myeclipse/eclipse进行校验
实现方法:将xml文件和dtd文件同时放在一个文件夹中,eclipse会直接提示出错项
2:浏览器校验
实现方法:由于浏览器默认对dtd校验是关闭的,编写html文件载入相应的JavaScript代码对xml和dtd约束条件进行加载,编写js代码在页面上进行校验信息的显示。
Js代码示例如下:
dtd的引入方法:
1.外部引入:
举例:在xml文件中引入dtd文件:
dtd文件:
注意:文件后缀必须为“ .dtd ” ,并且文件必须用 utf-8 编码格式保存
两种引用格式:
本地引用格式:<!DOCTYPE 根元素名称 SYSTEM 文件的位置>
dtd在当前文件的系统中,后面指定的文件位置是当前硬盘中的位置
网络引用格式:<!DOCTYPE 文档根节点 PUBLIC “DTD名称” “DTD文件的URL”>
引入的dtd在网络公共位置中,后面要指明dtd的名字和dtd所在网络位置URL地址
2.内部引入:
直接将dtd规则写在xml文件中
<!DOCTYPE 根元素名称[
dtd约束。。。
] >
形式如下图所示:
2.dtd语法—要求能看的懂就行
(1)元素
<!ELEMENT 元素名称 元素约束>
元素约束:
- 存放类型:ANY/EMPTY
- 元素约束:子元素的列表,将可以包含的子元素用小括号括起来
子元素之间使用逗号“,”进行分割:子元素必须按照顺序出现
使用竖线“|”进行分割,子元素只能出现其中的一个
#PCDATA表明包含标签体
出现次数表示:
- +: 表示出现1次或者多次
- *: 0次或者多次
- ?: 0次或1次
也可以使用小括号()进行组的操作
(2)属性
<!ATTLIST 元素名
属性名 属性类型 属性约束
属性名2 属性类型 属性约束
……
>
属性类型:
- CDATA:表示属性的值是一个普通字符串
- ENUMERTATED:属性的值是一个枚举列表中的值
- ID:表明属性的值必须在整个文档中都是唯一的,如果有重复的id则校验不通过(ID属性的值只能由字母、下划线开始,不能使用数字,不能出现空白字符)
属性约束:
- #REQUIRED —表明当前属性是一个必须存在的属性,如果这样的属性不存在则在校验时会报错
- #IMPLIED —表明当前属性是一个可选的属性可以有也可以没有
- #FIXED ‘固定值’ —表明当前属性具有一个固定值,这样的属性不需要进行赋值,自动就会取这个固定值为值。如果这样的属性指定了一个不是固定值的值则校验报错
- ‘默认值’
举例如下:
(3)ENTITY(实体)
<!ENTITY>
就是对一大段内容的引用,可以简化代码的复用
引用实体:在xml中引用的实体叫做引用实体
<!ENTITY 实体名称 “实体内容”>
引用方法:&实体名称
参数实体:在dtd中引用的实体叫做参数实体
<!ENTITY % 实体名称 “实体内容”>
引用方法:%实体名称