DTD vs. XML Schema
2010-03-19 22:24
197 查看
DTD vs. XML Schema
XML Schema 指定 XML Schema 定义语言,该语言提供了描述 XML 1.0 文档结构和限制其内容的工具,其中包括那些利用 XML Namespace 的工具。模式语言自身用 XML 1.0 表示并使用名称空间,它在很大程度上重构了 XML 1.0 DTD 具有的能力,并在一定程度上扩展了这些能力。请记住 DTD 有许多局限:
□ 对于复杂需求通常很难使用内容模型。
□ 不支持名称空间。
□ 对模块化和重用的支持非常有限。
□ 不支持对声明扩展或继承。
□ 编写、维护和读取大型 DTD 以及定义系列相关模式都很困难。
□ 没有嵌入式、结构化自我文档编制(self-documentation)(只有 <!-- comments --> 可用)。
□ 内容和属性声明不能依靠属性或元素上下文(许多 XML 语言用到这一点,但它们的 DTD 必须“允许过多东西”)。
□ 只能使用一个简单的标识属性机制(换句话说,没有唯一性作用域)。
但 XML Schema 也有不足:
□ XML Schema 比较复杂;只需要偶尔使用 XML 的程序员可能觉得它难得有些过头。
□ XML Schema 不能请求特定的根元素(因此,即使验证最简单的文档也要求额外的信息)。
□ 当描述混合内容时,根本无法约束字符数据。
□ 内容和属性声明不能依靠属性或元素上下文(这也是 DTD 的主要问题)。
□ 不能离开声明指定缺省值。
□ 元素缺省值只能是字符数据(不包含标记)。
XML Schema 指定 XML Schema 定义语言,该语言提供了描述 XML 1.0 文档结构和限制其内容的工具,其中包括那些利用 XML Namespace 的工具。模式语言自身用 XML 1.0 表示并使用名称空间,它在很大程度上重构了 XML 1.0 DTD 具有的能力,并在一定程度上扩展了这些能力。请记住 DTD 有许多局限:
□ 对于复杂需求通常很难使用内容模型。
□ 不支持名称空间。
□ 对模块化和重用的支持非常有限。
□ 不支持对声明扩展或继承。
□ 编写、维护和读取大型 DTD 以及定义系列相关模式都很困难。
□ 没有嵌入式、结构化自我文档编制(self-documentation)(只有 <!-- comments --> 可用)。
□ 内容和属性声明不能依靠属性或元素上下文(许多 XML 语言用到这一点,但它们的 DTD 必须“允许过多东西”)。
□ 只能使用一个简单的标识属性机制(换句话说,没有唯一性作用域)。
但 XML Schema 也有不足:
□ XML Schema 比较复杂;只需要偶尔使用 XML 的程序员可能觉得它难得有些过头。
□ XML Schema 不能请求特定的根元素(因此,即使验证最简单的文档也要求额外的信息)。
□ 当描述混合内容时,根本无法约束字符数据。
□ 内容和属性声明不能依靠属性或元素上下文(这也是 DTD 的主要问题)。
□ 不能离开声明指定缺省值。
□ 元素缺省值只能是字符数据(不包含标记)。
相关文章推荐
- XML 的 约束 :DTD 、 Schema
- xml约束之dtd约束和schema约束---3
- xml约束之dtd约束和schema约束---3
- xml约束之dtd约束和schema约束---3
- No grammar constraints (DTD or XML Schema) referenced in the document.
- XML的约两种约束——DTD、Schema
- xml,schema,DTD
- xml基础、DTD验证、Schema验证(备忘)
- xml基础、DTD验证、Schema验证(备忘)
- XML,schema,dtd文件结构
- XML的约两种约束——DTD、Schema
- XML Schema VS. Java Class
- XML--DTD--Schema--DOM--SAX--DOM4J--XPATH
- XML中Schema和DTD的区别
- XML的约两种约束——DTD、Schema
- xml——DTD与schema
- XML & DTD & Schema
- xml学习笔记——dtd和schema
- XML Schema and DTD
- WebService学习笔记(二) - XML的dtd和schema