RELAX NG

可擴展標記語言的下一代正規語言是一種基於語法的可擴展標記語言模式語言,可用於描述、定義和限制 可擴展標記語言標準通用標記語言的子集)辭彙表。通過本文了解某些人不喜歡使用文檔類型定義(外語縮寫:DTD)的原因,以及“可擴展標記語言的下一代正規語言”如何針對它進行改善。

基本介紹

  • 中文名:可擴展標記語言的下一代正規語言
  • 外文名:REgular LAnguage for XML Next Generation
  • 外語縮寫:RELAX NG
簡介,驗證程式,特性,

簡介

返回到最初的 XML 1.0 Recommendation,可擴展標記語言已經包括了驗證或者說將其與預定義的結構比較的能力。第一個驗證版本稱為文檔類型定義(外語縮寫:DTD),但是許多開發人員認為它太簡單了:它沒有使用 XML 語法,也不能讓開發人員指定現實世界中需要的許多規則。於是,W3C 開發了 XML Schema,但是許多開發人員認為它太複雜了:它使用了 XML 語法,也能夠讓用戶建立公開的任何規則,但代價是增加了複雜性。其他人把 TREX 與 RELAX 的建議結合到了 RELAX NG 中,許多開發人員認為它正好合適。它使用了 XML 語法,也允許開發人員建立 W3C XML Schema 語言所能創建的多數相同規則,但是語法大大簡化了。
RELAX NG [OASIS Committee Specification and ISO Standard ISO/IEC 19757-2:2003] 是一種可用來定義和限制 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 的 緊湊 語法,我將在後面的 緊湊語法 部分討論它。)

驗證程式

驗證程式存在不同語言的版本,包括:
  1. Java 技術 ―― Jing 和 MSV C 語言 ―― Libxml2 。
  2. C# 語言 ―― Tenuto 。
  3. Python 語言 ―― XVIF 。
  4. ActiveX ―― 有一個 DLL,是VBRELAXNG。

特性

  • 簡單易學;
  • 同時具有XML語法和緊湊的非XML語法;
  • 不改變一個XML文檔的信息集;
  • 支持XML命名空間;
  • 對待均勻屬性的元素儘可能;
  • 支持具有無序的內容不受限制;
  • 支持具有混合內容無限制;
  • 具有堅實的理論基礎;
  • 可以用一個單獨的數據類型定義語言(例如XML Schema數據類型)。

相關詞條

熱門詞條

聯絡我們