CSS
WEB用語(N)

要素の包含関係

トップ > HTMLリファレンス > HTML概要 > 要素の包含関係

HTML4.01 の仕様書では、HTML の各要素は次のような包含関係を持つと定義されています。

□ HTML
├□ HEAD
│├○ BASE | META | LINK
│├○ ISINDEX(Strict では不可)
│├□ TITLE | SCRIPT | STYLE
││└◇ 文字
│└□ OBJECT
│ └○ PARAM
├□ BODY
│├◇ ブロック要素
│├◇ インライン要素(Strict では不可)
│├□ SCRIPT
││└◇ 文字
│└□ INS | DEL(孫要素として登場してよい)
│ └◇ ブロック要素 | インライン要素
└□ FRAMESET(Frameset の場合のみ)
 ├□ FRAMESET
 ├○ FRAME
 └□ NOFRAMES
  └□ BODY(NOFRAMES を含んではならない)

これは、HTML要素(<html>〜</html>)はその中に HEAD要素(<head>〜</head>)、BODY要素(<body>〜</body>)や FRAMESET要素(<frameset>〜</frameset>)を包含することができることを意味します。正確には、HEAD要素は1回のみ先頭に、BODY と FRAMESET はどちらか一方のみなど、細かな規定があるのですが、ここでは省略します。

AAA | BBB は「AAA または BBB」を示します。□ は子要素や内容を含む要素、○ は終了タグの無い要素、◇ はその他を示しています。

ブロック要素は通常、前後が改行された形式で表示されます。

◇ ブロック要素
│
├○ HR
├□ H1 | H2 | H3 | H4 | H5 | H6 | P
│└◇ インライン要素
├□ DIV
│└◇ ブロック要素 | インライン要素
├□ CENTER(Strict では不可)
│└◇ ブロック要素 | インライン要素
├□ PRE
│└◇ インライン要素(IMG|OBJECT|APPLET|BIG|SMALL|
│     SUB|SUP|FONT|BASEFONT を含んではならない)
├□ BLOCKQUOTE
│├□ SCRIPT
││└◇ 文字
│├◇ インライン要素(Strict では不可)
│└◇ ブロック要素
├□ ADDRESS
│├□ P(Strict では不可)
││└◇ インライン要素
│└◇ インライン要素
├□ NOSCRIPT
│├◇ インライン要素(Strict では不可)
│└◇ ブロック要素
├□ NOFRAMES(Strict では不可)
│└◇ ブロック要素 | インライン要素
│
│<!-- リスト系 -->
├□ UL | OL
│└□ LI
│ └◇ ブロック要素 | インライン要素
├□ DIR | MENU(Strict では不可)
│└□ LI
│ └◇ インライン要素
├□ DL
│├□ DT
││└◇ インライン要素
│└□ DD
│ └◇ ブロック要素 | インライン要素
│
│<!-- テーブル系 -->
├□ TABLE
│├□ CAPTION
││└◇ インライン要素
│├○ COL
│├□ COLGROUP
││└○ COL
│└□ THEAD | TBODY | TFOOT
│ └□ TR
│  └□ TH | TD
│   └◇ ブロック要素 | インライン要素
│
│<!-- フォーム系 -->
├□ FORM
│├□ SCRIPT
││└◇ 文字
│├◇ インライン要素(Strict では不可)
│└◇ ブロック要素(FORM を含んではならない)
└□ FIELDSET
 ├◇ 文字
 ├□ LEGEND(必須)
 │└◇ インライン要素
 └◇ ブロック要素 | インライン要素

インライン要素は通常、前後に改行がはいることなく表示されます。

◇ インライン要素
├○ BR | IMG
├□ IFRAME(Strict では不可)
│└◇ ブロック要素 | インライン要素
├□ A
│└◇ インライン要素(A を含んではならない)
├□ MAP
│├◇ ブロック要素
│└○ AREA
│
│<!-- 文字・フォント系 -->
├◇ 文字
├□ FONT(Strict では不可)
│└◇ インライン要素
├○ BASEFONT(Strict では不可)
├□ TT | I | B | BIG | SMALL |
││ EM | STRING | DFN | CODE | SAMP | KBD |
││ VAR | CITE | ABBR | ACRONYM |
││ SUB | SUP | SPAN | BDO | Q
│└◇ インライン要素
│
│<!-- 埋めこみ系 -->
├□ SCRIPT
│└◇ 文字
├□ APPLET(Strict では不可)
│├○ PARAM
│└◇ ブロック要素 | インライン要素
├□ OBJECT
│├○ PARAM
│└◇ ブロック要素 | インライン要素
│
│<!-- フォーム系 -->
├□ LABEL
│└◇ インライン要素(LABEL を含んではならない)
├○ INPUT
├□ SELECT
│├□ OPTGROUP
││└□ OPTION
││ └◇ #PCDATA
│└□ OPTION
│ └◇ #PCDATA
├□ TEXTAREA
│└◇ #PCDATA
└□ BUTTON
 └◇ ブロック要素 | インライン要素
  (A|FORM|FIELDSET|INPUT|SELECT|TEXTAREA|LABEL|BUTTON|
   ISINDEX|IFRAME を含んではならない)

HTML4.01 Strict の仕様に従う場合、BODY 要素の直下にインライン要素を記述することができません。従って、文字や、画像などのインライン要素を記述する場合は、必ず何かのブロック要素で囲って記述する必要があります。HTML4.01 Transitional の場合は、インライン要素を直接記述することができます。

TABLE の直下には TR を包含できません。ただし、TBODY は開始タグも終了タグも省略可能なので、直下に TR を記述した場合は <tbody>〜</tbody> が省略されていると見なされます。

INS と DEL は BODY の子要素や孫要素としてどこでも記述することができます。ある時はブロック要素として、ある時はインライン要素として振舞います。ただし、インライン要素としてふるまっている時は、内部にブロック要素を包含することができません。

INPUT や TEXTAREA などのフォーム部品は仕様上、FORM の外にもかけますが、Netscape Communicator では、必ず FORM の中に書かないと表示されません。


Copyright (C) 2001 WEB
初版:2001年11月24日
http://tohoho.wakusei.ne.jp/html/memo/elmtree.htm