void要素

void要素

[2] void 要素 (element) は、構文としての HTML において、 終了タグ存在せず (存在できず) 常に開始タグのみで記述される要素のことです。

かつては「空要素」とも呼ばれていました (>>3)。

仕様書

一覧

[7] HTML の構文定義上void要素とされているのは次の要素です >>6

[8] これらは現在の HTML に含まれる要素ですが、実際には、不適合であって著者は使ってはいけないとされながらも後方互換性のために HTML構文解析器直列化器は実装しなければならないとされているvoid要素 (serializes as void) があります。 これには次の要素が含まれます >>9

[10] これに加えて、形式的にはvoid要素であるものの、構文解析器で展開される「マクロ」 的なタグであり、直列化器void要素のようには扱わないものが2種類あります。 仕様書の直列化器の定義では参考までに注釈として言及がありました >>9, >>27

[11] 歴史的にはこれら以外にも一時void要素として実装されていたものの現在に残っていないもの、 一部の実装にのみ残っているもの、定義が改められて現在ではvoid要素でないもの、 提案されたものの実装されなかったものなどがあります。

[24] かつて IEnextid 要素void要素として構文解析していました。

[14] 例えば spacer 要素はかつて Netscape Navigator が実装しており、最近まで Gecko構文解析器void要素として扱っていましたが、 現在の HTML 仕様上は void要素ではありません。

[15] 例えば canvas 要素はかつて void要素として実装されていましたが、 現在では通常の要素として定義・実装されています。

[17] OperaHTML5event-source 要素を実装していましたが、 現在では仕様からも実装からも削除されています。

[18] HTML5command 要素void要素として定義しており、 一時構文解析器で実装もされていましたが、要素としては実装されておらず、 その後仕様からも削除されました。実装からも現在は削除されています。

[12] HTML文書には SVGMathML要素を含めることもできますが、 その場合、HTMLvoid要素と同じタグ名であったとしても、void要素とはならず、 通常の要素として構文解析・直列化されます。

[13] HTML文書中の SVGMathML要素XML文書中の要素は、 <foo /> のように空要素構文を使って簡略化して表記することができます。 これは void要素でも認められていますが、この構文を使っているからといって void要素であるとは限りません。

[19] 現在の void要素の一覧は

... に JSON 形式で用意されています。

関連

[3] 歴史的には void要素空要素強制空要素とも呼ばれてきましたが、 内容モデルにおける空要素と区別するため、Web Applications 1.0 で新たに「void要素」という呼称が導入されました。

[21] void要素内容モデルとなっています。しかし、 内容モデル要素がすべてvoid要素であるわけではありません。

[22] また、 void要素HTML構文における概念で、 XML (XHTML) や DOM には存在しません。 void要素であっても、 XMLDOM では子供を持つことができます。

歴史

[1] HTML mode では、 Gecko<br></br><br><br> と解釈するようです。それでいて <input ...></input><input/> と意図したように解釈してくれます。

[4] XSLT 2.0 and XQuery 1.0 Serialization (Second Edition) ( ( 版)) http://www.w3.org/TR/2010/REC-xslt-xquery-serialization-20101214/#XHTMLEMPTY

[5] XSLT 2.0 and XQuery 1.0 Serialization (Second Edition) ( ( 版)) http://www.w3.org/TR/2010/REC-xslt-xquery-serialization-20101214/#XML-ISLAND

[16] XSLT and XQuery Serialization 3.0 ( ( 版)) http://www.w3.org/TR/xslt-xquery-serialization-3/#XHTMLVOID

[23] Fix #234: Change <menuitem> from void to like-<option> · whatwg/html@5e49a20 ( 版) https://github.com/whatwg/html/commit/5e49a20874fabef620bf7ea0be7534c73fbd58c4

[25] Remove <keygen> (domenic著, ) https://github.com/whatwg/html/commit/5baa38720f6e83c94a50018c4565808ad548d69c

[26] XSLT and XQuery Serialization 3.1 () https://www.w3.org/TR/2017/REC-xslt-xquery-serialization-31-20170321/#XHTMLVOID

[27] Serialize the children of void elements as the empty string (Zirro著, ) https://github.com/whatwg/html/commit/d36d3eb0e2164d3bdec168f047f15b7925bd5f83

[28] Should the innerHTML of void elements include child nodes? · Issue #4220 · whatwg/html () https://github.com/whatwg/html/issues/4220

[29] Serialize the children of void elements as the empty string by Zirro · Pull Request #4238 · whatwg/html () https://github.com/whatwg/html/pull/4238