一、什么是DTD
文档类型定义
Document Type Definition
DTD用来描述xml文档结构,一个DTD文档包含:
元素的定义规则
元素之间的关系规则
属性的定义规则
二、为什么要有DTD
1.有了DTD,每个xml文件可以携带一个自身格式的描述
2.有了DTD,不同组织的人可以使用一个通用DTD用来交换数据
3.应用程序可以使用一个标准DTD校验外部接收的xml数据是否有效
三、如何编写一个DTD文档
1.语法
DTD文档的声明及引用
内部DTD文档(Students.xml)
<!DOCTYPE 根元素 [定义内容]>
外部DTD文档
<!DOCTYPE 根元素 SYSTEM "DTD文件路径">
内外部DTD文档结合
<!DOCTYPE 根元素 SYTEM "DTD文件路径" [定义内容]>
四、元素的定义
语法
<!ELEMENT NAME CONTENT>
ELEMENT:关键字
NAME:元素名称
CONTENT:元素类型
EMPTY:该元素不能包含子元素和文本,但可以有属性
#PCDATA:可以包含任何字符数据,但是不能在其中包含任何子元素
纯元素类型:只包含子元素,并且这些子元素外没有文本
ANY:该元素可以包含任何在DTD中定义的元素内容
符号:
<!DOCTYPE CCTV-6[
<!ELEMENT CCTV-6 (电影+)>
<!ELEMENT 电影 (名称,主演+,类型?,片长)>
<!ELEMENT 名称 (#PCDATA)>
<!ELEMENT 主演 (#PCDATA)>
<!ELEMENT 类型 (#PCDATA)>
<!ELEMENT 片长 (#PCDATA)>
]>
定义属性的语法结构
语法
<!ATTLIST 元素名称
属性名称 属性类型 属性特点
...
>
属性类型:CDATA
<!ELEMENT 人
姓名 CDATA #REQUIRED
>
属性类型ID取值必须是唯一的。
<!ATTLIST 公司职员
编号 ID #REQUIRED
姓名 CDATA #REQUIRED
>
属性类型IDREF/IDREFS
属性类型Enumerated
<!ATTLIST person 性别(男|女) #REQUIRED>
属性特点
#REQUIRED必须出现
<!ATTLIST 元素名 属性名 属性类型 #REQUIRED>
#IMPLIED可以省略
<!ATTLIST 元素名 属性名 属性类型 #IMPLIED>
#FIXED必须是固定值
<!ATTLIST 元素名 属性名 属性类型 #FIXED "VALUE">
#Default默认值
<!ATTLIST 元素名 属性名 属性类型 "value">
<!ELEMENT 家庭 (人+,家电*)>
<!ELEMENT 人 EMPTY>
<!ELEMENT 家电 EMPTY>
<!ATTLIST 人
名字 CDATA #REQUIRED
年龄 CDATA #REQUIRED
性别 (男|女) "女"
住址 CDATA #FIXED "北京"
爱好 CDATA #IMPLIED
>
<!ATTLIST 家电
名称 CDATA #REQUIRED
数量 CDATA #REQUIRED
>
实体
语法
<!ENTITY 实体名 "实体值">
转载于:https://blog.51cto.com/suyanzhu/1561410