Editor: Steven Pemberton, W3C/CWI
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.
document.write() s XHTML?target odstraněn z XHTML 1.1?<img> nahrazeno <object>em v XHTML 2?xml:space nastaveno na zachování bílých znaků v XHTML? Nechci vidět žádné další mezery ve výstupu mého dokumentu.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.
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.
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.
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.
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é.
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.
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í.
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.
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.
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.
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.
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.
Ne. Pravidla CSS, která se vztahují pouze k HTML, lze aplikovat jen na dokumenty, které jsou doručeny jako text/html.
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.
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.
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.
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.
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í.
<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:
alt. Tento fakt znesnadňoval nástup formátu PNG, který je v mnoha ohledech lepší než GIF a JPG, takže byly dále používány nejběžnější formáty, které zajistily, že si tyto obrátky každý může zobrazit.alt nemůže být označkován, takže pokud jej použijete, dostanete pouze čistý text.longdesc k popisu obrázku pro lidi, kteří nemohou vidět, ale je jen zřídka implementován.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é.
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í.
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.
Copyright © 2004 W3C® (MIT, ERCIM, Keio), Všechna práva vyhrazena. W3C aplikuje pravidla na odpověnost, obchodní značku, použití dokumentu a licencování softwaru. Vaše interakce s touto stránkou podléhá našemu veřejnému a členskému právnímu ustanovení.