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 のスキーマ (モジュール) に変換することができる。

関連項目 
 コンピュータ言語
 データ記述言語
 仕様記述言語
 スキーマ言語

外部リンク 

 RELAX オフィシャルサイト

実装 

 Sun Multi-Schema Validator (MSV) - RELAX Core 、RELAX Namespace 、TREX、RELAX NG 、DTD 、W3C XML Schema による妥当性検証を行うソフトウェア。サン・マイクロシステムズ、川口耕介
 DTD2RELAX - 従来のDTDのスキーマを RELAX Core のスキーマ (モジュール) に変換するソフトウェア。

JIS
ISO/IEC標準
XML
データモデリング

de:RELAX