ホーム HTML CSS XML JAVASCRIPT   PHP SQL MORE...   リファレンス 事例集    

XSD 制約 / ファセット

« 前章へ 次章へ »

制約は、XML要素または属性の許容値を定義するために使用します。 XML要素の制約はファセットと呼ばれます。


値による制約

次の例は、制約を持つ "age" と云う要素を定義しています。age の値は、0未満または120を超えることができません:

<xs:element name="age">
  <xs:simpleType>
    <xs:restriction base="xs:integer">
      <xs:minInclusive value="0"/>
      <xs:maxInclusive value="120"/>
    </xs:restriction>
  </xs:simpleType>
</xs:element>


値の集合による制約

XML要素の内容を許容できる値の集合に制限するため、列挙型制約を使用します。

次の例は、制約を持つ "car" と云う要素を定義しています。許容される値は次のものだけです。: Audi, Golf, BMW:

<xs:element name="car">
  <xs:simpleType>
    <xs:restriction base="xs:string">
      <xs:enumeration value="Audi"/>
      <xs:enumeration value="Golf"/>
      <xs:enumeration value="BMW"/>
    </xs:restriction>
  </xs:simpleType>
</xs:element>

上記例は、このように書くこともできます:

<xs:element name="car" type="carType"/>

<xs:simpleType name="carType">
  <xs:restriction base="xs:string">
    <xs:enumeration value="Audi"/>
    <xs:enumeration value="Golf"/>
    <xs:enumeration value="BMW"/>
  </xs:restriction>
</xs:simpleType>

注: この場合、型 "carType" は、"car"要素の一部ではないので、他の要素に使用することができます。


連続した値による制約

XML要素の内容を、使用可能な連続した数や文字を定義したものに制限するためは、パターン制約を使用します。

下の例は、制約を持った "letter" と云う要素を定義しています。 許容値は、a から z までの英小文字 1 文字です:

<xs:element name="letter">
  <xs:simpleType>
    <xs:restriction base="xs:string">
      <xs:pattern value="[a-z]"/>
    </xs:restriction>
  </xs:simpleType>
</xs:element>

次の例は、制約を持った "initials" と云う要素を定義しています。 許容値は、a から z までの3つの大文字です:

<xs:element name="initials">
  <xs:simpleType>
    <xs:restriction base="xs:string">
      <xs:pattern value="[A-Z][A-Z][A-Z]"/>
    </xs:restriction>
  </xs:simpleType>
</xs:element>

次の例も、制約を持った "initials" と云う要素を定義しています。 許容値は、a から z までの3つの小文字か大文字です:

<xs:element name="initials">
  <xs:simpleType>
    <xs:restriction base="xs:string">
      <xs:pattern value="[a-zA-Z][a-zA-Z][a-zA-Z]"/>
    </xs:restriction>
  </xs:simpleType>
</xs:element>

次の例は、制約を持った "choice" と云う要素を定義しています。 許容値は、x, y, または zの内の1文字だけです:

<xs:element name="choice">
  <xs:simpleType>
    <xs:restriction base="xs:string">
      <xs:pattern value="[xyz]"/>
    </xs:restriction>
  </xs:simpleType>
</xs:element>

次の例は、制約を持った "prodid" と云う要素を定義しています。 許容値は、連続した5つの数字で、0 から 9 の範囲でなければなりません:

<xs:element name="prodid">
  <xs:simpleType>
    <xs:restriction base="xs:integer">
      <xs:pattern value="[0-9][0-9][0-9][0-9][0-9]"/>
    </xs:restriction>
  </xs:simpleType>
</xs:element>


連続した値による他の制約

次の例は、制約を持つ "letter" と云う要素を定義しています。 許容値は、a から z までの小文字が0回以上出現することです:

<xs:element name="letter">
  <xs:simpleType>
    <xs:restriction base="xs:string">
      <xs:pattern value="([a-z])*"/>
    </xs:restriction>
  </xs:simpleType>
</xs:element>

次の例も、制約を持つ "letter" と云う要素を定義しています。 許容値は、1つ以上の文字のペアです。各ペアは、小文字の次が大文字で構成されるものです。 例えば、"sToP" は、このパターンに一致しますが、 "Stop" 又は "STOP" 或いは "stop" は、パターンから外れています:

<xs:element name="letter">
  <xs:simpleType>
    <xs:restriction base="xs:string">
      <xs:pattern value="([a-z][A-Z])+"/>
    </xs:restriction>
  </xs:simpleType>
</xs:element>

次の例は、制約を持つ "gender" と云う要素を定義しています。 許容値は、male か female だけです:

<xs:element name="gender">
  <xs:simpleType>
    <xs:restriction base="xs:string">
      <xs:pattern value="male|female"/>
    </xs:restriction>
  </xs:simpleType>
</xs:element>

次の例は、制約を持つ "password" と云う要素を定義しています。 長さは正確に8文字で、文字は、a から z までの小文字か大文字、または 0 から 9 までの数字でなければなりません:

<xs:element name="password">
  <xs:simpleType>
    <xs:restriction base="xs:string">
      <xs:pattern value="[a-zA-Z0-9]{8}"/>
    </xs:restriction>
  </xs:simpleType>
</xs:element>


空白文字による制約

空白文字をどのように処理するべきかを指定するため、空白制約を使用します。

次の例は、制約を持つ "address" と云う要素を定義しています。 空白制約は、XMLプロセッサが如何なる空白文字も削除しないことを意味する "preserve" に設定しています:

<xs:element name="address">
  <xs:simpleType>
    <xs:restriction base="xs:string">
      <xs:whiteSpace value="preserve"/>
    </xs:restriction>
  </xs:simpleType>
</xs:element>

次の例も、制約を持つ "address" と云う要素を定義しています。 空白制約は、XMLプロセッサがすべての空白文字(改行、タブ、スペース、キャリッジ・リターン)をスペースへ置換することを意味する、 "replace" に設定しています:

<xs:element name="address">
  <xs:simpleType>
    <xs:restriction base="xs:string">
      <xs:whiteSpace value="replace"/>
    </xs:restriction>
  </xs:simpleType>
</xs:element>

次の例も、制約を持つ "address" と云う要素を定義しています。 空白制約は、XMLプロセッサがすべての空白文字を削除する (改行、タブ、スペース、キャリッジ・リターンはスペースに置換され、先行または後続のスペースを削除し、 複数のスペースは1つのスペースに集約される) ことを意味する、"collapse" に設定しています:

<xs:element name="address">
  <xs:simpleType>
    <xs:restriction base="xs:string">
      <xs:whiteSpace value="collapse"/>
    </xs:restriction>
  </xs:simpleType>
</xs:element>


長さによる制約

要素の値の長さを制限するためは、length、maxLength、およびminLength制約を使用します。

次の例は、制約を持つ "password" と云う要素を定義しています。 値は、正確に8文字でなければなりません:

<xs:element name="password">
  <xs:simpleType>
    <xs:restriction base="xs:string">
      <xs:length value="8"/>
    </xs:restriction>
  </xs:simpleType>
</xs:element>

次の例は、制約を持つ他の "password" と云う要素を定義しています。 値は、最低5文字以上で最大8文字以内でなければなりません:

<xs:element name="password">
  <xs:simpleType>
    <xs:restriction base="xs:string">
      <xs:minLength value="5"/>
      <xs:maxLength value="8"/>
    </xs:restriction>
  </xs:simpleType>
</xs:element>


データ型の制約

制限 説明
enumeration 許容値のリストを定義します
fractionDigits 許容される小数部の桁数の最大値を指定します。 ゼロ以上でなければなりません
length 許容される文字数またはリスト項目数の正確な数を指定します。 ゼロ以上でなければなりません
maxExclusive 数の上限値を指定します(値はこの値未満でなければなりません)
maxInclusive 数の上限値を指定します(値はこの値以下でなければなりません)
maxLength 許容される文字数またはリスト項目数の最大値を指定します。 ゼロ以上でなければなりません
minExclusive 数の下限値を指定します(値はこの値より大でなければなりません)
minInclusive 数値の下限を指定します(値はこの値以上でなければなりません)
minLength 許容される文字数またはリスト項目数の最小値を指定します。 ゼロ以上でなければなりません
pattern 許容できる文字の正確なシーケンスを定義します
totalDigits 許容される桁数の最大値を指定します。 ゼロ以上でなければなりません
whiteSpace 空白(改行、タブ、スペース、およびキャリッジリターン)をどのように扱うかを指定します

« 前章へ 次章へ »