MkRelaxはRELAXスキームをビジュアルに作成するソフトですが、ある程度RELAXのことを知っておかなければ使いこなせません。
そこで、RELAX文法の要である「モジュール」「要素」「データ型」について簡単に説明します。(2)
モジュールは、RELAX文法の大きな構成単位です。大きな文法では、いくつものモジュールを組み合わせて使ったりしますが、今回の例のような小さなデータについては、1つのモジュールが文法になります。
モジュールの中には、文法とモジュールの情報が入ります。モジュールの情報には名前空間やVersionなどいろいろありますが、とりあえずどの要素がルートになるかを示す「interface」が重要です。
要素は即ちタグのことです。下リスト[要素の例]では、dataItemやname, costが要素に当たります。
<dataItem id="属性"> <name>お名前</name> <cost>お値段</cost> </dataItem>
この要素がどのように並んだり、またどんなデータが入るのかを決めるものが文法であり、その文法の書き方の一つがRELAXなのです。
上の例リスト[要素の例]から要素に必要な情報を考えてみると、
のようなものがある事がわかります。実際に、RELAXではこれらの設定項目を記述していくだけです。
要素の中に複数の要素を入れる場合、RELAX文法には次の2つの入れ方があります。
DTDが分かれば、それぞれ「,」と「|」に対応することが分かると思います。
さらに、要素には出現回数を決めることが出来ます。指定できる出現回数は以下のようです。
これらの文法を組み合わせて、必要なXMLデータの文法を作っていくわけです。
データ型は、タグの中身や属性のデータの型を指定します。RELAXは、XML Schema Part2 : Datatypesに定義してある組み込み済データ型(Built-in datatypes)が使えることになっています。非常に数が多いですが、馴染みのあるものを抜き出してみると以下のようなものがあります。
他にもたくさんデータ型があり、さらにファセット(Facet)と呼ばれる制限も付けることが出来ます。これらの型が、実際にJavaのどののデータ型にバインドされて実装されるかは、Relaxerの出力コードを確認してください。