- PR -

(混在要素|要素)が通らない

1
投稿者投稿内容
Dee
常連さん
会議室デビュー日: 2002/03/05
投稿数: 28
投稿日時: 2002-03-05 13:46
はじめまして

Webアプリケーションの中で、ユーザ定義のメニューを作らせるため、XMLでメニュー定義用の言語を定義して見ました。
#嗚呼、メタな文章・・・

その中でひとつはまりかけたのが次の定義(DTD)

<!ELEMENT menu ((#PCDATA|button|textbox)*|submenu) >
「menuは#PCDATAかbuttonかtextboxのどれでも0個以上の子を持つか、またはsubmenuを1個持つ」
という定義なのですが、JAXB(スキーマコンパイラ)にかけても、パーザにかけてもエラーが出てしまいました。
DTDの制限かと思ったのですが、いろいろ調べた挙句に、(混在要素|要素)の組み合わせはXMLで許されていないことが分かりました。

結局
<!ELEMENT controls (#PCDATA|button|textbox)*>
<!ELEMENT menu (controls|submenu) >
と、一旦混在要素を要素に挟み込むことで解決しました。

混在要素|要素って使いそうなものなのに、意外に通らないんですね
#ちなみにSGMLでは通ってたらしいです
1

スキルアップ/キャリアアップ(JOB@IT)