html5タグ一覧

2012年2月4日に更新されたW3Cの「HTML5 A vocabulary and associated APIs for HTML and XHTML Editor's Draft」の中から「第3章 2-5節 コンテンツモデル」と「第4章 HTMLの要素」をまとめてみました。
よくわからないところは、原文のまま抜粋しています。

要素は大別して11つのタイプに分けることができる。

  1. ルート要素(The root element)
  2. ドキュメントメタデータ(Documnet metadata)
  3. スクリプティング(Scripting)
  4. セクション(Sections)
  5. グルーピングコンテント(Grouping content)
  6. テキストレベルセマンティック(Text-level semantics)
  7. エディット(Edits)
  8. エンベッディッドコンテント(Embedded content)
  9. テーブラーデータ(Tabular data)
  10. フォーム(Forms)
  11. インタラクティブ要素(Interactive elements)

コンテンツ・モデル

html4までは「インラインレベル要素」か「ブロックレベル要素」がキーワードだったが、html5ではその概念は一切ない。
その代わりに「コンテンツ・モデル」という概念を意識する必要がある。

各要素は、下記のいずれかに0個以上に属する。

メタデータ・コンテンツ (Metadata content)

sets up the presentation or behavior of the rest of the content,
or that sets up the relationship of the document with other documents,
or that conveys other "out of band" information.

フロー・コンテンツ (Flow content)

ドキュメントのbody内で使われるほとんどの要素やアプリケーションがフロー・コンテンツとしてカテゴライズする要素。

セクショニング・コンテンツ (Sectioning content)

defines the scope of headings and footers.

潜在的に見出しとアウトラインを持つ。
ちなみに、アウトラインを持つ(セクショニング・ルート)要素は、 詳細は見出しとセクション

ヘッディング・コンテンツ (Heading content)

defines the header of a section (whether explicitly marked up using sectioning content elements, or implied by the heading content itself).

フレージング・コンテンツ (Phrasing content)

Phrasing content is the text of the document,
as well as elements that mark up that text at the intra-paragraph level.
Runs of phrasing content form paragraphs.

エンベッディッド・コンテンツ (Embedded content)

imports another resource into the document, or content from another vocabulary that is inserted into the document.

インタラクティブ・コンテンツ (Interactive content)

is specifically intended for user interaction.

(Palpable content)

As a general rule, elements whose content model allows any flow content or phrasing content should have at least one child node that is palpable content and that does not have the hidden attribute specified.

(Transparent content models)

Some elements are described as transparent;
they have "transparent" in the description of their content model.
The content model of a transparent element is derived from the content model of its parent element:
the elements required in the part of the content model that is "transparent" are the same elements as required in the part of the content model of the parent of the transparent element in which the transparent element finds itself.

カテゴリー

M:メタデータ・コンテンツ (Metadata content)
F:フロー・コンテンツ (Flow content)
S:セクショニング・コンテンツ (Sectioning content)
H:ヘッディング・コンテンツ (Heading content)
P:フレージング・コンテンツ (Phrasing content)
E:エンベッディッド・コンテンツ (Embedded content)
I:インタラクティブ・コンテンツ (Interactive content)
Pa : Palpable content
T:トランスペアレント
Sr:セクショニングルート
Fa:form-associated element
タグタイプ タグ名 その要素のコンテンツモデル
Categories
その要素の子
Content model
その要素の親
Contexts in which this element can be used
 
M H F P S Sr I E Pa fa  
ルート要素 html                     × ひとつのheadとその後にひとつのbody要素が続く ドキュメントのルート要素として  
ドキュメントメタデータ head                     × 割愛
さもなければ、title要素を含むひとつ以上のM
html要素の最初の要素として  
ドキュメントメタデータ title M                     テキスト head内(一度のみ)。  
ドキュメントメタデータ base M                     head内(一度のみ)。  
ドキュメントメタデータ link M                     ・Mを子にできる要素(例:head)
・headの子となるnoscript内。
重要属性 title
ドキュメントメタデータ meta M                     ・head内(「charset属性あり、もしくはhttp-equiv属性がエンコードする宣言状態である場合」「http-equiv属性あり、しかしエンコードする宣言状態ではない場合」)
・headの子となるnoscript内(http-equiv属性あり、しかしエンコードする宣言状態ではない場合)。
・Mを子にできる要素(name属性が存在する場合)
 
ドキュメントメタデータ style M   F                 割愛 ・head内、もしくはheadの子となるnoscript内(scoped属性がない場合)
・Fを子にできる要素(scoped属性がある場合。but before any other flow content other than inter-element whitespace, and not as the child of an element whose content model is transparent.)。
重要属性 title
スクリプティング script M   F P               割愛 ・Fを子にできる要素
・Pを子にできる要素
 
スクリプティング noscript M   F P               割愛 割愛  
セクション body           Sr           F html要素の2番目の要素として  
セクション section     F   S       Pa     F Fを子にできる要素  
セクション nav     F   S       Pa     F Fを子にできる要素  
セクション article     F   S       Pa     F Fを子にできる要素  
セクション aside     F   S       Pa     F Fを子にできる要素  
セクション h1~h6   H F           Pa     P ・hgroupの子として
・Fを子にできる要素
 
セクション hgroup   H F           Pa     ひとつ以上の h1~h6 要素 Fを子にできる要素  
セクション header     F           Pa     F Fを子にできる要素  
セクション footer     F           Pa     F Fを子にできる要素  
セクション address     F           Pa     F Fを子にできる要素  
グルーピングコンテント p     F           Pa     P Fを子にできる要素 p内にulはNG
グルーピングコンテント hr     F                 Fを子にできる要素  
グルーピングコンテント pre     F           Pa     P Fを子にできる要素  
グルーピングコンテント blockquote     F     Sr     Pa     F Fを子にできる要素  
グルーピングコンテント ol     F           Pa     0個以上の li Fを子にできる要素  
グルーピングコンテント ul     F           Pa     0個以上の li Fを子にできる要素  
グルーピングコンテント li                     × F ol要素内
ul要素内
menu要素内
 
グルーピングコンテント dl     F           Pa     1個以上のdt、それに続いて1個以上のddを含む、0個以上のグループ Fを子にできる要素  
グルーピングコンテント dt                     × F dl内のddまたはdtの前  
グルーピングコンテント dd                     × F dl内のdt またはddの後  
グルーピングコンテント figure     F     Sr     Pa     ・ひとつのfigcaption要素とその前後にF
・F
Fを子にできる要素  
グルーピングコンテント figcaption                     × F figure要素の最初または最後の子として。  
グルーピングコンテント div     F           Pa     F Fを子にできる要素  
テキストレベルセマンティック a     F P     I   Pa     T Pのみ含む場合:Pを子にできる要素
それ以外:Fを子にできる要素
 
テキストレベルセマンティック em     F P         Pa     P Pを子にできる要素  
テキストレベルセマンティック strong     F P         Pa     P Pを子にできる要素  
テキストレベルセマンティック small     F P         Pa     P Pを子にできる要素  
テキストレベルセマンティック s     F P         Pa     P Pを子にできる要素  
テキストレベルセマンティック cite     F P         Pa     P Pを子にできる要素  
テキストレベルセマンティック q     F P         Pa     P Pを子にできる要素  
テキストレベルセマンティック dfn     F P         Pa     P Pを子にできる要素 重要属性 title
テキストレベルセマンティック abbr     F P         Pa     P Pを子にできる要素 重要属性 title
テキストレベルセマンティック time     F P         Pa     P Pを子にできる要素  
テキストレベルセマンティック code     F P         Pa     P Pを子にできる要素  
テキストレベルセマンティック var     F P         Pa     P Pを子にできる要素  
テキストレベルセマンティック samp     F P         Pa     P Pを子にできる要素  
テキストレベルセマンティック kbd     F P         Pa     P Pを子にできる要素  
テキストレベルセマンティック subとsup     F P         Pa     P Pを子にできる要素  
テキストレベルセマンティック i     F P         Pa     P Pを子にできる要素  
テキストレベルセマンティック b     F P         Pa     P Pを子にできる要素  
テキストレベルセマンティック u     F P         Pa     P Pを子にできる要素  
テキストレベルセマンティック mark     F P         Pa     P Pを子にできる要素  
テキストレベルセマンティック ruby     F P         Pa     One or more groups of: phrasing content followed either by a single rt element, or an rp element, an rt element, and another rp element. Pを子にできる要素  
テキストレベルセマンティック rt                     × P ruby要素の子として  
テキストレベルセマンティック rp                     × P ruby要素の子として(ただし、rtの直前または直後にあること)。  
テキストレベルセマンティック bdi     F P         Pa     P Pを子にできる要素 重要属性 dir
テキストレベルセマンティック bdo     F P         Pa     P Pを子にできる要素 重要属性 dir
テキストレベルセマンティック span     F P         Pa     P Pを子にできる要素  
テキストレベルセマンティック br     F P               Pを子にできる要素  
テキストレベルセマンティック wbr     F P               Pを子にできる要素  
エディット ins     F P         Pa     T Pのみ含む場合:Pを子にできる要素
それ以外:Fを子にできる要素
 
エディット del     F P               T Pのみ含む場合:Pを子にできる要素
それ以外:Fを子にできる要素
 
エンベッディッドコンテント img     F P     I E Pa     Eを子にできる要素  
エンベッディッドコンテント iframe     F P     I E Pa     割愛 Eを子にできる要素  
エンベッディッドコンテント embed     F P     I E Pa     Eを子にできる要素  
エンベッディッドコンテント object     F P     I E Pa fa  

0個以上のparam要素。そしてT

Eを子にできる要素  
エンベッディッドコンテント param                     × object要素の子として(ただしFの前)。  
エンベッディッドコンテント video     F P     I E Pa     0個以上のtrack要素。そしてT(ただし、子孫にメディア要素(video、audio)を含まない)。
また、src属性ない場合:上記に追加:0個以上のsource要素
Eを子にできる要素  
エンベッディッドコンテント audio     F P     I E Pa    

0個以上のtrack要素。そしてT(ただし、子孫にメディア要素(video、audio)を含まない)。
また、src属性ない場合:上記に追加:0個以上のsource要素

Eを子にできる要素  
エンベッディッドコンテント source                     × メディア要素(video、audio)の子として(ただし、Fやtrack要素の前)。  
エンベッディッドコンテント track                     × メディア要素(video、audio)の子として(ただし、Fの前)。  
エンベッディッドコンテント canvas     F P       E Pa     T Eを子にできる要素  
エンベッディッドコンテント map     F P         Pa     T Pのみ含む場合:Pを子にできる要素
それ以外:Fを子にできる要素
 
エンベッディッドコンテント area     F P               F(ただし、祖先にmap要素がある場合)  
テーブラーデータ table     F           Pa     割愛 Fを子にできる要素  
テーブラーデータ caption                     × F tableの最初の子として  
テーブラーデータ colgroup                     × span属性がある場合:空。
span属性がない場合:0個以上のcol要素。
tableの子として  
テーブラーデータ col                     × span属性を持たないcolgroup要素として  
テーブラーデータ tbody                     × 0個以上のtr要素 tableの子として  
テーブラーデータ thead                     × 0個以上のtr要素 tableの子として  
テーブラーデータ tfoot                     × 0個以上のtr要素 tableの子として  
テーブラーデータ tr                     × 0個以上のtd要素かth要素 ・theadの子として
・tbodyの子として
・tfootの子として
・tableの子として
 
テーブラーデータ td           Sr           F tr要素の子として  
テーブラーデータ th                     × P tr要素の子として  
フォーム form     F           Pa     F Fを子にできる要素  
フォーム fieldset     F     Sr     Pa fa   ひとつのlegend要素とFが続く Fを子にできる要素  
フォーム legend                     × P fieldset要素の最初の子として  
フォーム label     F P     I   Pa fa   P
ただしwith no descendant labelable elements unless it is the element's labeled control, and no descendant label elements.
Pを子にできる要素  
フォーム input     F P     I   Pa fa   Pを子にできる要素  
フォーム button     F P     I   Pa fa   F Pを子にできる要素  
フォーム select     F P     I   Pa fa   0個以上のoptionまたはoptgroup Pを子にできる要素  
フォーム datalist     F P               Fか 0個以上の option のいずれか Pを子にできる要素  
フォーム optgroup                     × 0個以上の option select の子として  
フォーム option                     × テキスト ・select の子として
・datalist の子として
・optgroup の子として
 
フォーム textarea     F P     I   Pa fa   テキスト Pを子にできる要素  
フォーム keygen     F P     I   Pa fa   Pを子にできる要素  
フォーム output     F P         Pa fa   P Pを子にできる要素  
フォーム progress     F P         Pa xx   P Pを子にできる要素  
フォーム meter     F P         Pa xx   P Pを子にできる要素  
インタラクティブ要素 details     F     Sr I   Pa    

ひとつのsummary要素とその後にFが続く

Fを子にできる要素  
インタラクティブ要素 summary                     × P details の最初の子として  
インタラクティブ要素 command M   F P               ・Fを子にできる要素
・Pを子にできる要素
重要属性 title
インタラクティブ要素 menu     F       I   Pa     0個以上の li

F のいずれか
Fを子にできる要素  
(math)     F P       E Pa    
   
(svg)     F P       E Pa    
   
(text)     F P         Pa    
   
F(ほとんどの要素)を子にできる要素
body, section, nav, article, aside, header(*), footer(*), address(*), blockquote, li, dt(*), dd, figure, figcaption, div, caption(*), td, form(*), button(*), datalist, details(*), menu
Pを子にできる要素
h1~h6, p, pre, em, strong, small, s, cite, q, dfn(*), abbr, time, code, var, samp, kbd, sub, sup, i, b, u, mark, rt, rp, bdi, bdo, span, th, legend, label(*), output, progress(*), meter(*), summary
Tを子にできる要素
a(*), ins, del, canvas, map
それ以外
ruby, iframe, object, video, audio, table, colgroup, ・・・