Jsem XHTML dokument nebo nejsem

2006-05-14 23:10 napsal Lukáš Havrlant

Představme si následující situaci. Máme napsanou XHTML stránku. Hodíme ji na web a necháme ji odesílat s MIME typem text/html. Tímto prohlížeči de facto říkáme – „tady ti posílám HTML stránku, tak ji tak koukej vykreslit“. Prohlížeč kývne a vykreslí naši XHTML stránku jako každou jinou HTML stránku. Je tedy naše stránka XHTML dokument? Logicky ne, pokud ji prohlížeč zpracovává jako HTML dokument, ač by ji třeba dokázal zpracovat jako XHTML. Ale na druhou stranu…

Na tohle téma jsem se tak trochu nedávno bavil s Jirkou Koskem na diskusi a nakonec z toho vyplynula docela hezká myšlenka. Takže co tedy musí obsahovat XHTML dokument? Letmým náhledem do specifikace zjistíme, že striktně shodný XHTML dokument musí splňovat těchto pár bodů:

  • Musí vyhovovat omezením jednoho ze tří DTD
  • Kořenovým elementem dokumentu musí být html.
  • Kořenový element dokumentu musí obsahovat deklaraci xmlns pro jmenný prostor XHTML [XMLNS]. Jmenný prostor XHTML je určen jako http://www.w3­.org/1999/xhtml.
  • V každém dokumentu musí být před kořenovým elementem deklarace DOCTYPE. Veřejné identifikátory obsažené v DOCTYPE definici musí odkazovat na alespoň jeden ze tří DTD použitím Formálních veřejných identifikátorů. Systémové identifikátory se mohou měnit s ohledem na místní systémové konvence.
  • Podmnožina DTD nesmí být použita k překrytí jakýchkoliv parametrických entit v DTD.

(text zkopírován z překladu na zralog.cz).

Všimněte si prosím jedné zajímavosti. V žádném z pěti bodů se ani slůvkem nepíše o tom, jaký má XHTML dokument posílat MIME. Tedy máme-li stránku, která splňuje všech pět předchozích bodů, máme zároveň striktně shodný XHTML dokument. Teď to ještě trochu zobecníme. Na otázku, co je vlastně XHTML dokument, odpověděl Jirka Kosek takto:

Cokoliv, co je well-formed dokument XML, pokud to začíná elementem „html“ v jmenném prostoru „http://www.w3­.org/1999/xhtml“

Tedy oproti striktně shodnému XHTML dokumentu vypadávají body ohledně validity apod. Je to zajímavá definice a já jsem okamžitě viděl její slabinu. Sestrojil jsem pokusnou stránku, která splňuje uvedenou definici a zeptal se, zda to také je XHTML dokument. Tak jak to je, tedy jestli tento texťák může být XHTML dokument. Může nebo nemůže?

Jistě, že to je XHTML dokument :-). Zněla docela pohotová odpověď. Jirkův doprovodný komentář:

Zasílané HTTP hlavičky obsah souboru nezmění, slouží jen jako identifikace typu dokumentu, aby se vědělo, co s ním, aniž by se musel obsah souboru zkoumat.

Neboli… Pokud naliji půl litr kofoly do plechovky od piva, stále bude v plechovce půl litr kofoly. Že mi první pivař rozbije hubu až to zjistí, je již věc jiná, která nic nemění na tom, že v té plechovce prostě je kofola.

MIME tedy sice sděluje prohlížeči jak má stránku vykreslit, ale zároveň nijak nemění obsah dokumentu. XHTML dokument zůstává XHTML dokumentem. Nic to ovšem nemění na faktu, že prohlížeč zpracovává XHTML jako HTML (což v praxi nevadí ale přece jenom to není úplně ono). Ovšem nedíváme-li se na MIME, nelze od sebe rozpoznat .txt dokument a .html dokument. Před chvíli odkazovaný texťák by měl prohlížeč – pokud bychom neposlali žádný MIME – vykreslit jak? Jako texťák nebo jako XHTML dokument? Je to XHTML dokument, ale stejně tak to může být texťák. A jen tak mimochodem – IE ten texťák vykreslí jako HTML stránku :-).

Linkuj.cz!

Komentáře

# Leo
14. May 2006, 23:34

Takze je to stejne, jako kdyz poslete do prohlizece obrazek pohledne slecny – binarni soubor, ktery kazdy graficky editor zobrazi jako slecnu, ale v hlavicce Content-type poslete text/plain. Kazdy prohlizec udela neco jineho, ale to nic nemeni na tom, ze je to obrazek. Neco jineho je ovsem VIDET v prohlizeci (v nekterych rozsypany caj). Leo

15. May 2006, 00:34

Příklad s fousatou blondýnou je hezčí :)

# error414
15. May 2006, 07:12

Ja souhlasim s [1], kdyz poslete XHTML dokument s mime text/html tak porad posilate HTML, jen prohlizeci lzete co mu posilate.

15. May 2006, 07:24

… a lhát se nemá!

15. May 2006, 11:27

re error414 no a teď je ta věčná otázka – má být prohlížeč inteligentní a odhalit váš pokus o lež a zpracovat dokument podle pravdy, tj. i jinak než zamýšlel autor, nebo je prohlížeč jen sluha, který má dělat přesně to, co chce autor? IMHO je správná odpověď „standardně to první, protože je to lepší pro 90% plebsu, případně by měl jít přepnout do "ladícího“ módu, kde by se choval dle druhého vzroce. Protože IE je prohlížeč pro plebs, tak v tomto konkrétním případě se IE tedy chová „správně“. Když bych měl použít ještě jedno přirovnání – je to jako koncovka souboru. Když změním doc na xls, nemůžu se divit, když dokument je pak otvírán excelem. A mimochodem mac byl mými známými vychvalován za to, že je mu jedno co má dokument za příponu, vždy jej otevře v tom správném programu.

15. May 2006, 13:54

Má tohle cenu? Asi ano, ale za cenu stovek mrtvých mozkových buňek. Mimochodem dneska prší (svítí slunko)…

15. May 2006, 16:55

Kdyby všichni psali v HTML, nemusel by nikdo řešit, jak posílat XHTML. Tudíž bys neměl práci :o).

Kdyby všichni psali v XHTML, nemusel by nikdo řešit, jak posílat HTML (protože by to nikdo nepotřeboval nebo by to všeci věděli). Tudíž bys taky neměl práci.

Z toho plyne jednoznačně, že jde o začarovaný kruh s tím, že Timyho můžeme zničit, pokud se semkneme. Chceme zničit Timyho? Nechceme, tudíž pořád píšeme v (X)HTML. A to je konec.

15. May 2006, 17:44

Ono se prosimvás někdy řešilo něco jiného? Je přece jasné, že každý soubor, který je XML well formed je vallidní. Ten problém ale nespočívá v tom co má jaký soubor obsahovat, ale jak se má vykreslit. A v tomto případě již je nutné mime posílat ;)

15. May 2006, 18:22

Konečne to niekto verejne a pekne vysvetlil.

Ale povedal by som, že IE nerobí dobre, keď kašle na MIME typ.

A k celému problému. Čo mi XHTML prináša, čo by HTML nedokázalo? Pár bajtov navyše? To si radšej pripíšem do HTML dokumentu komentár o odpovedajúcej veľkosti. Ale nechcem opäť rozpútať flame.

Chcem len povedať v krátkosti. XHTML malo priniesť určité výhody. Pre tieto výhody potrebujeme, aby bolo XHTML podporované na strane koncových zariadení. Pokiaľ ho koncové zariadenia nebudú podporovať, výhod sa nedočkáme. Potrebujeme prevažnú podporu. Pomaličky prichádza IE7. Už je jasné, že nebude podporovať XHTML.

Dajme tomu, že podpora XHTML bude v prehliadači IE8. Kým zmizne IE7 z trhu a nahradí ho IE8, prejde, no… nebudem to tajiť, veľa času. A kto vie, ako sa nám to tu dovtedy zmení.

Čo som chcel povedať? Pokiaľ nepocítime skutočné výhody XHTML, nemá význam ho používať, kedže tu máme HTML. Keď pošleme HTML, aspoň neklameme. Ja nechcem klamať – mamka ma učila, aby som neklamal.

# Leo
15. May 2006, 19:00

„A mimochodem mac byl mými známými vychvalován za to, že je mu jedno co má dokument za příponu, vždy jej otevře v tom správném programu.“

A pak neni nic horsiho, kdyz vam na tohle zvykli uzivatele Maca na CD vypali soubory kde pripony velkoryse nedaji, a na PC si docela uzijete :-), v nekterych programech. Leo

15. May 2006, 19:34

Melodie

Ono se prosimvás někdy řešilo něco jiného?

Třeba na té odkazované diskusi? Jinak osobně mi přijde trochu zvláštní, že textový dokument může být zároveň XHTML dokumentem… Jestli to někomu nepřijde zvláštní, budiž, mně ano :-).

Je přece jasné, že každý soubor, který je XML well formed je vallidní.

To je blbost, ač netuším, co to má společného s naší debatou. Well-formed je něco jiného než validita.

18. May 2006, 08:32

Jozef Benko Ja nechcem klamať – mamka ma učila, aby som neklamal.

IMHO Vypadá na další flame ohledně pravdomluvnosti prohlížečů a designerů…

BTW: MSIE7 má být distribuováno jen s Windows Vista, defaultně bude mít každý Win systém svůj prohlížeč, podle doby vzniku (bude platit i pro „budoucí“ WinXP – MSIE 6, NT – MSIE 5.0 resp. 5.5) :)

Takže hromadný nástup IE7 jen pro pařany, tedy za předpokladu, že někdo vydá našlapanou hru jen pro Vista (třeba jako Doom 3 pro WinXP). No a pak pro pár skalních a nadšené administrátory, kteří budou aktualizovat stovky počítačů, a to nebude med (každé malé dítě ví, že MSIE je systémový (prohlížeč)…

2.BTW: MSIE je staré skoro 5 let (2001), takže IE7 bude alespoň 2 roky, nebo že by MS začal vydávat patche? Asi ne. Jen by přidali práci web koderům (další podmíněné komentáře)…

IMO celá debata je o ničem, jdu se učit, ať odmaturuji alespoň za 16 ;)

23. May 2006, 20:04

Lukáš Havrlant: Jinak osobně mi přijde trochu zvláštní, že textový dokument může být zároveň XHTML dokumentem… Jestli to někomu nepřijde zvláštní, budiž, mně ano :-).

Textovým dokumentem myslíš soubor s příponou TXT? Podle mě je jméno souboru hodně podružná věc, nijak neovlivňuje obsah, význam má pouze v tom, že se dá nastavit, aby soubory s určitou příponou otvírala určitá aplikace.

Komentáře jsou uzavřeny