<!ELEMENT HTML O O (%html.content;) -- document root element -->
HTMLという要素(ELEMENT)を定義します。O O は開始タグも終了タグも省略可能であることを意味します。終了タグのみ省略可能なときは - O、両方とも省略できないときは - - となります。内部に %html.content; で表される要素を包含することを示しています。-- と -- の間はコメントです。
<!ENTITY % html.content "HEAD, BODY">
%html.content; は、HEAD要素とBODY要素から構成されます。カンマ(,)で区切られる場合はこの順番で現れなくてはなりません。
<![ %HTML.Frameset; [ <!ENTITY % html.content "HEAD, FRAMESET"> ]]>
DOCTYPE で Frameset を指定した時は、%html.content; は HEAD要素と FRAMESET要素から構成されます。
<!ELEMENT HEAD O O (%head.content;) +(%head.misc;)>
HEAD要素は開始タグも終了タグも省略可能で、%head.content; を包含します。加えて(+)、%head.misc; を 0 個以上包含可能であることを意味します。
<!ENTITY % head.content "TITLE & ISINDEX? & BASE?">
%head.content; は、TITLE要素、ISINDEX要素、BASE要素から構成されます。アンド(&)で区切られる場合は順番は問いません。クエスチョン(?)はその要素が省略可能であることを意味します。
<!ENTITY % head.misc "SCRIPT|STYLE|META|LINK|OBJECT">
%head.misc; は SCRIPT要素、STYLE要素、META要素、LINK要素、OBJECT要素のいずれかです。
<!ELEMENT A - - (%inline;)* -(A)>
後ろのアスタリスク(*)は「0個以上」、前のマイナス(-)は「を除く」を意味します。上記は、A要素は、0個以上のインライン要素(%inline;)を包含しますが、ただし、A要素を包含することができないことを意味します。
<!ELEMENT UL - - (LI)+>
UL要素は、LI要素を包含します。
【DOCTYPE が Transitionalの場合】 □ HTML ├□ HEAD │├□ TITLE & ISINDEX? & BASE? │└□ +(SCRIPT | STYLE | META | LINK | OBJECT) └□ BODY ├□ (%flow;)* └□ +(INS | DEL) □ %flow; └□ %block; | %inline; 【DOCTYPE が Framesetの場合】 □ HTML ├□ HEAD └□ FRAMESET
+(A) | 加えて、A を 0 個以上包含できる。 |
---|---|
-(A) | A を除く。 |
A* | A を 0個以上。 |
A+ | A を 1個以上。 |
A? | A を 0個もしくは1個。 |
A | B | A もしくは B |
A, B | A と B をこの順番で。 |
A & B | A と B を順不同で |