STEP 3: データ型

$Id: step3.html 1.14 2000/02/29 07:26:56 murata Exp $

text by 村田 真

html by 難波 亮丞


STEP 3では、データ型について説明します。

1. XML Schema Part 2のデータ型

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 とは異なり,ユーザがデータ型を定義することは出来ません.

2. RELAX独自のデータ型

RELAXで独自に導入したデータ型はnoneemptyStringの二つです。

2.1 none

空のデータ型です。どんな文字列もこのデータ型に属することはありません。RELAXでは、noneを用いて属性の禁止を指定します。 次の例では、classという属性が禁止されています。

<tag name="p">
  <attribute name="class" type="none"/>
</tag>

2.2 emptyString

空の文字列からなるデータ型です。DTDのEMPTYとの互換性が あります。

<elementRule pred="em" type="emptyString"/>

このelementRuleは、次の二つに限って許しています。 <em></em>の間に空白が入ることは許さ れません。

<em/>
<em></em>

3. 付加条件

XML Schema Part 2と同様に、RELAXでもデータ型に制限を加えることがで きます。たとえば、integerに「15以上、65以下」という制限を 加えることができます。制限を示す構文も、XML Schema Part 2と同様です。

3.1 elementRuleの場合

elementRuleが参照しているデータ型に制限を加えるには、 elementRuleに子要素を追加します。

以下の例では、要素型ageの生け垣モデルは integerへの参照です。要素minInclusivemaxInclusiveはそれぞれ最小値と最大値に関する追加条件を表 しています。したがって、age要素の内容は、18から65までの 整数を表す文字列になります。

<elementRule pred="age" type="integer">
  <minInclusive value="18"/>
  <maxInclusive value="65"/>
</elementRule>

age要素に、文字列"20"を内容として含むことができます。

<age>20</age>

しかし、文字列"11"は駄目です。

<age>11</age>

3.2 attributeの場合

attributeが参照しているデータ型に制限を加えるには、 attributeに子要素を追加します。

以下の例では、employeesex属性は、 manwomanのどちらかであると指定しています. ここで、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"/>

4. まとめ

STEP 3まででもRELAXは十分使いでがあると思います。RELAX!

mura034@attglobal.net

Valid HTML 4.0!