tl; dr
Alguns programas amplamente usados, que geram html, geram apenas tags de parágrafo de abertura e não de fechamento, supondo que o navegador feche adequadamente os parágrafos.
Aparentemente, parece-me que a suposição de que os navegadores fechem corretamente os parágrafos não está correta. Minha interpretação está correta? De um modo mais geral, que tradeoffs estão envolvidos nesse tipo de decisão?
Navegando pelo código fonte do moinmoin, a seguinte linha de código chamou minha atenção:
# We only open those tags and let the browser auto-close them:
_auto_closing_tags = set(['p'])
( fonte )
Depois de ler o restante da implementação, convenci-me de que sim, quando o moinmoin gera código html para uma de suas páginas, ele gera corretamente tags de parágrafo abertas, quando apropriado, e ao mesmo tempo evita intencionalmente qualquer um dos as tags de fechamento do parágrafo (apesar de poder fazer isso trivialmente).
Para meu caso de uso específico, bastante incomum, esse comportamento não está correto. Estou tentado a enviar um relatório de erro e / ou alterar o comportamento. No entanto, parece que essa decisão de design foi cuidadosamente tomada. Não sou suficientemente versado nas complexidades do padrão html ou nas várias implementações de navegador para saber se esse é o comportamento correto em geral e tenho a sensação de que meu instinto de corrigir / alterar esse comportamento pode ser mal orientado.
Esse código faz uma suposição válida sobre implementações de navegador? O html gerado é válido? De um modo mais geral, que tradeoffs posso estar perdendo aqui?
fonte
Respostas:
As tags finais dos
p
elementos eram opcionais em HTML e eram necessárias apenas em XHTML. No entanto, o rascunho do HTML5 apresenta um conjunto de condições para quando ap
tag final é realmente opcional:Dito isto, o único argumento que já ouvi sobre omitir as tags finais dos
p
elementos é o tamanho do documento. Cabe a você decidir se isso faz sentido para o seu documento ou não. Pessoalmente, costumo incluir todas as tags finais opcionais, caso eu não atenda aos requisitos de quando a tag final é opcional.fonte
<li>
tags, as tags agem mais como marcadores.A especificação W3C para HTML5 afirma especificamente que:
Então, basicamente, a especificação forneceu várias maneiras pelas quais a complexidade (grande ou pequena) de fechar a tag pode ser evitada. Qualquer implementação de navegador em conformidade teria que acomodar essas exceções.
fonte