[7]
>
:[INS[[[Web SGML]]]] K.2.4.3 強制空要素 (mandatorily empty element):
[CODE(SGML)[[[EMPTY]]]] と宣言された[[型]]の[[要素]],
又は明示的な[[内容参照属性]]によって、
強制的に [CODE(SGML)[EMPTY]] となった要素。

[1] '''[Q[強制空要素]]と[Q[空要素]]''':
以前は強制空要素のことを[DFN[[[空要素]]]]と呼んでいましたが、
通常の要素型の要素でたまたま[[内容]]が空であるものを
[Q[空要素]]と呼ぶこともありました。
そのため、 [[Web SGML]] では新たに[Q[強制空要素]]という語が導入され、
たまたま空の要素と常に空の要素型の要素を明確に区別することができるようになりました。

* 構文

[2] [[素のSGML]] では、強制空要素の[[終了タグ]]を記述することは'''禁止'''されています。

例えば、 [[HTML]] の [CODE(HTMLe)[[[br]]]] 要素型は
[CODE(SGML)[[[EMPTY]]]] と定義されていますから、必ず
[PRE(HTML)[
<[CODE(HTMLe)[br]]>
]PRE]
と''だけ''書かなければなりません。

[3] Web SGML では [[SGML宣言]]に [CODE(SGML)[[[EMPTYNRM]]]]
という指定を新設しています。この値が [CODE(SGML)[[[YES]]]]
の場合は、強制空要素の終了タグにも他の型の要素と同じ規則が適用されます。

例えば、 [[XHTML 1]] の [CODE(HTMLe)[[[br]]]] 要素型は
[CODE(XML)[[[EMPTY]]]] と定義されていますが、必ず
[PRE(HTML)[
<[CODE(HTMLe)[br]]></[CODE(HTMLe)[br]]>
]PRE]
のように終了タグ''も''書かなければなりません。

[6] なお、 >>3 の場合に終了タグには[[マーク最小化]]が通常通り適用されることにも注意してください。

例えば、 >>3 の例で、 [[XML]] は [CODE(SGML)[[[NETENABL]] [[IMMEDIATE]]]]
なので、
[PRE(HTML)[
<[CODE(HTMLe)[br]]/>
]PRE]
と書いてもまったく同じ意味になります。

[WEAK[(なお、 >>3 の例と >>9 の例は[[タグ]]の表現方法が異なるだけで、要素構造 (特に XML の場合には [[XML情報集合]]) としてはなんら違いがないことに注意してください。また、強制でない空要素についてもまったく同様のことが言えます。)]]

[[#comment]]

* 用途

[4] [CODE(SGML)[EMPTY]] と宣言された強制空要素は一般に、
[[非解析対象実体]]の place holder として使います。

[5] >>4 例: 
[PRE(SGML)[
<![[ELEMENT]] [CODE(SGMLe)[image]] - o [[EMPTY]]>
<![[ATTLIST]] [CODE(SGMLe)[image]]
  [CODE(SGMLa)[name]] [[ENTITY]] #[[REQUIRED]]>
[VAR[...]]
<![[NOTATION]] png [[SYSTEM]] "[[ PNG image ]]">
<![[ENTITY]] [CODE(HTMLe)[image-1]] SYSTEM "[[ image-1.png ]]" [[NDATA]] png>
[VAR[...]]
<[CODE(SGMLe)[image]] [CODE(SGMLa)[name]]="image-1">
]PRE]

[8]
>>4 それと [CODE(SGML)[[[CONREF]]]] ですね。こっちは文書内の参照用 ([SAMP(SGML)[<ref to="section3"/>]])。

* 関連

[9] [[HTML]] では[[強制空要素]]に相当するものは[[void要素]]と呼ばれています。