一.什么是DTD
它是标准通用标记语言和[1]可扩展标记语言1.0版规格的一部分,文档可根据某种DTD语法规则验证格式是否符合此规则。
二.DTD的分类
DTD分为内部DTD和外部DTDA,外部DTD又分为system和public。
三.DTD的引入
(1)引入外部DTD文件
<!DOCTYPE 根元素名称 SYSTEM “dtd路径”>
(2)引入内部DTD文件
<!DOCTYPE 根元素名称{
<!ELEMENT students(student+)>
<!ELEMENT student(name,age)>
<!ELEMENT name(#PCDATA)>
<!ELEMENT age(#PCDATA)>
>
(3)引入外部DTD文件(网络上的dtd文件)
<!DOCTYPE 根元素名称 PUBLIC "DTD名称" “DTD文档的URL”>
四.使用DTD定义元素
简单元素:没有子元素的元素 如:约束: (#PCDATA): 约束name是字符串类型
EMPTY : 元素为空(没有内容)
ANY:任意类型
复杂元素:有子元素的元素 如:子元素后面的符号表示子元素出现的次数
+ :表示一次或者多次
? :表示零次或者一次
* :表示零次或者多次
无 :子元素只能出现一次
子元素直接使用逗号进行隔开 ,表示元素出现的顺序
子元素直接使用|隔开,表示元素只能出现其中的任意一个
五.使用DTD定义属性
语法:<!ATTLIST 元素名称 属性名称 属性类型 属性的约束>
属性类型:CDATA: 字符串 如:<!ATTLIST birthday ATT CDATA #REQUIRED>
枚举 : 表示只能在一定的范围内出现值,但是只能每次出现其中的一个 。如:<!ATTLIST age ATT2 (AA|BB|CC) #REQUIRED>
ID: 值只能是字母或者下划线开头,如:<!ATTLIST name ATT3 ID #REQUIRED>
属性的约束: #REQUIRED:属性必须存在
#IMPLIED:属性可有可无
#FIXED: 表示一个固定值,如:<!ATTLIST sex ATT4 CDATA #FIXED "ABC">
直接值:不写属性,使用直接值,写了属性,使用设置那个值,如:<!ATTLIST school ATT5 CDATA "WWW">