neděle 6. května 2007

FAQ - Legitimizuje HTML5 tag soup?

Tag soup neboli nedokončené a překřížené značky jsou problémem HTML. Nebo snad již můžeme říci byly problémem HTML?

Jaký je vztah HTML5 a tag soup snad osvětlí překlad bodu z často kladených otázek o WHATWG a HTML5.
Proč HTML5 legitimizuje tag soup?

Ve skutečnosti nelegitimizuje. To je omyl způsobený záměnou mezi požadavky na správnost dokumentů a požadavky na prohlížeče.

Podle základního návrhového principu o podporování stávajícího obsahu musí specifikace definovat, jak zacházet s jakýmkoliv HTML, bez ohledu na to, jestli vyhovuje specifikaci či nikoliv. Proto specifikace přesně definuje (nebo bude definovat) jak zpracovávat chybné značkování, z něhož je většina považována za tag soup, a jak se z něj zotavit.

Specifikace například definuje algoritmy pro vypořádání se se syntaktickými chybami jako jsou překřížené značky, které zajistí vytvoření správně strukturovaného DOM stromu.

Definování takových algoritmů je podstatné proto, abychom jednoho dne dosáhli interoperability mezi prohlížeči a snížili závislost na jejich vzájemném reverzním inženýrství.

Nicméně požadavky na správnost pro autory jsou definovány odděleně od požadavků na zpracovávání. To, že se od prohlížečů očekává zpracovávání chybného obsahu, neznamená, že takové dokumenty odpovídají specifikaci.

Od prohlížečů se například očekává podpora značky marquee, ale autoři ji v dokumentech odpovídajících specifikaci nesmí používat.

Je důležité rozlišovat mezi pravidly, která platí pro prohlížeče a pravidly tvorby dokumentů odpovídající specifikaci pro autory. Jsou na sobě zcela nezávislé.

Pokud vás zajímá, jak vznikla idea analýzy zpracovávání "tag soup" v prohlížečích, přečtěte si český překlad rozhovoru s Ianem Hicksonem.

15 komentářů:

  1. Chcem Vám poďakovať za váš blog. Dianie okolo HTML5 ma zaujíma ale sám nemám čas sledovať diskusné fóra a podobne. Preto si rád prečítam vaše zhrnutia a postrehy. Len tak ďalej! Vďaka.

    OdpovědětVymazat
  2. Děkuji za anonymní poděkování 8-)

    OdpovědětVymazat
  3. Neustále mi vrtá hlavou, když má prohlížeč zpracovat i syntakticky chybný HTML dokument, tak jak vlastně pozná, co jím je? Nebo má za HTML dokument primárně považovat cokoli, co otevře? Nebo kde je hranice toho, co je HTML dokument, a co už není?

    OdpovědětVymazat
  4. pixy: Zajimavá otázka, na kterou neznám odpověd, tak jsem se zeptal u WHATWG, viz log IRC (přístup je tam veřejný, pokud máš zájem, můžeš to s nimi probrat sám).

    Přiznávám, že odpověď pro mě zní dost odvážně the algorithm should handle all possible input streams

    OdpovědětVymazat
  5. Ale notak. Kazdy, kdo si tohle precte, musi vedet, ze to v praktickem dusledku je legitimizace tag soup.

    To je jako kdybyste rekl, ze kdyz zakony zakazuji vrazdu ale policie vrazdy nijak netresta, tak to vrazdy nelegitimizuje.

    OdpovědětVymazat
  6. Ve stávajicím stavu se prohlížeče s tag soup musí vypořádat a stejně to bude i v budoucnu. Podstatný rozdíl je, že specifikace HTML5 zajistí, aby se s ním vypořádaly všechny prohlížeče stejně. Čímž se sníží (a často zcela anuluje) jeho negativní dopad.

    Aplikováním na vaše přirovnání dostaneme kuriózní situaci, kdy jsou vraždy zakázány, ale v reálu mají jen málokdy za následek úmrtí, většinou žádný nebo pouze lehký úraz.

    OdpovědětVymazat
  7. Uniká mi smysl toho, proč jsou jiné požadavky na prohlížeč a jiné na autory.
    Pokud jsou jiné požadavky na prohlížeč a jiné na autory, tak se autoři stejně na nějakou specifikaci vykašlou a to marquee a všechno další co jim prohlížeč dovolí používat budou.

    OdpovědětVymazat
  8. Anonym: Treba proto, ze zatimco autori pisi nove dokumenty, prohlizece se musi vyporadat i se stavajicim obsahem.

    OdpovědětVymazat
  9. Pokud prohlížeč za všech okolností zobrazí všechno, tak jsou odlišná pravidla pro uživatele k ničemu. To by mělo smysl jen pokud by uživatel v novém dokumentu specifikoval, jaká pravidla použil a prohlížeč je pak striktně vyžadoval. Ale v tom okamžiku pak zase jednou oba podle stejných pravidel.

    OdpovědětVymazat
  10. Zapominate na soucasny stav. Prohlizece skutecne zobrazi vsechno. Muze se to i nekomu nelibit, ale je to tak a zustane to tak. HTML5 tohle chovani specifikuje, takze uz nebude delat problem jako doposud. Nic vic, nic min.

    Pravidla pro uzivatele maji smysl. Kdyz navazu na prirovnani s policistou, tak pravidla rikaji jednak co se smi a co se nesmi (uzivatel proste nesmi psat prekrizene tagy, kdyz je napise, neni to validni HTML5 dokument) a zaroven rikaji, co se ma stat, kdyz je tato hranice prekrocena.

    OdpovědětVymazat
  11. A co se stane, když uživatel napíše nevalidní html5 dokument? Jak se zachová prohlížeč.
    Pravidla mají smysl jen pokud jsou vymahatelná a vymáhaná.

    OdpovědětVymazat
  12. Co se stane, o tom jsem psal a Hixie to popisuje treba v Ian Hickson o nové verzi HTML.

    OdpovědětVymazat
  13. Asi jsem natvrdlý, ale pořád to nechápu. Co nutí autory dodržovat validitu html5? A když jí dodržovat nemusí, proč musí mít formálně jiná pravidla než podle kterých jede prohlížeč? K čemu to je? Proč pro autory neplatí stejná pravidla jako pro prohlížeč, když to tak v reálu stejně bude fungovat.

    OdpovědětVymazat
  14. Ale pro autory se oproti puvodnim verzim jazyka v tomto ohledu nic nemeni.

    Pro prohlizece ano, mezitim co predtim zpracovaval tag soup kazdy jinak, ted ho budou zpracovavat stejne. Coz je dost podstatna zmena a troufam si rici, ze k lepsimu.

    OdpovědětVymazat
  15. K. Dubost mi připomněl jeden omyl, který je často k vidění a je skrytý i za tím, co říkáš. Specifikace, které W3C vydává, jsou určeny primárně pro tvůrce prohlížečů. To, že mezi webdesignery vznikla móda se učit přímo z nich, je omyl - nebyly a nejsou k tomu určeny. Mnohem lepší by bylo mít kvalitní návody než louskat stovky stran specifikace (někdy jen v domnění, že jí správně rozumím). Nejsem si jistý, zda HTML5 je první specifikací W3C, kde jsou existují vyčleněné části pro výrobce a pro autory, ale je to docela možné.

    OdpovědětVymazat

Poznámka: Komentáře mohou přidávat pouze členové tohoto blogu.