TREX (Tree Regular Expressions for XML) は、マークアップ言語XMLスキーマ言語の一つである。 TREXで記述されたスキーマは、それ自身がXML文書である。 TREXは、W3C XML Schema と比べて仕様が簡潔である。 TREXは、ジェームズ・クラークによって設計された。

なおクラークがTREXを設計したのとほぼ同じ時期に、村田真などの人々も、別の新しいスキーマ言語RELAX (Regular Language description for XML) を開発していた。 クラークと村田は、TREX と RELAX Core に基づいて、この2つのスキーマ言語を統合して RELAX NG を設計した。

RELAX NG の文法は、TREX の文法を発展させて設計された。 TREX の文法と RELAX NG の文法は、よく似ている。

TREX で記述されたスキーマを使う例 編集

一冊の書籍 (book) を記述するための簡単なXML文書のためのスキーマを定義することを、考える。 一冊の書籍は、一つもしくは複数の (one or more) ページ (page) の並びとして定義される。 おのおののページは、テキストのみを含む。 一冊の書籍を記述するXML文書インスタンスの例を次に示す。

<?xml version="1.0" encoding="UTF-8"?>
<book>
  <page>これは1ページです。</page>
  <page>これは2ページです。</page>
</book>

この書籍のXML文書のスキーマは、TREXでは次のように記述することができる。

<?xml version="1.0" encoding="UTF-8"?>
<grammar xmlns="http://www.thaiopensource.com/trex">

  <start>
    <element name="book">
      <oneOrMore>
        <ref name="page"/>
      </oneOrMore>
    </element>
  </start>

  <define name="page">
    <element name="page">
      <anyString/>
    </element>
  </define>

</grammar>

TREXの実装 編集

TREX の妥当性検証器 (バリデータ) の実装として利用可能なものの一部を示す。 オープンソースであり無償で利用することができる。

ファイル名の接尾辞 (拡張子) 編集

非公式的な慣習として、TREXで記述されたスキーマ (パターン) は、ファイルの名称の接尾辞 (拡張子) として ".trex" が使われている。

関連項目 編集

外部リンク 編集