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