DTD文档约束文件
结构截图
示范dtd
persondtd.dtd 定义了一些元素(比如persons、person)和一个属性(比如id)
<!ELEMENT persons (person+)>
<!ELEMENT person (name,age)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT age (#PCDATA)>
<!ATTLIST person id CDATA #REQUIRED>
示范xml(使用上面的dtd约束)
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE persons SYSTEM "persondtd.dtd">
<persons>
<person id="1">
<name>张三</name>
<age>18</age>
</person>
<person id="2">
<name>李四</name>
<age>20</age>
</person>
</persons>
引入本地dtd
<!DOCTYPE 根元素 SYSTEM "本地dtd文件路径.dtd">
xml文件内部引入dtd
<!DOCTYPE 根元素 [dtd文件内容]>
引入网络dtd
<!DOCTYPE 根元素 PUBLIC "dtd文件名称" "DTD文档的URL">
语法规则
定义一个元素的格式
<!ELEMETN 元素名 元素类型>
简单元素
EMPTY 内容为空
ANY 可以为空也可以不为空
#PCDATA 内容为字符串
复杂元素
- 直接写子元素名称
- 多个子元素则用",“或者”|"隔开
(name,age) 逗号隔开表示要子元素按照顺序写
(name|age) 或符号隔开表示只能选其中一个
- 子元素个数限制
? 零次或一次
+ 一次或多次
* 零次或多次
如果不写则只出现一次
定义属性
- 格式
<!ATTLIST 元素名称 属性名称 属性的类型 属性的约束>
- 属性类型
CDATA 为字符串
或者写子元素
(name,age)
- 属性约束
#REQUIRED 必须的
#IMPLIED 非必须的
#FIXED value 值是固定的
例如让person标签的id属性值为固定值001 <!ATTLIST person id CDATA #FIXED "001">