<students>
ルート要素として 0+ 要素を含む可能性のある XML ドキュメントの DTD を作成しています<student>
。
宣言することの違いは何ですか
<!ELEMENT students (student)*>
と
<!ELEMENT students (student+)>
どちらも検証中です。
コンテンツ モデル(student)*
は、0 個以上のstudent
要素を受け入れます。コンテンツ モデル(student+)
は 1 つ以上を受け入れます。
OP は、オカレンス インジケーターが括弧の内側にあるか外側にあるかが問題になる時期についての彼の推測的なコメントで正しいです。
名前に付けられた出現標識 ( のように(student+)
) は、その名前の要素に適用されます。括弧で囲まれたグループ ( のように(student)*
) に付けられたオカレンス インジケータは、グループ全体に適用されます。このような場合のように、括弧で囲まれたグループにトークンが 1 つしか含まれていない場合、出現標識の位置は影響しません。したがって、プラスの代わりにアスタリスクを使用した対応するペアと同様に、 と は同じこと (student+)
を意味します。(student)+
グループに複数のトークンが含まれる場合、インジケータの位置によって違いが生じます。 (a | b)+
混在a
したb
要素の空でないシーケンスを(a+ | b+)
受け入れますが、要素の空でないシーケンスa
または要素の空でないシーケンスのいずれかを受け入れますが、混合は受け入れb
ません。 . (一部の学習者はこれに問題を抱えていますが、学習する価値があります。) 同様に、2 つの異なる言語(a, b)+
を定義します。(a+, b+)