Bei leeren Elementen 'meta', 'br', 'input' ist ein End-Tag in HTML nicht optional, sondern verboten.
leere elemente könnten aber in html dennoch geschlossen werden - aber nur durch SHORTTAG, nicht als start-/endtag-paar
valide:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>weee</title>
</head>
<body>
<p>foo<br />bar</p>
</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>weee</title>
</head>
<body>
<p>foo<br//bar</p>
</body>
</html>
nicht valide:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>weee</title>
</head>
<body>
<p>foo<br></br>bar</p>
</body>
</html>
Optional wäre ein End-Tag bspw. bei 'td' und 'li'
dafür ist aber NETENABL (null end tag enable) verantwortlich - eine schreibweise <li>foo</li>
ist genauso gültig wie <li>foo
oder <li/foo/
NETENABL ist übrigens implizit erlaubt, wenn SHORTTAG erlaubt ist
in xml ist null end tag übrigens derart definiert, dass eben nur <element /> als leeres element erlaubt ist
alles in allem sind diese sachen sehr sgml-spezifisch und begründen sich darauf, dass html 4.01 leider sehr inkonseqent in bezug auf die mangelhafte sgml-unterstützung der browser war/ist und als empfehlung herrausgegeben wurde, obwohl klar war, dass viele features garnicht richtig unterstützt werden
aus dem grund kann man "normalen menschen" oder "anfängern" immer wieder nahelegen, sich mit xhtml anzufreunden, da die syntax aufgrund der konsequent gestrichenen features leichter und einfacher verständlich ist
auch wenn OMITNAME-konstrukte wie disabled="disabled"
etwas komisch wirken, die ist xhtml alles in allem dennoch leichter verständlich ;)