この変換は、そのソースとして UML パッケージを受け入れ、 パッケージの適切なクラスをスキーマ要素に変換することによって、XML スキーマを生成します。 生成されたスキーマは、変換のターゲットとしてプロジェクトで指定した schema というフォルダーに保管されます。 スキーマを含むファイル名は、パッケージの名前と同じ名前で、 拡張子は .xsd です。
例えば、Address という名前のクラスを含んでいる PurchaseOrder という名前の UML パッケージがあるとします。 このパッケージをソースとして、この変換を実行すると、次の XML スキーマが生成されます。
UML モデル (少なくとも 1 つのパッケージを持つ) をソースとして選択すると、この変換によって、 モデル内のそれぞれのパッケージごとに、ステレオタイプ <<XSDProfile::schema>> またはキーワード schema を持つ XML スキーマが生成されます。 変換プロパティー Process unmarked packages の値を true に設定した場合は、 それぞれのパッケージごとに、XML スキーマが生成されます。
ソフトウェアは、UML のソースとして使用可能な一連の UML モデルの例を XSD 変換にバンドルします。UML から XSD への変換のインストール後は、インストール・ディレクトリーからワークスペースに例をコピーする必要があります。 例えば、ソフトウェアを RSA/eclipse にインストールした場合は、例は RSA/eclipse/plugins/com.ibm.xtools.transform.samples.uml2.xsd/examples フォルダーにあります。 次のようにして例をワークスペースにコピーします。
注: 例モデルのオープン時に、そのモデルが XSDProfile の以前のバージョンを使用していることを通知し、 新規プロファイルに移行するかどうかを問い合わせるダイアログが表示されることがあります。 「はい」をクリックして新規バージョンのプロファイルに移行してください。
以下の手順で変換を実行します。
オプションで以下を行う。
これらのステップは、非単純 XML スキーマの UML モデルを作成する場合に必要です。UML 内の XML スキーマのモデリングについて詳しくは、 『UML 内の XML スキーマのモデリング: 優れた実例』の節を参照してください。
変換では、XSD スキーマが生成され、そのスキーマが schema という名前のフォルダー内の、指定したプロジェクトに配置されます。 ナビゲーター・ビューを使用して、生成されたスキーマを検査します。
XSD テンプレート・モデルを使用して、UML モデルを作成することもできます。 これには、必要なモデル・ライブラリー XSDDataTypes が既にインポートされていて、XSD プロファイル が、パッケージに適用されるという利点があります。
変換では、XSD スキーマが生成され、そのスキーマが schema
という名前のフォルダー内の、指定したプロジェクトに配置されます。
ナビゲーター・ビューを使用して、生成されたスキーマを検査します。
この変換は、ソースとして、少なくとも 1 つのパッケージを含む UML モデル、または 1 つ以上の UML パッケージを受け入れます。
この変換は、ターゲットとしてプロジェクトを受け入れます。
この変換は、以下の変換プロパティーを定義します。
プロパティー | 説明 |
Target Namespace | 変換によって生成されたスキーマのターゲット・ネーム・スペース。 このプロパティーの値は、http://www.ibm.com/SampleXSDTransformation などの文字列です。 |
Target Namespace Prefix | 変換によって生成されたスキーマのターゲット・ネーム・スペースの接頭部。 このプロパティーの値は、sxt などの文字列です。 |
Process UML class without stereotype or keyword |
このプロパティーは、 クラスがステレオタイプまたはそれに関連付けされたキーワードを持たない場合に、変換が UML クラスを処理するかどうかを決定します。 このプロパティーの値は、true または false のいずれかです。 デフォルトで、この値は true に設定され、 変換は、トップレベル・パッケージのすべてのクラスを処理します。 (現時点で、変換では、ネスト・パッケージは処理されません。) 変換をパッケージ内のすべてのクラスに適用する必要がない場合は、 この値を false に設定して、XSDProfile の適切なステレオタイプまたはキーワードを変換するクラスに適用します。 |
Process UML package without stereotype or keyword |
このプロパティーは、 パッケージがステレオタイプまたはそれに関連付けされたキーワードを持たない場合に、変換が UML パッケージを処理するかどうかを決定します。 このプロパティーの値は、true または false のいずれかです。 デフォルトで、この値は true に設定され、 変換は、すべてのトップレベル・パッケージを処理します。 (現時点で、変換では、ネスト・パッケージは処理されません。) モデル内のすべてのトップレベル・パッケージに、変換を適用する必要がない場合は、 この値を false に設定して、XSDProfile の適切なステレオタイプ <<schema>> またはキーワード schema を変換対象のパッケージに適用します。 |
Convert a nested class to anonymous type implicitly |
このプロパティーは、ネストするクラスおよびネストされるクラスの間に明示された関連がない場合に、変換が、ネスト・クラスを匿名タイプに変換するかどうかを決定します。 このプロパティーの値は、true または false のいずれかです。 デフォルトで、この値は false に設定され、 変換は、ネストするクラスとネストされるクラスの間に関連がある場合のみ、ネストされるクラスを匿名タイプに変換します。 この値が true に設定されている場合は、 すべてのネストされているクラスは、要素タイプがこれらの匿名タイプになっている要素を含んでいるネストされたクラスに対応した XSD タイプを持つ匿名タイプに変換されます。 このプロパティーの値を明示的に true に設定することによる匿名タイプの生成には、いくつかの制約事項があり、このため、慎重に使用するようにしてください。 |
UML から XSD 変換でサポートされている UML 内の複雑な XML スキーマのモデリングでは、XML スキーマ要素を表すために、UML 構成の小さなサブセットが使用されます。 このサブセットには、次の UML 要素、すなわち クラス、プロパティー、汎化、関連、および 依存が含まれています。 シンプル・タイプ、複合タイプ、 属性と要素、再使用可能グループなどの XML スキーマ要素をこのサブセットを使用して表すには、 XSD プロファイルをソース UML モデルに適用し、 さらに、このプロファイルからのステレオタイプを使用してステレオタイプの プロパティーを適切な値に設定することによって、それをマークアップする必要があります。
次のクラス図は、XSD プロファイルの UML モデルを示しています。
次の表では、ステレオタイプおよびそのプロパティーについて説明します。
ステレオタイプ | メタクラス拡張 | プロパティー | コメント |
annotation | コメント |
kind language source |
コメントは、アプリケーション情報または文書の注釈に変換されます。 プロパティー kind は、注釈のタイプ、すなわち documentation および appinfo を決定します。 プロパティー language および source は、資料の自然言語、および今後の資料のソースをそれぞれ指定します。 |
attribute | プロパティー (クラスの) |
form use |
UML プロパティーは、タイプがシンプル・タイプで、多重度が [0..1] の場合には、複合タイプの属性または属性グループに変換されます。 ステレオタイプのプロパティー form は、属性名が、インスタンス文書で修飾される必要があるかどうかを決定します。 値は、qualified、 unqualified、または default のいずれかです。 値が default の場合は、値は、unqualified にデフォルト設定された schema の attributeFormDefault にデフォルト設定されます。 プロパティー use は、属性がオプションか必須かを決定します。 この値は、optional、prohibited、または required のいずれかです。 デフォルトで、この値は optional です。 値 prohibited は、現行のインプリメンテーションでは無視されます。 |
attributeGroup | クラス | クラスは属性グループに変換されます。 | |
complexType | クラス |
anonymous block final modelGroup maxOccurs minOccurs mixed |
クラスは複合タイプに変換されます。 プロパティー anonymous は、トップレベルの複合型宣言がスキーマに作成されているかどうかを判別します。 この値は、true または false です。 この値が true の場合は、 型宣言は生成されず、このクラスへのすべてのリファレンスは、属性または要素のタイプとして、 匿名タイプを持つ属性または要素宣言に変換されます。 デフォルトで、この値は false です。 プロパティー block は、タイプ置換をブロックするかどうかを決定します。 このプロパティーは、#all、extension、 restriction、またはスペースで分けた extension および restriction のリストのいずれかです。 値 #all は、すべての派生タイプがこのタイプで置換されないようにし、extension は、このタイプのすべての拡張がこのタイプで置換されないようにし、restriction は、このタイプのすべての制限事項がこのタイプで置換されないようにします。 リスト "extension restriction" には、#all と同じ効果があります。 block プロパティーが指定されていない場合は、値のデフォルトは schema の blockDefault プロパティーに設定されます。 プロパティー final は、 その他のタイプをこのタイプから派生させることができるかどうかを決定します。 この値は、#all または (extension または restriction) のリストのいずれかです。 この値が #all の場合は、どのような種類の導出も許可されません。 より細かく制御するために、値は、restriction または extension のいずれかのキーワードをスペースで分離したリストとして設定できます。この値のデフォルトは、schema の finalDefault に設定されます。 プロパティー modelGroup は、タイプのコンテンツ・モデルを決定します。 modelGroup の値は、all、choice、または sequence です。 デフォルト値は、sequence です。 制約: modelGroup の値が all の場合、anonymous の値は false に設定しておく必要があります。 設定されていない場合は、制約違反が発生します。 minOccurs および maxOccurs の値は、sequence および choice グループが、複合タイプで出現する最小数および最大数です。 all モデル・グループの場合、maxOccurs は 1 でなければならず、minOccurs に許可されているのは 0 または 1 のみです。 boolean プロパティー mixed は、複合タイプが混合コンテンツを許可するかどうかを指定します。 デフォルトで、この値は false です。 |
element | プロパティー (クラスの) |
block final form nillable |
プロパティーは、要素に変換されます。 プロパティー final は、グローバル要素にのみ適用され、 ローカル要素には適用されません。 このプロパティーは、他のタイプをこのタイプから派生させることができるかどうかを決定します。 この値は、#all または (extension | restriction) のリストのいずれかです。 この値が #all の場合は、どのような種類の導出も許可されません。 より細かく制御するために、値は、restriction または extension のいずれかのキーワードをスペースで分離したリストとして設定できます。この値のデフォルトは、schema の finalDefault に設定されます。 ステレオタイプのプロパティー form は、要素名をインスタンス文書で修飾する必要があるかどうかを決定します。 値は、qualified、 unqualified、または default のいずれかです。 値が default の場合、値は、unqualified にデフォルト設定された schema の、elementFormDefault にデフォルト設定されます。 boolean プロパティー nillable は、xsi:nil がこの要素のインスタンスで使用可能かどうかを決定します。 デフォルトで、この値は false です。 |
enumeration | クラス | anonymous |
クラスは、シンプル・タイプを表す他のクラスへの汎化関係がある場合は、XSD 列挙に変換されます。 プロパティー anonymous は、 列挙ファセットを持つトップレベルのシンプル型宣言が、スキーマに作成されているかどうかを判別します。 この値は、true または false です。 この値が true の場合は、 型宣言は生成されず、このクラスへのすべてのリファレンスは、属性または要素のタイプとして、 匿名タイプを持つ属性または要素宣言に変換されます。 デフォルトで、この値は false です。 |
global | クラス | |
このステレオタイプを持つクラスは、 トップレベルの要素または属性宣言に変換されます。 クラスには、1 つだけプロパティーを含める必要があります。 プロパティーに <<attribute>> ステレオタイプまたはキーワードがある場合、そのクラスはトップレベル属性に変換されます。 そうでない場合は、トップレベル要素になります。 要素または属性の名前はプロパティーの名前と同じであり、 タイプはそのプロパティーのタイプになります。 |
listOf | 依存 | 依存のクライアントは、項目タイプが依存のサプライヤーになっている XSD リストに変換されます。 シンプル・タイプを表す 2 つのクラス間には、このような依存は 1 つのみ存在可能です。 | |
modelGroup | クラス |
anonymous modelGroup |
クラスは、sequence コンテンツ・モデルを持つ再使用可能名前付きモデル・グループに変換されます。 プロパティー anonymous は、トップレベル・グループ宣言が、スキーマに作成されているかどうかを判別します。 この値は、true または false です。 この値が true の場合、 グループ宣言は生成されません。 また、このクラスへのすべてのリファレンスは、ネスト・モデル・グループに変換されます。 値が false の場合、クラスへのリファレンスはモデル・グループ・リファレンスに変換されます。 デフォルトで、この値は false です。 プロパティー modelGroup は、グループのコンテンツ・モデルを決定します。modelGroup の値は、all、choice、または sequence です。 デフォルト値は、sequence です。 制約 : modelGroup の値が all の場合、anonymous の値を false に設定しておく必要があります。 設定されていない場合は、制約違反が発生します。 |
schema | パッケージ |
attributeFormDefault blockDefault elementFormDefault finalDefault targetNamespace targetNamespacePrefix |
パッケージおよびその内容は、XSD スキーマに変換されます。 パッケージの名前は、スキーマ (ファイル) の名前になります。 プロパティー attributeFormDefault は、ローカル属性宣言が、修飾名を使用する必要があることを指定します。 この値は、qualified または unqualified です。 デフォルト値は、unqualified です。 プロパティー blockDefault は、 複合タイプおよび要素宣言で使用する block 属性のデフォルト値を設定します。 block 属性は、要素置換またはタイプ置換をブロックするかどうかを決定します。 この属性は、#all または、1 つ以上の (extension または restriction または substitution) のスペース分離リストのいずれかです。
プロパティー elementFormDefault は、ローカル要素宣言が、
修飾名を使用するかどうかを指定します。
この値は、qualified または unqualified です。
デフォルト値は、unqualified です。 プロパティー finalDefault は、複合タイプ、シンプル・タイプ、 および要素宣言で使用する final 属性のデフォルト値を設定します。 final 属性は、タイプ導出を不許可にするかどうかを決定します。 この属性は、#all または、1 つ以上の (extension または restriction または substitution または list または union) のスペース分離リストのいずれかです。 targetNamespace および targetNamespacePrefix の値を設定する場合は、これらの値は、 対応する変換プロパティー、ターゲット・ネーム・スペース、および ターゲット・ネーム・スペース接頭部でそれぞれ設定した値を指定変更します。 |
simpleType | クラス |
anonymous final fractionDigits length maxExclusive maxInclusive maxLength minExclusive minInclusive minLength pattern totalDigits whiteSpace |
クラスは、XSD 組み込みデータ・タイプ、他のシンプル・タイプ、または XSD 列挙タイプに汎化されている場合、 シンプル・タイプに変換されます。 プロパティー anonymous の値は、true または false のいずれかです。この値が true の場合、クラスは匿名タイプとして処理され、トップレベル型宣言は生成されません。 プロパティー final は、 その他のタイプをこのタイプから派生させることができるかどうかを決定します。 この値は、#all または、 (extension または restriction または list または union) のリストです。 この値が #all の場合は、どのような種類の導出も許可されません。 より細かく制御するために、restriction、extension、list、または union のいずれかのキーワードのスペース分離リストとして値を設定できます。 残りのプロパティーは、XSD スキーマによって定義されているファセットを表します。 これらのファセットを使用して、値 の有効範囲の設定、値の長さおよび精度の制約、 有効な値が一致する必要がある正規表現の指定、 または組み込み XSD タイプからの制約によって派生したシンプル・タイプの空白処理の指定を行うことができます。 詳しくは、表『ファセットの意味』を参照してください。 これらすべてのファセットが、すべてのシンプル・タイプに適合するわけではないことに注意してください。 例えば、string、normalizedString、および token から派生したシンプル・タイプの場合、適用できるファセットは、length、minLength、maxLength、 pattern、および whitespace です。 詳しくは、表『シンプル・タイプおよび適用可能なファセット』を参照してください。 |
unionOf | 依存 | 依存のクライアントは、そのメンバーの 1 つとして、依存のサプライヤーを使用して、XSD 共用体に変換されます。 シンプル・タイプを表すクラスは、異なる (シンプル・タイプ) クラスへの、このような複数の依存を持つことができます。 | |
wildcard | プロパティー (クラスの) | processContents namespace |
UML プロパティーは要素のワイルドカードに変換されます。プロパティーに wildcard のみでなく、キーワード attribute またはステレオタイプ <<attribute>> がある場合、属性のワイルドカードに変換されます。 プロパティー processContents は、置換属性または要素をどこまで厳密に妥当性検査するかを決定します。 これが skip の場合は、スキーマ・プロセッサーは検査を行いません。 これが lax の場合、 スキーマ・プロセッサーは、宣言を検出可能な属性または要素の妥当性検査を行い、 無効な場合にはエラーを発信します。 これが strict の場合は、 スキーマ・プロセッサーは、ネーム・スペースに関連付けされているスキーマ文書の検出を試行し、 すべての属性または要素の妥当性検査を行います。 デフォルトで、この値は strict に設定されています。 プロパティー namespace は、置換属性または要素がどのネーム・スペースに存在するかを指定します。許可されている値は、 (##any、##other、anyURI のリスト、または ##targetNamespace、または ##local) のいずれかです。 これが ##any の場合、置換要素または属性は、任意のネーム・スペースに存在可能です。また、どのネーム・スペースにも存在しないことがあります。 これが ##other の場合、 置換要素または属性は、文書のターゲット・ネーム・スペース以外の任意のネーム・スペースに存在可能です。ただし、これらは 1 つのネーム・スペース内に存在している必要があります。 スキーマ文書 にターゲット・ネーム・スペースがない場合は、置換要素または属性は、 任意のネーム・スペースを 1 つだけ持つことができます。 これ以外の場合は、次の項目、##targetNamespace、#local、または特定のネーム・スペースのいずれか、 またはすべてを含む値のスペース分離リストの場合があります。 ##targetNamespace は、置換要素または属性がスキーマ文書のターゲット・ネーム・スペースに存在している可能性があることを示し、 ##local は、置換要素または属性がネーム・スペースに存在する可能性がないことを示しています。 |
モデリング中のスキーマが、その要素を非常に詳細に指定する必要がない場合は、ステレオタイプではなく、 キーワードを使用できます。 次の表では、UML から XSD 変換によってサポートされているキーワードについて説明します。
キーワード | UML 要素に適用可 | コメント |
annotation | コメント | コメントは、"appinfo" または "documentation" の注釈に変換されます。 |
attribute | プロパティー (クラスの) | プロパティーは、プロパティーの多重度が [0..1] の場合には、複合タイプの属性に変換されます。 |
attributeGroup | クラス | クラスは属性グループに変換されます。 |
complexType | クラス | クラスは複合タイプに変換されます。 |
element | プロパティー | プロパティーは、複合タイプの要素に変換されます。 |
enumeration | クラス | クラスは、シンプル・タイプを表す他のクラスへの汎化関係がある場合は、XSD 列挙に変換されます。 |
global | クラス |
このキーワードを持つクラスは、 トップレベルの要素または属性宣言に変換されます。 クラスには、1 つだけプロパティーを含める必要があります。 プロパティーに <<attribute>> ステレオタイプまたはキーワード attribute がある場合、そのクラスはトップレベル属性に変換されます。 そうでない場合は、トップレベル要素になります。 要素または属性の名前はプロパティー名から派生し、タイプはそのプロパティーのタイプから派生します。 |
listOf | 2 つのシンプル・タイプを表す 2 つのクラス間の依存 | 依存のクライアントは、項目タイプが依存のサプライヤーになっている XSD リストに変換されます。 シンプル・タイプを表す 2 つのクラス間には、このような依存は 1 つのみ存在可能です。 |
modelGroup | クラス | クラスは、sequence コンテンツ・モデルを持つ再使用可能名前付きモデル・グループに変換されます。 |
schema | パッケージ |
パッケージおよびその内容は、XSD スキーマに変換されます。 パッケージの名前は、スキーマ (ファイル) の名前になります。 キーワード schema を使用している場合は、 『変換プロパティー』、ターゲット・ネーム・スペース、およびターゲット・ネーム・スペース接頭部をそれぞれ適切な値に設定することによって、ターゲット・ネーム・スペースおよびターゲットネーム・スペース接頭部を指定する必要があります。 |
simpleType | クラス | クラスは、XSD 組み込みデータ・タイプまたはその他のシンプル・タイプに汎化されている場合、 シンプル・タイプに変換されます。 |
unionOf | 2 つのシンプル・タイプを表す 2 つのクラス間の依存 | 依存のクライアントは、そのメンバーの 1 つとして、依存のサプライヤーを使用して、XSD 共用体に変換されます。 シンプル・タイプを表すクラスは、異なる (シンプル・タイプ) クラスへの、このような複数の依存を持つことができます。 |
wildcard | プロパティー |
UML プロパティーは要素のワイルドカードに変換されます。プロパティーに wildcard のみでなく、キーワード attribute がある場合、属性のワイルドカードに変換されます。 |
44 のシンプル・タイプが XML Schema Recommendation に作成されます。 これらのシンプル・タイプは、文字列、数、日時の値などの共通データ・タイプを表し、XML 1.0 の属性タイプのレガシー・タイプも含まれています。XSD は、12 の制約ファセット も提供します。 これらのファセットは、シンプル・タイプの値の有効範囲を指定するために使用したり、 それらの値の長さおよび精度を制限したり、有効な値のリストを列挙したり、 有効な値が一致する必要がある正規表現を指定することができます。
新規シンプル・タイプは、組み込みタイプ、またはその他シンプル・タイプから、ファセットを適切な値に設定することによって、 派生させることができます。 これを行うには、UML モデルで使用可能な組み込みタイプの表記を使用する必要があります。
組み込みシンプル・タイプは、クラスとしてモデル化され、XSDDataTypes という名前のモデル・ライブラリーで使用可能になっています。 これらのタイプにアクセスするには、XSDDataTypes ライブラリーをご使用のモデルにインポートする必要があります。XSDDataTypes モデル・ライブラリーをインポートするには、 モデル・エクスプローラーで、モデルのルート (モデル自体) を右クリックして、 「モデル・ライブラリーのインポート...」を選択し、 ドロップダウン・リストから「XSDDataTypes」を選択します。
新規シンプル・タイプ (ユーザー定義シンプル・タイプ) を定義するには、XSDDataTypes モデルの適切なクラスから特化して、 <<simpleType>> ステレオタイプのプロパティーを使用して、定義済みタイプの値を制約する必要があります。以下に例を示します。
Quantity の最大値は、例えば <<simpleType>> の maxInclusive プロパティーを 100 に設定することによって、100 に制限できます。
UML 内の XML スキーマのモデリングの目的は、XML スキーマのビジュアル表示を作成し、UML から XSD 変換を使用してスキーマを生成することです。 分析は、XML スキーマのほとんどの基本機能が、UML モデル要素によって表記可能であることを示しています。 次の表では、UML の概念、および XML Schema Definition (XSD) の対応する概念の間のマッピングのサブセットを示します。
UML の概念 | XML スキーマの概念 |
パッケージ | 接頭部付き単一ネーム・スペース |
クラス | タイプおよび再使用可能グループ
|
列挙 | UML 列挙リテラルと等価の列挙ファセットを持つ XSD 文字列シンプル・タイプの制限。 これは、XSD プロファイルからの <<enumeration>> ステレオタイプが適用されている UML クラスを使用している場合の事象とは異なることに注意してください。 ステレオタイプ化された UML クラスを使用することによって、より一般的な XSD 列挙が使用可能です。 |
クラスのプロパティー | 複合タイプの要素および属性 |
関連 (集約) | 組み込まれている要素の子クラス (複合タイプ) |
汎化 | タイプ導出
|
オブジェクト・アイデンティティー | ユーザー指定キー・フィールドまたは明示的アイデンティティー機構 (まだ実装されていません) |
UML 要素 | XSD 要素 | コメント |
ステレオタイプ <<schema>> を持つパッケージ | ターゲット・ネーム・スペースおよびターゲット・ネーム・スペース接頭部を持つスキーマ | パッケージ内のコンテンツは、.xsd ファイル内のスキーマを作成します。
スキーマ・ファイルの名前は、パッケージと同じ名前です。
<<schema>> ステレオタイプのプロパティー attributeFormDefault および elementFormDefault を使用して、生成されたスキーマ上に attributeFormDefault および elementFormDefault 属性を指定できます。 ステレオタイプの代わりにキーワード schema を使用する場合は、 『変換プロパティー』、ターゲット・ネーム・スペース、および ターゲット・ネーム・スペース接頭部 の値をそれぞれ設定することによって、 ターゲット・ネーム・スペースおよびその接頭部を指定する必要があります。 |
UML 要素 | XSD 要素 | コメント |
ステレオタイプ <<complexType>> を持つクラス | 複合タイプ | ステレオタイプのプロパティー modelGroup が、all、choice、または sequence の可能な値の 1 つに設定されていない場合、複合タイプは sequence モデル・グループを使用して生成されます。 |
キーワード complexType を持つクラス | 複合タイプ | 複合タイプは、sequence モデル・グループを使用して生成されます。 |
キーワードまたはステレオタイプを持たないクラス | 複合タイプ | 変換プロパティー Process unmarked class の値が true に設定されている場合のみ、複合タイプが生成されます。 これ以外の場合は、クラスは無視されます。 複合タイプが生成されている場合、そのモデル・グループは、sequence に設定されます。 |
プロパティー | 複合タイプの要素 | |
<<attribute>> ステレオタイプ、 またはキーワード attribute を持つプロパティー | 複合タイプの属性 |
プロパティーは、そのプロパティーのタイプがシンプル・タイプで、 その多重度が [0..1] になっている場合のみ、属性に変換されます。 これ以外の場合は、要素に変換されます。 デフォルト値を指定している場合は、プロパティーはデフォルト値を使用してオプション属性に 変換されます。 プロパティーを読み取り専用にしてデフォルト値を指定している場合は、 デフォルトに固定されたそのプロパティーの値を使用して、属性に変換されます。 どちらの場合も、プロパティーの多重度を [0..1] に設定する必要があります。 ステレオタイプ <<attribute>> のプロパティー use を使用して、属性をオプションまたは必須にします。use の値を required に設定して、デフォルト値を指定し、プロパティーを読み取り専用にしている場合は、 デフォルト値および読み取り専用指定は無視されます。 |
UML 要素 | XSD 要素 | コメント |
1 つのプロパティーを含む、ステレオタイプ <<global>> またはキーワード "global" を持つクラス。 | グローバル (トップレベル) 要素または属性。 |
クラスには、1 つだけプロパティーを含める必要があります。 プロパティーに <<attribute>> ステレオタイプまたはキーワード attribute がある場合、そのクラスはトップレベル属性に変換されます。 そうでない場合は、トップレベル要素になります。 要素または属性の名前はプロパティー名から派生し、タイプはそのプロパティーの タイプから派生します。 |
UML 要素 | XSD 要素 | コメント |
ステレオタイプ <<global>> が適用されているクラス間の汎化関係。 | <<global>> ステレオタイプのクラスで表されるグローバル要素によって構成される置換グループ。 | グローバル要素の置換グループを形成するには、それらのタイプ (クラス) 自体が等価の汎化関係にある必要があります。 |
以下の例では、グローバル要素 dress は置換グループのヘッドであり、グローバル要素 shirt および trouser はメンバーです。これらの要素のタイプが、グローバル要素間の汎化関係と等価の汎化関係にあることに注意してください。
UML 要素 | XSD 要素 | コメント |
ステレオタイプ <<simpleType>> またはキーワード simpleType を持つクラス |
ユーザー定義シンプル・タイプ。 組み込みシンプル・タイプまたはその他のユーザー定義シンプル・タイプの制限 |
組み込みシンプル・タイプまたは他のユーザー定義シンプル・タイプ、 または XSD 列挙タイプとの汎化関係が必要です。 |
UML 要素 | XSD 要素 | コメント |
ステレオタイプ <<enumeration>> またはキーワード enumeration を持つクラス | XSD 列挙。 指定された列挙ファセットを持つシンプル・タイプ |
組み込みシンプル・タイプまたは他のユーザー定義シンプル・タイプとの汎化関係が必要です。 |
UML 要素 | XSD 要素 | コメント |
UML 列挙 | XSD 列挙、制限ベースの XSD:文字列、および指定された列挙ファセットを持つシンプル・タイプ | 他のシンプル・タイプへの汎化は必要ありません。 |
UML 要素 | XSD 要素 | コメント |
ステレオタイプ <<modelGroup>> を持つクラス | 名前付きモデル・グループ | ステレオタイプのプロパティー modelGroup が、all、choice、または sequence の可能な値の 1 つに設定されていない場合、モデル・グループは sequence モデル・グループを使用して生成されます。 |
キーワード modelGroup を持つクラス | 名前付きモデル・グループ | 名前付きモデル・グループは、sequence モデル・グループを使用して生成されます。 |
ステレオタイプ <<attributeGroup>> またはキーワード attributeGroup を持つクラス | 属性グループ | クラスのそれぞれのプロパティーは、属性グループ・メンバーに変換されます。
ただし、それぞれのプロパティーは、シンプル・タイプに変換可能なタイプで、多重度 [0..1] を持つものとします。
これ以外の場合は、プロパティーは無視されます。
プロパティーは、XSD 属性にのみ変換可能なため、必ずしもステレオタイプ <<attribute>> をプロパティーに適用する必要はありません。 ただし、属性に追加プロパティー (required、form、その他) を指定する場合は、<<attribute>> ステレオタイプを適用し、 ステレオタイプのプロパティーを適切な値に設定する必要があります。 |
UML 要素 | XSD 要素 | コメント |
クラス A は他のクラス B からの派生です。 | 複合タイプ A の複合コンテンツ拡張である複合タイプ B。 |
クラス A またはクラス B は、ステレオタイプ <<complexType>> またはキーワード complexType を持つことができます。 クラス A もクラス B も、「すべて」のモデル・グループまたはコンテンツ・モデルを持つことはできません。 「すべて」のモデル・グループでクラスを拡張しようとすると、制約違反になります。 クラス B は、ステレオタイプ <<modelGroup>> も<<attributeGroup>> も持つことはできません。キーワード modelGroup または attributeGroup も持つことはできません。 すなわち、複合タイプは、モデル・グループまたは属性グループを拡張できません。 |
クラス A は、<<simpleType>> ステレオタイプまたは キーワード simpleType を持つ他のクラス B から派生しています。 |
シンプル・タイプのシンプル・コンテンツ拡張である複合タイプ B。 クラス B のプロパティーは、どれもシンプル・コンテンツ拡張の属性になります。 |
シンプル・タイプからの派生の唯一の目的は、属性を追加することです。 そのため、クラス B のプロパティーのタイプはシンプル・タイプでなければならず、 その多重度は [0..1] でなければなりません。それ以外の場合、モデルは制約違反になります。 |
UML 要素 | XSD 要素 | コメント |
関連 (単方向またはコンポジット集約) クラス A -> クラス B | 複合タイプ B タイプの複合タイプ A の要素 | 要素名は、関連の端のロール名によって決定されます。 |
UML 要素 | XSD 要素 | コメント |
Class A には、Class B タイプの 1 つ以上のプロパティーが含まれています。 | 複合タイプ B タイプの複合タイプ A の要素 | 要素名は、プロパティーの名前によって決定されます。 |
UML 要素 | XSD 要素 | コメント |
クラス A から <<modelGroup>> ステレオタイプを持つクラス B への関連 (単方向の関連またはコンポジット集約)。 クラス A -> <<attributeGroup>> ステレオタイプを持つクラス C |
複合タイプ A のモデル・グループ・リファレンス。 複合タイプ A の属性グループ・リファレンス。 |
|
<<modelGroup>> ステレオタイプを持つクラス A から、同じく <<modelGroup>> ステレオタイプを持つクラス B への関連 (単方向の関連またはコンポジット集約) | クラス A で表されるモデル・グループ内のモデル・グループ参照 | |
<<attributeGroup>> ステレオタイプを持つクラス A から、同じく <<attributeGroup>> ステレオタイプを持つクラス B への関連 (単方向の関連またはコンポジット集約) | クラス A で表される属性グループ内の属性グループ参照。 |
UML 要素 | XSD 要素 | コメント |
2 つのシンプル・タイプ間に、ステレオタイプ <<listOf>> またはキーワード listOf を持つ依存 | List タイプ。 依存のクライアントは、依存のサプライヤー・リストであるシンプル・タイプに変換されます。 |
依存のクライアントおよびサプライヤーは、 両方シンプル・タイプである必要があり、それぞれの間には、<<listOf>> が 1 つだけ存在している必要があります。 これら 2 つのクラス間には、これ以外の関係があってはなりません。 |
クライアント・シンプル・タイプおよび 1 つ以上のサプライヤー間に、ステレオタイプ <<unionOf>> またはキーワード unionOf を持つ依存 | Union タイプ。
依存のクライアントは、依存のサプライヤーの共用体であるシンプル・タイプに変換されます。 |
依存のクライアントおよびサプライヤーは、 両方シンプル・タイプである必要があり、それぞれの間には、<<unionOf>> が 1 つ以上存在しています。 これらのクラス間には、これ以外の関係があってはなりません。 |
UML 要素 | XSD 要素 | コメント |
ステレオタイプ <<complexType>> およびステレオタイプのプロパティー anonymous = true を持ち、複合タイプを表記する他のクラス B によって参照されるクラス A。 |
クラス A は、匿名複合タイプに 変換されます。 リファレンスは、複合タイプ (クラス B によって表記される) の属性または要素に変換されます。 要素または属性のタイプは、この匿名タイプによって定義されます。 |
要素名または属性名は、関連の端のロール名またはプロパティー名によって決定されます。 クラス A が匿名として指定されているため、このクラスには、トップレベル複合型宣言は生成されません。 |
UML 要素 | XSD 要素 | コメント |
ステレオタイプ <<simpleType>> およびステレオタイプのプロパティー anonymous = true を持ち、複合タイプを表記する他のクラス B によって参照されるクラス A |
クラス A は、匿名シンプル・タイプ に変換されます。 リファレンスは、複合タイプ (クラス B によって表記される) の属性または要素に変換されます。 要素または属性のタイプは、この匿名タイプによって定義されます。 |
要素名または属性名は、関連の端のロール名またはプロパティー名によって決定されます。 クラス A が匿名として指定されているため、このクラスには、トップレベル・シンプル型宣言は生成されません。 |
UML 要素 | XSD 要素 | コメント |
ステレオタイプ <<enumeration>> およびステレオタイプのプロパティー anonymous = true を持ち、複合タイプを表記する他のクラス B によって参照されるクラス A |
クラス A は、匿名列挙に 変換されます。 リファレンスは、複合タイプ (クラス B によって表記される) の属性または要素に変換されます。 要素または属性のタイプは、この匿名タイプによって定義されます。 |
要素名または属性名は、関連の端のロール名またはプロパティー名によって決定されます。 クラス A が匿名として指定されているため、このクラスには、列挙ファセットを持つトップレベル・シンプル型宣言は生成されません。 |
UML 要素 | XSD 要素 | コメント |
ステレオタイプ <<modelGroup>> およびプロパティー anonymous = true の値を持つ、クラス A およびクラス B 間の関連 (単方向集約またはコンポジット集約) |
クラス B によって表記される名前付きモデル・グループのモデル・グループを含むクラス A を表記する複合タイプ。 |
このマッピングは、 A も B もコンテンツ・モデル all を持たない場合のみ有効です。 |
ステレオタイプ <<modelGroup>> を持つクラス A、およびステレオタイプ <<modelGroup>> とプロパティー anonymous = true の値を持つクラス B との間の関連 (単方向集約またはコンポジット集約) | クラス B によって表記される名前付きモデル・グループのモデル・グループを含むクラス A を表記する 名前付きモデル・グループ。 | このマッピングは、 A も B もコンテンツ・モデル all を持たない場合のみ有効です。 |
モデル・グループへの上記リファレンスは、クラス・プロパティーを使用してモデル化することもできます。
UML 要素 | XSD 要素 | コメント |
ステレオタイプ <<modelGroup>> およびプロパティー anonymous = true の値を持つ、タイプがクラス B のプロパティーを含むクラス A | クラス B によって表記される名前付きモデル・グループのモデル・グループを含むクラス A を表記する複合タイプ。 | このマッピングは、 A も B もコンテンツ・モデル all を持たない場合のみ有効です。 |
ステレオタイプ <<modelGroup>> およびプロパティー anonymous = true の値を持ち、タイプがクラス B のプロパティーを含むステレオタイプ <<modelGroup>> を持つクラス A | クラス B によって表記される名前付きモデル・グループのモデル・グループを含むクラス A を表記する 名前付きモデル・グループ。 | このマッピングは、 A も B もコンテンツ・モデル all を持たない場合のみ有効です。 |
UML 要素 | XSD 要素 | コメント |
A および B 間の関連を持つネスト・クラス B を含むクラス A。 | 匿名タイプ B の複合タイプ A 内の要素。 |
ネストするクラスとネストされるクラスとの間には、関連が必要です。 クラス A に、関連の代わりに、タイプ B のプロパティーが含まれている場合、 同じスキーマ・コンポーネントが取得されます。 |
UML 要素 | XSD 要素 | コメント |
ステレオタイプ <<simpleType>> またはキーワード simpleType を持ち、A および B 間に関連を持つ、ネストされたクラス B を含むクラス A。 | 匿名シンプル・タイプ B の複合タイプ A 内の要素。 |
ネストするクラスとネストされるクラスとの間には、関連が必要です。 クラス A に、関連の代わりに、タイプ B のプロパティーが含まれている場合、 同じスキーマ・コンポーネントが取得されます。 |
UML 要素 | XSD 要素 | コメント |
コメント | 注釈 | UML 要素内のコメントは XSD 文書の注釈に変換されます。 |
<<annotation>> ステレオタイプを持つコメント |
注釈 | 注釈のタイプ documentation または
appinfo は、<<annotation>> ステレオタイプの kind プロパティーの値によって決定されます。 kind の値が
documentation である場合、documentation 要素が作成されます。値が applicationInfo である場合は、appinfo
要素が作成されます。
kind のデフォルト値は
documentation です。 |
UML 要素 | XSD 要素 | コメント |
ステレオタイプ
<<wildcard>> またはキーワード wildcard を持つプロパティー。 |
複合タイプまたはモデル・グループに含まれる要素のワイルドカード | 置換要素が含まれるネーム・スペース、および置換の妥当性検査の精度は、
<<wildcard>> ステレオタイプのプロパティー
namespace および processContents によって決定されます。 |
UML 要素 | XSD 要素 | コメント |
ステレオタイプ
<<attribute>> と <<wildcard>>
またはキーワード、属性、およびワイルドカードを持つプロパティー。 |
複合タイプまたは属性グループに含まれる属性のワイルドカード | 置換属性が含まれるネーム・スペース、および置換属性の妥当性検査の精度は、
<<wildcard>> ステレオタイプのプロパティー
namespace および processContents によって決定されます。 |
UML 内の XML スキーマのモデリングの目的は、XML スキーマのビジュアル表示を作成し、UML から XSD 変換を使用してスキーマを生成することです。 通常ユーザーのモデルには、XSD 要素、および XSD とは無関係の要素を表わす要素があります。 このようなモデルを作成する場合には、以下のガイドラインに従うことが推奨されています。
この変換では、以下の XSD 要素を生成するためのルールがまだ実装されていません。
ファセット | 意味 |
fractionDigits | 小数桁数は、x 以下である必要があります。 |
length | length の値は x にする必要があります。 |
maxExclusive | 値は x 未満にする必要があります。 |
maxInclusive | 値は x 以下にする必要があります。 |
maxLength | 値の長さは x 以下にする必要があります。 |
minExclusive | 値は x より大きくする必要があります。 |
minInclusive | 値は x 以上にする必要があります。 |
minLength | 値の長さは x 以上にする必要があります。 |
pattern | x は、値が一致する正規表現の 1 つです。 |
totalDigits | 有効数字の桁数は、x 以下にする必要があります。 |
whitespace | スキーマ・プロセッサーは、x に応じて、保存、置換、または折りたたみ空白文字のいずれかにする必要があります。 |
次の表では、組み込みデータ型および適用できるファセットを列挙します。W3C の勧告が、ファセットとして enumeration を指定している場合でも、ここでは表に enumeration が組み込まれていません。 ここでは、ステレオタイプ<<enumeration>> を持つクラス、または UML 列挙を使用して、enumeration を表します。
データ型 (制限に基づく) | 適用可能なファセット |
ENTITY、ID、IDREF |
length、maxlength、minlength 空白文字は、collapseという値に固定されています。 パターンは [\i-[:]][\c-[:]]* です。 |
IDREFS |
length、maxlength、pattern minlength は 1 です。 空白文字は、collapse という値に固定されています。 |
名前 |
length、maxlength、minlength 空白文字は折りたたみです。 パターンは \i\c* です。 |
NCName |
length、maxlength、minlength 空白文字は折りたたみです。 パターンは [\i-[:]][\c-[:]]* です。 |
NMTOKEN |
length、maxlength、minlength 空白文字は、collapse という値に固定されています。 パターンは \c+ です。 |
NMTOKENS |
length、maxlength minlength は 1 です。 空白文字は、collapse という値に固定されています。 |
NOTATION |
length、maxlength、minlength、pattern 空白文字は、collapse という値に固定されています。 |
QNAME |
length、maxlength、minlength、pattern 空白文字は、collapse という値に固定されています。 |
anyURI、base64Binary、hexBinary |
length、maxlength、minlength、pattern 空白文字は、collapse という値に固定されています。 |
言語 |
length、maxlength、minlength 空白文字は折りたたみです。 パターンは ([a-zA-Z]{2}|[iI]-[a-zA-Z]+|[xX]-[a-zA-Z]{1,8})(-[a-zA-Z]{1,8})* です。 |
float、double |
maxExclusive、maxInclusive、minExclusive、minExclusive、pattern 空白文字は、折りたたみという値を持つように固定されています。 |
10 進数 | maxExclusive、maxInclusive、minExclusive、minExclusive、fractionDigits、totalDigits、pattern 空白文字は、折りたたみという値を持つように固定されています。 |
整数データ型 (integer、
byte、int、long、negativeInteger、nonNegativeInteger、
nonPositiveInteger、positiveInteger、unsignedByte、unsignedInt、
unsignedLong、unsignedShort) |
maxExclusive、maxInclusive、minExclusive、minExclusive、totalDigits、pattern fractionDigits は、値 0 を持つように固定されています。 空白文字は、折りたたみという値を持つように固定されています。 |
日時データ型 (date、time、dateTime、gYear,gYearMonth、gMonth、gMonthDay、gDay、duration) |
maxExclusive、maxInclusive、minExclusive、minExclusive、pattern 空白文字は、折りたたみという値を持つように固定されています。 |
string、normalizedString、token | length、maxLength、minLength、pattern 空白は、string の場合は preserve、normalizedString の場合は replace 、および token の場合は collapse です。 |