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é.
jedinou smysluplnou informací zůstane adresa DTD, kterou si pochopitelně může webmaster zkopírovat k sobě
Podle mého názoru, ta adresa DTD slouží jako identifikátor. Tudíž prohlížeče nemusí to DTD stahovat, aby věděly, že jde o XHTML. V případě, že si to někdo zkopíruje k sobě, tak to má jiný identifikátor a pak to opravdu není XHTML ale uživatelský formát, který ovšem může být s XHTML shodný. To pak prohlížeč má problém, protože z DTD nevyčte sémantiku. Normální prohlížeč ale doufá, že je stejná, jako v HTML/XHTML a podle toho jedná. Co mu také zbývá jiného.
K čemu podle vás slouží jmenné prostory?
Slouží k tomu, aby nám nekolidovaly značky, které mají v různých jazycích různý význam a přitom stejná jména. Ale nedefinují jazyk. V tomto případě si lze jmenný prostor představit jako množinu značek, tedy abecedu, ze které můžeme tvořit věty, zde dokumenty. Abychom dostali jazyk, potřebujeme k tomu ještě gramatiku jazyka a tu právě definuje DTD. XHTML jsou tedy jazyky nad stejnou abecedou, ale každý má trochu jinou gramatiku.
Ty ty standardy přímo zesměšňuješ. Asi nechápeš jejich přínos pro budoucnost.
Když už se šťouráš v mém webu, řekni mi, co může budoucím prohlížečům vadit, a hoď mi sem odkaz na nějaký svůj web.
Nemusíme chodit daleko. Třeba se jen na ty stránky podívej přes nějakou parsující proxy (http://www.the-cloak.com/login.html), jak bude vypadat výsledek. A můžu ti říct, že takové proxy v intranetech velkých firem bývají -- kvůli autentizaci a portálovým řešením.
Protože programuju prakticky jen aplikace pro intranet, tak ti toho "venku" moc neukážu. Leda tak stránky magistrátu města Ostravy, ke kterým jsem dělal publikační systém. Obsah - grafiku a texty tam rval designér, některé publikační šablony psali či upravovali jiní lidé. Velké věci jsou vždy týmová práce. http://www.esmo.cz XHTML 1.0 Transitional ;-)
1) V článku je odkaz na test mobilů: XHTML chutná skoro jen Opeře Mini.
2) Přestal fungovat podtržítkový hack ve standardním režimu a změnily se podmínky, kdy je tento režim vyvolán. Quirk mód není ohrožen, viz můj říjnový článek. Zvláštní, že pod ním nikdo nenadával na mé kodérské zvyklosti.
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.
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.
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.
„Podle mého názoru, ta adresa DTD slouží jako identifikátor.“
Jenže adresa už vůbec nemusí být fixní. XHTML 1.0 i 1.1 (obě vydání obou) říkají, že systémový identifikátor smí být ve vyhovujícím dokumentu změněn.
Zrovna XHTML 1.1 nabízí dvě verze své DTD. Jednak má svoji mamutí modulovou verzi skládanou z cca dvaceti modulů, jednak i sloučenou verzi do jednoho souboru — kopii té prokazatelně používá validátor. Modulová se od sloučené mírně liší. V prvním vydání XHTML 1.1 nevyžaduje modulová žádný element v <body>, kdežto sloučená ano. V druhém vydání zatím ta modulová naopak vyžaduje alespoň jeden element v <body> a sloučená je už dva týdny vadná, neboť na jejím konci kdosi utrousil kus dokumentu.
„To pak prohlížeč má problém, protože z DTD nevyčte sémantiku.“
Jenže uvnitř DTD není určena sémantika, tam se může dozvědět nanejvýš názvy validních elementů, atributů a entit. Není tam řečeno „tohle je nadpis, tohle obrázek, tohle odkaz“.
„Slouží k tomu, aby nám nekolidovaly značky, které mají v různých jazycích různý význam a přitom stejná jména. Ale nedefinují jazyk.“
Kdyby měly pouze bránit kolizi, tak by nepotřebovaly mít k prefixu přiřazenu adresu. Prefix by totiž stejně natvrdo zakotvila DTD a dokument s jinými prefixy či dokument složený z více jmenných prostorů by potřeboval buď svoji DTD se svojí adresou, která by se neshodovala s adresou oficiální DTD, nebo modularizaci + velkou interní podsadu DTD.
Kdybych chtěl do XHTML vložit prvky svého vlastního jazyka, při čemž XHTML i ten vlastní jazyk by měli každý svou oficiální DTD, znamená to, že by kvůli zkombinované DTD neměly výsledku rozumět ani XHTML prohlížeče, ani prohlížeče toho mého jazyka?
Ve stávajícím návrhu druhého vydání XHTML 1.1 je psáno, že se veřejný identifikátor musí odvolávat na oficiální DTD, pokud je přítomen. Z čehož usuzuji, že povinný není. Ale uznávám, že to je jen pracovní návrh.
Domnívám se, že FPI jako obdobu jmenných prostorů chápat nelze. Doporučení XML 1.0 o něm hovoří pouze jako o alternativní pěšince k adrese DTD. Odhlédnu-li od teorie: v praxi prohlížeče podle veřejného identifikátoru jazyk neurčují.
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.
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.
„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.
blablabla
lalala
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.
Ty si doplň vzdělání, srandisto. V HTML:
http://www.w3.org/TR/html4/struct/global.html#edef-HTML
Every HTML document must have a TITLE element in the HEAD section.
XHTML to taky není protože ani nemáš uzavřený tag DIV.
Tak co vřískáš, chamurappi? Neumíš nic a mudruješ... A jen to víc a víc dáváš najevo!
Odkázaný článek popisuje, jak má fungovat HTML podle specifikace už minimálně 13 let. Odvolává se na DTD, ne na prohlížeč.
Historicky: První Timův prohlížeč umožnil křížení elementů a jiné syntaktické prasárny známé dodnes (do SGML to mělo daleko). Mosaic se přizpůsobil, Netscape se přizpůsobil, Explorer se přizpůsobil, Opera se přizpůsobila, Mozilla se přizpůsobila. Křížení elementů nijak nesouvisí s vynecháváním nepovinných značek. Od nějakého roku 1995 se prohlížeče snaží respektovat HTML specifikace (včetně té implikace značek), ale jen do té míry, aby nezbouraly existující weby.
Vývoj nového zobrazovacího jádra je náročný hlavně kvůli CSS. Napsat dostatečně schopný HTML parser je ve srovnání s CSS renderováním hračka.
1) Atributy style jsem opravdu myslel atributy style. Atribut je taková ta věc, co se píše do počátečních značek elementů, skládá se z názvu, rovnítka a hodnoty. Nespecifikuješ HTTP hlavičku Content-Style-Type, čímž porušuješ W3C doporučení.
Ukázaný kus JavaScriptu mimochodem vyrábí element <STYLE>, který v XHTML neexistuje. Za to tě ovšem nikdo nikdy trestat nebude, protože pořád užíváš HTML a tam na velikosti písmen nezáleží.
2) Specifikace neříká, že je JS výchozí. Naopak říká, že musíš uvést Content-Script-Type. Tahle chyba je srovnatelná s neuvedením atributu type i <script>u.
3) Ne, není jednoznačně definován. <!DOCTYPE> jazyk neurčuje. Můžeš si snadno ověřit, že tvůj kód prohlížeče stále vnímají jako HTML.
Ale když se v tom vyzná on, proč ne.
Protože takoví pracovníci jsou nepoužitelní. Dělají práci, kterou po nich nikdo nepřevezme a když pak onemocní nebo je když je vyhodí z firmy, tak se to po nich musí celé předělávat.
Jestli si myslíš, že ti k obživě bude stačit plichtit si sám na koleně amatérské webíky na zakázku, tak se připrav na chudobu.
Na jiném místě říkáte, že <!DOCTYPE> určuje jazyk, což ale přímo nesouvisí se zdejším tvrzením. Na rozlišení HTML od XHTML nestačí ani <!DOCTYPE>, ani deklarace jmenného prostoru, ani XML deklarace. Bez MIME typu nevíte nic, můžete si maximálně tipnout. Každý jazyk má jinou syntaxi (ač podobnou).
„Že prohlížeč zpracuje i XHTML, kde některé koncové značky vynecháte a některé neexistující atributy použijete, znamená pouze to, že se snaží chyby v kódu co nejlépe překonat.“
V XHTML musí chybějící koncová značka zajistit smrt a naopak neexistující atribut nikdy nesmí způsobit problémy (maximálně způsobí nevaliditu). Tak to i funguje.
Při MIME typu „text/html“ skutečně všechny prohlížeče vždy užívají HTML parser. Neporozumí zápisu <div /> — pochopí jej jako začátek elementu. Nikdy nepřeloží entity uvnitř <script>u. V DOMu vrací document.doctype vždy null. Jak se tedy pozná, že prohlížeč skutečně zpracovává XHTML?
Kdo se chce z plných plic zasmát, koukne se na HTML kód, který autor článku sesmolil pro svou výkladní skříň "webylon.info".
view-source:http://webylon.info/
Autor nezačíná ani neukončuje ani html tag, ani body, není to validní v žádném markupu. Doporučuji, velice dobrá legrace, obzvláště co se autor takhle opřel do všech ostatních...
Bože to je č***k... já z toho furt nemohu... :-DChápu, že vám XML usnadňuje práci, ale vy jste jen jedna polovina řetězce. Ta druhá — prohlížeče — vám na XML při „text/html“ dlabe.
To je právě další rozšířený omyl. Nedlabe. MIME typ je opravdu celkem podružný. Týká se jenom HTTP a server dokonce nemusí poslat žádný. Rozhodující je právě DOCTYPE.
Že prohlížeč zpracuje i XHTML, kde některé koncové značky vynecháte a některé neexistující atributy použijete, znamená pouze to, že se snaží chyby v kódu co nejlépe překonat. Ale to dělá pouze proto, že mu nic jiného nezbývá a ne proto, že by kašlal na to, že je to XHTML. V důsledku se to tak jeví, ale je v tom významný rozdíl.
Nechápu, na základě čeho jste dospěl k závěru, že prohlížečům nemá smysl XHTML posílat.
Kvůli tomuto vznikají bouře ve sklenici vody v diskusi na jakpsatweb. Jde o to, že i když napíšete XHTML musíte ho nakonec stejně poslat jako text/html, aby to zchroupal IE. A otázkou je, jestli XHTML dokument poslaný jako text/html je XHTML (tedy založený na XML) nebo je jen zprzněné HTML.
Tvořte si je, v čem chcete a jak chcete, ale prohlížečům nemá smysl posílat cokoliv jiného než HTML.
Jinými slovy potvrzujete, že XHTML je potřebný a v současnosti asi nezastupitelný jazyk pro web. Nechápu, na základě čeho jste dospěl k závěru, že prohlížečům nemá smysl XHTML posílat.
O tom se více rozpovídám ve druhém dílu.
Tedy nejdůležitější argument zůstává (prozatím) nezodpovězen.
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.