XML 中的 DTD 是什么

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

使用范围

  • XML 文档:最常用于定义 XML 文档的结构和约束
  • Web 开发:指定 HTML 结构的 Web 开发(版本 4.01 及更早版本)
  • 配置文件:用于定义配置文件的结构和规则
  • RSS 和 Atom Feed:定义 RSS(真正简单聚合)和 Atom feed 的结构
  • 数据交换格式:定义基于 XML 的 Web 服务协议 (SOAP) 或 XML-RPC 等数据交换格式的结构
© 版权声明
THE END
喜欢就支持一下吧
点赞0打赏 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容