HTML позволяет пропустить определенные начальные и / или конечные теги :
Некоторые типы элементов HTML позволяют авторам опускать конечные теги (например, типы элементов P
и LI
). Несколько типов элементов также позволяют опустить стартовые теги; например, HEAD
и BODY
. HTML DTD указывает для каждого типа элемента, требуются ли начальный тег и конечный тег.
Если вы изучите определение типа документа, например, HTML 4.01 , элементы будут объявлены с помощью объявлений <!ELEMENT … >
. И в таких объявлениях элемента два символа указывают, можно ли пропустить начальный или конечный тег элемента. См. определение P
, например:
<!ELEMENT P - O (%inline;)* -- paragraph -->
Здесь -
после имени элемента P
обозначает, что начальный тег требуется, а O
обозначает, что конечный тег может быть опущен. Другой пример, элемент HEAD
:
<!ELEMENT HEAD O O (%head.content;) +(%head.misc;) -- document head -->
Здесь два O
указывают, что как начальный, так и конечный тег могут быть опущены.
Пропуск обоих тегов на элементах возможен только потому, что такие элементы подразумеваются в их контексте. В случае HEAD
модель содержимого родительского элемента HTML
указывается следующим образом:
<!ELEMENT HTML O O (%html.content;) -- document root element -->
Где параметр сущности html.content определяется следующим образом:
<!ENTITY % html.content "HEAD, BODY">
Это означает, что модель содержимого HTML
неявно определяется как HEAD
, за которым следует BODY
.
Вы можете взглянуть на индекс элементов HTML 4.01 , чтобы увидеть, какие теги каких элементов можно опустить.