| ファイル名拡張子 |
.rng |
|---|---|
| インターネットメディアの種類 |
アプリケーション/xml、テキスト/xml |
| フォーマットの種類 | XMLスキーマ言語 |
| 延長 | テキスト |
コンピューティングの分野では、RELAX NG ( REgular LAnguage for XML Next Generation ) はXMLのスキーマ言語です。RELAX NG スキーマは XML 文書の構造と内容のパターンを指定します。RELAX NG スキーマ自体はXML文書ですが、RELAX NG は一般的なコンパクトな非 XML 構文も提供します。[1]他のXML スキーマ言語と比較すると、 RELAX NG は比較的シンプルであると考えられています。
これは、2001年と2002年にOASIS RELAX NG技術委員会の委員会仕様によって、村田誠のRELAXとジェームズ・クラークのTREXに基づいて定義されました。[2] [3] [4]また、国際標準ISO / IEC 19757:文書スキーマ定義言語(DSDL)のパート2でも定義されました。[5] [6] ISO / IEC 19757-2は、ISO / IEC JTC 1 / SC 34によって開発され、2003年に最初のバージョンが公開されました。[7]
スキーマの例
非常に単純な XML マークアップ スキームを本に対して定義するとします。本は 1 つ以上のページのシーケンスとして定義され、各ページにはテキストのみが含まれます。サンプルの XML ドキュメント インスタンスは次のようになります。
<book>
<page>これは1ページ目です。</page> <page>これは2ページ目です。</page> </book>
XML構文
RELAX NG スキーマは、ルート要素を定義してネスト構造で記述できます。ルート要素には、さらに要素定義が含まれます。この要素定義自体には埋め込み定義が含まれる場合があります。このスタイルで、完全な XML 構文を使用して本書のスキーマを記述すると、次のようになります。
<要素名= "book" xmlns= "http://relaxng.org/ns/structure/1.0" > <oneOrMore> <要素名= "page" > <text/> </要素> </oneOrMore> </要素>
ネストされた構造はサブレベルが多くなると扱いにくくなり、再帰要素を定義できなくなるため、複雑な RELAX NG スキーマのほとんどは、スキーマ内に別々に配置されている名前付きパターン定義への参照を使用します。ここでは、「フラット化されたスキーマ」が前の例とまったく同じブック マークアップを定義します。
<grammar xmlns= "http://relaxng.org/ns/structure/1.0" > <start> <element name= "book" > <oneOrMore> <ref name= "page" /> </oneOrMore> </element> </start> <define name= "page" > <element name= "page" > <text/> </element> </define> </grammar>
コンパクトな構文
RELAX NG コンパクト構文は、拡張バッカス・ナウア形式と正規表現にヒントを得た非 XML 形式で、Simple Outline XML (SOX)がXMLと関係するのとほぼ同じように、構造と意味が 1 対 1 で対応する XML に明確に変換し、またその逆もできるように設計されています。DTD の構文と多くの機能を共有しています。次に、上記のスキーマのコンパクト形式を示します 。
要素ブック{
要素ページ{ テキスト } +
}
名前付きパターンを使用すると、これを次のようにフラット化できます。
start = 要素book { page+ }
page = 要素page { text }
コンパクトな RELAX NG パーサーは、これら 2 つを同じパターンとして扱います。
W3C XMLスキーマとの比較
RELAX NG 仕様は W3C XML スキーマ仕様とほぼ同時期に開発されましたが、2001 年に W3C 勧告となった時点では、後者の方がよく知られており、オープンソースおよび独自の XML パーサーとエディターの両方でより広く実装されていました。しかし、それ以降、RELAX NG サポートは XML ソフトウェアにますます浸透し、DocBook、TEIガイドライン、OpenDocument、EPUBなどの一般的なドキュメント中心のマークアップ言語の主要なスキーマとして採用されたことで、その受け入れが促進されました。
RELAX NG は、データ型指定、正規表現のサポート、名前空間のサポート、複雑な定義を参照する機能など、 従来のDTDとは異なる多くの機能を W3C XML スキーマと共有しています。
ファイル名拡張子
非公式の慣例により、通常の構文の RELAX NG スキーマは、通常、ファイル名拡張子「.rng」で命名されます。コンパクト構文のスキーマの場合、拡張子「.rnc」が使用されます。
決定論
Relax NG スキーマは必ずしも「決定論的」または「明確」であるとは限りません。
Relax NG を DTD に変換する
Relax NG スキーマは、Trang を適用することで DTD に変換できます。Trang は [1] にあります。Trang のマニュアルは [2] にあります。Trang はOASIS DITA 1.3 スキーマを DTD に変換できず、次のようなメッセージが表示されて失敗することに注意してください。
申し訳ありませんが、combine="choice" による定義の結合はサポートされていません
参照
参考文献
- ^ RELAX NG コンパクト構文
- ^ James Clark. 「TREX - XML のツリー正規表現 - 「TREX は RELAX と統合され、RELAX NG が誕生しました。」」 。 2009 年 12 月 28 日閲覧。
- ^ 村田誠 (2002-04-03). 「RELAX (Regular Language description for XML) -- 「OASISのRELAX NG。RELAX CoreとTREXを統合して作られたスキーマ言語です。」」 。 2009-12-28閲覧。
- ^ 「TREX と RELAX が統合され、軽量 XML 言語検証仕様 RELAX NG になりました」。表紙。2001 年 6 月 5 日。2009年 12 月 28 日閲覧。
- ^ RELAX NG仕様
- ^ RELAX NG技術委員会
- ^ ISO. 「ISO/IEC 19757-2:2008 - 情報技術 - 文書スキーマ定義言語 (DSDL) - パート 2: 正規文法ベースの検証 - RELAX NG」。ISO。2009年 12 月 28 日閲覧。
外部リンク
- RELAX NGホームページ
- 「RELAX NGのデザイン」ジェームス・クラーク著
- XML構文のRELAX NGチュートリアル
- コンパクト構文のRELAX NGチュートリアル
- XML文書を構造化するためのデザインパターン
- Eric van der Vlist 著の RELAX NG ブックは、GNU フリー ドキュメンテーション ライセンスに基づいて公開されています。
- ZVON によるリラックス NG リファレンス
- RELAX NG Java コミュニティ プロジェクト (java.net)
- Sun Multi-Schema Validator (MSV) オープンソース Java XML ツールキット
- Relax NG Compact 構文検証オープンソース C プログラム
- XSD から Relax NG へのコンバーター Web ベースのコンバーター
- https://github.com/relaxng/jing-trang
