В каких случаях некоторые тэги могут быть опущены.
Полезная ссылка: Документ на w3.org
Открывающие и закрывающие тэги
Только закрывающие тэги
Открывающий тэг может быть опущен, если элемент html не начинается с комментария.
Закрывающий тэг может быть опущен, если за элементом html не следует сразу комментарий.
Открывающий тэг может быть пропущен, если содержимое элемента head начинается с элемента.
Закрывающий тэг может быть пропущен, если следующим за элементом head не идет какой-либо пробельный символ (SPACE (U+0020) пробел, «tab» (U+0009) табуляция, «LF» (U+000A) первод строки, «FF» (U+000C) конец страницы (?), «CR» (U+000D) возврат каретки) или комментарий.
Открывающий тэг может быть пропущен, если элемент body пуст.
Открывающий тэг может быть пропущен, если содержимое элемента body не начинается с пробельного символа или комментария, кроме случаев, когда body начинается с meta, link, script, style или шаблонные тэги (template elements).
Закрывающий тэг может быть пропущен, если следующим за элементом body не идёт комментарий.
Открывающий тэг может пропущен, если сразу внутри элемента colgroup идет элемент col И если элементу colgroup при этом не предшествует другой элемент colgroup, у которого опущен закрывающий тэг. Открывающий тэг для colgroup не может быть опущен, если элемент пуст.
Закрывающий тэг может быть пропущен, если сразу за элементом colgroup не идет какой-либо пробельный символ (SPACE (U+0020) пробел, «tab» (U+0009) табуляция, «LF» (U+000A) первод строки, «FF» (U+000C) конец страницы (?), «CR» (U+000D) возврат каретки) или комментарий.
Открывающий тэг может быть пропущен, если сразу внутри элемента tbody идет элемент tr И если при этом элементу tbody не предшествует элемент tbody, thead, tfoot, для которых был пропущен закрывающий тэг. Открывающий тэг не может быть опущен, если элемент пуст.
Нельзя пропустить открывающий тэг tbody:Если сразу за ним следует такой же элемент li.
Если родительский элемент больше ничего не содержит.
Если сразу за ним следует dt или dd.
Если сразу за ним следует dd или dt.
Если родительский элемент больше ничего не содержит.
Если сразу за ним следует один из элементов: address, article, aside, blockquote, div, dl, fieldset, footer, form, h1, h2, h3, h4, h5, h6, header, hgroup, hr, main, nav, ol, p, pre, section, table, ul.
Если родительский элемент не a И больше не содержит других дочерних элементов.
Если сразу за ним следует один из элементов: rb, rt, rtc, rp.
Если родительский элемент больше ничего не содержит.
Если следующий за ним элемент один из: rb, rt, rp.
Если родительский элемент больше ничего не содержит.
Если следующий за ним элемент один из: rb, rt, rtc, rp.
Если родительский элемент больше ничего не содержит.
Если следующий за ним элемент один из: rb, rt, rtc, rp.
Если родительский элемент больше ничего не содержит.
Если сразу за ним следует тоже элемент optgroup.
Если родительский элемент больше ничего не содержит.
Если сразу за ним следует элемент option или optgroup.
Если родительский элемент больше ничего не содержит.
Если сразу за ним следует tbody или tfoot.
Если сразу за ним следует tbody.
Если родительский элемент больше ничего не содержит.
Если сразу за ним следует другой элемент tr.
Если родительский элемент больше ничего не содержит.
Если сразу за ним следует td или th.
Если родительский элемент больше ничего не содержит.
Если сразу за ним следует td или th.
Если родительский элемент больше ничего не содержит.
Пример для таблиц.
Ещё пример с комментариями.