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 |
空白(改行、タブ、スペース、およびキャリッジリターン)をどのように扱うかを指定します |
|