値制約は、XML スキーマではファセットと呼ばれ、単純タイプが表すことのできる値の限度を定義して、単純タイプを絞り込みます。
エレメントまたは属性が取ることができる値を制約できると、メッセージをビジネス規則に準拠させられるなど、役立つ場合がよくあります。 このトピックでは、値制約を単純タイプに追加して、その単純タイプを基にしたすべてのエレメントまたは属性の値を制約する方法を説明します。
モデルが WebSphere® Message Broker にデプロイされる場合は、違反がエラーや警告として報告されるようにするため、エレメントと属性の値制約を妥当性検査することができます。SOAP、XMLNSC、DFDL、および MRM ドメインは、すべて妥当性検査をサポートします。
長さ制約は、xsd:hexBinary、xsd:base64Binary、または xsd:string (xsd:normalisedString などのビルトイン・スキーマ・タイプを含む) から派生した単純タイプに適用できます。
長さ制約は祖先タイプから継承され、単純タイプ用に定義された長さ制約によってそのいずれかの先祖タイプにより定められた制約を緩めてはなりません。 例えば、タイプ「longString」(Max Length=100) は、タイプ「shortString」(Max Length=10) から派生させることはできません。
範囲制約は祖先タイプから継承され、単純タイプ用に定義された範囲制約によってそのいずれかの先祖タイプにより定められた制約を緩めてはなりません。 例えば、タイプ「largeNumber」(Max Inclusive=100) は、タイプ「smallNumber」(Max Inclusive=10) から派生させることはできません。
列挙制約は祖先タイプから継承され、単純タイプ用に定義された列挙制約の何らかのセットによって、許可値の範囲を広げてはなりません。 例えば、タイプ「AllColors」(レインボーのすべての色の列挙を持つ) は、タイプ「MonoColors」(「黒」と「白」の列挙のみを持つ) から派生させることはできません。
精度制約は祖先タイプから継承され、単純タイプ用に定義された精度制約によってそのいずれかの先祖タイプにより定められた制約を緩めてはなりません。 例えば、タイプ「veryPrecise」(Fraction Digits=10) は、タイプ「notVeryPrecise」(Fraction Digits=1) から派生させることはできません。
すべての値制約と同様、単純タイプは、パターン制約の基となっている単純タイプからパターン制約を継承できます。 この場合、単純タイプそのものが寄与するセットだけでなく、各祖先タイプが寄与するパターン制約のセットも満たす必要があります。つまり、タイプ階層の各レベルから取られたパターン制約のセットが、ブール AND を使って結合されます。