HTML5 では空でない自己終了タグが許可されますか?
P粉680487967
2023-08-21 18:20:11
<p>W3C バリデーター (Wikipedia) は、空でない要素での自己終了タグ (「<code>/></code>」で終わるタグ) の使用を好みません。 (空の要素とは、コンテンツがまったく含まれていない要素です。) それらは HTML5 でも有効ですか? </p>
<p>受け入れられる空の要素の例: </p>
<pre class="brush:html;toolbar:false;"><br />
<img src="" />
<input type="text" name="ユーザー名" />
</pre>
<p>拒否される空でない要素の例: </p>
<pre class="brush:html;toolbar:false;"><div id="myDiv" />
<span id="mySpan" />
<textarea id="someTextMessage" />
</pre>
<sub> <b>注: </b> <p><br /></p><p>
実際、W3C バリデーターは空の自己終了タグを受け入れます。作成者は最初、単純なタイプミス (<code>/></code> ; の代わりに <code>></code> を使用) が原因で問題に遭遇しました。 ; ただし、自己終了タグは HTML5 では完全には有効ではないため、回答では、さまざまな HTML バージョンにおける自己終了タグの問題について詳しく説明されています。 </p><
自己終了 div は検証されません。これは、div が 空の要素ではなく、通常の要素であるためです。
HTML5 仕様 によると、コンテンツを含めることができないタグ (空要素 と呼ばれる) は自己終了* することができます。これには次のタグが含まれます: リーリー
上記のタグの「/」は完全にオプションであるため、<img/>
*注:は
<img>と変わりませんが、
<img> ;</img>は無効です。
外部要素 は自己終了することもできますが、それはこの回答の範囲外だと思います。
理論的には、HTML 4 では、
<foo /
(はい、>
なし) は<foo> を意味します。
(結果として<br />
は<br>>
(つまり<br>gt;
を意味します) および<title/hello/
は<title>hello</title>
を意味します)。 「理論的に」という用語を使用しているのは、これはブラウザーがあまりサポートしていない SGML ルールであるためです。サポートが非常に希薄であるため (emacs-w3m でしか動作しないことを確認しました)、 仕様では作成者にこの構文 の使用を避けるよう勧告しています。XHTML の
<foo />
は、<foo></foo>
を意味します。これは、すべての XML ドキュメントに適用される ##XML ルールです。とはいえ、XHTML は通常、text/htmlとして提供され、これは (少なくとも歴史的には)
application/xhtml xmlとして提供されるドキュメントとは異なるパーサーを使用するブラウザによって使用されます。 W3C は、XHTML の
互換性ガイドラインを
text/html として提供しています。 (基本的に: 要素が EMPTY として定義されている場合にのみ自己終了タグ構文を使用します (HTML 仕様では終了タグが禁止されています))。HTML5 では、<foo />
の意味は、要素
: のタイプによって異なります。空- として指定されている要素 (基本的に、「HTML5 より前に存在し、コンテンツを含めることが禁止されていた要素」) の場合、終了タグは禁止されています。開始タグの末尾にスラッシュを使用することはできますが、意味はありません。これは、XML (および構文ハイライト) に慣れている人にとっては単なる構文の砂糖です。
他の HTML 要素と同様、スラッシュは
エラー - ですが、エラー回復によりブラウザはそれを無視し、タグを通常の開始タグとして扱います。これにより、終了タグが欠落し、後続の要素が兄弟要素ではなく子要素になることがよくあります。
外部要素 (SVG などの XML アプリケーションからインポートされた) は、自己終了構文として扱われます。
-