で、これはできればこんな感じにしてほしかったという希望。
<!ELEMENT dl (di)+> <!ELEMENT di (dt&dd)+>
di(Definition Item)という要素でグルーピングできるようにして、その要素にはdlとddがどちらも最低一つ以上ふくまれていなければならない。みたいな。
つまりさっきのソースはこんな感じなります。
<dl> <di> <dt>項目1</dt> <dd>項目1の説明</dd> </di> <di> <dd>項目2の説明</dd> <dd>項目2の説明</dd> <dt>項目2</dd> </di> </dl>
外村さんも「こういう書き方もできる」ってことで書いているのだろうけど、そもそも定義が先に来て用語が後に来るリストってあるの?倒置法的な?まぁでも、ないと仮定して<!ELEMENT dl (dt, dd)+>
だったとすると、dtの次にdtが書けないし、<!ELEMENT dl (dt|dd)+>
はそういったのを考慮しているんだろう。
本題で、新しくdi要素でdtとddをグルーピングするのって、別にdiv要素でもいいんじゃないかと思ったんだけど、よくよく考えてみるとdiv要素入れるの許可したら、他の要素も入れられちゃうしアカンってことで自己解決。なのだけど、dl要素でグルーピングされてるのじゃ不便なのかな。上記のリストだったら
<dl>
<dt>項目1</dt>
<dd>項目1の説明</dd>
</dl>
<dl>
<dd>項目2の説明</dd>
<dd>項目2の説明</dd>
<dt>項目2</dd>
</dl>
のような感じで。こっちの方が行数も少ないしスマートだと思うんだけど。で、DTDが<!ELEMENT dl (dt&dd)+>
だったらOKなんじゃないかな。