カスタマイズした XML スキーマの生成
XML へのデータ モデルのエクスポート への移動
目次
- 1 ステップ 1
- 2 ステップ 2
- 3 ステップ 3
- 4 [データ型の変換]タブ
- 5 [名前の変換]タブ
- 6 ステップ 4
- 7 外部スキーマのインクルード
- 8 参照される名前空間のインポート
- 9 [simpleType]ノードへのドメインと属性の追加
- 10 ドメインへの参照値の追加
- 11 [element]ノードへのドメイン、属性、エンティティ オブジェクトの追加
- 12 [group]ノードへのドメイン、属性、エンティティの追加
- 13 [complexType]ノードへの複合エンティティ オブジェクトの追加
- 14 属性またはカラムからの xs:attribute の作成
- 15 スキーマ オブジェクトのプロパティ値の変更
- 16 [スキーマ ボディ]領域のオブジェクト順序の変更
- 17 [スキーマ ボディ]領域からの要素の削除
- 18 要素への複合型の追加
- 19 要素へのグループ参照の追加
- 20 既存の複合型の種類の変更
- 21 スキーマのプレビュー
- 22 UML の型のエクスポート
- 23 関連項目
- XML スキーマの基になるモデルを開きます。
- [モデル|XML スキーマ生成...]を選択します。
- [XML スキーマ生成]ウィザードで、デフォルト値をそのまま使用して、スキーマに含めるデータベース エンティティを選択します。スキーマ オプションを変更してスキーマの内容をカスタマイズすることもできます。
- [XML スキーマ生成]ウィザードの内容をすべて指定したら、[完了]をクリックしてウィザードを閉じます。
メモ: [XML スキーマ生成]ウィザードには多数のオプションがあります。これらのオプションでは標準の XML 用語が使用されており、生成される .xsd ファイルの内容を定義することができます。以下では、これらのオプションについて簡単に説明します。XML の用語とコーディング規約の詳細については、www.w3.org/XML を参照してください。
[XML スキーマ生成]ウィザードのオプションを指定する際に役立つ情報を、以下に示します。
ステップ 1
ステップ 1 のオプションでは、XML スキーマの最初に含まれる XML 処理パラメータを定義します。また、クイック ウィザードをセットアップして、後で XML スキーマを再生成するときに、現在の設定内容を再利用できるようにします。このステップでは、クイック ウィザード設定ファイルを読み込んで保存された設定とオブジェクトを使用してスキーマを再生成するか、またはスキーマを生成する前に設定やオブジェクトを変更することができます。
- [エンコード]: 外部で解析されたエンティティで使用される文字エンコードの名前を指定します。最も一般的に使用されるエンコードは UTF-8 です。他に指定可能なエンコード名には、UTF-16、ISO-10646-UCS-2、ISO-10646-UCS-4、ISO-8859-1、ISO-8859-02、ISO-2022-JP、Shift-JIS、および EUC-JP があります。
- [スタンドアロン]: 文書エンティティの外部に属性のデフォルトやエンティティ宣言が存在するかどうかを指定するオプションです。
- [はい]: 文書エンティティの外部に、XML プロセッサがアプリケーションに渡す情報に影響を与えるマークアップ宣言がないことを指定します。
- [いいえ]: 文書エンティティの外部に、XML プロセッサがアプリケーションに渡す情報に影響を与えるマークアップ宣言があることを指定します。
- [未指定]: 文書がスタンドアロンであるかどうかを、外部マークアップ宣言の有無によって XML プロセッサが判別することを指定します。スタンドアロン宣言は、文書型宣言には含められません。
- [スキーマ レベルのコメント]: タイプを選択してから、スキーマに含めるコメントの内容を入力します。
- [XML コメント]: コメントで標準の XML コメント構文が使用されることを示します。XML パーサーでは XML コメントを無視します。[スキーマ レベルのコメント]のテキスト ボックスには、スキーマの使用目的を入力します。次に例を挙げます。
- [xs:documentation]: これを選択すると、コメントが xs:documentation 要素で囲まれます。この要素は xs:annotation 要素の子です。[スキーマ レベルのコメント]のテキスト ボックスには、スキーマの使用目的を入力します。このコメントは任意の処理アプリケーションで利用できます。次に例を挙げます。
<xs:annotation>
<xs:documentation>これは XSD コメントです
</xs:documentation>
</xs:annotation> - [xs:appinfo]: これを選択すると、コメントが xs:appinfo 要素で囲まれます。この要素は xs:annotation 要素の子です。[スキーマ レベルのコメント]のテキスト ボックスには、処理アプリケーション、スタイルシート、または他のツールへの補足情報を入力します。次に例を挙げます。
<xs:annotation>
<xs:appinfo>これは XSD コメントです
</xs:appinfo>
</xs:annotation>
- [XML コメント]: コメントで標準の XML コメント構文が使用されることを示します。XML パーサーでは XML コメントを無視します。[スキーマ レベルのコメント]のテキスト ボックスには、スキーマの使用目的を入力します。次に例を挙げます。
ステップ 2
スキーマ属性と名前空間パラメータを設定します。これらは必須のパラメータではありませんが、さまざまな XML スキーマ開発ツールで XSD を検証するために使用されます。
- [名前空間]: スキーマで使用される XML ボキャブラリを定義します。一意な要素名と属性名から構成されます。名前空間は、その名前空間の接頭辞を使用するスキーマ内のすべての要素と属性を定義するものです。同じ名前の要素や属性の間に生じる多義性を XML パーサーが解決できるよう、使用される各ボキャブラリには独自の名前空間が必要です。次の例の要素 lib:Title は、http://www.library.com にある XML ボキャブラリ内で定義されています。
<?xml version="1.0"?>
<Book xmlns:lib="http://www.library.com">
<lib:Title>Sherlock Holmes</lib:Title>
<lib:Author>Arthur Conan Doyle</lib:Author>
</Book> - [場所]: 名前空間の URI(統一リソース識別子)を定義します。通常は Web アドレス表記が使用されます。名前空間のボキャブラリを定義する必要はありませんが、通常は名前空間 URI の場所に、XML の詳細なデータ構造を定義した DTD(文書型定義)または XML スキーマのいずれかが含まれています。別の名前空間の宣言を追加するには、既存の名前空間および場所の次行の空白をクリックして入力します。
- [対象の名前空間]: XML インスタンスに作成される新しい要素および属性がすべて定義されている、DTD または XML スキーマの URI を指定します。XML パーサーは、対象の名前空間を使用して XML を検証し、それによって、XML で使用されるすべての要素と属性が、宣言された名前空間に存在することを保証します。また、使用される要素と属性の構造やデータ型に関する他の制約が対象の名前空間に含まれていないかも確認します。対象の名前空間とデフォルトの名前空間が異なる場合、type プロパティの一覧から名前空間を選択できます。type プロパティの一覧には、このステップで定義された名前空間の一覧が含まれます。
[デフォルトの名前空間]: XML スキーマ内で、別の名前空間の接頭辞を付けて明示的に定義されていない要素を、暗黙的に定義する DTD または XML スキーマの URI を指定します。
[elementFormDefault]/[attributeFormDefault]: [elementFormDefault]と[attributeFormDefault]の宣言は、相互依存の関係にあります。これらの宣言をさまざまに組み合わせて指定した結果を次に説明します。
[elementFormDefault]の値 |
[attributeFormDefault]の値 |
結果 |
---|---|---|
未指定 |
未指定 |
グローバルおよびローカルに宣言された要素と属性の定義方法についてのルールはありません。 |
未指定 |
qualified |
ローカルおよびグローバルに宣言されたすべての属性は名前空間で修飾しなければなりません。 |
未指定 |
unqualified |
ローカルおよびグローバルに宣言されたすべての属性は名前空間で修飾してはなりません。 |
qualified |
未指定 |
ローカルおよびグローバルに宣言されたすべての要素は名前空間で修飾しなければなりません。 |
qualified |
qualified |
ローカルおよびグローバルに宣言されたすべての要素および属性は名前空間で修飾しなければなりません。 |
qualified |
unqualified |
すべての要素とグローバルに宣言された属性は名前空間で修飾しなければなりません。ローカルに宣言された属性は名前空間で修飾してはなりません。 |
unqualified |
未指定 |
ローカルおよびグローバルに宣言されたすべての要素は名前空間で修飾してはなりません。 |
unqualified |
qualified |
すべての属性とグローバルに宣言された要素は名前空間で修飾しなければなりません。ローカルに宣言された要素は名前空間で修飾してはなりません。 |
unqualified |
unqualified |
グローバルに宣言されたすべての要素と属性は名前空間で修飾してはなりません。ローカルに宣言された要素と属性は名前空間で修飾しなければなりません。 |
unqualified |
qualified |
すべての属性とグローバルに宣言された要素は名前空間で修飾しなければなりません。ローカルに宣言された要素は名前空間で修飾してはなりません。 |
ステップ 3
メモ: ステップ 3 のタブのオプションの中には、互いに非常に似ているものがあります。たとえば、[親エンティティ要素への要素参照を追加]と[複合型、要素、およびグループにビュー カラムを含める]などです。可能な場合、似たオプションは同時に説明します。
[モデル オプション]および[ディクショナリ オプション]タブ: [モデル オプション]タブの設定は、ウィザードのステップ 4 でモデル オブジェクトを[スキーマ ボディ]にドラッグ アンド ドロップしたときに適用され、エンティティ リレーションシップ ダイアグラム(ERD)から XML へのマッピングのデフォルト動作を制御します。[ディクショナリ オプション]タブの設定は、ウィザードのステップ 4 でドメイン オブジェクトを[スキーマ ボディ]にドラッグ アンド ドロップしたときに適用され、エンティティ リレーションシップ ダイアグラム(ERD)から XML へのマッピングのデフォルト動作を制御します。
- [定義を注釈として含める]: 定義を、エンティティ、属性、またはビューの宣言に対する注釈として含めます。たとえば次のエンティティ宣言の例では、「我々が雇用する人」というエンティティ定義が xs:annotation 要素の中に含まれています。
<xs:element name="Employee" nillable="true">
<xs:annotation>
<xs:documentation>我々が雇用する人
</xs:documentation>
</xs:annotation>
</xs:element>
- [XSD に nillable プロパティを含める]: NULL 値が許可されているオブジェクトから作成された要素に、nillable="true" オプションを生成します。上の例では、要素に nillable オプションが生成されています。
- [複合型、要素、およびグループに属性を含める]: モデルのエンティティをスキーマにドラッグ アンド ドロップしたときに、エンティティ属性またはビュー カラムを含めます。属性とカラムは complexType 宣言に追加されます。このオプションのデフォルトでは、xs:sequence 要素内に属性を含めます。次の例では、Employee エンティティが complexType 要素にドラッグ アンド ドロップされ、エンティティ属性を含む xs:sequence 要素が作成されています。
<xs:element name="Employee nillable="true">
<xs:complexType>
<xs:sequence>
<xs:element name="EmployeeID" type="empid"/>
<xs:element name="FirstName" type="xs:string"/>
<xs:element name="LastName" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
- [主キー属性を含める]: 主キー インデックスを属性として含めます。たとえば、次のエンティティ宣言には、Employee エンティティの主キーである EmployeeID が含まれています。
<xs:element name="Employee nillable="true">
<xs:complexType>
<xs:sequence>
<xs:element name="EmployeeID" type="empid"/>
<xs:element name="FirstName" type="xs:string"/>
<xs:element name="LastName" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
- [外部キー属性を含める]: エンティティが[complexType]ノードまたは[element]ノードに追加されたときに、外部キー属性を含めます。たとえば、次のエンティティ宣言には、Employee エンティティの外部キーである JobID および PublisherId が含まれています。
<xs:element name="Employee" nillable="true">
<xs:complexType>
<xs:sequence>
<xs:element name="FirstName" type="xs:string"/>
<xs:element name="LastName" type="xs:string"/>
<xs:element name="JobID" type="xs:short"/>
<xs:element name="PublisherID" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
- [親エンティティ要素への要素参照を追加]([複合型、要素、およびグループにビュー カラムを含める]): リレーションシップを表す要素参照を作成します。たとえば、このオプションを選択して、親エンティティ CUSTOMER を[element]ノード下の要素として実装し、子エンティティ ORDER を[complexType]ノード下にドラッグすると、<xs:element ref ="CUSTOMER"/> が作成されます。
このオプションでは、element ref のカーディナリティ(基数)が自動的に追加されます。依存型リレーションシップでは、minOccurs=1、maxOccurs="unbounded" となり、非依存型リレーションシップでは、minOccurs= 0、maxOccurs="unbounded" となります。- [xs:sequence をデフォルトに設定]: xs:sequence 要素にモデルの詳細情報を含めます。sequence 要素は、子の要素が決まった順序で出現する必要があることを示します。それぞれの子要素は 0 から任意の数まで含めることができます。たとえば、次の Employee エンティティの宣言で、エンティティ属性は xs:sequence 要素の中に含まれています。Employee エンティティの属性は、モデル内で属性が定義されたのと同じ順序で出現します。
<xs:element name="Employee" nillable="true">
<xs:complexType>
<xs:sequence>
<xs:element name="FirstName" type="xs:string"/>
<xs:element name="LastName" type="xs:string"/>
<xs:element name="JobID" type="xs:short"/>
<xs:element name="PublisherID" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
-
- [xs:choice をデフォルトに設定]: xs:choice 要素にモデルの詳細情報を含めます。xs:choice は、<choice> 宣言内に含まれる要素のうちいずれか 1 つだけが、それを含む要素の中に出現することを示します。たとえば、次の Employee エンティティの宣言で、エンティティ属性は xs:choice 要素の中に含まれています。
<xs:element name="Employee" nillable="true">
<xs:complexType>
<xs:choice >
<xs:element name="FirstName" type="xs:string"/>
<xs:element name="LastName" type="xs:string"/>
<xs:element name="JobID" type="xs:short"/>
<xs:element name="PublisherID" type="xs:string"/>
</xs:choice >
</xs:complexType>
</xs:element>
-
- [xs:all をデフォルトに設定]: xs:all 要素にモデルの詳細情報を含めます。 xs:all は、子の要素が任意の順序で出現できることを示します。たとえば、次の Employee エンティティの宣言で、エンティティ属性は xs:all 要素の中に含まれています。
<xs:element name="Employee" nillable="true">
<xs:complexType>
<xs:all >
<xs:element name="FirstName" type="xs:string"/>
<xs:element name="LastName" type="xs:string"/>
<xs:element name="JobID" type="xs:short"/>
<xs:element name="PublisherID" type="xs:string"/>
</xs:all >
</xs:complexType>
</xs:element>
- [属性のデフォルトを含める]: 属性エディタの[デフォルト]タブで指定された属性のデフォルト値を含めます。たとえば、次の属性宣言にはデフォルト値が含まれています。
<xs:element default="Toronto" name="Address" nillable="true" type="xs:string">
- [属性(またはカラム)の NULL オプションに基づき minOccurs を設定]: エンティティ属性(またはビュー カラム)の NULL プロパティが NULL の場合、minOccurs の値をゼロに設定します。
たとえば、OrangeMart.dm1 サンプル モデルで、論理モデルの Approved_Product(認可済製品)エンティティには、NULL を許可する Therapeutic_equiv_code_ID(治療学的同等性コード)属性が含まれています。この属性に対する XSD を生成するときに、このオプションを有効にすると、minOccurs 値が自動的にゼロに設定されます(次の例を参照)。
<xs:element maxOccurs="unbounded" minOccurs="0" name="Therapeutic_Equiv_Code_Id" nillable="true" type="xs:integer"/>
エンティティ属性の NULL プロパティが NOT NULL の場合は、minOccurs が 1 に設定されます。
- [参照値を列挙値として含める]: 参照値の一覧から作成された列挙値を含めます。これにより、属性やドメインにバインドされた参照値の一覧を、生成する XML ファイルに含めるかどうかを選択できます。このオプションを選択して、参照値の一覧がバインドされたドメインや属性を[スキーマ ボディ]にドラッグすると、単純型の場合にのみ列挙値が作成されます。同じ状況で、同じ種類のオブジェクトを[スキーマ ボディ]の[element]カテゴリにドラッグした場合は、その要素のローカル単純型を新しく作成した後にのみ、参照値の列挙値が作成されます。ただし、列挙値が必要な場合に、参照値を手動で単純型にドラッグ アンド ドロップすることもできます。
- [全般オプション]タブ:[全般オプション]タブでは、ウィザードのステップ 4 で属性とドメインのデータ型を[スキーマ ボディ]にドラッグ アンド ドロップしたときのデフォルト マッピングを制御します。
- [デフォルトでローカル単純型を作成]: 要素が定義される xs:element の下に、ローカル単純型(simpleType)を宣言します。たとえば次の例では、Description 要素に単純型 xs:string が宣言されています。
<xs:element name="PurchaseOrder">
<xs:annotation>
<xs:documentation>ルート要素の説明</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="OrderDate" type="xs:date" minOccurs="1"/>
<xs:element name="Description" nillable="true">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="200"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
- [データ型の長さを含める]: 属性から要素および単純型を作成するときに、属性のデータ型の長さを含めます。
- [グローバル単純型をデフォルトに設定]: モデルのデータ型をグローバルに変換します。
- [ベース データ型をデフォルトに設定]: モデルのデータ型を標準の xs:datatypes に変換します。この変換には、ウィザードのステップ 5 の[データ型の変換]タブで選択したデータ型マッピング ディクショナリが使用されます。
<xs:element name="PurchaseOrder">
<xs:annotation>
<xs:documentation>ルート要素の説明</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="OrderDate" type="xs:date" minOccurs="1"/>
<xs:element name="Description" type="xs:string" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="OrderID" type="xs:date"/>
</xs:complexType>
</xs:element>
- [生成の順序]: [スキーマ ボディ]の各ノードの順序を指定します。[include]と[import]は、常に一番上に配置されます。他のノードの順序は、選択した順序オプションによって変わります。
- [粒度の高い順]: ノードを[complexType]、[group]、[element]、[simpleType]の順に並べます。
- [粒度の低い順]: ノードを[simpleType]、[element]、[group]、[complexType]の順に並べます。
[データ型の変換]タブ
データ型ディクショナリは、[データ型マッピング エディタ]で作成されたディクショナリを使用して、データ型を変換します。データ型ディクショナリを選択するには、ディクショナリ名をテキスト ボックスに入力するか、またはボックス右端の矢印をクリックして以前に使用したディクショナリを選択します。
メモ: 名前付けディクショナリを使用すると、データ モデル内の名前をスキーマ名に変換できます。ディクショナリ名を指定しない場合は、このダイアログ ボックスの他のオプションを使用して名前が変換されます。
[名前の変換]タブ
このダイアログの名前変換オプションを使用して、モデルの名前を XML 標準に準拠した名前に変換できます。このウィザードではすべてのデータ モデル名を表示できますが、一部のモデル名が XML 標準の名前付け規則に準拠していない可能性があります。たとえば、XML スキーマでは要素名を文字以外で開始することはできません。つまり、"123Customer" は無効になります。
メモ: [XML スキーマ生成]ウィザードは、何とかして有効な XSD を生成しようとします。名前付け標準テンプレート オプションの適用後に無効な文字が名前に含まれている場合、ウィザードは自動的にその文字を削除します。
- [名前付け標準テンプレートの選択]: 名前付け標準テンプレートを選択するには、ディクショナリ名をテキスト ボックスに入力するか、または[外部ファイルの選択...]をクリックしてディクショナリの場所を参照します。名前付け標準テンプレートを使用すると、データ モデル内の名前をスキーマ名に変換できます。ディクショナリ名を指定しない場合は、このダイアログ ボックスの他のオプションを使用して名前が変換されます。テンプレート名を指定すると、このダイアログ ボックスの他のオプションは無効になります。[次へ]をクリックして、スキーマに含めるオブジェクトの選択に移ります。名前付け標準テンプレートについての詳細は、「データ ディクショナリ オブジェクトのコピーと貼り付け」を参照してください。
- [大/小文字の変換オプション]: 使用できる大/小文字の変換オプションと、そのオプションを適用した結果を次に示します。
[大/小文字の変換オプション] |
データ モデル名 |
変換後の名前(スペースが削除される場合) |
---|---|---|
[UpperCamel] |
CUSTOMER ADDRESS CODE |
CustomerAddressCode |
[lowerCamel] |
CUSTOMER ADDRESS CODE |
customerAddressCode |
[大文字] |
Customer |
CUSTOMER |
[小文字] |
CUSTOMER |
customer |
[変換しない] |
CUSTOMER ADDRESS CODE |
CUSTOMERADDRESSCODE |
ステップ 4
このステップでは、スキーマを作成します。スキーマに含めるモデル オブジェクト、スキーマ内でのグループ分け、およびスキーマ内でのモデル オブジェクトの順序を選択します。
アクティブ モデル内のモデル オブジェクトが、[利用可能なオブジェクト]一覧に表示されます。データ ディクショナリにあるすべてのドメインと参照値も含まれます。データ モデルに複数のディクショナリが存在している場合は、ディクショナリごとにまとめて表示されます。
スキーマにエンティティの定義と属性を含める場合、選択したオブジェクトのプロパティ値を変更すると、スキーマ内のみに反映されます。このダイアログ ボックスでプロパティ値を変更しても、モデルのプロパティには影響しません。
メモ: [スキーマ ボディ]の要素の minOccurs および maxOccurs プロパティの設定には、[エンティティ エディタ]の[データ型]タブにある[NULL を許可]の設定が反映されます。
スキーマの生成方法は、以下の手順を参照してください。
- 外部スキーマのインクルード
- 参照される名前空間のインポート
- [simpleType]ノードへのドメインと属性の追加
- ドメインへの参照値の追加
- [element]ノードへのドメイン、属性、エンティティ オブジェクトの追加
- [group]ノードへのドメイン、属性、エンティティの追加
- [complexType]ノードへの複合エンティティ オブジェクトの追加
- 属性またはカラムからの xs:attribute の作成
- スキーマ オブジェクトのプロパティ値の変更
- [スキーマ ボディ]領域のオブジェクト順序の変更
- [スキーマ ボディ]領域からの要素の削除
- 要素への複合型の追加
- 要素へのグループ参照の追加
- 既存の複合型の種類の変更
- スキーマのプレビュー
- 物理データベースの生成前後に実行する SQL の作成
- スキーマ生成の設定が終わったら、[完了]をクリックします。
XML スキーマが生成され、ウィザードのステップ 1 で指定したファイル名で保存されます。
外部スキーマのインクルード
include 宣言を行うと、include 宣言を含むスキーマの名前空間に、外部スキーマが含められます。
- [XML スキーマ生成]ウィザードのステップ 4 で、[スキーマ ボディ]領域の[include]を右クリックして、ショートカット メニューの[新規作成...]をクリックします。
- include 宣言の名前を入力して、[OK]をクリックします。
[スキーマ ボディ]ツリーの[include]フォルダに新しい include 宣言が追加されて強調表示され、そのプロパティが下部のプロパティ領域に表示されます。
- プロパティ領域の[プロパティ値]カラムで、include 宣言の名前をクリックして、スキーマの URI を入力します。
- include 宣言を続けて作成するには、手順 1 ~ 3 を繰り返します。
メモ: [include]ノード下で include 宣言の名前を右クリックし、[編集]または[削除]を選択すると、名前を編集したり削除することができます。
参照される名前空間のインポート
import 宣言では、import 宣言を含むスキーマによって参照されるスキーマ コンポーネントの名前空間を指定します。
メモ: import 宣言を使用して、[XML スキーマ生成]ウィザードのステップ 2 の[スキーマ属性]で指定していない名前空間を宣言できます。
- [XML スキーマ生成]ウィザードのステップ 4 で、[スキーマ ボディ]領域の[import]を右クリックして、ショートカット メニューの[新規作成...]をクリックします。
- import 宣言の名前を入力して、[OK]をクリックします。
- [スキーマ ボディ]ツリーの[import]フォルダに新しい import 宣言が追加されて強調表示され、そのプロパティが下部のプロパティ領域に表示されます。
- プロパティ領域の[プロパティ値]カラムで、[schemaLocation]プロパティの右にあるスペースをクリックして、インポート対象の名前空間を含むスキーマ文書の URI を入力します。
- プロパティ領域の[プロパティ値]カラムで、[namespace]プロパティの値をクリックして、インポートする名前空間を含むスキーマの URI を入力します。
- import 宣言を続けて作成するには、手順 1 ~ 3 を繰り返します。
メモ: [import]ノード下で import 宣言の名前を右クリックし、[編集]または[削除]を選択すると、名前を編集したり削除することができます。
[simpleType]ノードへのドメインと属性の追加
ドメインは、[スキーマ ボディ]領域の[simpleType]ノードまたは[complexType]ノードに含めることができます。
メモ: サブドメインを含むドメインを[simpleType]ノードにドラッグしても、サブドメインはスキーマに追加されません。
[利用可能なオブジェクト]の一覧で単純なドメインまたは属性をクリックして、[スキーマ ボディ]領域の[simpleType]ノードにドラッグします。
[simpleType]ノードが展開して、新しく追加したオブジェクトが表示されます。
メモ: 対象ドメインを[simpleType]ノードに追加した場合、スキーマ要素を選択して、プロパティ領域で[プロパティ値]カラムをクリックすると、デフォルトの[type]および[type prefix]の値を変更できます。利用可能な名前空間は、ウィザードのステップ 2 で宣言した名前空間によって決まります。
ドメインへの参照値の追加
[利用可能なオブジェクト]の一覧から、参照値を[スキーマ ボディ]領域のオブジェクトにドラッグ アンド ドロップします。
オブジェクトの参照値は、[スキーマ ボディ]領域のオブジェクトのプロパティとして表示されます。
メモ:
- [スキーマ ボディ]領域のオブジェクトの並べ替えについては、「[スキーマ ボディ]領域のオブジェクト順序の変更」を参照してください。
- [スキーマ ボディ]領域のオブジェクト プロパティ値の変更については、「スキーマ オブジェクトのプロパティ値の変更」を参照してください。
- スキーマのプレビューを表示するには、[プレビュー]をクリックします。詳細は、「スキーマのプレビュー」を参照してください。
[element]ノードへのドメイン、属性、エンティティ オブジェクトの追加
[利用可能なオブジェクト]の一覧で、ドメイン、属性、またはエンティティ オブジェクトをクリックして、[スキーマ ボディ]領域の[element]ノードにドラッグします。
[element]ノードが展開して、新しく追加したオブジェクトが表示されます。
メモ:
- 参照値を[element]ノード内のドメインにドラッグすることはできません。代わりに[simpleType]ノードを使用してください。
- 単純エンティティまたは複合エンティティを属性ごとすべて[element]ノードにドラッグしてから、他の属性を xs:choice、xs:sequence、または xs:all 属性コンテナにドラッグすることができます。
- 要素の属性を要素に変換するには、その属性を[complexType]コンテナの外にドラッグします。
- 要素を別の要素の属性に変換するには、その要素を[complexType]ノードの中にドラッグします。
- [element]ノード内に定義された要素には、complexType を含めることができます。要素内に complexType を挿入して、その中に複合型を追加できます。
- 属性を要素内の[complexType]ノードにドラッグすると、複合型の下にある xs:attribute コンテナ(「a」のアイコン)に含められます。
- 属性を複合型ノードにドラッグすると、複合型の下にある xs:element コンテナ(「e」のアイコン)に含められます。
[group]ノードへのドメイン、属性、エンティティの追加
[利用可能なオブジェクト]の一覧で、ドメイン、属性、またはエンティティをクリックして、[スキーマ ボディ]領域の[group]ノードにドラッグします。
[group]ノードが展開して、新しく追加したオブジェクトが表示されます。
メモ:
- [group]ノードを使用して、グループを定義できます。このグループは、要素などスキーマ内の別の部分から参照することができます。
- [element]や[complexType]と同様に、[group]にも複合型を含めることができます。
[complexType]ノードへの複合エンティティ オブジェクトの追加
[利用可能なオブジェクト]の一覧で、ドメインやエンティティなどの複合オブジェクトを選択して、[スキーマ ボディ]領域の[complexType]ノードにドラッグします。
[complexType]ノードが展開して、新しく追加したオブジェクトが表示されます。
メモ:
- 対象ドメインを[simpleType]ノードに追加した場合、スキーマ要素を選択して、プロパティ領域で[プロパティ値]カラムをクリックすると、デフォルトの[type]および[type prefix]の値を変更できます。利用可能な名前空間は、ウィザードのステップ 2 で宣言した名前空間によって決まります。
- [complexType]ノードを使用して、後で再利用するためのスタンドアロン complexType を定義することができます。
- 通常、complexType では、[element]ノード内の要素が参照できる複雑な構造を定義します。
- complexType を使用すると、XSD 内での再利用が促進されます。
属性またはカラムからの xs:attribute の作成
次のいずれかの方法で、属性またはカラムを xs:attribute 宣言に追加できます。
- [利用可能なオブジェクト]の一覧から、データ モデル ツリーの属性/カラムを[complexType]ノード(その下の[xs:sequence]ノードではなく)にドラッグします。
- [complexType]下の[xs:sequence]ノードにある要素を、1 つ上の階層の[complexType]ノードにドラッグします。
これによって、属性/カラム名の左側にあるアイコンが「a」に変化し、xs:attribute であることを表します。
スキーマ オブジェクトのプロパティ値の変更
- [スキーマ ボディ]領域で、オブジェクトを選択します。
- プロパティ領域で、プロパティ名の右側にある[プロパティ値]カラムのスペースをクリックし、新しい値を入力して、プロパティ値を変更します。
[スキーマ ボディ]領域のオブジェクト順序の変更
[スキーマ ボディ]内のオブジェクト順序によって、生成されるスキーマ内の要素の順序が決まります。関係をわかりやすくし、スキーマの可読性を向上させるために、[スキーマ ボディ]領域のノードにドラッグしたオブジェクトの順序を並べ替えることができます。
- オブジェクトをコンテナ内のオブジェクト一覧の一番上に並べ替えるには、そのオブジェクトをドラッグして[スキーマ ボディ]領域のノードに重ねます。
- オブジェクトを他のオブジェクトの下に配置するには、[スキーマ ボディ]内でそのオブジェクトをドラッグして、他のオブジェクトやそのオブジェクトの下の複合型コンテナに重ねます。
- 隣接した複数のオブジェクトを選択して[スキーマ ボディ]領域の同じノードに含めるには、最初のオブジェクトを選択し、次に Shift キーを押しながら最後のオブジェクトをクリックします。その後、範囲選択されたオブジェクト グループを[スキーマ ボディ]領域のノードにドラッグします。
- 隣接しない複数のオブジェクトを選択して[スキーマ ボディ]領域の同じノードに含めるには、最初のオブジェクトをクリックし、次に Ctrl キーを押しながら後続のオブジェクトをクリックします。その後、選択されたオブジェクト グループを[スキーマ ボディ]領域のノードにドラッグします。
メモ: オブジェクトをドラッグして、異なるノード間を移動させることはできません。この操作が必要な場合、[スキーマ ボディ]領域のオブジェクトを一度削除してから、[利用可能なオブジェクト]の一覧から[スキーマ ボディ]領域の別ノードにオブジェクトを再ドラッグします。
[スキーマ ボディ]領域からの要素の削除
[スキーマ ボディ]領域で、要素名を右クリックし、ショートカット メニューの[要素の削除]をクリックします。
その要素とすべてのサブ要素が、[スキーマ ボディ]領域から削除されます。
要素への複合型の追加
スキーマ内で複合型を使用して、複数の要素をグループ化できます。
次の複合型がサポートされています。
- xs:sequence
- xs:choice
- xs:all
複合型ノードは、[complexType]コンテナの下に表示されます。
- [スキーマ ボディ]領域で、要素名を右クリックして、ショートカット メニューの[ローカル complexType の作成]をクリックします。
- 作成された[complexType]ノードを右クリックして、ショートカット メニューの[新規作成]をポイントし、作成する複合型をクリックします。
これで、作成された複合型ノードに、他のオブジェクトをドラッグできます。
メモ: 既存の複合型ノードの下にさらに複合型ノードを作成するには、複合型ノードを右クリックして、ショートカット メニューの[新規作成]をポイントし、作成する複合型をクリックします。
要素へのグループ参照の追加
グループへの参照を空の複合型ノードに追加できます。
- [スキーマ ボディ]領域で、要素名を右クリックして、ショートカット メニューの[ローカル complexType の作成]をクリックします。
- 作成された[complexType]ノードを右クリックして、ショートカット メニューの[グループの作成...]をクリックします。
- プロパティ領域で、[プロパティ名]が[ref]の行の[プロパティ値]カラムの空白をクリックし、参照するグループ名を入力するか、矢印をクリックして一覧から選択します。
既存の複合型の種類の変更
[スキーマ ボディ]領域に複合型を追加した後に、必要に応じて複合型の種類を変更できます。
複合型ノードには以下の名前のものがあります。
- xs:sequence
- xs:choice
- xs:all
複合型ノードを右クリックして、ショートカット メニューの[変換]をポイントし、別の複合型をクリックします。
スキーマのプレビュー
- スキーマをプレビューするには、[プレビュー]をクリックします。
生成されるスキーマのプレビュー画面が表示されます。
- プレビューを終了するには[閉じる]をクリックします。[XML スキーマ生成]ウィザードの画面に戻り、スキーマの形式や内容を引き続き変更できます。
- 必要に応じて[戻る]をクリックすると、前のステップに戻ってオプションを変更できます。
UML の型のエクスポート
次の表に、さまざまなデータベースの型と UML の型のマッピングを示します。
データベースの型 |
UML の型 |
---|---|
BIGINT |
long |
BINARY |
byte |
BIT |
bool |
CHAR |
string |
COUNTER |
int |
DATE |
string |
DATETIME |
string |
DATETIMN |
string |
DECIMAL |
float |
DECIMALN |
float |
DOUBLE PRECISION |
double |
FLOAT |
float |
FLOATN |
float |
IMAGE/LONG BINARY |
byte |
INTEGER |
int |
INTN |
int |
LONG VARCHAR |
string |
MLSLABEL/VARCHAR |
string |
MONEY |
float |
MONEYN |
float |
NCHAR |
string |
NTEXT/LONG NVARCHAR |
string |
NUMERIC |
float |
NUMERICN |
float |
NVARCHAR |
string |
PICTURE |
byte |
REAL/SMALLFLOAT |
float |
ROWID/VARCHAR |
string |
SERIAL/INTEGER |
int |
SMALLDATETIME |
string |
SMALLINT |
short |
SMALLMONEY |
float |
TEXT |
string |
TIME/DATETIME |
string |
TIMESTAMP/DATE |
string |
TINYINT |
short |
UNIQUEID |
int |
VARBINARY/BLOB |
byte |
VARCHAR |
string |
VARIANT |
char |