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 の妥当性検証器 (バリデータ) の実装として利用可能なものの一部を示す。
オープンソースであり無償で利用することができる。
ファイル名の接尾辞 (拡張子).
非公式的な慣習として、TREXで記述されたスキーマ (パターン) は、ファイルの名称の接尾辞 (拡張子) として ".trex" が使われている。