Názor k článku
Soumrak nad moderním X

Petr Staníček
Petr Staníček (neregistrovaný)
28. 2. 2007 9:52

Re: Zahnívajíccí mrtvola? Asi ano.

celé vlákno
Davide, úvod o demagozích si neodpustím, protože ten člověk, který se podepisuje jako Chamurappi, prostě demagog je a používá od samého začátku, co jsem se s ním prvně setkal, výhradně tvrdě damagogické postupy. To není žádné urážení protistrany (a tebe už vůbec - proč taky, že), ale prosté konstatování. Tohle i celý autorův web je demagogie přímo esenciální a učebnicová.

ad 1) - to jsi asi nepochopil. Nejde o to, co se stane na tom zapsaném </div>, ale spíš o to, kdy se uzavře ten první otevřený <div>. Jsou dvě rovnocenné možnosti a není ani trochu zřejmé, která se kdy použije. Nicméně každý HTML parser si nějakou z nich zvolí. Neurčitost, v XML nemyslitelná.

ad 2) - opět nechápeš. Já přece vím, že číslo nemusí být v uvozovkách (a string taky ne - sice je to chybně, ale parsery to běžně zpracují stejně jako číslo). Jde mi jen o to, že v XML mám jasně danou syntaxi atribut="hodnota", zatímco v HTML musím uvažovat i variantu, že tam ty žádné uvozovky nejsou. Co se parsuje líp? Nemluvě o takových možných perlách, které opět v HTML obvykle projdou a parser na ně musí myslet, jako např. <td class= colspan=2>... *)

ad 3) Nepopírám, že to je nejasné. Jen jsem to uváděl jako příklad "špatných mravů", kdy je v HTML běžné používat čísla bez jednotek, což se pak promítá i jinde. Ale ok, tohle je v daném kontextu už trochu scestné, musel bych déle vysvětlovat, jak jsem to původně myslel, což sem nepatří. *)

ad HTML 4.01 - Právě že vidím ten závratný rozdíl. DTD je jednoznačné, zatímco specifikace je děravá, nejasná a místy si i protiřečí. Stejně jako každý slovní, nealgoritmizovaný (a nealgoritmizovatelný) popis.

ad parser - to je právě ten ukázkový příklad demagogie a tyokozismu. Srovnáváme běžné parsery a vy argumentujete zcela netypickými špeky a vychytávkami, které by sten parser měl správně umět, aby fungoval OPRAVDU korektně. A srovnáváte to s HTML parserem,který si uděláte podle potřeby se zohledňováním "zvykového práva" (protože specifikace HTML je leckde nejasná) a žádné DTD rozhodně neparsujete. Mám snad taky dohledávat a vymýšlet špeky, kteeré naprostá většina HTML parserů zpracuje blbě nebo na nich selže? Takové jsou taky. A přitom si vždy vystačíš s jednodušším HTML parserem, který pro tvoje potřeby stačí, stejně jako většina vývojářů si vystačí s účelovým parserem XML, který stačí zase pro jejich potřeby, aniž by museli detailně zpracovávat DTD. Není parser jako parser - nějaká obecná xml_lib (zpracujeme úplně každé XML!) je něco zásadně jiného než účelový XML parser napsaný pro konkrétní projekt. Mimochodem myslím si, že zcela univerzální XML parser, který by byl bezchybný a zvládl všechny myslitelné obskurnosti syntaxe DTD, ani neexistuje. Každý má nějaké mezery, nedostatky a chyby - stejně jako všechny existující parsery HTML.

*) Mohli bychom si konečně rozumět v tom, že já přece vůbec nemluvím o specifikaci HTML, ale o tom, že HTML parsery nemají error-state a nesmí nikdy zkolabovat s chybou (jako XML)? Každou chybu, nejasnost a rozpor se specifikací si musí samy nějak rozseknout, domyslet, doplnit chybějící části kódu, vypustit přebývající a vždycky něco zobrazit. Když to přeženu, takový HTML parser si postaví DOM i z první kapitoly Babičky - zatímco XML parser skončí se syntaktickou chybou hned na prvním znaku. Proto je (dobrý) HTML parser nesrovnatelně těžší a náročnější na vytvoření než jakýkoli XML parser, držící se striktně formální syntaxe.