なぜこれが妥当なXML DTDではないでしょうか? (パラメータエンティティと#PCDATA)

StackOverflow https://stackoverflow.com/questions/2803142

質問

DTDを使用してバリここを、私は次のDTDが無効であることを知らされています。

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

エラーメッセージである「 『H』 A 『(』文字または要素型は、要素型の宣言内で必要とされる」行2、列22に

それが無効である理由

缶誰もが指摘してください?そして、どのように私はそれを有効にすることができますか?エラーメッセージは正確に私には非常に友好的ではありません。おかげます。

役に立ちましたか?

解決

あなたは混在したコンテンツを持つ要素は、少なくとも一つの子ノードを持たなければならないことを強制することはできません。あなたのDTDになる。

<!ELEMENT H         ((#PCDATA|L)*)+>
エンティティが展開されている

。混合コンテンツを持つ要素に対してのみ許可フォームがある

(#PCDATA | A | B | C)*

A、B及びCが可能子要素です。 #PCDATA必要がありますの最初の選択肢とのセットが0・無限回繰り返すが許可されなければならないこと、すなわち、アスタリスクが必要とされます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top