強制的空要素

強制空要素 (SGML)

[7]

Web SGML K.2.4.3 強制空要素 (mandatorily empty element)
EMPTY と宣言された要素, 又は明示的な内容参照属性によって、 強制的に EMPTY となった要素。

[1] 強制空要素空要素: 以前は強制空要素のことを空要素と呼んでいましたが、 通常の要素型の要素でたまたま内容が空であるものを 空要素と呼ぶこともありました。 そのため、 Web SGML では新たに強制空要素という語が導入され、 たまたま空の要素と常に空の要素型の要素を明確に区別することができるようになりました。

構文

[2] 素のSGML では、強制空要素の終了タグを記述することは禁止されています。

例えば、 HTMLbr 要素型は EMPTY と定義されていますから、必ず

<br>

だけ書かなければなりません。

[3] Web SGML では SGML宣言EMPTYNRM という指定を新設しています。この値が YES の場合は、強制空要素の終了タグにも他の型の要素と同じ規則が適用されます。

例えば、 XHTML 1br 要素型は EMPTY と定義されていますが、必ず

<br></br>

のように終了タグ書かなければなりません。

[6] なお、 >>3 の場合に終了タグにはマーク最小化が通常通り適用されることにも注意してください。

例えば、 >>3 の例で、 XMLNETENABL IMMEDIATE なので、

<br/>

と書いてもまったく同じ意味になります。

(なお、 >>3 の例と >>9 の例はタグの表現方法が異なるだけで、要素構造 (特に XML の場合には XML情報集合) としてはなんら違いがないことに注意してください。また、強制でない空要素についてもまったく同様のことが言えます。)

用途

[4] EMPTY と宣言された強制空要素は一般に、 非解析対象実体の place holder として使います。

[5] >>4 例:

<!ELEMENT image - o EMPTY>
<!ATTLIST image
  name ENTITY #REQUIRED>
...
<!NOTATION png SYSTEM " PNG image ">
<!ENTITY image-1 SYSTEM " image-1.png " NDATA png>
...
<image name="image-1">

[8] >>4 それと CONREF ですね。こっちは文書内の参照用 (<ref to="section3"/>)。

関連

[9] HTML では強制空要素に相当するものはvoid要素と呼ばれています。