Verze HTML

Školení, která pořádám

To, jakou verzi HTML použít, je z pohledu autora PHP kódu v podstatě jedno. Vybírat je možné jednak mezi HTML a XHTML a jednak mezi variantami Strict a Transitional (a případně Frameset). XHTML by bylo krásné, pokud bychom se mohli spolehnout na to, že se bude všude používat a že bude všude validní. Kdyby tomu tak bylo, mohli bychom např. robota rekurzivně procházejícího stránky napsat s využitím standardní XML knihovny a nebylo by nutné si psát vlastní parser používající např. regulární výrazy. Taková doba ale ještě nenastala a myslím, že globálně vzato ani nikdy nenastane.

Důraz bych proto kladl spíše na výběr varianty normy. Z varianty Strict byly odstraněny zastaralé prvky, které se většinou dají vyřešit pomocí CSS. Díky tomu je jazyk jednodušší a kód přehlednější. Další výhoda spočívá v tom, že prohlížeče se při použití této varianty přepnou do režimu, který je co nejvíce v souladu s normami (jinak se používá kompatibilní režim více odpovídající chování starších prohlížečů). Pozor ale např. na to, že Google Cache na začátek stránky přidá hlavičky, které kompatibilní režim vždy zapnou, a stránka se tak může zobrazit jinak. Internet Explorer 6 ale tento režim nepoužije v případě, kdy uvedete XML deklaraci, což podle normy musíte vždy, když kódování dokumentu není UTF-8. Pokud tedy toto kódování nepoužíváte, chcete zůstat v souladu s normou a využít výhod standardního režimu, musíte použít HTML.

Protože text s PHP příliš úzce nesouvisí, dávám k dispozici alespoň triviální kód pro vypsání XML deklarace, což může být v PHP se zapnutou direktivou short_open_tag menší problém.

<?php
echo "<?xml version='1.0' encoding='UTF-8' ?>\n";
?>
Jakub Vrána, Dobře míněné rady, 3.8.2005, diskuse: 19 (nové: 0)

Diskuse

ikona spaze:

ad XHTML/Strict, vcera me nastvalo chybejici atribut start u OL. Jeho odstraneni je trochu prehnany, pomoci CSS umi ocislovat seznam snad jen Opera a prece, neco tak dulezityho, jako jsou cisla (napr. u nejakyho postupu) by melo bejt soucasti i neostylovanyho dokumentu.

joe:

a proc za kazdou cenu pouzivat XHTML 8.15 (revize g) kterou stejne nikdy zadnej prohlizec nebude ctit. Vzdy tu jde predevsim o lidi a tem je uplne ukradeny, jestli je kod validni nebo ne. Proto neni duvod nepouzivat Transitional. Jestli chci vyuzivat XML/XSLT tak mam stejne smulu a rss je takova mala zrudicka, co si stejne bude zit vzdy svym vlastnim zivotem.

ikona Jakub Vrána OpenID:

Pro mě osobně je norma Strict především ochranou před sebou samým - kód je mnohem přehlednější a čitelnější, změny jsou jednodušší. Když je kód validní (podle jakékoliv normy), předchází se vzniku vizuálních chyb, protože různé prohlížeče ošetřují chyby různě, což je jeden z důvodů vizuální nejednotnosti stránek v různých prohlížečích.

Já normu a její dodržování chápu jako pomůcku pro tvůrce stránek, nikoliv pro jejich čtenáře.

ikona spaze:

"Já normu a její dodržování chápu jako pomůcku pro tvůrce stránek, nikoliv pro jejich čtenáře." Presne tak, normy jsou pro tvurce, ne pro koncovy uzivatele. Koho zajima nejaky RFC 2616, 2045, ja chci jen na ten Internet a jen poslat kamosovi peknej obrazek ;)

joe:

chtel sem jen rict, ze je lepsi vykaslat se na to, mit kod validni podle posledniho doporuceni a ten atribut vesele pouzivat. Jina vec je, jakym zpusobem zdroj tvorim. Kdyz sem prase a prekrizeny tagy mi najde az validator, je o necem jinym.

Juraj Krivda:

....Jestli chci vyuzivat XML/XSLT tak mam stejne smulu...
Mozete mi to vysvetlit preco mate smolu? Nejak som to nepochopil. Dik

joe:

kdyz sem podporu xslt v prohlizecich testoval (je to cca rok) mizerna podpora v prohlizecich, xpath brutalne orezanej, ... mozna se dost zmenilo, ale tomu zase tolik neverim.

Juraj Krivda:

No ja som zacal pracovat s XSLT asi pred dvoma rokmi a ziaden problem. Ste si isty ze viete o com je rec? Hlavne by ma zaujimala ta cast "mizerna podpora v prohlizecich". Co tym myslite?

Juraj Krivda:

Uz som to pochopil, vy ste mysleli na strane klienta. Toz to je nieco ine, mate pravdu to je ine kafe.

ikona dgx:

http://diskuse.jakpsatweb.cz/index.php?action=…&topic=6852

JohnyB:

Spaz0re, v tohle případě by mi bylo ukradené, že kód neprovaliduje s výchozím DTD - wellformed je, atribut dle mě má smysl významový, nikoliv prezentační (a především mu browsery rozumí), a pokud skutečně chceš formální splnění gramatiky, vlastní DTD (nebo modul u 1.1) budiž tvým vodítkem.

Ondřej:

Používejte kódování UTF-8 a nepoužívejte xml prolog <?xml version='1.0' encoding='UTF-8' ?> vůbec, a je pokoj.

Viz. např.:
http://interval.cz/clanek.asp?article=3710
stať:
"MSIE 6 - problematické zobrazování"

tark:

V tomhle musím souhlasit, protože nechápu, proč se ještě používají jiná kódování jak UTF ... Nemá to smysl. Sice PHP je to jaksi jedno (až na pár fcí), ale to teď neřešme.

Používání jiných kódování se shoduje v tomhle: Počkej, musím to překódovat do jinýho kódování, protože tady nemůžu psát azbukou. Ale tady zase nemám tyhle znaky ... apod.

Borek:

Osobně používám UTF-8, XHTML 1.0 strict a také _deklaraci_. Vyhovuje mi, že IE6 spadne do quirk modu, takže pro všechny verze IE ladím jen jednou. Samotný HTML kód je pak zcela validní a "takový, jaký by měl být".

Leo:

Otazka je, jestli tam spadne i IE7. Leo

JohnyB:

To zatím neví ani bůh, ani Chris Wilson, je to předmětem různých experimentů, co bude lepší. Předpokládám, že díky mentorování WaSP to nepodělají a skutečně vyberou to správné.

Martin Kupec:

"XHTML by bylo krásné, pokud bychom se mohli spolehnout na to, že se bude všude používat a že bude všude validní."
Tahle formulace mi přijde trochu divná. Pokud je XHTML validní s normou W3C tak je prostě validní a kde jinde by neměla být?
Pokud touto formulací myslíte různé zobrazování v různých prohlížečích, tak to je přece něco jiného než validita.

ikona Jakub Vrána OpenID:

Omlouvám se za nejasnost, tím "všude" jsem myslel na všech stránkách na webu a psáno to je z pohledu programátora, který by si mohl stáhnout jakoukoliv stránku, pustit na ni xml_parse() a dál se o nic nestarat.

msx:

Menší problém to určite nebude:
<?php
echo "<" . "?xml version='1.0' encoding='UTF-8' ?" . ">\n";
?>
Dokonca to zvládnu aj editory ako PSPad.

Diskuse je zrušena z důvodu spamu.

avatar © 2005-2024 Jakub Vrána. Publikované texty můžete přetiskovat pouze se svolením autora. Ukázky kódu smíte používat s uvedením autora a URL tohoto webu bez dalších omezení Creative Commons. Můžeme si tykat. Skripty předpokládají nastavení: magic_quotes_gpc=Off, magic_quotes_runtime=Off, error_reporting=E_ALL & ~E_NOTICE a očekávají předchozí zavolání mysql_set_charset. Skripty by měly být funkční v PHP >= 4.3 a PHP >= 5.0.