16 prosinec 2005, 20:05
rubrika XHTML-semantika
Nedávno jsem se chvílemi trochu nudil a tak jsem zabrousil na diskusi na webzdarma. Otevřu sekci HTML a co to mé oči nevidí? Téma s názvem XHTML a HTML. Nemohl jsem odolat a téma jsem poctil svou návštěvou. A nestačil jsem se divit.
Řešila se zde poměrně klasická otázka. Autor píše v HTML a rád by přešel na XHTML, ale ještě předtím by rád znal výhody nového jazyka. Většina příspěvků byla v rámci mezí, až na jeden, klasicky demagogický. Jedná se o příspěvek od Donnyho (první delší, nejde na něj odkázat). V tu chvíli jsem si uvědomil, jak moc zažrané musí být předsudky vůči XHTML. Autor příspěvku alespoň z poloviny lže a ostatní jen přikyvují, nikdo se neozve. Jak smutné, že se k propagaci XHTML musí používat přetvářka (nebo neznalost) a stejně tak je smutné, že největší propagátoři XHTML patrně mnohdy ani nečetli specifikaci…
Donny zmiňuje zcela klasické výmysly, že XHTML zrušilo značky jako
<center>
nebo <i>
, což samozřejmě
není pravda (kdo prošel mými testy, ten to již musí vědět). Pověra, že
XHTML ruší nějaké značky je hodně zažraná (podle mě nejvíce ze všech
pověr, které ohledně xhtml kolují), ale přitom to není pravda. Až XHTML
1.1 ruší první atribut name
. Zajímalo by mě, kdo to kdy
jako první vyslovil, že XHTML zrušilo některé formátovací prvky (jako
<i>
nebo <b>
). Stejně tak tento zápis
je proti pravidlům jak XHTML, tak i HTML:
<b><i>text</b></i>
. Mimojiné je
zajímavé, že Donny uvádí v příkladu na křížení tagů značky,
které jsou podle něj v rozporu se specifikací. Je ale zajímavé
sledovat reakce, když se propagátoři XHTML doví, že i zde se může
používat značka <font>
nebo
<center>
.
Druhá věc, která je v souvislosti s tímto tématem často
předhazována, je, že XHTML dokument musí mít bezpodmínečně oddělený
obsah od formy. To znamená styly v externím souboru, přímý zápis
nebo zápis mezi <style>
podle nich není možný. Setkal
jsem se s tím nedávno i na interforu.
Jestli někdo ví, kde je ve specifikaci XHTML psáno, že dokument
musí mít nutně obsah oddělený od formy, že je zakázán
přímý zápis stylů apod., nechť to prosím najde a hodí do komentářů
odkaz. Podle mého skromného názoru může stránka psaná v XHTML
používat klidně tabulkový layout a bude validní a podle specifikace.
Takže vzhledem k tomu, že test XHTML nedopadl zrovna pěkně (předchozí test dopadl o mnoho lépe, ale zase musím přiznat, že test byl opravdu hodně těžký), rozhodl jsem se udělat takovou stručnou rekapitulaci a pokusím se vyvrátit některé mýty, které v tomto oboru panují.
<i>
nebo <b>
jsou plně validní a nejsou ani zavržené, na to pozor (takže je můžete
použít i ve striktní verzi).<a href="#">jsem<span> <a
href="#">validní</a></span> stránka</a>
.<html>
,
<head>
a <body>
nepovinné. V XHTML
jsou povinné všechny a <html>
musí být kořenovým
elementem (to znamená, že musí obalovat celou stránku).<li>
) je hyenismus
největšího kalibru. Ovšem když se nad tím člověk zamyslí, dojde
k takřka šokujícímu zjištění. Pokud se totiž na konci odrážky
nevyskytuje ukončovací tag </li>
, ale další odrážka
<li>
, jak bude uvažovat prohlížeč? Aha, tohle bude
asi začátek další odrážky, tak to bych měl tu předešlou ukončit
a domyslí si ukončovací značku </li>
. Takže ať tam tu
značku člověk napíše nebo ne, v konečném důsledku tam vždy
bude.lang
, tak atribut xml:lang
, přičemž ten druhý má
přednost. Aby nedošlo k omylu – přednost má vždycky
xml:lang
, ne ten, který je druhý v pořadí :-)Já používám HTML, na XHTML přejdu, až to bude pro mě výhodné. Zatím to pro mě nemá jedinou praktickou výhodu. Věřím, že třeba takový Pacholliny ví, proč používá právě XHTML a ví, jaké to pro něj má výhody. Já to nevím. Netuším, čemu nebo komu bych pomohl, kdybych třeba tento svůj web přepsal do XHTML. I podle slov w3c, pokud nepoužíváte žádné další značkovací jazyky, prakticky žádný rozdíl nerozpoznáme. To znamená, že na většinu jednoduchých či středně složitých webů je zbytečné používat XHTML. Na ty složitější to již nejsem schopný posoudit.
Strašně mě totiž fascinují ti zarytí příznivci XHTML, kterých když se zeptáte, proč píší právě v XHTML tak vám řeknou buď jeden z mýtusů, které jsem nahoře vyjmenoval, nebo řeknou, že je to moderní a že je to budoucnost internetu. XHTML moderní možná je (i když už je také na světě nějaký ten pátek), ale to není přece jednoznačný a určující důvod k tomu, aby bylo tak hojně používáno a že je budoucností internetu? O tom se mi polemizovat nechce, nejsem věštec. Co vy víte, třeba za půl roku vznikne CHTML (Cool HyperText markup language), který XHTML úplně převálcuje ;-).
Ereses
— 23. prosinec 2005, 06:48
>Správný XHTML dokument by měl posílat MIME-type application/xhtml+xml, avšak w3c dovoluje posílat i staré text/html U XHTML 1.1 je to již nutné.
— 23. prosinec 2005, 09:23
Acci: Já myslím, že nemusí, nikde jsem nenašel zmínku o tom, že musí. Podle téhle tabulky by neměl mít text/html, ale není psané, že musí mít application/xhtml+xml nebo že nesmí mít text/html, takže se text/html může IMHO stále používat i u XHTML 1.1.
— 23. prosinec 2005, 11:48
Timy: Souhlasím s Accim a dokážu to. Faktem je, že specifikace text/html media type o XHTML 1.1 vůbec nemluví.
Ve specifikacích je pouze psáno, že XHTML 1.0, je-li fakticky psán HTML syntaxí a je-li kompatibilní s HTML 4.01, může být posílán s MIME typem text/html.
([XHTML1] defines a profile of use of XHTML which is compatible with HTML 4.01 and which may also be labeled as text/html.)
(http://www.w3.org/…media-types/#…)
Zajímavostí je, že nejnovější working draft WICD mluví o MIME typu XHTML 1.1 jako o application/xhtml+xml, používá však také slůvka SHOULD, tedy použití tohoto MIME typu není závazné.
(http://www.w3.org/…ll-20051121/#…)
Nicméně XHTML 1.1 DTD mluví o XHTML jako o REFORMULACI HTML do modulární XML aplikace. Čímž logicky presumuje použití MIME typu application/xhtml+xml.
Z tohoto také vychází W3C FAQ, které říká:
XHTML 1.1 is pure XML, and only intended to be XML. It cannot reliably be sent to legacy browsers. Therefore XHTML 1.1 documents must be sent with an XML-related media type, such as application/xhtml+xml.
(http://www.w3.org/…04/xhtml-faq#…)
Logicky tedy zůstává místo ještě pro použití application/xml, méně pravděpodobně i pro text/xml, ale pro text/html už nikoliv.
— 24. prosinec 2005, 20:43
Dřív jsem byl také neznalým příznivcem XHTML. Přesně ty samé argumenty jsem také používal. Dnes už v tom mám jasno – XHTML používám, protože je v módě. To je pro mě snad to jediné, v čem má nad HTML navrch.
A jen tak mimochodem – CHTML existuje, ale není Cool ale Compact. Viz http://en.wikipedia.org/wiki/C-HTML
— 24. prosinec 2005, 20:48
llook: A jen tak mimochodem – CHTML existuje – tak teď jsi mě teda doběhl, to mě fakt nenapadlo ověřovat si, jestli to existuje nebo ne;-)
Dnes už v tom mám jasno – XHTML používám, protože je v módě. – Tak já i v normálním běžném reálném životě mám tendenci nejít s dobou a nebýt v módě, takže dokud XHTML nebude mít nějaké objektivní výhody, tak u mě nepochodí, leda by mě někdo nutil.
— 25. prosinec 2005, 08:47
Někteří webdesigneři se domnívají, že neuzavírání nepárových tagů (jako třeba ) je hyenismus největšího kalibru. Ovšem když se nad tím člověk zamyslí, dojde k takřka šokujícímu zjištění.
Já jsem k šokujicímu zjištění nedošel, protože XHTML je DTD k XML a proto všechny tagy být uzavřené prostě musí. Není to tak hrozné, aby to člověka nějak zpomalovalo nebo dokonce omezovalo – jde o zvyk.
— 29. prosinec 2005, 15:07
K tomu neuzavírání tagů: toto je povolené jen pro určitou skupinu tagů, pro něž lze místo uzavření zcela jednoznačně automaticky určit. Tedy třeba ten Timyho příklad s ``.
Tedy skutečně to není prasárna, ale „feature“. Dokonce ani parsování takového dokumentu není o moc složitější, než parsování korektního XHTML.
— 30. prosinec 2005, 15:27
Musím říct, že tenhle blogpost se ti opravdu povedl. Máš naprostou pravdu – spousta lidí (webdesignérů) skutečné rozdíly HTML a XHTML nezná. Znám několik lidí, kteří přepisují do XHTML metodou pokus-omyl a to ještě vlastně nedokáží říct, proč je to pro ně výhodné.
Já používám XHTML 1.0 ve striktní verzi, ale používání HTML nemám za zlé. Nějaké reálné výhody tu možná zatím nejsou, ale třeba časem budou…