一回も披露したことのない豆知識

こんにちは。
DTDの記述方法で悩んでいます。

以下のようなXMLをDTDで規定したいのですが、可能でしょうか。

<Elem></Elem>
<Elem>ABC</Elem>
<Elem>
<Child>ABC</Child>
<Child>DEF</Child>
<Child>GHI</Child>
</Elem>

つまり、
<!ELEMENT Elem (#PCDATA)>
と、
<!ELEMENT Elem (Child*)>
を同時に規定したいのです。
<!ELEMENT Elem (#PCDATA|Child*)>
だと、エラーになってしまいました。
また、
<!ELEMENT Elem (#PCDATA|Child)*>
では、
<Elem>
 ABC
<Child>GHI</Child>
</Elem>
といった場合も有効になってしまいます。このケースは除外したいのです。

こういった場合の記述はどうしたらいいのでしょうか。
あるいはDTDでの記述は無理なのでしょうか。

A 回答 (1件)

>あるいはDTDでの記述は無理なのでしょうか。



うん、無理。XMLSchemaでも出来そうな気がしないような。

http://www.w3.org/TR/REC-xml/#NT-elementdecl
http://www.w3.org/TR/REC-xml/#NT-Mixed
http://www.w3.org/TR/REC-xml/#NT-children
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
なるほど、#PCDATAというのは特殊なんですね。
残念ではありますが、おかげさまですっきりしました。

お礼日時:2009/11/02 13:51

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!