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