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

関連項目

編集

外部リンク

編集

実装

編集