Regular Language description for XML
Regular Language description for XML (RELAX、リラックス) は、マークアップ言語XMLのスキーマ言語の一つである。 RELAXは、村田真などの人々によって設計された。 RELAXで記述されたスキーマは、それ自身がXML文書である。 RELAXで書かれたスキーマの記述を、RELAX文法という。 RELAXは、W3C XML Schema と比べて仕様が簡潔である。
RELAXは、RELAX Core と RELAX Namespace の2つの仕様から構成される。 RELAX Core は、一つの名前空間における要素と属性を扱う。 RELAX Core では、W3C XML Schemaで規定された豊富なデータ型を利用することができる。 RELAX Namespace は、複数の名前空間を使ったXML文書を扱う。
RELAX Core は、2000年6月に、JIS TR X 0029:2000 として発行された。 2001年8月に、ISO/IEC Technical Report 22250-1 として承認された。 RELAX Namespace は、2001年7月に、JIS TR X 0044:2001 として公表された。
なお村田などの人々がRELAXを設計したのとほぼ同じ時期に、ジェームズ・クラークも、別の新しいスキーマ言語TREX (Tree Regular Expressions for XML) を開発していた。 クラークと村田は、TREX と RELAX Core に基づいて、この2つのスキーマ言語を統合して RELAX NG を設計した。
RELAX Core で記述されたスキーマを使う例
[編集]一冊の書籍 (book) を記述するための簡単なXML文書のためのスキーマを定義することを、考える。 一冊の書籍は、一つもしくは複数の (one or more) ページ (page) の並びとして定義される。 おのおののページは、テキスト (text) のみを含む。 一冊の書籍を記述するXML文書インスタンスの例を次に示す。
<?xml version="1.0" encoding="UTF-8"?> <book> <page>これは1ページです。</page> <page>これは2ページです。</page> </book>
この書籍のXML文書のスキーマは、RELAX Core では次のように記述することができる。
<?xml version="1.0" encoding="UTF-8"?> <module moduleVersion="1.0" relaxCoreVersion="1.0" targetNamespace="" xmlns="http://www.xml.gr.jp/xmlns/relaxCore"> <interface> <export label="book"/> </interface> <tag name="book"/> <elementRule role="book"> <ref label="page" occurs="+"/> </elementRule> <tag name="page"/> <elementRule role="page" type="string"/> </module>
ファイル名の接尾辞 (拡張子)
[編集]非公式的な慣習として、RELAXで記述されたスキーマ (モジュール) は、ファイルの名称の接尾辞 (拡張子) として ".rlx" が使われている。
RELAXの実装
[編集]RELAX の妥当性検証器 (RELAXプロセッサ) の実装として利用可能なものの一部を示す。 オープンソースであり無償で利用することができる。
- Sun Multi-Schema Validator (MSV) - RELAX Core 、RELAX Namespace 、TREX、RELAX NG 、DTD 、W3C XML Schema による妥当性検証を行う。サン・マイクロシステムズ、川口耕介
この他、DTD2RELAXというソフトウェアが利用可能である。 このソフトウェアは、従来のDTDのスキーマを RELAX Core のスキーマ (モジュール) に変換することができる。
関連項目
[編集]外部リンク
[編集]実装
[編集]- Sun Multi-Schema Validator (MSV) - RELAX Core 、RELAX Namespace 、TREX、RELAX NG 、DTD 、W3C XML Schema による妥当性検証を行うソフトウェア。サン・マイクロシステムズ、川口耕介
- DTD2RELAX - 従来のDTDのスキーマを RELAX Core のスキーマ (モジュール) に変換するソフトウェア。