web-dev-qa-db-ja.com

HTMLのメタタグとリンクタグを閉じる必要がありますか?

HTMLのヘッドセクションでメタタグとリンクタグを一度も閉じなかった誰かのHTMLを読んでいました。コードは正常に機能しました。これらのタグを閉じるのはオプションですか?

タグが閉じられていないと、不正な形式になると思いました。

121
bcollins

tagは常にタグ終了記号>で閉じる必要があります(非XHTML HTMLに名目上適用されるがブラウザーには実装されなかった特定のSGMLルールを無視する場合)。

elementsを終了タグで閉じる必要があるかどうかを尋ねます。答えは、非XHTML HTML(HTMLシリアル化のHTML5を含む)では、metaおよびlink要素に終了タグは不要または許可されないということです。ただし、実際には、ブラウザーは明示的な終了タグを無視します。また、使用する場合は、/の前のカーゴカルト>も無視します。また、HTML5では、HTMLシリアル化で/も正式に許可することで、この許容性を規則にします。

XHTMLでは、XMLルールが適用されるため、すべての要素は例外なく開始タグと終了タグの両方を持つ必要がありますが、要素の内容が空の場合、両方の役割に同じタグを使用できます。 <meta name="foo" content="bar"/><meta name="foo" content="bar"></meta>の略です。 XML(XHTML)コンテンツタイプのドキュメントを適合ブラウザに提供するときにこれに違反すると、ドキュメントはまったく表示されません。代わりにエラーメッセージが表示されます。

HTMLコンテンツタイプ(Content-Type: text/html)でXHTMLサーバーを使用する場合、XHTMLドキュメントはほとんど常にWeb上にあるため、ブラウザーは実際に非XHTML HTMLルールを適用します。

要約する:

  • 通常、<meta ...>なしで/のみを使用します
  • 実際にXHTML構文解析が適用されるコンテキストでXHTMLを使用している場合は、XMLルールに従って再生してください(そして、それらを知っていることを確認してください)
  • 上司が<meta ... />を書くように指示した場合は、そうします。有用ではありませんが、害はありません(たとえば、HTML 4.01 doctypeに対して検証しようとした場合を除く)。
154

それはDoctypeに依存します。 HTML5を閉じる必要はありません。 XHTMLはそうします。

HTML5では、いわゆるvoid要素(コンテンツを持つことができない要素)は自己閉鎖型なので、閉じる必要はありません。ただし、それらを閉じても有効です。

詳細はこちらをご覧ください: void-elements

22
Sebsemillia