| ENGLISH | JAPANESE |
$Id: step3.sdoc 1.10 2000/08/26 03:14:38 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という属性が禁止されています.noneを導入する理由は,STEP 8で明らかになります.
<tag name="p"> <attribute name="class" type="none"/> </tag>
したがって,次の開始タグは許されません.
<p class="foo">
emptyString空の文字列からなるデータ型です.DTDのEMPTYとの互換性があります.
<elementRule role="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 role="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!