ТЛ; др
Некоторые широко используемые программы, которые генерируют html, будут генерировать только открывающие теги абзацев, а не закрывающие, при условии, что браузер правильно закроет абзацы.
На первый взгляд, мне кажется, что предположение о том, что браузеры будут правильно закрывать абзацы, неверно. Правильна ли моя интерпретация? В целом, какие компромиссы связаны с таким решением?
Просматривая исходный код moinmoin, мне попалась следующая строка кода:
# We only open those tags and let the browser auto-close them:
_auto_closing_tags = set(['p'])
( источник )
Прочитав остальную часть реализации, я убедил себя, что да, действительно, когда moinmoin генерирует html-код для одной из своих страниц, он будет правильно генерировать открытые теги абзаца, где это уместно, и в то же время целенаправленно избегать любого из теги закрытия абзаца (несмотря на то, что это можно сделать тривиально).
Для моего конкретного, довольно необычного варианта использования это поведение не является правильным. Я испытываю желание отправить сообщение об ошибке и / или изменить поведение. Тем не менее, похоже, что это дизайнерское решение было продуманно принято. Я недостаточно хорошо разбираюсь в тонкостях стандарта html или различных реализаций браузера, чтобы понять, является ли это правильным поведением в целом, и у меня есть ощущение, что мой инстинкт исправления / изменения этого поведения может быть ошибочный.
Этот код делает правильное предположение о реализации браузера? Является ли созданный HTML действительным? В целом, какие компромиссы я мог бы упустить здесь?
источник
Ответы:
Конечные теги для
p
элементов были необязательными в HTML и требовались только в XHTML. Однако в проекте HTML5 представлен набор условий, когдаp
конечный тег фактически необязателен:Тем не менее, единственный аргумент, который я когда-либо слышал за пропуск конечных тегов для
p
элементов, - это размер документа. Вам решать, имеет ли это смысл для вашего документа или нет. Лично я склонен включать все дополнительные конечные теги, на случай, если я не отвечаю требованиям, когда конечный тег является необязательным.источник
<li>
тегов теги больше похожи на маркеры.Спецификация W3C для HTML5 специально гласит, что:
Таким образом, в основном спецификация предоставила множество способов, которыми можно избежать сложности (большой или маленькой) закрытия тега. Любая соответствующая реализация браузера должна учитывать эти исключения.
источник