XHTMLのすべての有効な自己閉鎖要素(たとえば<br/>)(主なブラウザで実装されているもの)とは何ですか?
XHTMLでは技術的にどの要素も自己閉鎖できることがわかっていますが、すべての主要なブラウザでサポートされている要素のリストを探しています。 <div />などの自己閉鎖要素によって引き起こされる問題の例については、 http://dusan.fora.si/blog/self-closing-tags を参照してください。
XHTMLをサポートするすべてのブラウザー(Firefox、Opera、Safari、 IE9 )は、すべての要素で自己終了構文をサポートします。
<div/>
、<script/>
、<br></br>
はすべて正常に動作するはずです。そうでない場合は、XHTML DOCTYPEが不適切に追加されたHTMLがあります。
DOCTYPEは、ドキュメントの解釈方法を変更しません。 MIMEタイプのみ。
HTML WGはこの問題について議論しました。意図は、古い(HTMLのみの)ブラウザがガイドラインに従い、それらをtext/htmlとして提供することでXHTML 1.0ドキュメントを受け入れることを許可することでした。したがって、text/htmlとして提供されるドキュメントは、XHTMLとしてではなくHTMLとして扱われる必要があります。
W3C Validatorはその規則をほとんど無視するため、これは非常によくある落とし穴ですが、ブラウザは宗教的にそれに従います。 HTML、XML、XHTMLを理解する WebKitブログから:
実際、インターネット上のXHTMLドキュメントの大部分は
text/html
として提供されます。つまり、これらはXHTMLではありませんが、実際にはHTMLパーサーのエラー処理で処理されている無効なHTMLです。 Web上の「Valid XHTML 1.0!」リンクはすべて、「Invalid HTML 4.01!」と言っています。
XHTMLのDOCTYPEで実際のXHTMLまたは無効なHTMLがあるかどうかをテストするには、これをドキュメントに追加します。
<span style="color:green"><span style="color:red"/>
If it's red, it's HTML. Green is XHTML.
</span>
検証し、実際のXHTMLでは完全に動作します( 1 vs 2 を参照)。自分の目が信じられない(またはMIMEタイプの設定方法がわからない)場合は、 XHTMLプロキシ でページを開きます。
もう1つの確認方法は、Firefoxでソースを表示することです。無効なスラッシュは赤で強調表示されます。
HTML5/XHTML5では、これは変更されておらず、追加のDOCTYPE
さえ持っていないため、区別はさらに明確です。 Content-Type
は王です。
レコードについては、XHTML仕様では、XHTMLを XMLアプリケーション :[emphasis mine]にすることにより、任意の要素を自己閉鎖することができます。
空の要素タグは、キーワードEMPTYを使用して宣言されているかどうかに関係なく、内容のない要素に使用できます。
XHTML仕様 にも明示的に示されています:
空の要素にはeither終了タグが必要であるか、開始タグは
/>
で終了する必要があります。たとえば、<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」の要素は、とにかく終了タグを使用しないため、それらにスラッシュを付けると自己終了構文がサポートされました。
<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要素は次のとおりです。
著者に有効:area、base、br、col、command、embed、eventsource、hr、img、input、link、meta、param、source
著者には無効:basefont、bgsound、frame、spacer、wbr
HTML5の新機能に加えて、XHTMLをtext/htmlとして提供する場合にサポートされる可能性のあるもののアイデアを提供するはずです。 (生成されたDOMを調べてテストするだけです。)
Application/xhtml + xml(XMLにする)として機能するXHTMLについては、XMLルールが適用され、XHTML DTDで表現できない場合でも、すべての要素を空にすることができます。
xHTML DTDs を見る必要があります。すべてリストされています。主なものすべての簡単なレビューを次に示します。
<br />
<hr />
<img />
<input />
これらはHTML 5では「void」要素と呼ばれます。それらは 公式W3仕様 にリストされています。
Void要素は、どのような状況でもコンテンツモデルがコンテンツを保持することを決して許可しない要素です。
2013年4月現在、次のとおりです。
エリア、ベース、br、col、コマンド、埋め込み、hr、img、入力、keygen、リンク、メタ、パラメーター、ソース、トラック、wbr
2018年12月(HTML 5.2)現在、次のとおりです。
エリア、ベース、br、col、embed、hr、img、入力、リンク、メタ、param、ソース、トラック、wbr
特に私が書いたページの大部分は生成されているか、タグにコンテンツがあるため、これについて詳しく説明しようとは思いません。それらを自己閉鎖させるときに私にトラブルを与えた唯一の2つは:
<title/>
このため、<head></head>
に配置されると、とにかく動作するコードが本当に面倒になるわけではないので、常に個別の終了タグを付けることに単純に頼りました。
<script/>
これは私が最近問題に遭遇した大きなものです。何年もの間、スクリプトが外部ソースから来る場合は、常に自己閉鎖<script/>
タグを使用していました。しかし、私はごく最近、nullフォームに関するJavaScriptエラーメッセージの受信を開始しました。数日間の調査の後、問題は(おそらく)ブラウザーが<form>
タグの終わりであることに気付かなかったため、<script/>
タグに到達しなかったことであることがわかりました。したがって、それを個別の<script></script>
タグにすると、すべてが機能しました。同じブラウザで作成したページごとに異なる理由はわかりませんが、解決策を見つけることができたのは大きな安心でした!
IEのもう1つの自己終了タグの問題は、title要素です。 IE(IE7で試したばかり)がこれを見ると、ユーザーに空白ページを提示します。ただし、「ソースを表示」するとすべてがそこにあります。
<title/>
XSLTが自己終了タグを生成したときに、これを最初に見ました。