複合型に対して制約を課す場合、基底型に含まれるコンテンツ モデルの一部が派生型にて書き換えられることになります。派生型の編集を行いながらその基底型のコンテンツ モデルを正確に把握するのは大変な作業です。
スマート制約により、(基底型と派生型の) 2 つのコンテンツ モデルが派生した型のコンテンツ モデルに表示されます。派生した複合型では、基底複合型にあるすべての項目と、それらが派生した型とどのように関連付けられているのかを確認することができます。更にスマート制約では、基底型のコンテンツ モデルへ課すことのできるすべての制約が表示されます。これで派生した型を簡単かつ正確に制約することが可能になります。
以下の操作によりスマート制約を有効にすることができます:
•スキーマ デザイン ツールバーにあるスマート制約アイコン
をクリックします。
以下のサンプルはスマート制約の機能を説明しています。
この例では以下に示される複合型が基底型として使用されます

上に示される基底型の base から、以下のように複合型の derived を派生させることができます:
1.スキーマにて derived という名前の複合型を新たに作成します。
2.詳細入力ヘルパーにて base ドロップダウン リストから base を選択し、derivedBy ドロップダウン リストから restriction を選択します。

スマート制約が有効になっている状態で、派生型が以下のように表示されます

この例で派生型の制約に使用されるコントロールを以下に示します:
Εこのアイコン
により、基底型にある要素を削除することができます。ここでは elem1 が削除されます。要素を追加するには、アイコン
をクリックしてください。

•選択コンポジッターに表示された矢印
をクリックすることで、以下のスクリーンショットに示されるリストが表示されます。選択モデル グループをシーケンス モデル グループへ変更することができます。

同様に、ワイルドカードを変更することもできます

| どの項目をどの項目により置き換えることができるかの詳細については、XML スキーマの仕様 (英文) を参照ください。 |
•モデル グループの出現回数は、
にある 1 の隣にあるプラス記号により最低出現回数を増やし、4 の隣にあるマイナス記号により最大出現回数を減らすことができます。基底型にて定義された出現の回数が特定の数 (例えば 4) ではなく範囲の場合 (例えば 2-5) の場合にこれらのコントロールが表示されます。出現の範囲が間違っていてもこれらのコントロールは表示されます。

| 上のスクリーンショットでは、要素の最低出現回数が 2 に変更されています。モデル グループの背景が青色に変更され、基底複合型にあるモデル グループとは違うものであることを表している点に注目してください。基底型にて定義された出現範囲も表示されます。 |
•それが XML スキーマの仕様で定義された基底型の制約に対して妥当な変換である場合、属性または要素のデータ型を変更することができます。例えば、derived 複合型にある elem3 データ型を decimal から integer へ変更することができます。これにより、要素の背景が青色に変わり、基底型のデータ型とは違っている点が示され、基底型で定義されている要素のデータ型がかっこの中に表示されます:

| 派生した複合型にて値のデータ型が制限された属性を以下のスクリーンショットに示します |

•スマート制約はコンテンツ モデルで意味のない出現の警告を行います。意味のない出現とは、例えばコンテンツ モデルで表示されている、実際には必要ないシーケンスのことです。以下の図に意味のない出現の例を示します:

| メモ: 意味のない出現は、コンテンツ モデルがエラーを含んでいる時にだけ表示されます。コンテンツ モデルが意味のない出現を含んでいながら妥当である場合もあり、その場合は混乱を避けるために意味のない出現は明示的に表示されません。 |
| 意味をなさない表示の詳細については、XML スキーマの仕様を参照ください。 |