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!