空要素

空要素

[1] 空要素 (くう (から) ようそ) (empty element) は、 HTMLSGMLXML において「」である要素を指します。 意味は何種類かあります。

内容 (モデル) が空の要素 = 空要素 (HTML)

[3] HTML では、要素内容 (あるいは内容モデル) がである要素のことを 「空要素」と呼んでいました。2014年8月以降、これは内容モデルなし (nothing) 」 に改称されています >>16

[4] HTML ではといっても本当に何も無い (childNodeslength が0である) 状態だけではありません要素間空白注釈節点処理指令節点かどうかの判断に当たっては無視されます。

内容が何も無い要素 = 空要素 (XML)

[5] XML では、要素内容が何も無い要素のことを「空要素」 といいます。空要素開始タグの直後に終了タグを置くことでも表現できますし、 専用の空要素タグで表現することもできます。

[6] 俗に空要素タグのことを指して空要素と言うこともあります。

内容モデルが EMPTY で開始タグだけを使う要素 = 空要素 (素の SGML)

[7] 素のSGML では、DTD内容モデルEMPTY とした要素型要素終了タグを使えず、開始タグだけで表現することになっており、 この要素あるいは要素型を「空要素」といいます。

[8] Web SGML では EMPTY要素終了タグを使うことができるようになって、 見た目上の普通の要素内容がたまたま無い場合との区別が付きづらくなりました。 このため、内容モデルEMPTY要素には新たに「強制空要素」 という用語が作られました。

[17] HTML ではこれに相当するものを void要素と呼んでいます。

:empty 擬似クラス

[10] :empty 擬似クラス要素を表します。

仕様書

意味

[12] :empty子供が無い要素を表します。ここでいう子供がいないとは、 文書木中において要素節点と長さが0でないデータを持つ内容節点 (DOMテキスト節点CDATA節点実体参照など) がないことを言います。 注釈処理指令、その他の節点は数えてはなりません>>11

[13] HTML空要素の定義とは違って要素間空白は無視されないようです。

歴史

選択子3

[15] >>14 が初出です。

歴史

[18] 元々素のSGMLでは内容モデルが空であることと構文上開始タグのみで終了タグが禁止されていることは同一で、どちらも空要素と呼ばれていました。内容がたまたま空であることには特に名前は与えられていませんでした。

[19] それが XMLWeb SGML によって構文解析と妥当性が分離されたことにより、 XML では終了タグのない開始タグのみの要素が存在しないかわりに内容が空である要素のための短縮構文が導入され、 Web SGML では内容が空であることを空要素、構文上終了タグが存在しないことを強制空要素と呼ぶようになりました。

[20] 一方 HTML では、空要素という語の混乱を避けるため、 内容モデルが空であることを内容モデル「なし」、 構文上終了タグが存在しないことをvoid要素と呼ぶようになりました。

メモ

[2]

Use of empty elements within XML instance documents is a source of controversy for a variety of reasons. An empty element does not simply represent data that is missing. It may express data that is not applicable for some reason, trigger the expression of an attribute, denote all possible values instead of just one, mark the end of a series of data, or appear as a result of an error in XML file generation. Conversely, missing data elements can also have meaning — data not provided by a trading partner. In information exchange environments, different trading partners may allow, require, or ban empty elements. UBL has determined that empty elements do not provide the level of assurance necessary for business information exchanges and therefore will not be used.

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