JavaWeb学习-XML系列-2-XML约束之DTD

前面一篇文章,我们会这个books的xml结构就行。这看起来xml语法也很随意,什么都可以写,那么有时候,我们需要的xml文件内容是有一定要求和约束的,这个时候我们就需要对xml进行约束,本篇就来学习xml约束之一的DTD方式。

 

1.DTD分类和语法

DTD分类:
	*内部dtd,在xml内部定义dtd
	*外部dtd:在外部文件中定义dtd
		*本地dtd文件:<!DOCTYPE students SYSTEM "student.dtd">
		*网络dtd文件:<!DOCTYPE students PUBLIC “名称空间”"student.dtd">

这个语法,这里先看不懂没关系,下面我们结合约束文件和xml内容就容易明白。

2.先准备一个student.dtd文件

我在src下新建一个com.anthony.dtd的包,然后创建一个student.dtd文件,写入下面内容。

<!ELEMENT students (student*)>
<!ELEMENT student (name,age,gender)>
<!ELEMENT name (#PCDATA) >
<!ELEMENT age (#PCDATA) >
<!ELEMENT gender (#PCDATA) >
<!ATTLIST student number ID #REQUIRED>

3.写一个带约束的xml文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE students SYSTEM "student.dtd">

<students>
	<student number="s001">
		<name>ZS</name>
		<age>18</age>
		<gender>male</gender>
	</student>

</students>

4.解释约束含义

<!ELEMENT students (student*)>
// 第一行是根元素,这个元素叫students,小括号里面的意思是 这个根元素下有0到多个student的子元素
<!ELEMENT student (name,age,gender)>
// 元素student 下有三个嵌套元素 分别是 name, age, gender, 少写一个都不行,而且顺序是name->age->gender
<!ELEMENT name (#PCDATA) >
// 元素 name的值是PCDATA,理解为字符串就行
<!ELEMENT age (#PCDATA) >
<!ELEMENT gender (#PCDATA) >
<!ATTLIST student number ID #REQUIRED>
// ATTLIST 是属性列表的意思, 元素student 有一个属性叫number, ID表示number的值是唯一,不可以重复, REQUIRED是必须的意思。

你可以在你环境上,修改dtd文件内容,然后去修改xml文件内容,看看会不会报错。例如,把元素student的属性number去除。

1.删除number这个必须属性就会报错

2.这里我把gender元素改成sex也会报错

其他不符合本地dtd约束的错误就不举例了,其实dtd还是有缺陷,例如sex性别,我们要不是男就是女,但是这里dtd只能约束是字符串就行,下一篇,我们学习schema来解决这个精确约束的问题。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值