DTD 是文档类型定义。DTD 包含一组控制 XML 文件的结构和元素的规则。当任何 XML 文件引用 DTD 文件时,它都会根据这些规则进行验证。DTD 具有在 DTD 文档内定义的经过验证的元素和属性。它作为一个正式的规范,概述了 XML 文档中的元素、属性及其关系。它们指定可以出现哪些元素、它们的顺序、它们可以具有哪些属性以及这些属性可以包含哪些数据类型
特点
- 包含 XML 文件的结构、属性和元素
- DTD 具有相对简单且易于阅读的语法
- 允许指定属性的默认值
- 支持混合内容模型
- 验证有助于维护数据完整性和一致性的 XML 文件。
- 检查 XML 词汇表的语法规则
类型
- 内部 DTD:文档内部
- 外部 DTD:在单独的文档中指定并稍后链接
语法
<!DOCTYPE 元素 DTD 标识符
[
声明 #1
声明 #2
。
。
声明 #n
] >
文档的开头有一个文档类型分隔符。DOCTYPE 有两种类型的声明:
- 外部子集声明(可选)
- 内部子集声明(可选)
虽然内部声明在文档本身中指定为 DOCTYPE 的一部分,但外部声明将在单独的文件中提及。为了引用外部子集,使用公共标识符。元素指示从根元素解析文档。DTD 标识符是系统文件的路径或指向 Internet 上任何文件的 URL。可选的实体声明列表包含在方括号 ([]) 内。
例如
<!DOCTYPE library [
<!ELEMENT library (book+)>
<!ELEMENT book (title, author, genre)>
<!ELEMENT title (#PCDATA)>
<!ELEMENT author (#PCDATA)>
<!ELEMENT genre (#PCDATA)>
]>
DTD 指定“ library ”元素必须包含一个或多个“ book ”元素,其中每个元素必须包含“ title ”、“ author ”和“ genre ”元素。PCDATA 是解析后的字符数据
优点
- 确保 XML 数据的一致性
- 简单易懂
- 受到 XML 解析器和应用程序的广泛支持
- 轻松在系统之间交换数据
- 轻量级,文件大小和处理要求有限
- 允许定义可重用内容和标记的实体引用
缺点
- DTD 缺乏内置的文档机制
- 对复杂数据类型和高级验证规则的支持有限
- DTD 不提供对 XML 命名空间的本机支持
- 更复杂的内容模型
- 不提供对数据类型的内置支持
- XML 架构定义 (XSD) 由于其更强大的特性和功能而取代了 DTD
使用范围
© 版权声明
非商业转载或引用请标注本文链接,商业转载或引用请联系站长
部分文章内容可能来自互联网,如有侵权,请通过邮件联系
部分文章内容可能来自互联网,如有侵权,请通过邮件联系
THE END
暂无评论内容