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プロセッサ) の実装として利用可能なものの一部を示す。
オープンソースであり無償で利用することができる。
この他、DTD2RELAXというソフトウェアが利用可能である。
このソフトウェアは、従来のDTDのスキーマを RELAX Core のスキーマ (モジュール) に変換することができる。