グローバル コンポーネントとは、トップレベルの xs:schema 要素の子として追加されるコンポーネントのことです (それに対してローカル コンポーネントは、その他のコンポーネント内部で作成されます)。複合型や要素、属性といったグローバル コンポーネントへは、スキーマ内にあるその他のコンポーネントから参照することができます。
グローバル コンポーネントは通常スキーマ概要で作成ならびに編集されます。スキーマ概要では追加 または 挿入 アイコンを介して追加されます。(グローバルコンポーネントがコンテンツモデルを有している場合 下のテーブルを参照)グローバル コンポーネントのコンテンツ モデル は、そのグローバル コンポーネントのコンテンツ モデル ビューにて作成ならびに編集することができます。 (コンポーネント名の左側にあるコンテンツ モデル ビューへの切り替えアイコンをクリックすることで、コンテンツ モデル ビューが表示されます)。
スキーマ概要にて作成されたグローバル コンポーネントによってはコンポーネント入力ヘルパーへも追加されます。コンポーネントにコンテンツ モデルが含まれる場合、コンポーネント入力ヘルパーでその名前をダブルクリックすることでコンポーネントがコンテンツ モデル ビューで開かれ、編集を開始することができます。
グローバルコンポーネントが型定義を持つ場合、コンポーネントを右クリックして 「型の定義へ移動」 を選択することで、そのコンポーネントの型定義へ移動することができます。ビルトインの単純型の場合、単純型に関する情報が含まれたメッセージボックスが表示されます。
| メモ: | コンテンツ モデル ビューで編集作業をしながらもグローバル コンポーネント (要素、属性、単純型、複合型、モデル グループ) を作成することができます。ウィンドウを右クリックして、「新規グローバル | <作成するグローバル コンポーネントの種類>」 を選択してください。 |
| メモ: | コンテンツ モデル ビューにて編集作業中、ローカル要素をグローバル要素へ、または要素に属性や子要素が含まれる場合にはグローバル複合型へ変換することもできます。ローカル要素が選択されている状態で、ウィンドウを右クリックすることで表示されるコンテキスト メニューから 「グローバル化 | 要素」 または 「グローバル化 | 複合型」 を選択してください。 |
グローバル コンポーネント |
スキーマにおける位置 |
コンテンツ モデル |
include |
先頭 |
なし |
import |
先頭 |
なし |
redefine |
先頭 |
なし |
override 1.1 |
先頭 |
なし |
defaultOpenContent 1.1 |
Includes、Imports、Redefined、Overrides の後で、それ以外すべてより前 |
あり |
element |
defOpenCont 以降ならどこでも |
あり |
group |
defOpenCont 以降ならどこでも |
あり |
simpleType |
defOpenCont 以降ならどこでも |
なし |
complexType |
defOpenCont 以降ならどこでも |
あり |
attribute |
defOpenCont 以降ならどこでも |
なし |
attributeGroup |
defOpenCont 以降ならどこでも |
なし |
notation |
defOpenCont 以降ならどこでも |
なし |
annotation |
defOpenCont 以降ならどこでも |
なし |
コメント |
どこでも |
なし |
処理命令 |
どこでも |
なし |
スキーマ ビューでこれらのコンポーネントを編集する際に留意すべき点を以下に記します:
これら 4 つのグローバル コンポーネントにより、他のスキーマ ドキュメントを現在編集中のスキーマ ドキュメントにて再利用することができます。
•インクルードにより、現在編集中のドキュメントと同じターゲット名前空間を持つドキュメントを再利用します。
•インポートにより、現在編集中のドキュメントとは異なるターゲット名前空間を持ったドキュメントを再利用します。
•再定義とオーバーライドはインクルードの一種で、現在編集中のターゲット名前空間と同じターゲット名前空間を持つドキュメントを再利用するという点では同じですが、インクルードされたスキーマの一部を修正するという点で異なっています。再定義は XML Schema 1.0 の機能で、1.1 での利用は推奨されておらず、再定義を置き換える XML Schema 1.1 の機能としてオーバーライドが追加されました。
これら 4 つのすべてには再利用されるスキーマを指し示す schemaLocation 属性が含まれています。スキーマ ビューでこれらコンポーネントの loc フィールドをダブルクリックすると、再利用されるファイルの参照と、現在のドキュメントに対して相対となるパスをセットすることができます。更に import コンポーネントにはインポートされたスキーマのターゲット名前空間を示すための namespace 属性が含まれます。
現在編集中のスキーマ ドキュメントにてスキーマが (インクルード、インポート、再利用、またはオーバーライドにより) 再利用されると、そのグローバル コンポーネント、名前空間、同一性制約が編集中ドキュメントのコンポーネント入力ヘルパーに表示されます。
redefine コンポーネントでは、複合型、単純型、モデル グループ、そして属性グループを修正することができます。再定義されるコンポーネントは、redefine コンポーネントの loc フィールドにて指定されます (以下のスクリーンショットでは、ExpReport.xsd スキーマ内にあるコンポーネントが再定義されます)。redefine コンポーネントが追加されると、グローバル コンポーネント リストの redefine と end of redefine 行の間に再定義するコンポーネントを追加する必要があります (以下のスクリーンショットでは、New と emailType コンポーネントが再定義されます)。スキーマ ExpReport.xsd 内に存在する2つのコンポーネントは現在のスキーマのために再定義されています。

コンポーネントを再定義するには、以下を行います:
1.end of redefine 行を選択します。
2.スキーマ概要左上にある 「挿入」 アイコンをクリックします。
3.定義するコンポーネントの種類 (複合型、単純型、モデル グループ、属性グループ) を選択します。再定義コンポーネント内にコンポーネントが追加されます。
4.再定義するコンポーネントと同じ名前を与えます。コンポーネントは再利用されるスキーマから得られたコンポーネントのすべてのプロパティを得ます。
5.詳細ならびにファセット入力ヘルパーからプロパティを選択ならびに修正することができるほか、(コンポーネントにコンテンツ モデルが含まれる場合) コンテンツ モデル ビューにてコンテンツ モデルを修正することができます。
| メモ: | グローバル コンポーネントのリストやコンポーネント入力ヘルパー内から、ドラッグ アンド ドロップやコピーと貼り付けを行うことで、再定義するコンポーネントを挿入することもできます。 |
再定義されたコンポーネントは、スキーマ内にある他のコンポーネントから参照することもできます。
override 要素では、以下のコンポーネントを定義することができます: 複合型、単純型、グローバル要素、グローバル属性、モデル グループ、属性グループ、記法。override 要素内でこれらコンポーネントのうちの 1 つが定義されている場合、オーバーライドされるすべてのスキーマにある同じ型と名前を持ったすべてのコンポーネントが、このコンポーネントによりオーバーライドされます。オーバーライドされたスキーマは、オーバーライドの loc フィールドにて指定されます。
(上記参照) オーバーライドは再定義と違い、再利用されるコンポーネントをベースにすることなく、最初から定義されたコンポーネントとなります。スキーマ ビューでは再定義を行うためのコンポーネントを追加するのと同様に、オーバーライドを行うためのコンポーネントを追加することになります。end of override 行の上にオーバーライドするコンポーネントを挿入し、そのプロパティを定義してください。上記の再定義セクションを参照ください。オーバーライドと再定義の主な違いは、オーバーライドにコンポーネントが追加されても、そのコンポーネントは再利用されたスキーマから得られたいかなるコンポーネントもベースにしていないということです。
defaultOpenContent 要素は XSD 1.1 に新たに追加された仕様で、混合または要素だけのコンテンツを含めることのできる複合型に追加することのできる 1 つ以上の要素を指定します。XSD 1.1 にて新たに追加された openContent 要素に似ており、openContent 要素が単一の複合型に対して適用されるのに対して、defaultOpenContent 要素はスキーマ内にあるすべての複合型に対して適用されます。
defaultOpenContent 要素は include、import、redefine の後、そしてコンポーネントの定義前に 1 回出現します (以下のスクリーンショットを参照)。要素には interleave または suffix という値を含めることのできる mode 属性が含まれています。デフォルトは、 interleaveです。

defaultOpenContent 要素には、コンテンツ モデル ビューで編集することのできるコンテンツ モデルが含まれています。宣言されると defaultOpenContent 要素がスキーマ内にあるすべての複合型に対して適用されます。以下のスクリーンショットでは、defaultOpenContent が複合型の OfficeType ならびに Desc 要素に対して自動的に適用されていることが理解できます。

openContent 子要素を追加することで、その複合型に対して適用された defaultOpenContent 要素をオーバーライドすることができます。下のスクリーンショットでは defaultOpenContent 要素を持つ Desc 要素は (上のスクリーンショット) defaultOpenContent 要素をオーバーライドする追加された openContent 要素を持ちます。

スキーマ概要ではグローバル要素を作成することができます。グローバル要素にコンテンツ モデルが含まれる場合、グローバル要素のコンテンツ モデル ビューにて定義することができます。要素が選択されている状態で、属性、アサーション、そして同一性制約を AAIDC ペインの対応するタブにて定義することができます。要素のファセットならびに詳細入力ヘルパーにて定義することができます。グローバル要素は複合型から参照することができます。グローバル要素は複合型から参照することができます。
スキーマ概要では名前付きのモデル グループを作成し、複合型にて参照することができます。名前付きのモデル グループ (xs:group 要素) により、再利用可能なコンテンツ モデルを予め定義することができます。sequence グループ、choice グループ、または all グループのうちどれかを含めることができます。
スキーマ概要では、グループ コンポーネントを追加して、名前をつけた後にコンテンツ モデル ビューにてコンテンツ モデルを定義することで、名前付きモデル グループを作成することができます。名前付きモデル グループを複合型のコンテンツ モデルへ追加することができるようになります。
スキーマ概要では、名前付きの単純型を作成し、要素や属性の宣言から参照することができます (以下のスクリーンショットを参照)。
詳細入力ヘルパーでは、単純型のコンテンツ (restriction、list、union) と対応する種類 (それぞれ基底型、アイテム型、メンバー型) を指定することができます。例えば以下のスクリーンショットでは、単純型の制約の基底型に xs:integer が指定されています。詳細については 「詳細入力ヘルパー」 のセクションを参照ください。ファセットにより単純型の制約を行うには、ファセット入力ヘルパーにあるオプションを使用してください。

| メモ: | 匿名型は、スキーマ概要またはコンテンツ モデル ビューにて、単純型コンテンツの属性または要素で宣言することができます。(詳細入力ヘルパーにある) derivedBy プロパティの値を restriction、list、または union に指定することで、その要素または属性宣言内部に匿名の単純型が作成されます。制約ファセットをファセット入力ヘルパーで、その他のプロパティを詳細入力ヘルパーで定義することができます。 |
スキーマ概要では名前付きの複合型を作成し、要素宣言から参照することができます。名前付きの複合型が選択されている状態で、AAIDC ペインの対応するタブにて属性 とアサーションを定義することができます。
複合型には 4 種類のコンテンツを含めることができます (以下のリストを参照)。詳細入力ヘルパーにて各種コンテンツを指定し、必要に応じてコンテンツ モデル ビューにてコンテンツ モデルを定義することができます。
•単純型コンテンツ単純コンテンツ:単純コンテンツの基底型をセットします (以下のスクリーンショットを参照)。mixed 属性には (デフォルト値の) false をセットする必要があり、以下にあるスクリーンショットでセットされた true は赤色で示されています。コンテンツモデルは許可されています。

•要素のみのコンテンツ: コンテンツモデルダイアグラム内に子要素を作成する。ベース型は存在しません。
•混合コンテンツ: mixed 属性を true にセットする必要があります。文字データは、子要素ノードとともに、要素内のどこにでも配置することができます。文字データはデータ型を持っていないため、基底型をセットすることはできません (上のスクリーンショットを参照)。コンテンツ モデルでは子要素を作成することができます。
•空のコンテンツ: 要素には文字データも子要素も含まれません。基底型は含まれず、mixed の値を false にする必要があります。空のコンテンツ要素のデータは、通常属性に収められます。
メモ: 属性とアサーションは (AAIDC ペイン)にて) 4 種類のコンテンツすべてに対してセットすることができます。
| メモ: | ある要素に対するコンテンツ モデルをコンテンツ モデル ビューで作成することにより、その要素内部で匿名の複合型が作成されます。 |
グローバル属性と属性グループはスキーマ概要にて追加されます。
•グローバル要素のプロパティは属性の詳細入力ヘルパーにて定義されます。
•グローバル属性グループを作成すると、グループに属性を以下のように追加することができます: (i) グローバル コンポーネントのリストにてグローバル属性グループを選択する。(ii) AAIDC ペインの属性タブにて属性を追加する。(iii) 各属性のプロパティを選択された属性の詳細入力ヘルパーにて定義することで、属性をグループへ追加する。
グローバル属性と属性グループが作成されると、要素や複合型の宣言にて参照することができるようになります。
表記は常にグローバルなコンポーネントで、ローカルの表記というのは存在しません。表記のプロパティは表記の詳細入力ヘルパーにて指定されます。表記の名前はグローバル コンポーネントのリストから直接指定することができます。スキーマ内にあるすべての表記はコンポーネント入力ヘルパーに表示され、簡単に参照することができます。
グローバル注釈はグローバルなコンポーネントで、いくつかのグローバル コンポーネントにて利用することのできるオプションの注釈とは異なります。注釈グローバル コンポーネントを右クリックして、コンテキスト メニューから 「すべての注釈データ」 を選択すると注釈ダイアログが表示され、グローバル注釈を編集することができます (以下のスクリーンショットを参照)。

各注釈には id 属性と複数の ドキュメント や appinfo 子要素を含めることができます。ダイアログの左上にある 「追加」 または 「挿入」 ボタンをクリックし、対応するコンボ ボックスから doc または app を選択することで、ドキュメント または appinfo 要素を追加することができます。ダイアログ上部のペインにて doc または app を選択し、そのコンテンツを 「コンテンツ」 ペインにて入力します。コンテンツにて 「Enter」 キーを押下することで、コンテンツ内に改行を含める (そして複数行のコンテンツを作成する) ことができます。上のスクリーンショットでは ドキュメント 要素が選択され、2 行からなるコンテンツが確認できます。各 ドキュメント または appinfo 要素に対してオプションの source や xml:lang 属性を入力することもできます。
スキーマ概要では、グローバル注釈にある最初の ドキュメント または appinfo 要素だけが表示され、編集することができます。その複数行のコンテンツが含まれているコンポーネントの場合、マウスオーバーすることにより、すべての行が複数行のボップアップ ボックスにて表示されます。その他 ドキュメント や appinfo 要素のコンテンツを表示するには、グローバル注釈の注釈ダイアログへアクセスしてください。

| メモ: | いくつかのグローバル コンポーネントで利用することのできるオプションの注釈も注釈ダイアログにて上記と同様の方法により編集することができます。 |
コメントと処理命令は、スキーマ概要にあるグローバル コンポーネント内の任意の場所へ挿入することができます。コンテンツ モデル ビューに追加することはできません。コメントや処理命令が単純型または複合型内部に含まれる場合、まとめて含まれるオブジェクトの最後に移動されます。このような移動を望まない場合、コメントの代わりに注釈を使用する必要があります。