继续学习DTD技术,DTD是一门xml约束技术,用来约束xml写法和对xml进行校验,这个只需要看得懂就行了,那还是比较轻松的蛤(~ ̄▽ ̄)~
1,DTD的引入:
1.1外部引入:
(1)本地文件引入:dtd文件在本地硬盘<!DOCTYPE 根元素名称 SYSTEM "文件所在路径">
(2)公共位置文件引入:dtd文件存在于公共网络,<!DOCTYPE 根元素名称 PUBLIC "dtd名称" "dtd的URL">
1.2在xml内部写约束
在文档声明下<!DOCTYPE 根元素名称 [约束内容]>
2,约束元素:<!ELEMENT 元素名称 元素约束>
元素约束可以是元内容或存放类型
存放类型:ANY:声明元素可以包含任意子元素;EMPTY:声明元素不能含任何元素
存放内容:用小括号括起来的元素名称<!DOCTYPE "元素名称" (可以包含的元素名称)>,小括号中的内容,可以有多个子元素的名称
“,”分割这些子元素就表明这些子元素必须按指定的顺序出现如果用
“|”分割这些内容就表明这些子元素只能出现其中之一使用
“+”来表明内容可以出现一次或多次
“*”来表明内容可以出现零次或多次
“?”来表明内容可以出现零次或一次
#PCDATA表明该元素可以包含标签体
3,约束属性:<!ATTLIST 属性名称 属性类型 属性约束>
类型: (1)CDATA:表明该属性的值是一个普通的文本值。
(2)ENUMERATED:表明该属性的值只能取指定范围内的其中之一
(3)ID:表明该属性值在整个文档中必须唯一,注意ID类型的属性的值必须以字母下划线开头,并且不能以数字开头,不能包含空白字符
约束: (1)#REQUIRED 来表明当前这个属性是必须存在的属性
(2)#IMPLIED 来表明当前这个属性是可选的属性
(3)#FIXED "固定值" 来表明当前这个属性具有一个默认的值,可以不明确指定该属性,解析器会帮你加上,如果你硬是指定了一个其他的值,会出错。
(4)"默认值" 来表明当前属性具有一个默认的值,如果给这个属性指定一个值就用指定的值,如果不指定呢,就使用默认值。
4,实体:可以理解为对一段内容的引用
引用实体:在xml中。声明:<!ENTITY 实体名称 "实体内容">;引用:&实体名称;
引用实体:在dtd文件中。声明:<!ENTITY % 实体名称 "实体内容">;引用:%实体名称;