В XML пустые элементы имеют соответствующий тег, помеченный значком /" > . Но этого нет в HTML. Так что парсер HTML имеет конечный список элементов, который может быть пустым. Что делать, если такой элемент имеет конечный тег?
Загрузка DOM из HTML: как знает парсер HTML, когда пустой элемент заканчивается
Ответ 1
В html есть теги, у которых есть закрывающий тег и тот, у кого его нет. И это более сбивает с толку после введения HTML5. После много исследований Вот что я нашел до сих пор. Надеюсь, вы поймете:)
У парсера HTML есть конечный список элементов, который может быть пустым.
Ответ: Да, парсеры HTML имеют конечный список пустых элементов. Парсер имеет определенные правила для синтаксического анализа и игнорирует пустые теги.
Это элементы, которые могут быть пустыми. (Источник: - Документация Mozilla
<link>
<track>
<param>
<area>
<command>
<col>
<base>
<meta>
<hr>
<source>
<img>
<keygen>
<br>
<wbr>
<colgroup> when the span is present
<input>
В HTML, использование закрывающего тега в пустом элементе недействительно. Например, <input type="text"></input>
является недопустимым HTML, и синтаксический анализатор будет игнорировать те теги.
"Пустые элементы (элементы void)" были введены в HTML по ошибке: презентация разметка проникла на язык, вопреки духу SGML, и с некоторыми странными синтаксическими последствиями. Эта фундаментальная ошибка вызвало некоторые технические проблемы, такие как непреднамеренное несоответствие между HTML и XHTML, что вызывает неожиданности при проверке. Что еще более важно, это иллюстрирует последствия решения сделать HTML формально, и только формально, "приложение SGML". "Пустые элементы" больше чем они выглядят.
Источник (стоит прочитать): cs.tut.fi статья с пустыми элементами)
Что делать, если такой элемент имеет конечный тег?
Парсер будет игнорировать элемент с концевым тегом, и он будет использовать следующий элемент или символ для синтаксического анализа. И синтаксический анализатор будет игнорировать синтаксическую ошибку
Прочтите эту статью w3c, о элементах HTML, содержащих пустоты W3C Link
Статья о пустых элементах 456bereastreet
Цветная блики на пустых элементах Ссылка Colorglare
Ответ 2
Итак, у парсера HTML есть конечный список элементов, который может быть пустым.
Да. Анализаторы HTML знают правила для HTML, и эти правила говорят, какие элементы не имеют конечного тега (или необязательные конечные теги).
Например:
Начальный тег, имя тега которого является одним из следующих: "area", "br", "embed", "img", "keygen", "wbr"
...
Вставьте элемент HTML для токена. Сразу же вытащите текущий node из стека открытых элементов.
Что делать, если такой элемент имеет конечный тег?
Затем он недействителен и, как и любой другой конечный тег для тега, который не открыт, тег отбрасывается, когда парсер достигает его.
Если node не является текущим node, то это ошибка синтаксического анализа.