tl; dr
Alcuni programmi molto diffusi, che generano html, generano solo tag di paragrafo di apertura, e non di chiusura, presumendo che il browser chiuderà correttamente i paragrafi.
A prima vista, mi sembra che l'ipotesi che i browser chiudano correttamente i paragrafi non è corretta. La mia interpretazione è corretta? Più in generale, quali compromessi sono coinvolti in questo tipo di decisione?
Navigando attraverso il codice sorgente di moinmoin, la seguente riga di codice attirò la mia attenzione:
# We only open those tags and let the browser auto-close them:
_auto_closing_tags = set(['p'])
( fonte )
Dopo aver letto tutto il resto dell'implementazione, mi sono convinto che sì, infatti, quando moinmoin genera codice html per una delle sue pagine, genererà correttamente i tag di apertura del paragrafo, laddove appropriato, mentre allo stesso tempo volutamente evitando qualsiasi tag di chiusura del paragrafo (nonostante sia in grado di farlo banalmente).
Per il mio caso d'uso specifico, piuttosto insolito, questo comportamento non è corretto. Sono tentato di inviare un bug report e / o modificare il comportamento. Tuttavia, sembra che questa decisione progettuale sia stata pensata. Non sono abbastanza esperto delle complessità dello standard html, o delle varie implementazioni del browser, per essere in grado di dire se questo è un comportamento corretto in generale, e ho la sensazione che il mio istinto a correggere / cambiare questo comportamento possa essere sbagliata.
Questo codice sta facendo un'ipotesi valida sulle implementazioni del browser? L'html generato è valido? Più in generale, quali compromessi potrei mancare qui?