当前位置:在线查询网 > 在线百科全书查询 > RELAX NG

RELAX NG_在线百科全书查询


请输入要查询的词条内容:

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。

相关分词: RELAX NG