什么是DTD、为什么要用DTD
文档类型定义-Document Type Definition
DTD用来描述XML文档的结构,一个DTD文档包含:
- 元素(ELEMENT)的定义规则
- 元素之间的关系规则
- 属性(ATTLIST)的定义规则
- 可使用的实体(ENTITY)或符号(NOTAION)规则
DTD文档与XML文档实例的关系:
- 类与对象
- 数据库表结构与数据记录
DTD的作用:
- 每个XML文件可以携带一个自身格式的描述。
- 不同组织的人可以使用过一个通用DTD用来交换数据。
- 应用程序可以使用一个标准DTD校验从外部世界接受来的XML数据是否有效
- 可以使用DTD校验自己的XML数据
如何生成一个DTD文档
DTD文档的声明及引用:
内部DTD文档
<!DOCTYPE 根元素[定义内容]>
外部DTD文档
<!DOCTYPE 根元素 SYSTEM “DTD文件路径”>
内外部DTD文档结合
<!DOCTYPE 根元素 SYSTEM "DTD文件路径" [定义内容]>
<?xml version='1.0' encoding='gb2312'?> <---------子元素的名称及顺序 <!ELEMENT author(#PCDATA)><-------------------子元素的数据类型 <!ELEMENT title(#PCDATA)> <!ELEMENT content(#PCDATA)>
]><-----------------------结束标签
<author>张三</author>
<title>hello</title>
<content>world</content> <-- 内部DTD示例(innerDTD.xml)-->
元素的定义
语法:<!ELEMENT NAME CONTENT> ELEMENT:关键字 NAME:元素名称 CONTENT:元素类型
CONTENT:
-
EMPTY:该元素不能包含子元素和文本,但可以有属性--(空元素)
-
ANY:该元素可以包含任何在DTD中定义的元素内容
-
.#PCDATA:可以包含任何字符数据,但是不能在其中包含任何子元素
-
纯元素类型:只包含子元素,并且这些子元素外没有文本
-
混合类型:包含子元素和文本数据的混合体
属性类型:
NMTOKEN/NMTOKENS:
- NMTOKEN是CDATA的一个子集,表示属性值必须是英文字母、数字、句号、破折号、下划线或冒号,属性值不能含有空格。
- NMTOKENS与NMTOKEN类似,包含多个由空格分隔的字符。
IDREF/IDREFS:
- IDREF属性的值指向文档中其它地方声明的ID类型的值。
- IDREFS同IDREF,但是可以具有由空格分开的多个引用。
Enumerated:
- 实现定义好一些值,属性的值必须在所列出的值的范围内。
总结:
- 一个有效的XML文档必 须是结构正规的,结构正规的XML文档不一定是有效的。
- DTD包含一套用来描述并限制XML文档结构的语法规则:
-
元素的定义规则
-
元素之间的关系规则
-
属性的定义规则
-
可使用的实体或符号规则
- 命名空间用于避免命名冲突。
- 在XML中,使用全球唯一的URL作为Namespaces。