W3C Dokumenty a standardy v češtině

HTML a XHTML: Často zodpovídané dotazy

Dokument W3C z 21. července 2004

Editor: Steven Pemberton, W3C/CWI

Originální dokument:
http://www.w3.org/MarkUp/2004/xhtml-faq.html
Editor originálního dokumentu:
Steven Pemberton, W3C/CWI
Verze dokumentu:
http://dsic.zapisky.info/XML/XHTML/FAQ/
http://dsic.zapisky.info/archive/XHTML-FAQ-20040728/
Autoři překladu:
Michal Trna, Josef Petrák
Datum vydání:
28. července 2004

Tento dokument je překladem dokumentu „HTML and XHTML Frequently Answered Questions“ publikovaného organizací W3C na adrese http://www.w3.org/MarkUp/2004/xhtml-faq.html. Na dokument jsou uplatňována intelektuální práva, která dodržujeme. I přes veškerou snahu může tento dokument obsahovat menší chyby způsobené překladem. Pokud takové nepřesnosti objevíte, kontaktujte některého z autorů, děkujeme.

Související dokumenty FAQ:

Komentáře nebo návrhy na otázky prosím směřujte na e-mail www-html-editor@w3.org, do předmětu uveďte slovo FAQ.

Obsah

  1. Proč je potřeba XHTML? Není HTML dost dobré?
  2. Jaké jsou výhody použití XHTML oproti HTML?
  3. Můžu jenom přidat XML deklaraci na začátek existujícího HTML dokumentu? Můžu smíchat HTML 4.01 a XHTML dokumenty?
  4. Jaká je nejsnazší cesta, jak zkonvertovat HTML dokumenty do XHTML?
  5. Proč jsou browsery ohledně XML tak puntíčkářské? U HTML byly více tolerantní.
  6. Proč bych se měl starat o to, jestli je můj dokument korektní HTML? V mém browseru se zobrazuje správně.
  7. Kde si můžu ověřit, zda můj dokument je správně označkován?
  8. Proč říkáte pořád „uživatelský software“ místo „browser“?
  9. Proč musím používat jmenné prostory v XHTML?
  10. Proč je povoleno posílat dokumenty XHTML 1.0 jako text/html?
  11. Které browsery přijímají media type application/xhtml+xml?
  12. Akceptuje Microsoft Internet Explorer media type application/xhtml+xml?
  13. CSS má mnoho speciálních pravidel, která se vztahují jen k HTML. Pracují i s XHTML?
  14. Pracuje document.write() s XHTML?
  15. Proč není povoleno posílat dokument XHTML 1.1 jako text/html?
  16. Proč byl atribut target odstraněn z XHTML 1.1?
  17. Jaké je použití XHTML Modularizace?
  18. Proč je potřeba XHTML 2? Není XHTML 1 dost dobré?
  19. Je <img> nahrazeno <object>em v XHTML 2?
  20. Proč XHTML 2 nepoužívá XLink?
  21. Proč není XHTML 2 zpětně kompatibilní?
  22. Proč je xml:space nastaveno na zachování bílých znaků v XHTML? Nechci vidět žádné další mezery ve výstupu mého dokumentu.

Proč je potřeba XHTML? Není HTML dost dobré?

HTML je pravděpodobně nejúspěšnější značkovací jazyk pro dokumenty na světě. Ale když bylo uvedeno XML, bylo na dvoudenním workshopu diskutováno, zda je potřeba nová verze HTML v XML. Všeobecným názorem bylo prosté „Ano“: s HTML založeným na XML mohou ostatní jazyky získat kusy XHTML a XHTML dokument může obsáhnout jiné značkovací jazyky. Mohli jsme využít změny návrhu k tomu, abychom vyčistili některé části HTML a přidali naopak více funkčnosti.

Jaké jsou výhody použití XHTML oproti HTML?

Pokud je váš dokument pouze čisté XHTML 1.0 (neobsahuje žádné další značkovací jazyky) potom nezaznamenáte příliš mnoho změn. Nicméně, jak se objevují další a další nástroje pro XML, jako je XSLT pro transformování dokumentů, začnete objevovat výhody použití XHTML. XForms například umožňují editovat XHTML dokumenty (nebo nějaký jiný druh XML dokumentů) velmi jednoduše. Aplikace pro semantický Web budou schopné využít výhod XHTML dokumentů.

Pokud je váš dokument více než jen XHTML 1.0, například obsahuje MathML, SMIL nebo SVG, potom výhody jsou jasné: toto byste s HTML nemohli vůbec udělat.

Můžu jenom přidat XML deklaraci na začátek existujícího HTML dokumentu? Můžu smíchat HTML 4.01 a XHTML dokumenty?

Ne. HTML není XML formát. Musíte udělat změny nezbytné k tomu, aby byl dokument korektní předtím než z něj uděláte XML.

Jaká je nejsnazší cesta jak zkonvertovat HTML dokumenty do XHTML?

HTML Tidy vám dává možnost transformovat jakýkoliv HTML dokument do XHTML 1. Amaya je prohlížeč / editor, který ukládá HTML dokumenty jako XHTML.

Proč jsou browsery ohledně XML tak puntičkářské? U HTML byly více tolerantní.

Tak je to záměrně. HTML prohlížeče akceptují jakýkoliv vstup, korektní nebo nekorektní, a snaží se s tím udělat něco smysluplného. Toto opravování chyb způsobuje, že jsou prohlížeče velmi těžce naprogramovatelné, zejména pokud se očekává, že by všechny prohlížeče měly dělat stejnou věc. Bylo též zjistěno, že velmi mnoho HTML dokumentů je chybných, protože když se v prohlížeči zobrazí správně, autor si neuvědomí chyby. Toto způsobuje, že je velmi složité napsat nový uživatelský software, když dokumenty, které se tváří jako HTML jsou často velmi špatné.

Proč bych se měl starat o to, jestli je můj dokument korektní HTML? V mém prohlížeči se zobrazuje správně.

Všechny prohlížeče ví, jak se vypořádat s korektním HTML. Ale pokud korektní není, prohlížeč musí opravit dokument a protože ne všechny prohlížeče ho opraví stejným způsobem, může váš dokument vypadat a pracovat různě na různých prohlížečích. Od té doby, co máme stovky různých prohlížečů a další stále přicházejí (ne jen pro PC, ale i pro PDA, mobily, televize, tiskárny, ale také ledničky), je nemožné testovat váš dokument na každém prohlížeči. Pokud používáte nekorektní HTML a váš dokument nepracuje na některém prohlížeči, je to vaše chyba; pokud používáte korektní HTML a dokument nepracuje, je chyba v prohlížeči.

Kde si můžu ověřit, zda můj dokument je správně označkován?

W3C nabízí službu na adrese http://validator.w3.org/. Prohlížeč / editor Amaya také zjišťuje, zda vaše značkování je korektní.

Proč říkáte pořád „uživatelský software“ místo „prohlížeč“?

Třebaže jsou prohlížeče samozřejmě důležitými uživateli HTML a XHTML, jsou zde i jiné programy a systémy, které čtou tyto dokumenty, vyhledávací software například nejsou prohlížeče. Užíváním termínu „uživatelský software“ se snažíme poukázat na tento rozdíl.

Pokud například hledáte něco na Googlu, uvidíte pod některými výsledky hledání něco jako „Tato stránka obsahuje rámy, ale váš prohlížeč je nepodporuje.“ Toto jistě odstraší některé uživatele od kliknutí na takový odkaz. Autor stránky pokládající tuto otázku si neuvědomil, že máme i jiné věci než jenom prohlížeče, a že ty by měly raději vzít obsah <noframes>, takže potom nevypadají tak hloupě, když někdo najde jejich stránku.

Proč musím používat jmenné prostory v XHTML?

V ranných dobách HTML různé skupiny a společnosti přidávaly nové elementy a atributy do HTML jak se jim zachtělo. To vyústilo v chaos různých spolupráce neschopných verzí HTML. XML (to X znamená eXtensible - rozšířitelný) umožňuje každému použít elementy z různých jazyků, ale prohlížeči nebo jinému uživatelskému softwaru musíte říct, který element patří ke kterému jazyku. Deklarace jmenných prostorů dělá přesně tohle.

Proč je povoleno posílat dokumenty XHTML 1.0 jako text/html?

XHTML je XML formát; to znamená, že by mělo být odesláno s media typem z rodiny XML (application/xhtml+xml, application/xml nebo text/xml). Avšak XHTML 1.0 bylo důkladně navrženo, aby pracovalo také na přeživším uživatelském softwaru. Pokud se budete držet několika jednoduchých doporučení, můžete přimět mnoho starých browserů k práci s XHTML 1.0. To rozumí z media typů pouze text/html, takže ho musíte použít, pokud jim odesílate dokument XHTML 1.0. Ale buďte připraveni, že odeslání XHTML dokumentů těmto browserům jako text/html znamená, že je tento software chápe jako HTML dokumenty a nikoliv XHTML.

Které browsery přijímají media type application/xhtml+xml?

Mezi browsery, které jsou nám známy, jsou to všechny z rodiny Mozilly jako je Mozilla, Netscape 5+, Galeon a Firefox, také Opera, Amaya, Camino, Chimera, DocZilla, iCab, Safari, a všechny browsery z mobilních telefonů, které umí pracovat s WAP 2. Vlastně všechny moderní browsery. Nejčastněji přijímají XHTML dokumenty tajé jako application/xml. Pro detaily se podívejte na stránku XHTML Media-type test.

Akceptuje Microsoft Internet Explorer media type application/xhtml+xml?

Ne. Ale existuje trik, který umožňuje předat XHTML 1.0 dokumenty Internet Exploreru jako application/xml.

Vložte na začátek dokumentu zvýrazněné řádky:

<?xml version="1.0" encoding="iso-8859-1"?>
<?xml-stylesheet type="text/xsl" href="copy.xsl"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
          "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>

Soubor  copy.xsl je XSLT trasformační soubor obsahující:

<stylesheet version="1.0" xmlns="http://www.w3.org/1999/XSL/Transform">
  <template match="/">
    <copy-of select="."/>
  </template>
</stylesheet>

Tento soubor musí být na stejném místě jako dokument, který se na něj odkazuje.

Přestože posíláte dokument jako XML - a on je parsován jako XML -, browser předpokládá, že dostal  text/html, a tak váš XHTML 1.0 dokument musí splňovat mnoho směrnic pro použití browsery.

Váš XHTML dokument bude pracovat na browserech, které akceptují XHTML 1.0 jako application/xml.

CSS má mnoho speciálních pravidel, která se vztahují jen k HTML. Pracují i s XHTML?

Ne. Pravidla CSS, která se vztahují pouze k HTML, lze aplikovat jen na dokumenty, které jsou doručeny jako text/html.

Pracuje document.write() s XHTML?

Ne. Kvůli způsobu, jakým je XML definováno, není možné používat triky jako je tento, kde dokument je generován při skriptování, zatímco parser stále parsuje dokument.

Můžete ale stále dosáhnout stejného efektu, musíte k tomu ale použít přidávání/odebírání elementů pomocí DOM.

Proč není povoleno posílat dokument XHTML 1.1 jako text/html?

XHTML 1.1 je a má být čisté XML. Nemůže být spolehlivě posláno zastaralým browserům. Proto také XHTML 1.1 dokumenty musí být poslány s media typem založeným na XML, jako je application/xhtml+xml.

Proč byl atribut target odstraněn z XHTML 1.1?

Nebyl. XHTML 1.0 příchází ve třech verzích: Strict, Transitional a Frameset. A všechny tyto verze se po zralé úvaze držely jak jen to bylo v rámci XML možné HTML 4.01. XHTML 1.1 je vylepšená verze XHTML 1.0 Strict a nikdy žádná verze HTML Strict neobsahovala atribut target. V ostatních dvou verzích, tj. Transitional a Frameset, nebyly provedeny změny, protože nebylo co měnit. Pokud chcete používat atribut target, použijte XHTML 1.0 Transitional.

Jaké je použití XHTML Modularizace?

XHTML Modularizace není zaměřená na běžné uživatele XHTML, ale na návrháře jazyků založených na XHTML. Bylo zjištěno, že společnosti a skupiny mají sklon navrhovat vlastní verze HTML a XHTML, které nebyly často schopné spolupracovat na základní úrovni. XHTML Modularizace dělí XHTML do mnoha modulů, které mohou být individuálně vybrány při definici nového jazyka; takto je zaručeno, že jakýkoliv jazyk založený na XHTML, který používá tabulky, používá stejné definice. Modularizace také poukazuje, kde by bylo dobré přidat nové elementy a kde ne.

Proč je potřeba XHTML 2? Není XHTML 1 dost dobré?

HTML a XHTML prokázaly dobrou službu, ale je tu ještě hodně věcí, které mohou být zlepšeny. Oblasti, na které jsme zaměřili pozornost, jsou mimo jiné lepší možnosti strukturovat, odstranění věcí, které jsou duplicitní v rámci XML, dále použitelnost, dostupnost, internacionalizace, nezávislost na zařízení, vylepšení formulářů a snížení potřeby skriptování.

Je <img> nahrazeno <object>em v XHTML 2?

Ne. <img> je nahrazeno v XHTML2, ale něčím jiným (přestože můžete používat <object>).

Návrh <img> má v HTML několik nevýhod:

XHTML 2 říká, že všechny obrázky jsou ekvivalentní nějakému obsahu; to je zařízeno možností přidat atribut src k jakémukoliv elementu. Co je tím myšleno: pokud je obrázek dostupný a prohlížeč ho může zpracovat, použije ho, v opačném případě použije obsah elementu. Ukázka:

<p src="map.png">Exit from the station, turn left, 
   go straight on to <strong>High Street</strong>,
   and turn right</p>

Výhodou tohoto je, že pokud obrázek není z nějakého důvodu dostupný (porucha sítě) nebo jej nemůže prohlížeč vykreslit, váš dokument bude stále použitelný. Pokud chcete podporovat více než jeden formát, můžete to udělat takto:

<p src="map.png"><span src="map.gif">Exit from station...</span></p>

Přesto je nejlepší používat výměnu informací o podporovaných formátech, pokud ji váš server podporuje (většina ano):

<p src="map">Exit from station...</p>

Tak se prohlížeč se serverem dohodne, jaký formát obrázku je podporován a prohlížeč dostane svůj preferovaný. Pokud není žádný dostupný obrázek, potom by měl být použitý obsah elementu. Toto má další výhodu v tom, že můžete později přidat další typy obrázků a nemusíte kvůli tomu měnit stránky.

XLink a XHTML mají rozdílné požadavky na odkazování, které se ukázaly jako neslučitelné.

Proč není XHTML 2 zpětně kompatibilní?

Je, ale v jiném smyslu než, jak to bylo u předchozích verzí HTML.

Protože starší verze HTML byly jazyky se speciálním účelem, bylo nezbytené zaručit nějakou míru zpětné kompatibility s novými verzemi tak, aby byly nové dokumenty stále použitelné ve starých prohlížečích. Proto například je obsah elementu <meta> v jeho atributech a ne uvnitř samotného elementu; jinak by se ve starších prohlížečích zobrazil (jako text).

Avšak díky XML a stylům tato striktní zpětná kompatibilita není nutná, protože browsery podporující XML,což je nyní 95% používaných browserů, jsou schopny zpracovávat nové značkovací jazyky bez nutnosti aktualizace prohlížeče. Mnoho z XHTML 2 již pracuje ve stávajících prohlížečích, prohlížečích, které nejsou předprogramovány ke zpracování XHTML 2. Mnoho z toho pracuje, ale ne všechno: když byly do HTML přidány tabulky a formuláře, uživatelé museli počkat na nové verze prohlížečů; a stejné je to s některými částmi XHTML 2, mj. XForms a XML Events, které stále vyžadují software, který jim rozumí.

Proč je xml:space nastaveno na zachování bílých znaků v XHTML? Nechci vidět žádné další mezery ve výstupu mého dokumentu.

Atribut xml:space rozhoduje o vstupu: je třeba říct, že rozhoduje, zda mezery budou mít efekt na DOM (například ve vnitřní verzi dokumentu uvnitř prohlížeče); neříká to nic o tom, co se objeví nebo neobjeví na obrazovce. Mezery na výstupu jsou pod kontrolou CSS, konkrétně vlastnosti whitespace. Nastavte ji na pre a mezery v DOM budou zachovány; nastavte ji na normal a mezery budou staženy (s CSS3 budete mít více možností, jak uplatnit kontrolu nad nimi).

Toto je důvod, proč je v XHTML 2 u všech elementů nastaveno xml:space="preserve", jinak by vlastnost CSS whitespace neměla žádný efekt a vy byste neměli žádnou kontrolu nad viditelností mezer. Standardně je u stylů nastaveno whitespace na normal pro všechny elementy s výjimkou elementu <pre>, ale vy budete mít možnost na tom cokoliv měnit.


Stránka je přístupná podle specifikace WCAG 1.0, úroveň AAA Kód stránky je validní podle doporučení XHTML 1.1 Stylový předpis stránky je validní podle doporučení CSS 2

RDF Metadata