RELAX NG

RELAX NG(RELAX Next Generation)は、XML文書の構造と内容を定義するためのスキーマ言語です。XML文書の構造と内容のパターンを記述するのに利用され、記述されたスキーマ自体もXML文書として扱えます。RELAX NGには、XML構文と短縮構文(Compact Syntax)の2種類の記述方法があり、どちらも利用可能です。この柔軟性が、RELAX NGの大きな特徴の一つです。

背景



XMLが登場する以前から使用されていたスキーマ言語DTDには、XMLの構文規則を満たさないなどの問題がありました。そこでW3CはXML Schemaを開発しましたが、標準化に時間がかかり、仕様が複雑化してしまうという問題がありました。その代替として、RELAX NGが開発されました。

RELAX NGは、ジェームズ・クラークと村田真が共同で設計しました。村田真Regular Language description for XML (RELAX) を開発し、ジェームズ・クラークはTREX (Tree Regular Expressions for XML) を開発しました。RELAX NGは、この二つのスキーマ言語を統合する形で生まれました。

2001年12月にはOASISのRELAX NG技術委員会によって標準として策定され、2003年にはISO/IEC 19757-2としても策定されました。2008年に改定されています。

RELAX NG のスキーマ例



RELAX NGで記述されたスキーマの例として、書籍(book)を記述する簡単なXML文書のスキーマを考えてみましょう。書籍は一つ以上のページ(page)から構成され、各ページはテキスト(text)のみを含むという構造です。

XML構文


RELAX NGのXML構文では、要素定義を入れ子構造で記述できます。以下は、書籍のXML文書のスキーマをXML構文で記述した例です。

xml









この方法では、深い階層構造をもつXML文書を扱うことが難しい場合や、再帰的な要素を定義することができない場合があります。そのため、RELAX NGでは、名前付きパターンへの参照がよく使われます。

xml













短縮構文


RELAX NGの短縮構文は、XML構文よりも簡潔にスキーマを記述できます。短縮構文はXMLに準拠しませんが、XML構文のスキーマと一対一で変換可能です。

以下は、入れ子構造で記述した短縮構文の例です。


element book {
element page { text } +
}


また、名前付きパターンを使うと以下のようになります。


element book { page+ }
page = element page { text }


これら二つのスキーマは意味的に同等です。

W3C XML Schemaとの比較



RELAX NGとW3C XML Schemaは、ほぼ同時期に設計されました。XML Schemaの方が広く知られていましたが、RELAX NGも多くのソフトウェアでサポートされるようになりました。DocBook、TEIガイドライン、OpenDocumentなどの広く使われている文書指向のマークアップ言語は、RELAX NGを第一のスキーマとして採用しています。

RELAX NGとXML Schemaは、多くの機能を共有しており、DTDとは異なり、以下のような機能を持っています。

豊富なデータ型
正規表現のサポート
XML名前空間のサポート
複雑な構造の定義への参照機能

ファイル名の接尾辞



RELAX NGのXML構文で記述されたスキーマのファイル名の接尾辞は、慣習的に".rng"が使われます。短縮構文のスキーマのファイル名の接尾辞は".rnc"が使われます。

妥当性検証器の実装



RELAX NGの妥当性検証器(バリデータ)には、以下のようなオープンソースソフトウェアがあります。

Jing - ジェームズ・クラーク
Sun Multi-Schema Validator (MSV) - サン・マイクロシステムズ、川口耕介
libxml2 - GNOMEプロジェクト

関連項目



生け垣オートマトン
スキーマ言語
Document Type Definition (DTD)
Regular Language description for XML (RELAX)
TREX (Tree Regular Expressions for XML)
文書スキーマ定義言語 (DSDL)
スキマトロン
W3C XML Schema

外部リンク



RELAX NG ホームページ
RELAX NG 仕様書
RELAX NG 日本語ポータル
RELAX NG 入門 (XML構文)
RELAX NG 入門 (短縮構文)
"The Design of RELAX NG" - ジェームズ・クラーク
XML文書の構造を設計するためのデザインパターン
RELAX NG Book
Relax NG Reference - ZVON
RELAX NG Java community projects - java.net
妥当性検証器の実装のリンク
Jing - ジェームズ・クラーク
Sun Multi-Schema Validator (MSV) - オープンソース、サン・マイクロシステムズ、川口耕介
* Relax NG Compact Syntax validator -- オープンソースの C プログラム

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。