Ano, nesmíte být hloupý, o jednoduchosti tu nebyla řeč.
Byla, jenže vy jste to stále nezaregistroval. Přehlednost a srozumitelnost je mimo jiné podmíněna jednoduchostí.
Přehledné to ale právě proto je a je lepší když se stroje přizpůsobí lidem a mají složitější parser než když se lidé přizpůsobují strojům.
Opět nechápete, že ten dokument čtou i lidé, a pro jeho pochopení tedy musí text parsovat podobně, jako to dělá stroj. Složitější parser pro stroj znamená složitější a méně přehledný formát pro člověka.
Na první pohled to nevidí nikdo, protože je to neformátovaná zmrdovština, ale jakmile splníte premisu, že je to zavedeno pro potřeby ručně psaných formátovaných dokumentů, což tu musím opakovat jako kolovrátek, protože jste to dosud nepochopil, a dáte to sem naformátované, pak bude na první pohled zřejmé, že odkaz který začíná v půlce jednoho odstavce a končí v druhé je chybně a je to nevalidní. Nevalidní je proto i ten třetí příklad.
Tím, že budete opakovat jako kolovrátek to, co všichni vědí, se nevyhnete tomu, co stále nechápete – že to vynechávání koncových tagů bylo sice zavedeno pro potřeby ručně psaných dokumentů, ale moc se to nepovedlo. Až později se dostalo do všeobecného povědomí, že zdrojové kódy programů ale i ručně editované *ML dokumenty se mnohem častěji čtou, než píšou, takže zápis musí být optimalizován především pro čtení, ne pro psaní. Holt ten, kdo to píše, musí občas napsat pár znaků navíc, aby se to pak lépe četlo. Navíc těch pár znaků navíc umí napsat každý slušnější editor.
Vidím, že jsem vaše znalosti HTML přecenil. A u toho prvního příkladu jste mě dobře nachytal – já jsem tam přichystal chyták v chytáku, a jak se teď ukázalo, vy jste tam neodhalil ani ten první chyták – takže jste sice napsal správně, že je dokument nevalidní, ale z úplně jiného důvodu.
Když ten třetí příklad přepíšu tak, aby tam byly všechny nepovinné tagy, vypadá takhle:
<!DOCTYPE html>
<html>
<head></head>
<body>
<p>
text
</p>
<p>
text
<a href="">text
<p>text</p>
<hr>
text
</a>
text
<p>
text
</p>
</body>
</html>
Problém je v tom, že v HTML nemůže být element
p vložený v jiném elementu
p. Takže když to bude prohlížeč parsovat a narazí na to vnitřní
p, pokusí se ten vnější tag
p ukončit (bude předpokládat, že tam je to vynechané koncové
p), jenže ho ukončit nemůže, protože má ještě neuzavřený element
a a ten má koncový tag povinný.
Z úplně stejného důvodu je nevalidní i tenhle dokument:
<p>text<p>text<a href="">text<hr>text</a>text<p>text
Opět,
hr nemůže být uvnitř
p, takže se prohlížeč pokusí
p uzavřít, ale nemůže, protože je parser vnořený v otevřeném
a, které musí být vždy uzavřeno explicitně.
Je hezké, že tady obhajujete to, jak jsou pravidla pro parsování HTML strašně jednoduchá, a sám je přitom neznáte.