È vero che le specifiche HTML consentono di omettere determinati tag in determinati casi, ma in generale farlo non è saggio.
Ha due effetti: rende le specifiche più complesse, il che a sua volta rende più difficile per gli autori di browser la scrittura di implementazioni corrette (come dimostrato da IE che sbagliano).
Ciò aumenta la probabilità di errori del browser in queste parti delle specifiche. Come autore di siti Web puoi evitare il problema includendo questi tag, quindi mentre le specifiche non dicono che devi farlo, ridurre le possibilità che qualcosa vada storto, il che è una buona pratica ingegneristica.
Inoltre, le ultime specifiche HTML 5.1 WG attualmente dicono (tenere presente che è un work in progress e potrebbe ancora cambiare).
Il tag iniziale di un elemento body può essere omesso se l'elemento è vuoto o se la prima cosa all'interno dell'elemento body non è un carattere spazio o un commento, tranne se la prima cosa all'interno dell'elemento body è un meta, link, script, stile o elemento modello.
http://www.w3.org/html/wg/drafts/html/master/sections.html#the-body-element
Questo è un po 'sottile. Puoi omettere body e head e il browser dedurrà quindi dove dovrebbero essere inseriti quegli elementi. Ciò comporta il rischio di non essere espliciti, il che potrebbe causare confusione.
Così questo
<html>
<h1>hello</h1>
<script ... >
...
fa sì che l'elemento script sia figlio dell'elemento body, ma questo
<html>
<script ... >
<h1>hello</h1>
risulterebbe che il tag script sia figlio dell'elemento head.
Potresti essere esplicito facendo questo
<html>
<body>
<script ... >
<h1>hello</h1>
e poi qualunque sia la tua prima, lo script o l'h1, entrambi appariranno prevedibilmente nell'elemento body. Queste sono cose che sono facili da trascurare durante il refactoring e il debugging del codice. (ad esempio, hai JS che sta cercando il primo elemento di script nel corpo - nel secondo snippet smetterebbe di funzionare).
Come regola generale, essere espliciti sulle cose è sempre meglio che lasciare le cose aperte all'interpretazione. A questo proposito XHTML è migliore perché ti costringe a essere completamente esplicito sulla struttura degli elementi nel tuo codice, il che lo rende più semplice e quindi meno soggetto a interpretazioni errate.
Quindi sì, puoi ometterli ed essere tecnicamente valido, ma generalmente non è saggio farlo.
title
tag. Questo è il documento più piccolo che considera valido:<!DOCTYPE html> <title>A</title>