## DTDの読み方

トップ > HTMLリファレンス > HTML概要 > DTDの読み方

#### ■ DTDの読み方

    <!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 を順不同で

Copyright (C) 2001 とほほ
初版：2001年11月24日
http://www.tohoho-web.com/html/memo/elmtree.htm