词条 | RELAX NG |
释义 | RELAX NG返回到最初的 XML 1.0 Recommendation,XML 已经包括了验证或者说将其与预定义的结构比较的能力。第一个验证版本称为文档类型定义(Document Type Definition,DTD),但是许多开发人员认为它太简单了:它没有使用 XML 语法,也不能让开发人员指定现实世界中需要的许多规则。于是,W3C 开发了 XML Schema,但是许多开发人员认为它太复杂了:它使用了 XML 语法,也能够让用户建立公开的任何规则,但代价是增加了复杂性。其他人把 TREX 与 RELAX 的建议结合到了 RELAX NG 中,许多开发人员认为它正好合适。它使用了 XML 语法,也允许开发人员建立 W3C XML Schema 语言所能创建的多数相同规则,但是语法大大简化了。 RELAX NG(读作“relaxing”),是一种基于语法的 XML 模式语言,可用于描述、定义和限制 XML 词汇表。通过本文了解某些人不喜欢使用文档类型定义(Document Type Definition,DTD)的原因,以及 RELAX NG 如何针对它进行改善。 RELAX NG [OASIS Committee Specification and ISO Standard ISO/IEC 19757-2:2003] 是一种 XML 模式语言,即一种可用来定义和限制 XML 词汇表的语言。最初的 XML 模式语言是 XML 1.0 自己定义的 DTD。但是,一些人不喜欢 DTD,因为它丑陋的语法、表达文本和标记结构的局限性,并且难以处理 XML Namespaces。出现了几种新的 XML 模式语言以替代或增强 DTD,其中包括 RELAX NG,它以简洁性和表达能力著称。RELAX NG 核心规范还为架构定义了一种 XML 语法,此外, RELAX NG Compact Syntax[OASIS 委员会规范和 ISO Standard ISO/IEC 19757-2:2003/Amd.1:2006] 还为 RELAX NG 架构定义了一种简单的文本语法。RELAX NG 的 ISO 版本现在可从 ISO 的 Freely Available Standards 页面免费获得。 当 XML 1.0 Recommendation 第一次发布的时候,它包括了 DTD 的定义,DTD 是 XML 的先辈 SGML 的验证格式。DTD 很有用,它允许开发人员建立 XML 文档必须遵循的层次结构。 不幸的是,DTD 存在两个严重的缺陷。首先,它们不是 XML 文档 ―― 比如,一个 DTD 可能是这个样子: <!ELEMENT memories (memory+)> <!ELEMENT memory (media, subdate, donor, subject, location)> <!ATTLIST memory mediaid CDATA #REQUIRED status CDATA #REQUIRED> <!ELEMENT subdate (#PCDATA)> <!ELEMENT donor (#PCDATA)> <!ELEMENT subject (#PCDATA)> <!ELEMENT location (description | place)> <!ELEMENT description (#PCDATA)> <!ELEMENT place (#PCDATA)> 其次,在建立数据类型和其他约束方面的能力有限。 于是,不同的开发人员组织开始寻求新的、基于 XML 的方法,已建立 XML 文档必须符合的层次结构(或语法)。正式的标准是 W3C XML Schema 语言,但也受到一些不利之处的困扰,主要在于建立复杂的规则可能非常难。 但是 W3C 并没有关上创建模式语言的大门。开放源代码团体结合了两种不同的建议,TREX 和 RELAX,形成了 RELAX NG(读作 “relaxing”),一种基于 XML 的模式语言,提供了许多与 W3C 模式语言等同的功能,但是又简单得多。(RELAX NG 还提供了一种非 XML 的 紧凑 语法,我将在后面的 紧凑语法 部分讨论它。) RELAX NG 验证程序RELAX NG 验证程序存在不同语言的版本,包括: Java 技术 ―― Jing 和 MSV C 语言 ―― Libxml2 。 C# 语言 ―― Tenuto 。 Python 语言 ―― XVIF 。 ActiveX ―― 有一个 DLL,是VBRELAXNG。 |
随便看 |
百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。