XML DTD での混在内容モデル
「混在内容モデル」はいいですよね、#PCDATA 使うやつ。
DTD 書くとき、ある要素が#PCDATA と他の要素で構成される場合は、
or で繋ぐ様に心がけてれば、まぁ、大丈夫。
でもXMLの場合、基本的にはそれでいいんだけれど、
#PCDATA は最初に書け!
だそうで。つまり、
混在内容モデルは
'(' S? '#PCDATA' (S? '|' S? Name) * S? ')*' あるいは '(' S? '#PCDATA' S? ')'
だそうです。てことは、
- <!ELEMENT P (#PCDATA|ref)*> ・・・これはいい(んだよね、、、)
- <!ELEMENT P (ref|#PCDATA)+> ・・・これはいけない(順序と+)
だそうだ。気を付けないと、パーサー通したとき、エラーだらけになるので
注意して、、、
私はハマった。
miuraj@isc.meiji.ac.jp