UML モデルにおける値への XSD 制限の追加

UML モデル内の単純型または複合型に制限を追加できます。UML から XSD への変換を実行すると、生成される XML スキーマに含まれる単純型または複合型が持つ値が正規表現で指定するパターンに一致する値に制限されます。 また、制限を持つ型を含む XSD スキーマに XSD から UML への変換を実行し、モデル内でこれらの要素を生成することもできます。
始める前に
XSD 変換プロファイルをご使用のモデルに適用する必要があります。モデルには、«schema» ステレオタイプを持つパッケージが含まれている必要があります。
このタスクについて
モデル内のソース・クラスは、それぞれ他の単純型または複合型との汎化関係を持つ単純型または複合型とすることができます。 ソース・モデルに UML から XSD への変換を実行した際に、単純型間の汎化がステレオタイプを持たない場合でも、XML スキーマでは XSD 制限として生成されます。これは、単純型は子要素としての拡張を持つことができないためです。 複合型間の汎化がステレオタイプを持たない場合は、XML スキーマで XSD 拡張として生成されます。 この汎化が «restriction» ステレオタイプを持つ場合は、XSD 制限として生成されます。

XML スキーマに XSD から UML への変換を実行すると、XSD 制限は同じ型との汎化関係を持つ単純型または複合型を生成します。 生成される汎化関係は、«restriction» ステレオタイプを持ちます。

Package1 という名前のパッケージで、Class1 という名前のタイプを制限するには、以下のようにします。

  1. 「プロジェクト・エクスプローラー」ビューで、スキーマ・パッケージにクラスを追加し、«simpleType» または «complexType» ステレオタイプをそのクラスに適用します。 例えば、Class1 という名前のクラスをスキーマ・パッケージに追加します。
  2. Class1 の UML プロパティーを編集して、汎化関係を作成します。
    1. Class1 を右クリックし、「UML プロパティー」をクリックします。
    2. 汎化」をクリックします。
    3. 「プロパティー」ウィンドウの右上で、「新規汎化を挿入 (Insert New Generalization)」をクリックします。これは、矢印アイコンのあるボタンです。
    4. 「要素の選択」ウィンドウで、モデルを参照し、モデル要素を展開して、「(XSDDataTypes)」 > 「XSDDataTypes」と展開します。
    5. データ型を選択します。 例えば、「string」を選択します。
    6. 「OK」をクリックします。
    7. 「閉じる」をクリックします。

    次の図で背面に表示されているのが「プロパティー」ウィンドウ、前面に表示されているのが「要素の選択」ウィンドウです。汎化関係の作成用に開いています。

    「プロパティー」ウィンドウの前に「要素の選択」ウィンドウが開いており、プロジェクト・ツリーが展開され、XSDDataTypes が表示されていることを示す画面。

  3. 「プロジェクト・エクスプローラー」ビューで、Class1 という名前のクラスを展開し、新しい汎化関係を選択します。
  4. 「プロパティー」ビューで、「ステレオタイプ」タブをクリックし、「ステレオタイプの適用」をクリックして、「制限」を選択します。 次の図は、作成された新規モデル要素のダイアグラム・ビューです。

    simpleType ステレオタイプを持つ Class1 と string タイプとの汎化関係の「ダイアグラム」ビューを示す画面。この汎化関係は、restriction ステレオタイプを持ちます。

  5. Class1 という名前のクラスを選択し、「プロパティー」ビューで「ステレオタイプ」タブをクリックします。
  6. ステレオタイプ・プロパティー」セクションで、「パターン」プロパティーを選択し、制限を定義する値を入力します。 例えば次の図に示すように、「パターン」の値に「[0-9]{5}(-[0-9]{4})?」と入力します。

    「ステレオタイプ」タブが選択された状態の「プロパティー」ビューを示す画面。「パターン」プロパティーがハイライトされています。

Package1 をソースとして UML から XSD への変換を構成して実行すると、このモデル例では次の XML コードのような XML スキーマが生成されます。
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:Package1="http://Package1/" targetNamespace="http://Package1/">
  <xsd:simpleType name="Class1">
    <xsd:restriction base="xsd:string">
      <xsd:pattern value="[0-9]{5}(-[0-9]{4})?"/>
    </xsd:restriction>
  </xsd:simpleType>
</xsd:schema>

フィードバック