Es ist wahr, dass die HTML-Spezifikationen in bestimmten Fällen das Weglassen bestimmter Tags zulassen, dies ist jedoch im Allgemeinen unklug.
Es hat zwei Effekte - es macht die Spezifikation komplexer, was es wiederum für Browser-Autoren schwieriger macht, korrekte Implementierungen zu schreiben (wie der IE zeigt, wenn er falsch liegt).
Dies erhöht die Wahrscheinlichkeit von Browserfehlern in diesen Teilen der Spezifikation. Als Website-Autor können Sie das Problem vermeiden, indem Sie diese Tags einfügen. Obwohl die Spezifikation dies nicht vorschreibt, verringert dies die Wahrscheinlichkeit, dass etwas schief geht, was eine gute technische Praxis ist.
Darüber hinaus heißt es derzeit in der neuesten HTML 5.1 WG-Spezifikation (bedenken Sie, dass es sich um eine laufende Arbeit handelt, die sich möglicherweise noch ändert).
Das Start-Tag eines Body-Elements kann weggelassen werden, wenn das Element leer ist oder wenn das erste Element im body-Element kein Leerzeichen oder Kommentar ist, es sei denn, das erste Element im body-Element ist ein Meta, ein Link, ein Skript oder ein Stil oder Vorlagenelement.
http://www.w3.org/html/wg/drafts/html/master/sections.html#the-body-element
Das ist etwas subtil. Sie können Körper und Kopf weglassen, und der Browser leitet dann ab, wo diese Elemente eingefügt werden sollen. Dies birgt das Risiko, nicht explizit zu sein, was zu Verwirrung führen kann.
Also das
<html>
<h1>hello</h1>
<script ... >
...
führt dazu, dass das Skriptelement ein untergeordnetes Element des body-Elements ist, dies jedoch
<html>
<script ... >
<h1>hello</h1>
würde dazu führen, dass das Skript-Tag ein untergeordnetes Element des head-Elements ist.
Sie könnten dies explizit tun
<html>
<body>
<script ... >
<h1>hello</h1>
und je nachdem, was Sie zuerst haben, das Skript oder das h1, werden beide vorhersehbar im body-Element erscheinen. Dies sind Dinge, die beim Refactoring und Debuggen von Code leicht zu übersehen sind. (Nehmen wir zum Beispiel an, Sie haben JS, das nach dem ersten Skriptelement im Hauptteil sucht - im zweiten Snippet würde es nicht mehr funktionieren).
In der Regel ist es immer besser, explizit über Dinge zu sprechen, als sie der Interpretation zu überlassen. In dieser Hinsicht ist XHTML besser, weil es Sie dazu zwingt, Ihre Elementstruktur in Ihrem Code vollständig zu beschreiben, was es einfacher und daher weniger anfällig für Fehlinterpretationen macht.
Ja, Sie können sie weglassen und technisch gültig sein, aber es ist im Allgemeinen unklug, dies zu tun.
title
Tag. Dies ist das kleinste Dokument, das es für gültig hält:<!DOCTYPE html> <title>A</title>