论坛首页 入门技术论坛

XML的两种模式描述

浏览 1792 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-10-17  

在XML使用过程中,往往需要对XML的有效性进行验证。

 

只要不违反XML格式良好的规则,就可以自由选取标记的名字,用自己习惯的方式描述事物。这就意味着用XML描述相同的事物时,不同的编写者可能写出含有不同标记名、采用不同结构的XML文档,这对于数据的统一处理极为不利。所以需要一种机制指定应该如何构造描述同一事物的文档。DTD和XML Schema就是使用最为广泛的用来进行XML文档有效性验证的两种机制[16]17]。

DTD(Document Type Definition,文档类型定义)是一套关于标记符的语法规则,详细描述一组XML文档的结构,最初是为SGML开发的,它可以是XML文档的一部分,但是它通常是一份单独的文档或者一系列文档。DTD说明在文档中可以使用哪些标记,哪些标记可以出现在其它标记中,哪些标记具有属性,使用的标记应按什么顺序出现等。XML本身并没有一个通用的DTD,想使用XML进行数据交换的行业或组织可以自行定义它们自己的DTD,DTD规定了一个语法分析器用于解释一个“有效的”XML文档所需要知识的所有规则的细节。一个DTD可以是内部的,包含在一个“格式良好”的XML文档中,也可以是外部的,作为一个外部文档被引用。DTD标记声明可以是元素类型声明,属性声明,实体声明,或符号声明。作为XML1.0规范的重要组成部分,DTD对于XML文档的结构起到很好的描述作用,是近几年来XML技术领域所使用的最广泛的一种用于XML文档有效性验证的机制。

随着XML技术的广泛使用,DTD也逐渐显出其自身的一些不足与缺点,比如采用了非XML的语法规则,不支持多种多样的数据类型,扩展性较差,不支持名称空间等等。于是,W3C于2001年5月正式推荐XML Schema作为XML的标准模式。XML Schema本身就是一个符合XML语法结构的XML文档,可以用通用的XML解析器进行解析。它如同DTD一样,负责定义和描述XML文档的结构和内容模式。XML Schema可以定义XML文档中存在哪些元素和元素之间的关系,并且可以定义元素和属性的数据类型。


与DTD相比,XML Schema具有以下一些优点:
①一致性。Schema本身就是XML文档,使得对XML的定义不必再利用一种特定的形式化语言,而是直接借助XML自身的特性,使得XML达到从内到外的完美统一。
②扩展性。Schema对DTD进行了扩充,从而使其具有较强的可扩展性,比如引入了数据类型、命名空间等。
③互换性。用户可以根据需要设计适合自己应用的Schema,并且可以同其他人交换彼此的Schema。通过映射机制,可以将不同的Schema进行转换,实现更高层次的数据交换。
④规范性。同DTD一样,Schema也提供了一套完整的机制以约束XML文档中标记的使用,相比之下,Schema更具规范化,它定义了XML文档的整体结构,元素间的关系等。


总的来说,不能简单的评价DTD与XML Schema哪一个绝对好。它们各有各自的应用场合。相对于DTD,XML Schema可应用的范围更广一些。

   发表时间:2009-10-18  
无疑  在开发中 Schema用的更多一些
0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics