$Id: step3.html 1.14 2000/02/29 07:26:56 murata Exp $
STEP 3では、データ型について説明します。
XML Schema Part 2は、 多くの組み込み済みデータ型を導入しています。それらは、XML Schema以外の 仕様からも利用できるように配慮されています。RELAXは、これらの組み込み 済みデータ型をすべて引き継いでいます。
XML Schema Part 2の組み込み済みデータ型には、XMLのDTDから借りたもの と、新規に導入されたものがあります。次に、XMLのDTDから借りたものの一覧を示 します。
次に、XML Schema Part 2で新たに導入した組み込み済みデータ型の一覧を 示します。
XML Schema Part 2では、これらのデータ型を指定するとき、範囲などの制 限をつけることができます。RELAXでも同様です.ただし,XML Schema Part 2 とは異なり,ユーザがデータ型を定義することは出来ません.
RELAXで独自に導入したデータ型はnone
と
emptyString
の二つです。
none
空のデータ型です。どんな文字列もこのデータ型に属することはありません。RELAXでは、noneを用いて属性の禁止を指定します。 次の例では、classという属性が禁止されています。
<tag name="p"> <attribute name="class" type="none"/> </tag>
emptyString
空の文字列からなるデータ型です。DTDのEMPTY
との互換性が
あります。
<elementRule pred="em" type="emptyString"/>
このelementRule
は、次の二つに限って許しています。
<em>
と</em>
の間に空白が入ることは許さ
れません。
<em/>
<em></em>
XML Schema Part 2と同様に、RELAXでもデータ型に制限を加えることがで
きます。たとえば、integer
に「15以上、65以下」という制限を
加えることができます。制限を示す構文も、XML Schema Part 2と同様です。
elementRule
の場合elementRule
が参照しているデータ型に制限を加えるには、
elementRule
に子要素を追加します。
以下の例では、要素型age
の生け垣モデルは
integer
への参照です。要素minInclusive
と
maxInclusive
はそれぞれ最小値と最大値に関する追加条件を表
しています。したがって、age
要素の内容は、18から65までの
整数を表す文字列になります。
<elementRule pred="age" type="integer"> <minInclusive value="18"/> <maxInclusive value="65"/> </elementRule>
age
要素に、文字列"20"を内容として含むことができます。
<age>20</age>
しかし、文字列"11"は駄目です。
<age>11</age>
attribute
の場合attribute
が参照しているデータ型に制限を加えるには、
attribute
に子要素を追加します。
以下の例では、employee
のsex
属性は、
man
かwoman
のどちらかであると指定しています.
ここで、enumeration
は許される値を指定する付加条件です。
<tag name="employee"> <attribute name="sex" type="NMTOKEN"> <enumeration value="man"/> <enumeration value="woman"/> </attribute> </tag>
sex
属性は文字列"man"
を持つことが出来ます。
<employee sex="man"/>
しかし、文字列"foo"
は駄目です。
<employee sex="foo"/>
STEP 3まででもRELAXは十分使いでがあると思います。RELAX!
mura034@attglobal.net