Это правда, что спецификации HTML разрешают опускать определенные теги в определенных случаях, но обычно делать это неразумно.
Это имеет два эффекта - это усложняет спецификацию, что, в свою очередь, усложняет ее.для авторов браузеров, чтобы написать правильные реализации (как продемонстрировал IE, получающий это неправильно).
Это повышает вероятность ошибок браузера в этих частях спецификации.Как автор веб-сайта вы можете избежать этой проблемы, включив эти теги - поэтому, хотя в спецификации не говорится, что это необходимо, это снижает вероятность того, что что-то пойдет не так, что является хорошей инженерной практикой., последняя спецификация HTML 5.1 WG в настоящее время гласит (имейте в виду, что работа еще не завершена и может измениться).
Начальный тег элемента body может быть опущен, если элемент пустой или еслипервое, что находится внутри элемента body, это не пробел или комментарий, за исключением случаев, когда первое, что находится внутри элемента body, это элемент meta, link, script, style или template.
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 лучше, потому что он заставляет вас быть полностью откровенным о структуре вашего элемента в коде, что делает его более простым и, следовательно, менее склонным к неправильной интерпретации.
Так что да, вы можете опустить их и быть техническидопустимо, но, как правило, это неразумно.