Это правда, что спецификации HTML разрешают опускать определенные теги в определенных случаях, но, как правило, делать это неразумно.
У этого есть два эффекта - это делает спецификацию более сложной, что, в свою очередь, затрудняет авторам браузера писать правильные реализации (как продемонстрировал IE, неправильно понимающий).
Это повышает вероятность ошибок браузера в этих частях спецификации. Как автор веб-сайта вы можете избежать этой проблемы, включив эти теги - поэтому, хотя в спецификации не говорится, что это необходимо, это снижает вероятность того, что что-то пойдет не так, что является хорошей инженерной практикой.
Более того, последняя спецификация HTML 5.1 WG в настоящее время гласит (имейте в виду, что эта работа еще не завершена и может измениться).
Начальный тег элемента body может быть опущен, если элемент пуст или если первое, что находится внутри элемента body, не является пробелом или комментарием, за исключением случаев, когда первым элементом внутри элемента body является мета, ссылка, скрипт, стиль или элемент шаблона.
http://www.w3.org/html/wg/drafts/html/master/sections.html#the-body-element
Это немного неуловимо. Вы можете опустить тело и заголовок, и браузер определит, где эти элементы должны быть вставлены. Это несет в себе риск не быть явным, что может привести к путанице.
Так это
<html>
<h1>hello</h1>
<script ... >
...
приводит к тому, что элемент script является дочерним элементом элемента body, но это
<html>
<script ... >
<h1>hello</h1>
приведет к тому, что тег script будет дочерним по отношению к элементу head.
Вы могли бы быть явным, делая это
<html>
<body>
<script ... >
<h1>hello</h1>
и затем, в зависимости от того, что у вас есть, скрипт или h1, они оба, как и ожидалось, появятся в элементе body. Это вещи, которые легко пропустить при рефакторинге и отладке кода. (скажем, например, у вас есть JS, который ищет 1-й элемент скрипта в теле - во втором фрагменте он перестал бы работать).
Как правило, быть откровенным о вещах всегда лучше, чем оставлять вещи открытыми для интерпретации. В этом отношении XHTML лучше, потому что он заставляет вас быть полностью откровенным в отношении структуры вашего элемента в коде, что делает его более простым и, следовательно, менее подверженным неправильной интерпретации.
Так что да, вы можете опустить их и быть технически действительными, но это, как правило, неразумно.
title
тег. Это самый маленький документ, который он считает действительным:<!DOCTYPE html> <title>A</title>