Це правда, що специфікації 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 ... >
...
призводить до того, що елемент сценарію є дочірнім елементом body, але це
<html>
<script ... >
<h1>hello</h1>
в результаті тег сценарію буде дочірнім елементом заголовка.
Ви можете бути явним, зробивши це
<html>
<body>
<script ... >
<h1>hello</h1>
і тоді, що б у вас був перший, скрипт або h1, вони обидва, передбачувано, з'являться в елементі body. Це речі, які легко не помітити під час рефакторингу та налагодження коду. (скажімо, наприклад, у вас є JS, який шукає 1-й елемент сценарію в тілі - у другому фрагменті він перестане працювати).
Як правило, бути явним щодо речей завжди краще, ніж залишати речі відкритими для тлумачення. У цьому плані XHTML є кращим, оскільки він змушує вас бути повністю чіткими щодо вашої структури елементів у своєму коді, що робить його простішим і, отже, менш схильним до неправильного тлумачення.
Так, так, ви можете їх опустити і бути технічно дійсними, але це взагалі нерозумно.
title
тег. Це найменший документ, який він вважає дійсним:<!DOCTYPE html> <title>A</title>