dtd快速入门
创建一个文件 后缀名.dtd
步骤:1、看xml中有多少个元素(标签)
2、有几个元素,在dtd文件中写几个<!ELEMENT>
3、判断元素是简单元素还是复杂元素(有无子元素)
4、复杂元素<!ELEMENT 元素名称 (子元素,子元素,...)>
简单元素<!ELEMENT 元素名称 (#PCDATA)>
5、在xml中引入dtd文件:<!DOCTYPE 根元素名称 SYSTEM "dtd文件路径">
根元素为xml根元素
浏览器只负责校验语法,不校验约束,校验约束需要使用工具
dtd三种引入方式:(1)引入外部的dtd文件
<!DOCTYPE 根元素名称 SYSTEM "dtd文件路径">
(2)引入内部的dtd文件
<!DOCTYPE 根元素名称 [dtd代码]>
(3)使用外部的dtd文件(网络上的)
<!DOCTYPE 根元素名称 PUBLIC "DTD名称" "DTD文档的URL">
使用dtd定义元素
语法格式<!ELEMENT 元素名称 元素约束>
简单元素:<!ELEMENT name (#PCDATA)>
(#PCDATA):约束是字符串类型
EMPTY:元素为空
ANY:任意
只有第一个有括号
复杂元素:<!ELEMENT 元素名称 (子元素)>
这些子元素只能出现一次
子元素+"+":一次或多次
子元素+"*":任意次数
子元素+"?":0次或一次
逗号","表示子元素出现的顺序
竖线"|"只能出现其中任意一个
使用dtd定义属性
attlist :<!ATTLIST 元素名称
属性名称 属性类型 属性的约束
>
属性类型:CDATA :表示属性的取值为普通的文本字符串
ENUMERATED (DTD没有此关键字):表示枚举,如(鸡肉|牛肉|猪肉)
ID :表示属性的取值不能重复,必须以字母或者下划线开头
属性约束:#REQUIRED :表示属性必须有
#IMPLIED :表示属性可有可无
#FIXED :表示一个固定值 #FIXED "AAA"
直接值 :"内容" 不写属性使用默认值,写了属性使用设定值
使用dtd定义实体
实体语法 :<!ENTITY 实体名 实体变量>
实体使用 :&实体名称; 比如&test;
注:定义实体需要写在内部dtd里面,如果写在外部的dtd里面,有某些浏览器下内容得不到