V HTML autor stránky nesmí rozšiřovat jazyk dostupnými SGML prostředky. Viz http://en.wikipedia.org/wiki/SGML_entity.
Většina hotových XML knihoven (včetně těch v Exploreru, Mozille a Opeře) interní podsadu DTD podporuje, nenachytají se.
Opravuji se:
„U HTML tenhle požadavek nikdy nikdo nevyřkl“
Autorům je přímo zakázáno rozšiřovat HTML dostupnými SGML mechanismy.
„Kde se tvrdí, že po zásahu do DTD XHTML je výsledek stále XHTML, jak zde postulujete?“
Vyrobím-li interní podsadu DTD, kde přidám obecné entity, bude můj dokument stále splňovat podmínky pro striktně vyhovující XHTML dokument.
„věnujte pozornost autorovu pamfletu K.24, kde ukazuje, že HTML lze v nadmnožině SGML rozšířit“
Nelze. V HTML je CONCUR vypnutý.
„v této diskuzi je to ukazováno jako nevýhoda a složitost XHTML“
Nevýhodou není rozšiřitelnost, ale povolení interní podsady DTD.
Vytrvalý brekot o demagogii vám nesluší.
ad 1) Tipnout si jednu z možností je obdobně snadné jako selhat.
ad 2) „a string taky ne - sice je to chybně, ale parsery to běžně zpracují stejně jako číslo“ — to není pravda, ani řetězec nemusí být v uvozovkách, pokud obsahuje znaky [A-Za-z0-9.-_:]. Bavíme-li se jen o uvozovkách, máte pravdu, že povinné uvádění mírně zjednodušuje parser.
ad 3) Nejasné to není, zápis s jednotkami jinými než procentovými (třeba <td width="30px">) porušuje všechny existující HTML/XHTML specifikace, třebaže si prohlížeče běžně ta písmenka odmyslí. Jak to souvisí s tématem HTML vs. XHTML?
„Mám snad taky dohledávat a vymýšlet špeky, které naprostá většina HTML parserů zpracuje blbě nebo na nich selže? Takové jsou taky.“
Jenže lidé se spoléhají na to, že tyto špeky implementované nejsou. Proto se nikdo nehrne do jejich implementace. Každý, kdo napíše do HTML <br />, počítá s chybou v parseru.
Jakkoliv vám ty syntaktické nepodporované špeky připadají divné, jejich implementace je pořád jednodušší než rozebírání DTD.
stejně jako většina vývojářů si vystačí s účelovým parserem XML .... je něco zásadně jiného než účelový XML parser napsaný pro konkrétní projekt
A to je právě chyba. Kdyby použili hotovou odladěnou komponentu parseru XML, ušetřili by si práci a navíc by jejich kód zvládal načítat XML, ne jen jeho podmnožinu, kde se se spoustou věcí nepočítá.
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.
To trochu zavání demagogií, ne? ;-D Na svém počítači jich mám několik.
Ba právě naopak. X(eXtensible)HTML není rozšiřitelné, resp. když ho rozšíříte už to není podle specifikací W3C přesně vyhovující (strictly conforming) dokument:
http://www.w3.org/TR/2002/REC-xhtml1-20020801/#normative
http://www.w3.org/TR/2001/REC-xhtml11-20010531/conformance.html#s_conform
Šlo o to, že napsat parser pro XHTML není v žádném případě legrace a je to ukrutně složitější, než parser HTML.
Pokud jde o to napsat parser, který zvládne korektně načítat XHTML podle specifikací W3C a totéž pro HTML, je rozhodně složitější napsat HTML parser. Ale nevím, proč se o tomhle pořád bavíte, parsery jsou dávno napsané...
XHTML by šlo však celkem snadno vylepšit. Zakázat používaní !DOCTYPE, a upravit výše zmíněnou klauzuli o shodě tak, aby šlo XHTML rozšiřovat pouhým použitím elementů v jiném jmenném prostoru. Stačilo by pak říci, že po odstranění cizích elementů a atributů musí zůstat dokument vyhovující XHTML schématu.
Douška ke zvládání HTML a XHTML v prohlížečích: Smutnou skutečností je, že IE 6 nezná element abbr.
Doslova tam stojí: "tato sekce popisuje metody rozšiřování XHTML". Nikoliv: tohle když uděláte, tak už to není XHTML, ale "nějaké" XML.
A dále tam stojí: „Hlavním důvodem definice XHTML modulů a obecně modularizační terminologie je zjednodušení tvorby typů dokumentů založených na XHTML.“ Jinými slovy, modularizace je zde od toho, aby se od XHTML snadno odvozovaly další typy XML dokumentů, které však již nemohou být označovány jako (čisté, standardizované) XHTML.
Naopak v případě HTML 4.01 není potřeba žádné DTD řešit. Dokument je plně dán specifikací.
Ale to není nutné ani v případě XHTML! I zde je dokument plně dán specifikací. Jakékoliv rozšíření DTD dělá z dokumentu obecný XML dokument, byť na XHTML založený.
Už vidím druhý díl, kde bude prezentováno, že HTML je aplikací SGML, tudíž je stejně, ba dokoce více, rozšiřitelné než XHTML. Taktně bude zapomenuto vše, co je ukazováno v tomto díle jako hlavní výhoda HTML – že nemusím parsovat DTD či se starat o cokoliv nad rámec specifikace. Buďme korektní, bavme se o čistém XHTML a čistém HTML, nebo o rozšiřitelnosti obou jazyků, ale neukazujme jako nevýhodu, že XHTML je rozšiřitelné.
Mimochodem, u XHTML si mohu být téměř jistý, že pokud jej pošlu prohlížeči, dokáže jej rozumně zpracovat svým XHTML či HTML parserem. Co se však stane, pokud pošlu prohlížeči korektní HTML dle SGML specifikace, avšak obsahující méně obvyklé prostředky syntaxe? Autor takový příklad sám uvádí jako K.34 na svém webu. Jinými slovy, podpora HTML je v prohlížečích řádově horší než podpora XHTML.
DTD sice existuje i v HTML, ale zde se ho můžeme dovolit ignorovat. V XML rozhodně ne.
Co to je za argumentace, todleto? Proč do toho pletete parsování DTD a jaký je v tomto bodě rozdíl mezi XHTML a HTML? Porovnávejme věci na stejné úrovni. Buď HTML a XHTML (pak je DTD dané a co s tím), nebo férově SGML a XML. A když si přečtete, co všechno se v SGML DTD může objevit, tak zjistíte, že připouští třeba i nepovinné počáteční značky (neptejte se mě k čemu) a vůbec zvěrstva, která v celé své složitosti nikdy nikdo nenaprogramoval. Tedy vyčítat XML, že obecně může obsahovat DTD přímo v sobě je úchylné.