本文主要是介绍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来解决这个精确约束的问题。
这篇关于JavaWeb学习-XML系列-2-XML约束之DTD的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!