3

こちらの DTD バリデーターを使用すると、次の DTD が無効であることが通知されます。

<!ENTITY % text "(#PCDATA|L)*">
<!ELEMENT H         (%text;)+>
<!ELEMENT L         (#PCDATA)>

エラー メッセージは次のとおりです:「'(' 文字または要素型は、要素型 "H" の宣言内で必要です。」2 行 22 列。

なぜそれが無効なのか、誰でも指摘できますか?どうすれば有効にできますか?エラーメッセージは私にはあまり親切ではありません。ありがとう。

4

1 に答える 1

8

混合コンテンツを含む要素に少なくとも 1 つの子ノードが必要であることを強制することはできません。あなたのDTDは

<!ELEMENT H         ((#PCDATA|L)*)+>

エンティティが展開されたとき。混合コンテンツを持つ要素の唯一の許可された形式は

(#PCDATA | A | B | C)*

ここで、A、B、および C は可能な子要素です。#PCDATA が最初の選択肢である必要があり、セットは 0 から無限回繰り返すことが許可されている必要があります。つまり、アスタリスクが必要です。

于 2011-06-01T18:30:10.617 に答える