要素のコンテンツモデルの定義を行ったので、それをスキーマのどこか別の場所で再利用することにします。これは、例えば、米国と英国内のアドレスのためにコンテンツモデルを定義する場合に発生する場合があります。2つのアドレスのフォーマットの一部のコンポーネント、例えば、ストリートと都市のコンポーネント、は共通です。 しかしながら他のコンポーネントは異なります。 この理由のために適切な戦略は各アドレスのコンポーネントモデル (US と UK) 内の共通のコンポーネントを再利用し、それぞれに (US 内の ZIP や UK 内の郵便番号などの ) 固有のコンポーネントと共に各コンテンツモデルを完了することです。これを行うには、グローバル複合型として (または、各共通のコンポーネントをグローバル要素として) 共通のコンポーネントを作成し、グローバル複合型 (またはグローバル要素) を各アドレス型のコンテンツモデル内で再利用します。
このセクションでは、グローバル複合型と作業します。複合型は単純に他の要素および/または属性を含む要素の型定義です。最初にグローバルレベルで複合型を作成し、コンテンツモデルにインポートし、拡張します。このチュートリアルで後にグローバル要素について学ぶことができます。
既に定義した(Name、Street、 City 要素を含む)基本的な Address 要素は住所の書式として色々な場所で利用できます。そこで、これら要素の再利用をすることができる複合型を定義することにします。
グローバル複合型を作成するには、以下を行います:
1.コンテンツモデルビューにて Address 要素を右クリックする。
2.現れたコンテキストメニューで「グローバル化 | 複合型」を選択します。AddressType という名前のグローバル複合型が作成され、Company コンテンツモデルの Address 要素がこの型に割り当てられます。Address 要素の内容は、黄色のボックスで表示されている AddressType のコンテンツモデルになります。Address 要素のデータ型が AddressType になっていることに注目してください。

| 3. | 全てのグローバルを表示アイコン をクリックします。メインウィンドウの表示が、スキーマ内の全てのグローバルコンポーネントを表示するスキーマ概要に移動します。 |
| 4. | 対応するスキーマの構成が表示されるように展開 アイコンをコンポーネント入力ヘルパー内の element と complexType エントリのためにクリックします。スキーマ概要は2つのグローバルコンポーネント( Company 要素と複合型の AddressType)を表示しています。コンポーネント入力ヘルパーにも AddressType 複合型は表示されます。 |

5.AddressType のコンテンツモデルビュー表示アイコン
をクリックして、(下のスクリーンショットにあるような)コンテンツモデルを表示します。複合型コンテナーの形に注目してください。

6.全てのグローバルを表示アイコン
をクリックして、スキーマ概要に戻ります。
それでは、2つの国に特化した住所を表す為に、グローバル AddressType コンポーネントを使用したいと思います。このために、AddressType をベースにした新たな複合型を作成し、その定義を拡張します。
以下を行います:
| 1. | スキーマ概要に移動します(コンテンツモデルビューにいる場合、全てのグローバルを表示アイコン をクリックします)。 |
| 2. | コンポーネントウィンドウの左上にある追加アイコン をクリックします。以下のメニューが開きます: |

| 3. | メニューから複合型を選択します。コンポーネントリストに新しいレコードが現れ、コンポーネントの名前を入力するようにカーソルがセットされます。 |
| 4. | US-Address と入力し、「Enter」で確定します。(ハイフン(-)を入力する代わりに空白(スペース)を入力した場合、要素名が赤くなり、不正な文字であることが示されます) |

| 5. | US-Address のコンテンツモデルビューアイコン をクリックし、新しい複合型のコンテンツモデルを表示します。コンテンツモデルは(以下のスクリーンショットにあるように)空です。 |
| 6. | 詳細入力ヘルパーにて、base コンボボックスをクリックし、 AddressType エントリを選択します。 |

| コンテンツモデルビューには US-Address のコンテンツモデルとして AddressType が表示されます。 (下のスクリーンショット)。 |

| 7. | これで US-Address 複合型のコンテンツモデルを、郵便番号(ZIP Code)を持つように拡張することができます。US-Address コンポーネントを右クリックして、現れたコンテキストメニューから「子を追加 | シーケンス」を選択します。シーケンスコンポジッターが AddressType ボックスの外に表示されます(下のスクリーンショットを参照)。これは要素に対する拡張であることを表わしています。 |

| 8. | 新しいシーケンスコンポジッターを右クリックして、「子を追加 | 要素」を選択します。 |
| 9. | 新たに作成された要素に Zip という名前を付け、「タブ」 キーを押下し、カーソルを type フィールドに移動させます。 |
| 10. | ドロップダウンメニューから xs:positiveInteger を選択し、「Enter」 キーにより確定します。 |

これで、複合型 AddressType をもとにした郵便番号(ZIP Code)の拡張を持つ複合型 US-Address が作成されました。
複合型の US-Address が複合型の AddressType をベースにしたように、単純型をベースにすることもできます。その利点はグローバル複合型の場合と同じで、単純型が再利用されることにあります。単純型を再利用するためには、その単純型をグローバルに定義しなければなりません。このチュートリアルではアメリカの州のコンテンツモデルを単純型として定義することにします。この単純型は他の要素のベースとして使用されることになります。
グローバル 単純型の作成は、グローバルコンポーネントのリストに新しい単純型を追加し、名前を与え、データ型を定義することから構成されています。
グローバル 単純型を作成するには以下をおこないます:
| 1. | スキーマ概要に切り替えます。(コンテンツモデルビュー内で作業している場合は、 すべてのグローバルアイコンの表示 をクリックします。) |
| 2. | アイコンの追加をクリックします。表示される コンテキストメニューから SimpleType を選択します。 |
| 3. | 新しく作成された simpleType の名前として US-State を入力します。 |
| 4. | 「Enter」 を押して確認します。 単純型 US-State が作成され、コンポーネント 入力ヘルパー内の単純型のリストに表示されます。 (simpleType エントリのアイコンの展開をクリックして確認してください)。 |

| 5. | 詳細入力ヘルパー (下のスクリーンショット)内では、 restr の値フィールドにカーソルをポイントして、 xs:string を入力、または restr 値フィールドのドロップダウンメニューから xs:string を選択します。 |

xs:string のデータ型である、US-State という名前の単純型が作成されます。このグローバル コンポーネントは、 US-Address のコンテンツモデル内で使用することができます。
グローバル 単純型 は、コンテンツモデル内で、コンポーネントの型を定義するために使用することができます。 State という名前の要素を定義するためにの US-Address コンテンツモデル内の US-State を使用します。
次を行います:
| 1. | スキーマ概要内の US-Address のコンポーネント モデルビューアイコン をクリックします。 |
| 2. | 下のシーケンスコンポジターを右クリックして、 「子の追加 | 要素 」を選択します。 |
| 3. | 要素名のために、 State を入力します。 |
| 4. | 「タブ」 キーを押して、カーソルを型詳細ラインの値フィールドにポイントします。 |
| 5. | コンボボックスのドロップダウンメニューから、 US-State を選択します。 |

State 要素は、 US-State 単純型をベースにします。
UK の住所が入力できるように、グローバル 複合型を作成します。 複合型は、 AddressType をベースにして、 UK アドレスのフォーマットに一致するように拡張されています。
次を行います:
| 1. | スキーマ概要内に AddressType (base=AddressType) をベースにする、UK-Address という名前のグローバル 複合型を作成します。 |
| 2. | UK-Address の コンテンツモデルビュー 内に、 Postcode 要素を作成し、 xs:string の型を与えます。UK-Address コンテンツモデルは以下のようになります : |

| メモ: | このセクションでは、 コンテンツモデル定義で使用されるグローバル 単純型 および 複合型を作成しました。 グローバル型の利点は、複数の定義で再利用できることです。 |