XML で要素内容や属性値をデータ型以上に制限したいときがあります。
たとえば、数値の上限を定めたかったり、文字数の下限・上限を定めた飼ったりする場合ですね。
そんな場合、独自データ型というものを作成します。
独自に単純型を定義する場合、基本的には「制限(ristriction)」という手段を用いて定義します。
そのとき利用するものが制約ファセットです。
制約ファセットは全て下記の記述で表現されます。
<xsd:制約名 value="利用する値"/>
そしてそれぞれの制約は、利用する際に基となるデータ型はほぼ決まっています。
各数値のデータ型、もしくは文字列型です。
数値の場合、minInclusive(以下), minExclusive(未満), maxInclusive(以上), maxExclusive(より上), totalDigits(桁総数), fractionDigits(小数部の桁数)が利用できます。
文字列の場合、length, maxLength, minLength, pattern ですね。minLength や maxLength は指定された値を含みます。
このうち pattern 以外の三つは文字列以外にも適応できるのですが、意味合いが変わってくるので後日改めて書きます。
はっきり言って、簡単です。一つ理解すればほぼ理解できます。
というわけで簡単なサンプルだけ・・・
<xsd:simpleType name="TestType">
<xsd:restriction base="xsd:int">
<xsd:minInclusive value="-100" />
<xsd:maxInclusive value="100" />
</xsd:restriction>
</xsd:simpleType>
-100 から 100 までの整数値だけを許可するデータ型の定義です。
と、使い方は簡単なのですが、正規表現を利用する pattern 制約ファセットはかなり強力で特殊なため、次回もうちょっと詳しくメモりましょ。