エレメントに要素コンテントまたは混合コンテンツがある場合、そのコンテンツ・モデルはグループ・ノードで表現されます。
子エレメントまたは他のグループをグループ・ノードに追加することが可能であり、そしてどのくらいの頻度で、どのような方法でエレメントのグループが、
DTD に関連した XML ファイル内で使用可能になるか指定します。
次の説明は Resource パースペクティブを対象にしていますが、他のさまざまなパースペクティブでも使用できます。
グループ・ノードを編集するには、次の手順で行います。
- DTD エディターで DTD を開く。
- アウトライン・ビューで、処理するエレメントのツリーを展開する。
- 処理するグループ・ノードをクリックする。
- 設計ビュー内で、「モデル・グループ (Model Group)」リストから
「シーケンス (Sequence)」または「選択 (Choice)」を選択します。 これにより、エレメントのグループを順序どおりソートするか、XML ファイル内の選択項目として使用できるようにするかを指定します。
- 「オカレンス (Occurrence)」リストから適切なオプションを選択して、
エレメントのグループがこの DTD に関連した XML ファイルで出現する頻度を指定する。
- グループに別の既存エレメントを子として追加するには、グループ・ノードを右マウス・ボタンでクリックし、「コンテンツ・モデルへのエレメントの追加 (Add Element to Content Model)」をクリックして、その名前を指定する。
- また、グループ・ノードを右クリックし、「コンテンツ・モデルへのグループの追加 (Add Group to Content Model)」をクリックして、グループを既存のグループ・ノードに追加することもできます。
注:グループ・ノードの 「オカレンス (Occurrence)」オプションは、
エレメントのグループ全体が XML ファイル内で出現する頻度のみを指定します。
グループに含まれているそれぞれの子エレメントごとに、エレメントの出現頻度を指定することもできます
(つまり、子エレメントの出現頻度は、エレメントを含むグループの出現頻度と完全に分離しています)。
ヒント: グループ・ノードの下にリストされるエレメントの順序を変更するには、移動するエレメントをクリックし、移動したい先の場所までドラッグします。
小型ペットのリストを含むグループ・ノードの作成
次の手順では、小型ペットのリストを含むグループ・ノードの作成方法を示します。
また、選択した項目によって、DTD ファイルに基づく XML ファイル内でのグループ・ノード
(そして、含まれているエレメント) の使用方法にどのような影響を与えるかを説明します。
- Pets.dtd という名前の新規 DTD を作成し、DTD エディターで開く。
- アウトライン・ビュー内で、DTD ファイルを右マウス・ボタンでクリックし、
新規エレメント SmallPets を作成する。
さらに、3 つのエレメント Cats、Dogs、および Fish も作成する。
- SmallPets を展開して、EMPTY コンテンツ・モデルを選択する。
「コンテンツ・タイプ (Content type)」リストから、「混合コンテンツ (Mixed Content)」を選択する。
これは、SmallPets エレメントには、他のエレメントおよび文字データの両方が含まれることを意味します。
- コンテンツ・モデルは、現在グループ・ノードで表現されます
。
#PCDATA エレメント (文字データ用) と新規の子エレメントが、その下に自動的に作成されます。 「newChild」を選択し、
「名前」リストの「Dogs」を選択する。
- グループ・ノードを右マウス・ボタンでクリックし、「コンテンツ・モデルへのエレメントの追加 (Add Element to Content Model)」
をクリックする。
新規の子ノードを選択し、そして 「名前 (Name)」リストから 「Cats」を選択します。
- 上記のステップを繰り返し、「名前 (Name)」リストから 「Fish」を選択する。
- 小型ペットのリストを作成したので、
この Pets.dtd ファイルに基づく XML ファイル内でユーザーがリストの全体を選択できるようにするか、
リストのうち 1 つのみを選択できるようにするかを決定する必要があります。
たとえば、この DTD を基に Pets.xml という新規の XML ファイルを作成し、それに
SmallPets エレメントを作成できます。
DTD ファイル内のモデル・グループとして シーケンス (Sequence) を選択した場合は、
すべての小型ペット ( Cats、Dogs および
Fish) を Pets.xml ファイル内の SmallPets
エレメント内に持つことができます。
一方、コネクター・タイプとして「選択項目 (Choice)」を選択した場合は、Pets.xml ファイルの SmallPets エレメント内で動物を 1 つだけリストできます。
Cats または Dogs または Fish を選択できますが、
同時に選択できるものはただ 1 つです。
- ここで、このエレメントのグループ (小型ペットのリスト) が、
この DTD に関連した XML ファイル内で出現する頻度を決定する必要があります。
指定できる頻度は、1 回のみ出現が必要 (「1 回のみ (Just once)」)、
1 回またはそれ以上の出現が必要 (「1 回以上 (One or more)」)、
一度も出現しなくてもよい (「オプション (Optional)」)、
または一度も使用しないか任意の回数使用可能 (「ゼロ以上 (Zero or more)」) のいずれかです。
注: それぞれの子エレメントの出現頻度を指定することもできます。
子エレメントの出現頻度は、子エレメントを含むグループの出現頻度とは完全に分離しています。
したがって、例えば SmallPets グループの出現頻度を「1 回のみ (Just once)」に指定し、Cats エレメントは複数回出現できるように指定できます
(このためには、Cats エレメントを選択して、
「1 回以上 (One or more)」をクリックする)。
- グループ内で子エレメントを指定する順序は、
XML ファイルの親エレメントのインスタンス内で子エレメントがどのように使用できるかに影響を及ぼします。
たとえば、DTD ファイルで次を指定したとします: <!ELEMENT SmallPets
(Dogs+ , Cats+ , Fish)+>、ユーザーの Pets.xml ファイル内のSmallPets のいずれかのインスタンスは
Dogs の 1 つ以上のインスタンスを含む必要があり、それに続いて 1 つ以上の Cats のインスタンス、
さらに続いて 1 つだけの Fish のオカレンスを含む必要があります。
Fish が Dogs の後にあったり、Cats が Dogs の前にあったりしてはなりません。
- グループを既存のグループ・ノードに追加することもできます。
ノードを選択して右マウス・ボタンでクリックし、
「グループをコンテンツ・モデルに追加 (Add Group to Content Model)」をクリックする。 動物を種類別にソートして別々のグループに分けたい場合は、グループ・ノードを追加できます。