> For the complete documentation index, see [llms.txt](https://rocape.gitbook.io/xmllanguage/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://rocape.gitbook.io/xmllanguage/di-wu-zhang-xmlschema/52dtd-yu-xmlschema.md).

# 5.2 DTD 与 XML Schema

\###5.2 DTD与XML Schema

* DTD是面向SGML语言的规范，在描述XML数据模式时不可避免地存在很多限制，比如缺少数据类型和命名空间的支持、语法规则过于简单以至描述能力有限、使用了非XML的格式等。
* 与DTD相比，XML Schema具有下列特征
* 一致性：XML Schema利用XML的基本语法规则来定义其文档结构，从而使XML的模式和实例定义达到统一，并继承了XML的自描述性和可扩展性，使其更具有可读性和灵活性。
* 完备性：XML Schema对DTD进行了扩充，引入了数据类型、命名空间，并且支持对其他XML Schema的引用，从而使其具备较强的模块性 。
* 规范性和准确性：XML Schema提供了更加规范和完备的机制来约束XML文档，语义更加准确，可以完成一些DTD不能完成的定义，如对元素出现次数的约束等。
* 面向对象特征：XML Schema引入了许多成熟的面向对象机制（比如继承性和多态性），使得数据模式在应用中更加灵活 。
* 扩展性：DTD所描述的文档结构是非常严格的，没有显式声明的内容绝不允许在XML实例数据中出现；而XML Schema则提供了一些扩展机制，允许在事先无法准确描述数据模式的情况下，在XML实例数据中根据需要添加相关的数据 。
* XML Schema的优点
* 使用基本的XML创建，而DTD基于独立的语法qq完全支持命名空间推荐标准
* 可以验证基于内置（built-in）数据类型和用户自定义（user-defined）数据类型的文本元素
* 可以更容易地建立复杂的可重用的内容模型
* 可用于模拟程序设计的基本概念，例如对象的继承和类型替换
* DTD的必要性
* XML Schema不支持ENTITY功能，ENTITY在许多XML文档和应用程序中作用重大
* DTD是XML推荐标准中唯一的定义和验证方法，可直接嵌入XML文档中，由验证型解析器使用
* DTD从SGML继承了大部分特性，在传统的应用程序中应用广泛
