To prawda, że specyfikacje HTML pozwalają na pominięcie niektórych tagów w niektórych przypadkach, ale generalnie jest to nierozsądne.
Ma dwa efekty - sprawia, że specyfikacja jest bardziej złożona, co z kolei utrudnia autorom przeglądarki pisanie poprawnych implementacji (jak pokazuje błąd IE).
To zwiększa prawdopodobieństwo błędów przeglądarki w tych częściach specyfikacji. Jako autor strony internetowej możesz uniknąć tego problemu, dołączając te tagi - więc chociaż specyfikacja nie mówi, że musisz, to zmniejsza to ryzyko błędu, co jest dobrą praktyką inżynierską.
Co więcej, najnowsza specyfikacja HTML 5.1 WG mówi obecnie (pamiętaj, że jest to praca w toku i może się jeszcze zmienić).
Znacznik początkowy elementu body może zostać pominięty, jeśli element jest pusty lub pierwsza rzecz wewnątrz elementu body nie jest znakiem spacji lub komentarzem, z wyjątkiem sytuacji, gdy pierwszą rzeczą wewnątrz elementu body jest meta, link, skrypt, styl lub element szablonu.
http://www.w3.org/html/wg/drafts/html/master/sections.html#the-body-element
To jest trochę subtelne. Możesz pominąć ciało i głowę, a przeglądarka określi, gdzie należy wstawić te elementy. Niesie to za sobą ryzyko braku jawności, co może powodować zamieszanie.
Więc to
<html>
<h1>hello</h1>
<script ... >
...
powoduje, że element script jest dzieckiem elementu body, ale to
<html>
<script ... >
<h1>hello</h1>
spowoduje, że tag skryptu będzie potomkiem elementu head.
Możesz to zrobić wyraźnie
<html>
<body>
<script ... >
<h1>hello</h1>
a następnie cokolwiek masz najpierw, skrypt lub h1, oba będą, jak można się spodziewać, pojawią się w elemencie ciała. Są to rzeczy, które łatwo przeoczyć podczas refaktoryzacji i debugowania kodu. (powiedzmy na przykład, że masz JS, który szuka pierwszego elementu skryptu w ciele - w drugim fragmencie przestałby działać).
Zasadą jest, że wyrażanie się na różne tematy jest zawsze lepsze niż pozostawianie rzeczy otwartych na interpretację. Pod tym względem XHTML jest lepszy, ponieważ zmusza cię do całkowitego wyrażenia swojej struktury elementu w kodzie, co czyni go prostszym, a zatem mniej podatnym na błędną interpretację.
Więc tak, możesz je pominąć i być technicznie poprawnym, ale generalnie jest to nierozsądne.
title
znacznika. Jest to najmniejszy dokument, który uważa za ważny:<!DOCTYPE html> <title>A</title>