MzM: tož to jsem rád ;)
A já zase tvrdím, že XHTML NENÍ XML.
Dobře, všichni se tady pořád zaměřujete na strukturu dokumentů a způsob značkování.
Proto začnu z druhé strany:
jak je všem jistě známo, dokumenty s mime typem XML zásadně zpracovává XML parser, který je odjakživa svině a při jakékoliv chybě parsování dokumentu zastaví, dokument nazobrazí a vypíše chybu.
Kdežto XHTML je zpracováváno HTML parserem, který je benevolentní snad ke všemu - chyby ignoruje, přebývající značky přehlíží, chybějící se snaží domyslet.
Kdysi dávno jsme byl donucen nastudovat specifikace obou dvou jazyků, takže o tom bohužel něco málo vím ;)
Pro případné zájemce
XML: http://www.w3.org/TR/xml/
XHTML: http://www.w3.org/TR/xhtml1/
Malé shrnutí: ano, XHTML vychází z XML (je to i v těch specifikacích ;) ale to, že s ním má některé společné znaky <duraz>neznamená</duraz>, že XHTML = XML. XHTML má sloužit jako přechod mezi HTML a XML, proto nemůže být stejný ...
Ale, to co jsem zde sepsal je platné pouze pro XHML do veze 1.X . Nyní se vyvíjí nová verze (XHMTL 2.0), která bude mít s XML společného mnohem, mnohem víc, takže tam se už bude dát s trochou nadsázky říct, že půjde o XML.
Tome, pokud prohlížeč narazí na XHTML, pustí na něj XML parser, pokud narazí na chybu, ukončí se a pustí na něj html parser.
To je na dlouhé čtení a nejsem si jistý, jestli bych se svým ješitným přesvědčením byl schopen najít potvrzení tvého tvrzení. Proto, abys mě přesvědčil a ostatním dal příklad, zkus předložit jeden příklad, co lze v XHMTL a nelze v XML. Z toho vyplyne, že XHTML není XML.
Ještě pořád jsem přesvědčený, že XHTML je XML. :-)
co lze v XHMTL a nelze v XML?
Tak buď jsem mimo já, nebo ty?! Opakuji se, že XHTML je něco jako klon XML a HTML. Tudíž umí trochu z toho a trochu z toho. Neměla ta otázka být spíš opačně: Co umí XML a XHTML ne?
Jo a to sem si myslel, že se dokumenty parsujou jenom jednou ;)
BTW: čtení je to opravdu dlouhý, ale hned v prvním odstavci o XHTML je to černé na bílém ;)
A schválně jestli ty dáš mě jeden dobrej důvod, proč by W3C dávalo jednomu jazyku dva názvy, když je tedy XHTML to samý, jako XML?
PS: všimli jste si, jak nenápadně se flame HTML vs. XHTML změnil na XHTML vs. XML? =)
No jasně, pokud všechno, co napíšeš v XHTML je v regulích XML, je XHTML XML, byť omezené definicí. Ale to je u XML normální, protože XML je obecný popis, ke kterému se přidává DTD nebo XML schema. Tím se určí jak bude takové XML vypadat a jedno s těch DTD je i DTD pro XHTML.
W3C o něm mluví proto, že popisuje právě to, jak XHTML pomocí DTD omezuje XML tak, aby byly webové prohlížeče schopné z dokumentu něco zobrazit.
XHTML je XML stejně jako Škoda Octavia je auto. Auto je obecný výraz pro héblo, s koly, které se pohyvuje vlastní silou.
P.S. ale jsem se do sebe pustili, co? ;-)
Aha ... slovíčkaření. Tak do to nejdu ;)
Takže když to bereš takhle, tak radši používej něco ve smyslu "XHTML je omezená verze XML", nebo tak něco, protože by se zase mohl ozvat nějakej exot (jako já) a bude se moc divit, že tvrdíš, že XML je XHTML. Zkus místo "je rovno" (=) použít operátor "je přibližně" (≈) ;]
Hraní se slovy mi nikdy moc nešlo.
BTW: motorka je taky auto, když má kola a pohybuje se vlastní silou?
PS: že se divíš. Ještě nikdy jsi neprošel peklem Flamu?
se nedivím. Ale XHTML je prostě XML ;-)
Třeba HTML 4 není XML.
Motorka není auto, protože, jak tvrdil jeden můj zákazník, dvě kola jsou víc jak čtyři ;-)
Tak já nevim, nejdřív říkáš, že auto je vše, co má kola a pohybuje se to vlastní silou a najednou říkáš, že motorka (která má kola a pohybuje se vlastní silou) auto není ?!?!
Jestli to je takhle i s tím XML, tak je mi všechno jasné...
PS: vyřiď zákazníkovi, že auta mají kol většinou pět.
Tom, počítají se aktivní kola.
Ne ještě jsem neprošel peklem flamu. Flame na netu je o ničem, je to moc anonymní, navíc každý vycházíme z jiných definic, takže se můžem hádat do nekonečna, pojď mi to říct do očí. :-)
OK, vidím, že diskuze se tady pěkně rozvíjí, tak se taky přidám a rýpnu si :-)
Ale abych nemluvil jenom tak, udělal jsem si takový test – vytvořil jsem si XHTML 1.1 dokument, který rozhodně nemůže projít XML parserem:
<p><font face="Tahoma" color=red size=5>Text <b>text <I>text </B>text</i></font>
<p><A HREF="http://www.webzdarma.cz">webzdarma.cz</A>
Wikipedie (en) uvadí pro XHTML jako možné přípony tyto: .xhtml, .xht, .html, .htm.
1.) pokud použiju .xhtml nebo .xht, IE (testováno v IE 6 na W XP, IE 6 na W2k) se pokouší tento soubor uložit na disk => NEPOUŽITELNÉ. (Kolik „běžných“ uživatelů je schopných s tím něco udělat?) Na druhou stranu ale musím zmínit, že ve Firefoxu (1.5.0.9) to neprojde – XML parser to nevezme. Ale kvůli IE tahle varianta odpadá.
2.) pokud používám příponu .html nebo .htm, IE se už sice chytá, nicméně přestože mám nastavené doctype jako XHTML 1.1 a jako mimetype odesílám application/xhtml+xml, překvapivě k žádné chybě nedojde (a přitom by mělo). Internet Explorer i Firefox NORMÁNĚ tuto stránku ZOBRAZÍ – pod pojmem normálně myslím, že vypíše 4× červeně „text“, poprvé obyčejným písmem, podruhé tučně, potřetí kurzívou a tučně, počtvrté kurzívou + v dalším odstavci odkaz na wz. Myslím si, že v tomto případě ve Firefoxu kód neprochází XML parserem – jak jinak vysvětlit, že u přípony .xthml dojde k chybě a parsování se ukončí a tady ne? (Zdrojový kód zůstal stejný.)
3.) jestliže použiju příponu .php, nastává komplikace. PHP si myslí, že „<?xml…“ patří jemu a vyhodí parse error. Po ošetření této chyby to sice již funguje, ale jako v předchozím případě – všechno projde a zobrazí se, i když posílám navíc hlavičku application/xhtml+xml pomocí funkce header() v PHP.
4.) nechat příponu .xhtml a pomocí mod_rewrite přesměrovat .html na .xhtml. Firefox vyhodí chybu parsování, ale IE stejně obsah zobrazí bez jakéhokoliv varování. Nevýhody jsou, že se jedná o komplikované řešení, ne každý si poradí s mod_rewrite, ne všude je povolené .htaccess.
Nic proti, ale tady mi teda něco nehraje… Může mi někdo vysvětlit, jak byly míněné výroky „[XHTML] není benevolentní k prasárnám“ a „Eliminují se prasárny, kód je čistej“? Všichni (téměř) tady tvrdíte, že XHTML donutí autora psát čistý kód, bez chyb atd. Kdo k tomu toho autora donutí? Validátor? A to si vážně myslíte, že člověk, který píše „zprasený“ kód, o nějakém validátoru ví? Když už je řeč o validátoru, bylo tu zmiňované, že kód <red>text</red> po patřičném ostylování bude červený – bohužel, tag <red> se validátoru moc nelíbí (element "red" undefined), tohle podle mě patří do XML, ne do XHTML.
Nějak tady nevidím ten rozdíl mezi zastaralým HTML a pokrokovým XHTML, a obávám se, že XHTML skončí stejně jako jeho předchůdce, protože prohlížeče si stejně dělají, co chtějí. Postrádám tady nějaký smysl; jestli XHTML vzniklo kvůli tomu, aby naučilo autory psát atributy do uvozovek a uzavírat tagy, pak si myslím, že existuje daleko lepší způsob. Další smysl bude mít možná XHTML v budoucnu, čímž se vracím k poslednímu odstavci mého předchozího příspěvku v této diskuzi.
Pokud se někdo prokousal až sem, uvádím tady testovací stránky:
http://mr-mare.wz.cz/xhtml/test.xhtml
http://mr-mare.wz.cz/xhtml/test.htm
http://mr-mare.wz.cz/xhtml/test.php
Jo, ještě jsem zapomněl na pár detailů:
• stačí mi, když dodržuju určitá pravidla a obejdu se i bez XHTML
• píšete, že XHTML je daleko jednodušší. Abych se přiznal, zatím jsem se setkal jenom s komplikacemi – viz předchozí. (Jen tak na okraj, scripty a styly sice patří do externích souborů, ale když už je chci vložit do dokumentu, zápis v XHTML mi jednodušší rozhodně nepřijde.)
• zatím mě nic nepřesvědčilo k tomu, abych přešel na XHTML, takže zůstávám u HTML 8-)
:-) mr.mare, nó, ten úryvek nějakého značkovacího jazyka je všechno, jenom ne xhtml. Takže celý zbytek textu jis psal o čem?
...napadlo mě:
když něčemu změníš příponu neuděláš z toho xhtml
když něčemu dáš http hlavičku xhtml, taky z toho neuděláš xhtml
je to formát souboru a ne hlavička nebo přípona.
Nedejbože hlavička a přípona zaráz :)
Myslím, že jediné, co tenhle flame uhasí bude kompletní nastudování specifikací HTML, XHTML a XML (jednakt to pár dní zabere a jednak to třeba někteří pochopí)
tady je nějaký flame? Jestli jo, tak to se dá uhasit pivem. :-D
A jestli jsi z Brna, tak můžem hned. :-)
No FUJ!, že se nestydíš! Ty jsi nikdy nebyl u dobrovolných hasičů? Asi ne, protože kdyby jo, tak by jsi věděl, že na oheň patří jen a pouze voda!
Pivo se sice při požáru využívá taky, ale na jiných místech =D
No a zrovna já, to mám do Brna celkem daleko (i když v porovnání s tím, že za pár týdnů to budu mít do Brna přes půl zeměkoule, tak je to kousek ;), takže hasit budeš muset sám :)
Marek z Markova: OK, možná jsem měl uvést celý kód. Když jsem dal na konec ty tři adresy, asi to nebylo moc přehledné. Já jsem na to šel z druhé strany – dočetl jsem se tady, že XHTML nedává prostor prasárnám, tak jsem to chtěl zkusit a ZÁMĚRNĚ jsem napsal takovýto kód s očekáváním, co se stane. Takže tady napravuji svou chybu:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="cs" lang="cs">
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" />
</head>
<body>
<p><font face="Tahoma" color=red size=5>Text <b>text <I>text </B>text</i></font>
<p><A HREF="http://www.webzdarma.cz">webzdarma.cz</A>
</body>
Vrátím se k tomuto: „když něčemu změníš příponu neuděláš z toho xhtml
když něčemu dáš http hlavičku xhtml, taky z toho neuděláš xhtml
je to formát souboru a ne hlavička nebo přípona.“
A teď se teda ptám. Proč se Firefox chová úplně jinak v případě koncovky .xhtml (+ .xht) a úplně jinak v případě koncovky .htm (+ .html) a .php? Proč s koncovkou .xhtml vypíše správně „Chyba parsování XML“ a v ostatních případech stránku zobrazí? Proč se IE snaží stránku s příponou .xhtml ukládat?
Budu rád, když mi někdo odpoví, děkuji :-)
Ehm, nějakým záhadným způsobem zmizelo uzavření tagu html :-/
Ten nápad s pivem není špatný, bohužel Brno je celkem daleko.
Jinak podle mě tohle je normální diskuze, nebo se pletu?
mr.mare: podle mě, je důvod celkem jednoduchý:
1) FF, ikdyž jej mám hodně rád, je hot v některých směrech "odfláknutej" a typ souboru zjišťuje jen a pouze podle přípony, takže jakmile ho nakrmíš souborem, jehož koncovka je zip, tak s ním bude nakládat jako se zipem a vůbec, ale vůbec ho nezajímá, že jsi mu podstrčil obrázek, kterému jsi přepsal příponu (pouze příklad, dá se to použít na širší okruh příkladů).
2) s IE nemám zkušenosti (většinu dne u PC trávím ve společnosti Tučňáka, teda Chameleona ;), ale IE, jak všeobecně známo, je šmejd, si asi s některými složitějšími požadavky lepších uživatelů nedokáže poradit a radši je dává na stažení.
MzM: hele, tady máš příklad, že XHTML je kombinací XML a HTML:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="cs" lang="cs">
Obsahuje to od každýho kousek.
ÉÉÉ ... nic sem neřekl, chudák pívo! =D
Tom: jo, myslím, že teď jsi na to kápl ;-) uznávám, že XHTML „má něco do sebe“ (no tak dobře, je dokonalý :-P), ale na poli prohlížečů už je to horší o OS ani nemluvím (SUSE Linux rozhodně není nejrozřířenějším operačním systémem). Bohužel, dokud drží většinu IE + Win, tak je to takový… no řekněme pochybný…
mr.mare, zase, začátek to má jako xhtml, ale zbytek už pravidla xhtml nesplňuje. To je to samé jako jsi psal před tím. Já jsem pochopil, že to je jako kousek, že to není celé. Ale xhtml, právě přes ten DTD, který jsi uvedl v druhém příkladu předepisuje, co se v dalším textu objevit může a co ne. To, že je na začátku <?xml ... říká, že je to xml ( ;-) ) a že to musí splňovat pravidla pro xml. Takže ani druhý příklad není xhtml.
To, jak prohlížeče xhtml interpretují je druhá věc. Tam uznávám, že to není úplně optimální. Nic méně správně napsaný xhtml se vcelku slušně interpretuje ve většině prohlížečů.
Tom, v tvém příkladě vidím prosté xml s DTD, to že to náhodou je DTD xhtml, je druhá věc.
Už jsem došel na to, co jsem měl na začátku říct xhtml je podmnožina xml. Možná bych předešel mnoha nedorozumnění.
To jak prohlížeče začnou s dokumentem nakládat záleží spíš na http hlavičce než na příponě. To, že se při takové a takové příponě tváří prohlížeče jinak, je, podle mě, kvůli webovému serveru, který, právě na základě přípony, vytvoří hlavičku.
Schválně se podívejte, jaké hlavičky jsou posílány webovým serverem, když měníte přípony u souborů.
Nebo si zkuste vytvořit třeba "test.zip", který bude obsahovat std html a pošlete ho s hlavičkou text/html a vsadím se, že ho všechny prohlížeče zobrazí správně.
<?php
$name = 'html.zip';
$fp = fopen($name, 'rb');
header("Content-Type: text/html");
header("Content-Length: " . filesize($name));
fpassthru($fp);
exit;
?>
a ten html.zip třeba
<body>
<p>textik v html formatu</p>
</body>
Tom (manual.wz.cz)
S tou priponou, to mi neprijde jako odflaknute. Naopak, prijde mi to jako spravne chovani. Tomu se rika asociace souboru a dal uz si to prebira system, pokud s danym souborem neumi program pracovat.
Prave to je vseobecny omyl, ze by to melo automaticky detekovat obsah. Presne takoto funguji viry na MS Outlook Express, ze se posilaji jako ZIP/GIF, ale ve skutecnosti jsou to EXE a kdyz na to kliknes, system se k tomu postavi podle obsahu. Dekuji pekne za takove nestandartni chovani. Ani nevybafne hlaska, pozor, soubor nenio podle pripony, prejete si spustit jej jako EXE a tim riskovat v pripade viru moznou nakazu?
Marek z Markova: dobře, souhlasím, že ten příklad není XHTML, v tom případě analogicky kód
<p><i>text</p></i>
není HTML, protože neodpovídá specifikaci. Tak jsem se chtěl zeptat, jakým prasárnám XHTML narozdíl od HTML zabraňuje? A potom mám ještě dotaz, jakým způsobem? Jen tím, že je to tak ve specifikaci?
a teď pro všechny: ohledně hlaviček/přípon server opravdu generuje hlavičku podle přípony, tak jak popisuje Marek z Markova. Ale přístup prohlížečů se už liší – v konfiguraci Apache (na localhostu, Windows XP) jsem zadal, aby pro příponu .zip byla odesílána hlavička text/html. Potom jsem si vytvořil 2 .zip soubory: první přejmenováním obrázku .jpg, druhý přejmenováním .htm souboru.
• Firefox v prvním případě nabídl stažení (asi poznal binární data a příponu .zip), ve druhém případě zobrazil danou stránku.
• IE v prvním případě zobrazil obrázek (!), ve druhém zobrazil stránku.
Závěr nechám na každém z vás… (viz peta o příspěvek výš)
peta:
"Prave to je vseobecny omyl, ze by to melo automaticky detekovat obsah."
Tomu moc nerozumím. Co jiného je chování se podle přípony? Navíc příponou se dá něco zamaskovat (vir) typ souboru, který bývá u rozličných souborů na začátku. Předpokládám z toho, že nic jiného, jak dos/win jsi nikdy nepotkal, protože přípona je dosovský výmysl, i když připouším, že šikovný.
mr.mare.
<p><i>text</p></i>
není ani xhtml, protože neodpovídá specifikaci.
"Zabraňuje prasárnám".... to jsem já sice nepsal, ale budiž, je to tím, že je to ve specifikaci. Stejně jako HTML. Jiná páčka tam na to není ani pro html nebo se mýlím?
nj. prohlížeč není triviální program. Přímo bych řekl, že je složitý jak parní mlátička. Na co všechno musí být schopen zareagovat, co všechno musí skousnout. Pak (IE) může používat vlastnosti systému na kterém běží, tam se projeví třeba to, že rozzipuje obrázek....
nebo jinak. Apache jako takový umí posílat obsah zipnutý (kvůli menšímu objemu přenášených dat), prohlížeč to pozná a umí zobrazit rozzipovaný obsah. To je asi to, proč IE zobrazilo obrázek ze zipu. To je ale (podle mě) zase otázka nastavení a hlaviček (tohle nevím přesně, jenom vím, že se to tak dá nastavit).
No, a aby se tahle děsně složitá věc se spoustou chyb (dosaď libovolný prohlížeč) dala zjednodušit, tak si lidi vymysleli xhtml.
slovíčkaření!
Což takhle začít místo "XHTML zabraňnuje psát prasáckej kód" psát něco ve smyslu "XHTML umožňuje psát čistší kód než HTML"? Možná že potom bude na světě zase o kousek líp =)
MzM: hele, nenavážej se od přípon! Podle čeho by potom jako měly Windows rozpoznat typ souboru? =D
Marek z Markova, Tom: aha, zase jsem o něco chytřejší :-) Dík za vysvětlení a věnovaný čas.