グローバル コンポーネント

www.altova.com このトピックを印刷 前のページ 1つ上のレベル 次のページ

ホーム >  ユーザーマニュアル > 編集ビュー > スキーマ ビュー > スキーマ概要 >

グローバル コンポーネント

グローバル コンポーネントとは、トップレベルの xs:schema 要素の子として追加されるコンポーネントのことです (それに対してローカル コンポーネントは、その他のコンポーネント内部で作成されます)。複合型や要素、属性といったグローバル コンポーネントへは、スキーマ内にあるその他のコンポーネントから参照することができます。

 

スキーマ概要でグローバル コンポーネントを作成する

グローバル コンポーネントは通常スキーマ概要で作成ならびに編集されます。スキーマ概要では、追加または挿入アイコンによりコンポーネントを追加することができます。グローバル コンポーネントのコンテンツ モデル (コンテンツ モデルが存在する場合) は、そのグローバル コンポーネントのコンテンツ モデル ビューにて作成ならびに編集することができます (コンポーネント名の左側にあるコンテンツ モデル ビューへの切り替えアイコンをクリックすることで、コンテンツ モデル ビューが表示されます)。

 

スキーマ概要にて作成されたグローバル コンポーネントによってはコンポーネント入力ヘルパーへも追加されます。コンポーネントにコンテンツ モデルが含まれる場合、コンポーネント入力ヘルパーでその名前をダブルクリックすることでコンポーネントがコンテンツ モデル ビューで開かれ、編集を開始することができます。

 

メモ:コンテンツ モデル ビューで編集作業をしながらもグローバル コンポーネント (要素、属性、単純型、複合型、モデル グループ) を作成することができます。ウィンドウを右クリックして、「新規グローバル | <作成するグローバル コンポーネントの種類>」 を選択してください。

 

メモ:コンテンツ モデル ビューにて編集作業を行う中、ローカル要素をグローバル要素へ、または要素に属性や子要素が含まれる場合にはグローバル複合型へ変換することもできます。ローカル要素が選択されている状態で、ウィンドウを右クリックすることで表示されるコンテキスト メニューから グローバル化 | 要素または グローバル化 | 複合型を選択してください。

 

グローバル コンポーネント

スキーマにおける位置

コンテンツ モデル

include

先頭

なし

import

先頭

なし

redefine

先頭

なし

override 1.1

先頭

なし

defaultOpenContent 1.1

IncludesImportsRedefinedOverrides の後で、それ以外すべてより前

あり

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 コンポーネントが追加されると、グローバル コンポーネント リストの redefineend of redefine 行の間に再定義するコンポーネントを追加する必要があります (以下のスクリーンショットでは、NewemailType コンポーネントが再定義されます)。

SchOviewRedefine01

以下の操作によりコンポーネントを再定義することができます:

 

1.end of redefine 行を選択します。
2.スキーマ概要左上にある 「挿入」 アイコンをクリックします。
3.定義するコンポーネントの種類 (複合型、単純型、モデル グループ、属性グループ) を選択します。redefine コンポーネント内にコンポーネントが追加されます。
4.再定義するコンポーネントの名前を入力します。再利用されるスキーマから得られたコンポーネントに含まれるすべてのプロパティが表示されます。
5.詳細ならびにファセット入力ヘルパーからプロパティを選択ならびに修正することができるほか、(コンポーネントにコンテンツ モデルが含まれる場合) コンテンツ モデル ビューにてコンテンツ モデルを修正することができます。

 

メモ:グローバル コンポーネントのリストやコンポーネント入力ヘルパー内から、ドラッグ アンド ドロップやコピーと貼り付けを行うことで、再定義するコンポーネントを挿入することもできます。

 

再定義されたコンポーネントは、スキーマ内にある他のコンポーネントから参照することもできます。

 

オーバーライド

override 要素では、以下のコンポーネントを定義することができます: 複合型、単純型、グローバル要素、グローバル属性、モデル グループ、属性グループ、記法。override 要素内でこれらコンポーネントのうちの 1 つが定義されている場合、オーバーライドされるすべてのスキーマにある同じ型と名前を持ったすべてのコンポーネントが、このコンポーネントによりオーバーライドされます。オーバーライドされたスキーマは、オーバーライドの loc フィールドにて指定されます。

 

オーバーライドは再定義と違い、再利用されるコンポーネントをベースにすることなく、最初から定義されたコンポーネントとなります。スキーマ ビューでは再定義を行うためのコンポーネントを追加するのと同様に、オーバーライドを行うためのコンポーネントを追加することになります。end of override 行の上にオーバーライドするコンポーネントを挿入し、そのプロパティを定義してください (上記の再定義セクションを参照ください)。オーバーライドと再定義の主な違いは、オーバーライドにコンポーネントが追加されても、そのコンポーネントは再利用されたスキーマから得られたいかなるコンポーネントもベースにしていないということです。

 

デフォルト オープン コンテンツ

defaultOpenContent 要素は XSD 1.1 に新たに追加された仕様で、混合または要素だけのコンテンツを含めることのできる複合型に追加することのできる 1 つ以上の要素を指定します。XSD 1.1 にて新たに追加された openContent 要素に似ており、openContent 要素が単一の複合型に対して適用されるのに対して、defaultOpenContent 要素はスキーマ内にあるすべての複合型に対して適用されます。

 

defaultOpenContent 要素は includeimportredefine の後、そしてコンポーネントの定義前に 1 回出現します (以下のスクリーンショットを参照)。要素には interleave または suffix という値を含めることのできる mode 属性が含まれており、デフォルトの値は interleave となります。

SchOviewDefOpenContent

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

ContModViewDefOpenContent

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

ContModViewDefOpenContent02

 

グローバル要素 (element)

スキーマ概要ではグローバル要素を作成することができます。グローバル要素にコンテンツ モデルが含まれる場合、グローバル要素のコンテンツ モデル ビューにて定義することができます。要素が選択されている状態で、属性アサーション、そして同一性制約AAIDC ペインの対応するタブにて定義することができます。ファセットやその他のプロパティは、要素のファセットならびに詳細入力ヘルパーにて定義することができます。グローバル要素は複合型から参照することができます。

 

モデル グループ (group)

スキーマ概要では名前付きのモデル グループを作成し、複合型にて参照することができます。名前付きのモデル グループ (xs:group 要素) により、再利用可能なコンテンツ モデルを予め定義することができ、sequence グループ、choice グループ、または all グループのうちどれかを含めることができます。

 

スキーマ概要では、グループ コンポーネントを追加して、名前をつけた後にコンテンツ モデル ビューにてコンテンツ モデルを定義することで、名前付きモデル グループを作成することができます。名前付きモデル グループを複合型のコンテンツ モデルへ追加することができるようになります。

 

名前付き単純型 (simpleType)

スキーマ概要では、名前付きの単純型を作成し、要素や属性の宣言から参照することができます (以下のスクリーンショットを参照)。

 

詳細入力ヘルパーでは、単純型のコンテンツ (restrictionlistunion) と対応する種類 (それぞれ基底型、アイテム型、メンバー型) を指定することができます。例えば以下のスクリーンショットでは、単純型の制約の基底型に xs:integer が指定されています。詳細については 「詳細入力ヘルパー」 のセクションを参照ください。ファセットにより単純型の制約を行うには、ファセット入力ヘルパーにあるオプションを使用してください。

SchOviewNamedSimpleTypes

メモ:匿名型は、スキーマ概要またはコンテンツ モデル ビューにて、単純型コンテンツの属性または要素で宣言することができます。詳細入力ヘルパーにある derivedBy プロパティの値を restrictionlist、または union に指定することで、その要素または属性宣言内部に匿名の単純型が作成されます。制約ファセットをファセット入力ヘルパーで、その他のプロパティを詳細入力ヘルパーで定義することができます。

 

名前付き複合型 (complexType)

スキーマ概要では名前付きの複合型を作成し、要素宣言から参照することができます。名前付きの複合型が選択されている状態で、AAIDC ペインの対応するタブにて属性アサーションを定義することができます。

 

複合型には 4 種類のコンテンツを含めることができます (以下のリストを参照)。詳細入力ヘルパーにて各種コンテンツを指定し、必要に応じてコンテンツ モデル ビューにてコンテンツ モデルを定義することができます。

 

単純コンテンツ: 単純コンテンツの基底型をセットします (以下のスクリーンショットを参照)。mixed 属性には (デフォルト値の) false をセットする必要があり、以下にあるスクリーンショットでセットされた true は赤色で示されています。

SchOviewComplexTypesDetailsEH

要素: コンテンツ モデルにて子要素を作成します。基底型はありません。  
混合コンテンツ: mixed 属性を true にセットする必要があります。文字データは、子要素ノードとともに、要素内のどこにでも配置することができます。文字データはデータ型を持っていないため、基底型をセットすることはできません (上のスクリーンショットを参照)。コンテンツ モデルでは子要素を作成することができます。
空のコンテンツ: 要素には文字データも子要素も含まれません。基底型は含まれず、mixed の値を false にする必要があります。空のコンテンツ要素のデータは、通常属性に収められます。

 

メモ:属性とアサーションは (AAIDC ペインにて) 4 種類のコンテンツすべてに対してセットすることができます。

 

メモ:ある要素に対するコンテンツ モデルをコンテンツ モデル ビューで作成することにより、その要素内部で匿名の複合型が作成されます。

 

グローバル属性と属性グループ (attribute、attributeGroup)

グローバル属性と属性グループはスキーマ概要にて追加されます。

 

グローバル要素のプロパティは属性の詳細入力ヘルパーにて定義されます。
グローバル属性グループを作成すると、(i) グローバル コンポーネントのリストにてグローバル属性グループを選択し、(ii) AAIDC ペインの属性タブにて属性を追加し、(iii) 各属性のプロパティを選択された属性の詳細入力ヘルパーにて定義することで、属性をグループへ追加することができます。

 

グローバル属性と属性グループが作成されると、要素や複合型の宣言にて参照することができるようになります。

 

記法 (notation)

記法は常にグローバルなコンポーネントで、ローカルの記法というのは存在しません。記法のプロパティは記法の詳細入力ヘルパーにて指定されます。記法の名前はグローバル コンポーネントのリストから直接指定することができます。スキーマ内にあるすべての記法はコンポーネント入力ヘルパーに表示され、簡単に参照することができます。

 

グローバル注釈

グローバル注釈はグローバルなコンポーネントで、いくつかのグローバル コンポーネントにて利用することのできるオプションの注釈とは異なります。注釈グローバル コンポーネントを右クリックして、コンテキスト メニューから 「すべての注釈データ」 を選択すると注釈ダイアログが表示され、グローバル注釈を編集することができます (以下のスクリーンショットを参照)。

Annotations

各注釈には id 属性と複数の ドキュメントappinfo 子要素を含めることができます。ダイアログの左上にある 追加 または 挿入 ボタンをクリックし、対応するコンボ ボックスから doc または app を選択することで、ドキュメント または appinfo 要素を追加することができます。ダイアログ上部のペインにて doc または app を選択し、そのコンテンツを 「コンテンツ」 ペインにて入力します。コンテンツにて 「Enter」 キーを押下することで、コンテンツ内に改行を含める (そして複数行のコンテンツを作成する) ことができます。上のスクリーンショットでは ドキュメント 要素が選択され、2 行からなるコンテンツが確認できます。各 ドキュメント または appinfo 要素に対してオプションの sourcexml:lang 属性を入力することもできます。

 

スキーマ概要では、グローバル注釈にある最初の ドキュメント または appinfo 要素だけが表示され、編集することができます。その複数行のコンテンツが含まれているコンポーネントの場合、マウスオーバーすることにより、すべての行が複数行のボップアップ ボックスにて表示されます。その他 ドキュメントappinfo 要素のコンテンツを表示するには、グローバル注釈の注釈ダイアログへアクセスしてください。

AnnotationsGnL

メモ:いくつかのグローバル コンポーネントで利用することのできるオプションの注釈も注釈ダイアログにて上記と同様の方法により編集することができます。

 

コメントと処理命令

コメントと処理命令は、スキーマ概要にあるグローバル コンポーネント内の任意の場所へ挿入することができ、コンテンツ モデル ビューに追加することはできません。コメントや処理命令が単純型または複合型内部に含まれる場合、まとめて含まれるオブジェクトの最後に移動されます。このような処理を避けるには、コメントの代わりに注釈の使用が推奨されます。

 


(C) 2018 Altova GmbH