DTD
DTD 是一种保证XML文档格式正确的有效方法,可以通过比较XML文档和DTD文件来看文档是否符合规范,元素和标签使用是否正确。
例:army.dtd
- <?xml version="1.0" encoding="UTF-8"?>
- <!ELEMENT 部队 (战士+, 武器+)>
- <!ELEMENT 战士 EMPTY>
- <!ELEMENT 武器 (海, 陆, 空)>
- <!ELEMENT 海 EMPTY>
- <!ELEMENT 陆 EMPTY>
- <!ELEMENT 空 EMPTY>
- <!ATTLIST 战士
- 编号 ID #REQUIRED
- 姓名 CDATA #REQUIRED
- 性别 (男 | 女) #REQUIRED
- 领导 IDREF #REQUIRED
- >
- <!ATTLIST 海
- 航母 CDATA #REQUIRED
- 潜艇 CDATA #REQUIRED
- >
- <!ATTLIST 陆
- 导弹 CDATA #REQUIRED
- >
- <!ATTLIST 空
- 战机 CDATA #REQUIRED
- >
对应的写个引用此DTD的XML 文件
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE 部队 SYSTEM "F:/army.dtd">
- <部队>
- <战士 编号="J001" 领导="J001" 性别="男" 姓名="公平"/>
- <战士 编号="J002" 领导="J001" 性别="女" 姓名="伟大"/>
- <武器>
- <海 航母="小鹰号" 潜艇="晋级"/>
- <陆 导弹="火星"/>
- <空 战机="歼十"/>
- </武器>
- </部队>
对其中的代码解释:
- <!ELEMENT 部队 (战士+, 武器+)>
- ELEMENT :关键字,用来定义元素
- NAME:元素名称
- CONTENT:元素类型
- 1)EMPTY 该元素不能包含子元素和文本,但可以有属性(空元素)
- 2)ANY 该元素可以包含任何在DTD中定义的元素内容
- 3)#PCDATA 可以包含任何字符数据,但是不能在其中包含任何子元素
修饰符
符号
|
用途
|
示例
|
说明
|
()
|
用于给元素分组
|
(古龙|金庸)
|
|
|
|
在列出的对象中选择一个
|
(男人|女人)
|
|
+
|
该对象至少出现一次,可以出现多次
|
(成员+)
|
|
*
|
(
0
到多次)
|
(爱好
*
)
|
|
?
|
该对象可以出现,但只能出现一次(
0
到
1
此)
|
(菜鸟?)
|
|
,
|
对象必须按指定的顺序出现
|
(西瓜,苹果,香蕉)
|
|
属性的定义
语法:<!ATTLIST 元素名称
属性名称 类型 属性特点
>
类型 CDATA ID IDREF IDREFS ENUMERATED
属性特点 : #requed #implied #fixed