Díky za článek, o některých věcech jsem dosud nevěděl.
Nicméně myslím, že nemáte tak zcela pravdu s NET notací. V sekci 3.2 specifikace HTML 4.01 se píše:
3.2 SGML constructs used in HTML
The following sections introduce SGML constructs that are used in HTML.
The appendix lists some SGML features that are not widely supported by HTML tools and user agents and should be avoided.
Volně přeloženo:
3.2 Konstrukty SGML použité v HTML
Zde říkáme, co z SGML se používá v HTML.
V příloze najdete vlastnosti SGML, které HTML nástroje běžně neimplementují a neměli byste je používat.
V seznamu konstruktů SGML, které HTML používá, není NET notace uvedena. Naopak, odkazovaná příloha uvadějící SGML konstrukty, které by se neměly používat, je právě tou přílohou, kterou odkazujete ve svém článku jako důkaz o používání NET notace v HTML.
Můj závěr: Specifikace HTML 4.01 nedoporučuje používat NET notaci SGML, tedy <p/text odstavce/ se nedoporučuje používat místo <p>text odstavce</p>. Tvůrci IE, Firefoxe i Konqueroru si to zřejmě vyložili úplně stejně.
Problém myslím spočívá především v ne úplně jasném vztahu mezi HTML a SGML.
To, že se (důrazně) nedoporučuje zkrácenou notaci v HTML dokumentu používat, neopravňuje autory prohlížečů chovat se, jako by neexistovala. Je to totéž, jako by prohlížeč ignoroval elementy, které jsou v HTML 4 označeny jako zastaralé.
Vztah mezi HTML a SGML je naprosto jasný: HTML je jednou z aplikací SGML, stejně jako je XHTML jednou z aplikací XML. Právě proto XHTML vzniklo: ne kvůli buzeraci autorů webových stránek, ale kvůli zjednodušení syntaxe a strojového zpracování dokumentů - XML, i když se proti němu spousta lidí z neznalosti bouří, je podstatně jednodušší a praktičtější než SGML. Bohužel většina těch protestujících nemá o nějakém SGML (a jeho vztahu k HTML) ani ponětí a místo formální specifikace HTML je zajímají jen empirické poznatky o tom, co jak zobrazí pár známých prohlížečů (v lepším případě, v horším MSIE).
<br/>
zpracuje tak, že <br/
bude považovat za prázdný tag a >
za přebývající znak (neukončuje žádný tag) který zahodí, od prohlížeče, který nepodporuje NET syntaxi (specifikace jí nevyžaduje) a lomítko uvnitř tagu považuje třeba za neznámý tag, a ignoruje ho? Tedy jinak, než pohledem do zdrojového kódu.
Zkuste si do elementu body
vložit jen "<text" (bez uvozovek). WIE7, FF 2.0 i Opera nezobrazí nic – protože po < očekávají název tagu. Stejně legitimní je považovat > za konec tagu, a pokud aktuálně prohlížeč nemá žádný tag, který by mohl ukončit, prostě znak ignoruje.
To je právě problém HTML specifikace, že sice říká, že tag je ohraničen < a >, ale už neříká, co dělat, když na tyto znaky prohlížeč narazí někde jinde.
A ještě jeden detail – specifikace povoluje atributy (možná nechtěně) pouze u tagů ukončených >:
Attribute/value pairs appear before the final ">" of an element's start tag.Jakmile má tag atributy, nemůže lomítko na konci považovat prohlížeč za NET notaci, ale musí jej považovat za vnitřek tagu – nejspíš tedy za neznámý atribut. Takže problém s NET notací se zužuje na tagy
<br />
a <hr />
– a těm stačí doplnit nějakou neutrální třídu, třeba <br class="br" />
. A je po problému, žádné >
nikde nepřebývá.
V HTML je „>“ znak jako každý jiný, pokud je uvnitř obsahu elementu nebo atributu.
„sice říká, že tag je ohraničen < a >, ale už neříká, co dělat, když na tyto znaky prohlížeč narazí někde jinde“
Pokud za „<“ není znak povolený v názvech, je to obyčejné menšítko. Totéž platí třeba i pro ampersand.
„specifikace povoluje atributy (možná nechtěně) pouze u tagů ukončených >“
To je dost zjednodušená formulace, ono totiž i to ukončovací většítko je někdy nepovinné. Na NET nemají atributy vliv.