XHTML (主要なブラウザで実装されている) 内の有効な自己終了要素はすべて何ですか?

StackOverflow https://stackoverflow.com/questions/97522

質問

有効な自己終了要素はすべて何ですか (例:<br/>) XHTML (主要なブラウザで実装されているもの) で?

XHTML では技術的に任意の要素を自己終了できることはわかっていますが、すべての主要なブラウザでサポートされている要素のリストを探しています。見る http://dusan.fora.si/blog/self-closed-tags <div /> などの自己終了要素によって引き起こされるいくつかの問題の例については、

役に立ちましたか?

解決

XHTML をサポートするすべてのブラウザ (Firefox、Opera、Safari、 IE9) での自己終了構文をサポートします。 あらゆる要素.

<div/>, <script/>, <br></br> すべて問題なく動作するはずです。彼らがそうでないなら、あなたはそうします HTML XHTML DOCTYPE が不適切に追加されました。

DOCTYPE は文書の解釈方法を変更しません。 MIME タイプのみが可能です.

DOCTYPE の無視に関する W3C の決定:

HTML WG はこの問題について議論しました。意図は、古い(HTMLのみの)ブラウザがガイドラインに従ってXHTML 1.0ドキュメントを受け入れ、それらをテキスト/HTMLとして提供できるようにすることでした。したがって、テキスト/HTMLとして提供されるドキュメントは、XHTMLとしてではなくHTMLとして扱う必要があります。

W3C Validator はこのルールをほとんど無視しますが、ブラウザは忠実にこのルールに従っているため、これは非常によくある落とし穴です。読む HTML、XML、XHTML について WebKit ブログより:

実際、インターネット上にあるおそらく XHTML ドキュメントの大部分は、 text/html. 。つまり、それらはまったく XHTML ではなく、実際には HTML パーサーのエラー処理をうまく利用している無効な HTML です。これらすべての「有効なXHTML 1.0!」ウェブ上のリンクは、「無効なHTML 4.01!」と本当に言っています。


本物の XHTML か、XHTML の DOCTYPE を使用した無効な HTML かをテストするには、ドキュメントに次のように記述します。

<span style="color:green"><span style="color:red"/> 
 If it's red, it's HTML. Green is XHTML.
</span>

これは検証され、実際の XHTML では完全に機能します (以下を参照)。 12)。自分の目が信じられない場合 (または MIME タイプの設定方法がわからない場合)、次の方法でページを開いてください。 XHTMLプロキシ.

確認するもう 1 つの方法は、Firefox でソースを表示することです。スラッシュが無効な場合は、スラッシュが赤で強調表示されます。

HTML5/XHTML5 ではこれは変わっていませんが、追加の要素さえないため、区別はさらに明確になります。 DOCTYPE. Content-Type 王です。


記録のために言っておきますが、XHTML 仕様では、XHTML を XMLアプリケーション:[私のことを強調]

空要素タグは次の目的で使用できます。 内容のない要素, キーワード EMPTY を使用して宣言されているかどうか。

それはまた明示的に示されています XHTML仕様:

空の要素は必須です どちらか 終了タグがあるか、開始タグは次で終わる必要があります />. 。例えば、 <br/> または <hr></hr>

他のヒント

このトピックに関して非常に注意しなければならない要素の 1 つは、 <script>要素。外部ソース ファイルがある場合、それを自動的に閉じると問題が発生します。それを試してみてください:

<!-- this will not consistently work in all browsers! -->
<script type="text/javascript" src="external.js" />

これは Firefox では機能しますが、少なくとも IE6 では機能しません。知っています、なぜなら私は見たすべての要素を熱心に自己終了させたときにこの問題に遭遇したからです ;-)

自己終了構文は、application/xhtml+xml 内のすべての要素で機能します。text/html のどの要素でもサポートされていませんが、HTML4 の「空」要素または HTML5 の「void」要素はいずれにしても終了タグを取らないため、それらにスラッシュを付けると、次のように表示されます。自己終了構文がサポートされました。

から W3 スクールのリファレンス サイト:

<area />
<base />
<basefont />
<br />
<hr />
<input />
<img />
<link />
<meta />

もっと良い質問は次のとおりです。コードに影響を与えずに HTML モードでも自己終了できるタグは何ですか?答え:内容が空(無効)のもののみ。によると HTMLの仕様 次の要素は無効です。

area, base, br, col, embed, hr, img, input, keygen, link, menuitem, meta, param, source, track, wbr

古いバージョンの仕様も記載されています command. 。さらに、さまざまな情報源によると、次の廃止されたタグまたは非標準のタグは無効です。

basefont, bgsound, frame, isindex

これが誰かの役に立てば幸いです:

<base />
<basefont />
<frame />
<link />
<meta />

<area />
<br />
<col />
<hr />
<img />
<input />
<param />

どうですか <meta> そして <link>?なぜ彼らはそのリストに載っていないのでしょうか?

簡単な経験則として、コンテンツを含む要素を自動的に閉じないでください。遅かれ早かれブラウザーで問題が発生することは間違いありません。

自然に自己閉鎖的なもの、例えば <br> そして <img>, 、明らかなはずです。そうでないものは...勝手に閉じないでください。

前回確認したところ、HTML5に記載されているempty/void要素は以下の通りでした。

著者に有効:エリア、ベース、br、col、コマンド、埋め込み、イベントソース、hr、img、入力、リンク、メタ、パラメータ、ソース

著者には無効です:ベースフォント、bgsound、フレーム、スペーサー、wbr

HTML5 で新しく追加されたいくつかの機能に加えて、XHTML を text/html として提供するときにサポートされる可能性のある機能についても理解できるはずです。(生成された DOM を調べてテストしてください。)

application/xhtml+xml として機能する XHTML (XML になります) に関しては、XML ルールが適用され、(XHTML DTD ではこれを表現できませんが) 任意の要素を空にすることができます。

見てみるといいよ xHTML DTD, 、それらはすべてリストされています。ここでは主要なものをすべて簡単にレビューします。

<br />
<hr />
<img />
<input />

これらは HTML 5 では「void」要素と呼ばれます。にリストされています。 W3の公式仕様.

void 要素は、コンテンツ モデルがいかなる状況においてもコンテンツを持つことを許可しない要素です。

2013 年 4 月の時点では、次のとおりです。

エリア、ベース、br、col、コマンド、埋め込み、hr、img、入力、keygen、リンク、メタ、パラメータ、ソース、トラック、wbr

2018 年 12 月の時点 (HTML 5.2) は次のとおりです。

エリア、ベース、br、col、埋め込み、hr、img、入力、リンク、メタ、パラメータ、ソース、トラック、wbr

IE のもう 1 つの自己終了タグの問題は、title 要素です。IE (IE7 で試してみたところ) がこれを認識すると、ユーザーに空白のページが表示されます。ただし、「ソースを表示」すると、すべてがそこにあります。

<title/>

最初にこれを確認したのは、XSLT が自己終了タグを生成したときでした。

特に、私が作成するページの大部分は生成されるか、タグにコンテンツが含まれるかのどちらかであるため、これについて詳しく説明するつもりはありません。自動終了にするときに問題が発生したのは次の 2 つだけです。

<title/>

このため、私は単純に、常に別の終了タグを付けることにしました。 <head></head> いずれにしても、コードの操作がそれほど面倒になるわけではありません。

<script/>

これは私が最近問題に遭遇した大きな問題です。何年もの間、私は常に自動閉鎖を使用していました <script/> スクリプトが外部ソースからのものである場合にタグを付けます。しかし、つい最近、null フォームに関する JavaScript エラー メッセージを受け取るようになりました。数日間調査した結果、問題はブラウザが (おそらく) にアクセスできないことであることがわかりました。 <form> これが終わりであることに気づかなかったため、タグを付けました <script/> 鬼ごっこ。それで別々にしたときに <script></script> タグ、すべてうまくいきました。同じブラウザで作成したページが異なるとなぜ異なるのかはわかりませんが、解決策が見つかってとても安心しました。

<hr /> は別です

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top