2.5.4. 制限によるタイプの定義

概要

XML スキーマを使用すると、XML スキーマの単純型の可能な値を制限することにより、新しい型を作成できます。たとえば、厳密に 9 文字の文字列である単純型 SSN を定義できます。単純型を制限することで定義された新しい型は、simpleType 要素を使用して定義されます。

制限による型の定義には、次の 3 つのことが必要です。

  1. 新しい型の名前は、simpleType 要素の name 属性によって指定されます。
  2. ベース型 と呼ばれる新しい型が派生される単純型は、restriction 要素で指定されます。「基本型の指定」を参照してください。
  3. ベース型の制限を定義する facet というルールは、restriction 要素の子として定義されます。「制限の定義」 を参照してください。

基本型の指定

基本型は、新しいタイプを定義するために制限されているタイプです。これは restriction 要素を使用して指定されます。restriction 要素は simpleType 要素の唯一の子で、ベース型を指定する 1 つの属性 base を持ちます。基本型は、任意の XML スキーマの単純型にすることができます。

たとえば、xsd:int の値を制限して新しい型を定義するには、例2.14「基本型として int の使用」 のような定義を使用します。

例2.14 基本型として int の使用

<simpleType name="restrictedInt">
  <restriction base="xsd:int">
    ...
  </restriction>
</simpleType>

制限の定義

基本型に課せられた制限を定義するルールは、ファセット と呼ばれます。ファセットとは、ファセットの適用方法を定義する 1 つの属性 value を持つ要素です。利用可能なファセットとその有効な value 設定は、ベース型によって異なります。たとえば、xsd:string は、以下を含む 6 つのファセットをサポートします。

  • 長さ
  • minLength
  • maxLength
  • pattern
  • whitespace
  • enumeration

各ファセット要素は restriction 要素の子です。

例2.15「SSN の単純型の説明」 は、ソーシャルセキュリティー番号を表す単純型 SSN の例を示しています。作成される型は xxx-xx-xxxx 形式の文字列です。<SSN>032-43-9876<SSN> は、この型の要素に対する有効な値ですが、<SSN>032439876</SSN> は有効ではありません。

例2.15 SSN の単純型の説明

<simpleType name="SSN">
  <restriction base="xsd:string">
    <pattern value="\d{3}-\d{2}-\d{4}"/>
  </restriction>
</simpleType>