メッセージ・モデル・オブジェクト: 単純タイプの値制約

値制約は、単純タイプが表すことのできる値の限度を定義して、単純タイプを絞り込みます。

エレメントが取ることができる値を制約できると、メッセージをビジネス規則に準拠させられるなど、役立つ場合がよくあります。 このトピックでは、値制約を単純タイプに追加して、その単純タイプを基にしたすべてのエレメントの値を制約する方法を説明します。

ここで述べられている値制約は、XML スキーマ・ファセットによりモデル化され、単純タイプに関連しています。

ヒント: メッセージ・セットが WebSphere® Message Broker にデプロイされる場合は、 あらゆる違反がエラーや警告として報告されるようにするため、すべての値制約を妥当性検査することができます。

値制約のタイプ

長さ制約 : LengthMin LengthMax Length
長さ制約を使用して、単純タイプを基にしたすべてのエレメントの長さを制約したり、単一値に限定することさえできます。

長さ制約は、xsd:hexBinaryxsd:base64Binary、または xsd:string (xsd:normalisedString などのビルトイン・スキーマ・タイプを含む) から派生した単純タイプに適用できます。

長さ制約は祖先タイプから継承され、単純タイプ用に定義された長さ制約によってそのいずれかの先祖タイプにより定められた制約を緩めてはなりません。 例えば、タイプ「longString」(Max Length=100) は、タイプ「shortString」(Max Length=10) から派生させることはできません。

注: MRM ドメインの場合、デフォルトでは、Length 値制約は、メッセージ・セットが BAR ファイルに追加される時に Max Length 制約に変換されます。 これにより、固定長データ構造 (固定幅フィールドに合うようにストリングが埋め込まれる傾向がある) の場合に、 WebSphere Message Broker が偽りの妥当性検査エラーを出すことを避けられます。 長さの厳密な妥当性検査が必要な場合、 フラグ「ブローカーは長さファセットを MaxLength として処理する」を変更することにより、 メッセージ・セット・プロパティー内でこのデフォルトを変更できます。
範囲制約 : Min InclusiveMax InclusiveMin ExclusiveMax Exclusive
範囲制約は、単純タイプを基にしたすべてのエレメントに対して値の許容範囲を指定します。 包括的制約は、許可された範囲内の指定されたエンドポイントを組み込みますが、 排他的制約はそれを組み込みません。 範囲制約は、数値的である単純タイプまたはカレンダーと時間値に関係する単純タイプに適用できます。 ストリング値の順序付けは使用されている文字セットに依存しているため、範囲制約はストリングには適用できません。

範囲制約は祖先タイプから継承され、単純タイプ用に定義された範囲制約によってそのいずれかの先祖タイプにより定められた制約を緩めてはなりません。 例えば、タイプ「largeNumber」(Max Inclusive=100) は、タイプ「smallNumber」(Max Inclusive=10) から派生させることはできません。

メッセージ・モデルは、排他的制約を非整数タイプ (float、decimal、double、dateTime など) に適用することを許可していません。

列挙制約
列挙制約は、単純タイプを基にしたすべてのエレメントに対して単一の許可値を指定します。 許可値のリストは、同じ単純タイプに対して複数の列挙制約を定義することにより指定できます。 列挙制約は、すべての単純タイプに適用できます。

列挙制約は祖先タイプから継承され、単純タイプ用に定義された列挙制約の何らかのセットによって、許可値の範囲を広げてはなりません。 例えば、タイプ「AllColors」(レインボーのすべての色の列挙を持つ) は、タイプ「MonoColors」(「黒」と「白」の列挙のみを持つ) から派生させることはできません。

精度制約 : 合計桁および小数桁
精度制約は、10 進値のみに関係しています。 精度制約は、単純タイプを基にしたすべてのエレメントに対して有効数字 (合計桁) の数と小数位の数 (小数桁) を制限します。 精度制約は xsd:decimal から派生する単純タイプに適用できますが、実行時には、ブローカーはこれらの制約を xsd:decimal およびそれから派生するユーザー・タイプのみに適用することに注意してください。整数の単純タイプに適用される精度制約は無視されます。

精度制約は祖先タイプから継承され、単純タイプ用に定義された精度制約によってそのいずれかの先祖タイプにより定められた制約を緩めてはなりません。 例えば、タイプ「veryPrecise」(Fraction Digits=10) は、タイプ「notVeryPrecise」(Fraction Digits=1) から派生させることはできません。

パターン制約
パターン制約は、単純タイプを基にしたすべてのエレメントに対して許可値のセットを指定する正規表現です。 同じ単純タイプに対して複数のパターンを定義でき、 複雑な妥当性検査規則を論理的に分離した部分で表現することができます。 単純タイプに対する各パターン制約は、その単純タイプを基にしたエレメントに対する許可値のセットに寄与します。 言い換えれば、すべてのパターンはブール OR を使用して結合されます。

すべての値制約と同様、単純タイプは、パターン制約の基となっている単純タイプからパターン制約を継承できます。 この場合、単純タイプそのものが寄与するセットだけでなく、各祖先タイプが寄与するパターン制約のセットも満たす必要があります。 つまり、タイプ階層の各レベルから取られたパターン制約のセットは、ブール AND を使用して結合されます。

パターン制約は、xsd:string から派生した単純タイプのみに適用できます。

空白制約
空白制約は、単純タイプを基にしたすべてのエレメントに対してパーサーが空白文字を処理する方法を指定します。
注: MRM ドメインの場合の MRM 物理形式では、メッセージに定義された物理形式ごとに非常に厳密に空白文字を制御することができますが、それらの物理プロパティーは、論理モデルの空白制約とは別です。
特記事項 | 商標 | ダウンロード | ライブラリー | サポート | フィードバック

Copyright IBM Corporation 1999, 2009Copyright IBM Corporation 1999, 2009.
最終更新 : 2009-02-20 12:43:15

ad10470_