TREX

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

 Sun Multi-Schema Validator (MSV) - TREX、RELAX Core 、RELAX Namespace 、RELAX NG 、DTD 、W3C XML Schema による妥当性検証を行う。サン・マイクロシステムズ、川口耕介

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

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

関連項目 

 RELAX NG
 RELAX (Regular Language description for XML)
 文書スキーマ定義言語 (DSDL)
 DTD (Document Type Definition 、文書型定義)

外部リンク 

 TREX - Tree Regular Expressions for XML - ジェームズ・クラークのページ
 TREX チュートリアル
 Sun Multi-Schema Validator (MSV) - TREX、RELAX Core 、RELAX Namespace 、RELAX NG 、DTD 、W3C XML Schema による妥当性検証を行うソフトウェア。サン・マイクロシステムズ、川口耕介

XML
データモデリング