Mo₧nost vytvß°et si v jazyce XML dokumenty, kterΘ budou pou₧φvat vlastnφ sadu tag∙ vyhovujφcφch naÜim po₧adavk∙m, je velice lßkavß a u₧iteΦnß. Na druhou stranu, pokud budou dokumenty zve°ej≥ovßny p°edevÜφm na Webu, nenφ nutnΘ vÜe d∞lat znovu od zaΦßtku. V mnoha p°φpadech bude mnohem jednoduÜÜφ a rychlejÜφ pou₧φt za₧itΘ a Φasem ov∞°enΘ znaΦky, kterΘ znßme z HTML, a pouze je doplnit o pßr nov²ch tag∙, kterΘ naÜim dokument∙m p°idajφ inteligenci.
Konsorcium W3C proto pracuje na novΘm nßvrhu jazyka HTML, kter² bude zalo₧en na XML a p∙jde jej tedy snadno rozÜi°ovat. Nov² jazyk ponese pravd∞podobn∞ jmΘno XHTML (eXtensible HyperText Markup Language). Sl∙vko "pravd∞podobn∞" je velice d∙le₧itΘ, proto₧e vÜe je ve stßdiu p°φprav a nßvrh∙ a nejednß se zatφm o ₧ßdn² oficißlnφ standard. Po₧adavky tv∙rc∙ a u₧ivatel∙ strßnek jsou vÜak jasnΘ, tak₧e je jen otßzkou Φasu, kdy se XHTML stane standardem a jak se bude ve svΘ finßlnφ podob∞ jmenovat.
Strßnky XHTML musφ spl≥ovat mnohem p°φsn∞jÜφ syntaktickß pravidla ne₧ dneÜnφ HTML strßnky. DneÜnφ prohlφ₧eΦe se dokß₧φ vypo°ßdat s mnoha chybami ve strßnkßch, jako jsou p°ek°φ₧enΘ elementy, Üpatn∞ spßrovanΘ tagy apod. XHTML vÜak vy₧aduje, aby vÜechny strßnky byly XML-dokumenty, a musφ proto dodr₧ovat sprßvnou strukturu.
Strßnky musφ odpovφdat jednomu ze t°φ DTD stejn∞ jako v HTML
4.0. Prvnφ DTD (Strict) je urΦeno pro strßnky, kterΘ neobsahujφ ₧ßdnΘ
prezentaΦnφ elementy a atributy definujφcφ vzhled dokumentu (jako
font
, align
apod.). Vzhled strßnky je pak
upraven pouze pomocφ styl∙. DruhΘ DTD (Transitional) je urΦeno pro
vÜechny strßnky -- zahrnuje v sob∞ vÜech elementy a atributy
z HTML 4.0, vΦetn∞ t∞ch prezentaΦnφch. Poslednφ DTD (Frameset) se
pou₧ije na strßnkßch, kterΘ obsahujφ definici rozd∞lenφ okna
prohlφ₧eΦe na n∞kolik rßm∙.
U₧ivatelem definovanΘ elementy mohou b²t snadno p°idßny pomocφ dalÜφho prostoru jmen (namespace). V praxi to znamenß, ₧e v jednom dokumentu m∙₧eme najednou pou₧φt elementy z n∞kolika DTD a kombinovat je dohromady podle naÜich pot°eb.
Krom∞ snadnΘ rozÜi°itelnosti p°inese XHTML jeÜt∞ jednu velkou v²hodu. Po roce 2000 bude Φφm dßl tφm vφce lidφ p°istupovat k Webu z mΘn∞ v²konn²ch za°φzenφ ne₧ jsou dneÜnφ poΦφtaΦe PC. P°φstup k Internetu se stane b∞₧nou zßle₧itostφ a budou se k n∞mu vyu₧φvat r∙znΘ WebTV, mobilnφ telefony, osobnφ komunikßtory, telefony s jednoduch²m terminßlem a dalÜφ pom∞rn∞ primitivnφ za°φzenφ. Tato za°φzenφ nemohou obsahovat slo₧it² k≤d dneÜnφch prohlφ₧eΦ∙, kter² z HTML strßnek odstra≥uje syntaktickΘ chyby autor∙. Tφm, ₧e XHTML dokumenty vyhovujφ XML, je lze velice snadno Φφst pomocφ pom∞rn∞ mal²ch a jednoduch²ch XML-parser∙.
V dalÜφch verzφch XHTML se poΦφtß s tφm, ₧e cel² dneÜnφ jazyk HTML bude rozd∞len do n∞kolika modul∙. Ka₧d² modul bude obsahovat pouze urΦitou skupinu element∙ -- nap°. zßkladnφ elementy, elementy pro tvorbu seznam∙, tabulek Φi formulß°∙.
Jeliko₧ mß ka₧dΘ v²stupnφ za°φzenφ (PC, WebTV, mobilnφ komunikßtor) jinΘ schopnosti, bude zapot°ebφ jednotn² zp∙sob, jak definovat schopnosti urΦitΘ t°φdy v²stupnφch za°φzenφ. Pro skupinu za°φzenφ se stejn²mi schopnostmi proto bude existovat jeden tzv. profil, kter² bude nΘst informace o mo₧nostech za°φzenφ. Profil bude obsahovat v²Φet podporovan²ch modul∙ XHTML a jin²ch DTD, grafick²ch formßt∙ apod. Auto°i strßnek pak budou jasn∞ v∞d∞t, na kter²ch za°φzenφch bude mo₧nΘ jejich strßnky prohlφ₧et. Nenφ ani vylouΦeno, ₧e webovΘ servery budoucnosti budou um∞t na po₧ßdßnφ klienta automaticky p°evßd∞t dokumenty mezi r∙zn²mi profily (pokud to samoz°ejm∞ bude technicky mo₧nΘ).
V nßsledujφcφm textu si m∙₧ete p°eΦφst, jak dneÜnφ strßnky upravit tak, aby vyhovovaly XHTML a zßrove≥ byly stravitelnΘ i pro dnes pou₧φvanΘ prohlφ₧eΦe, kterΘ o XHTML zatφm nic nev∞dφ.
V p°edchozφm textu jsme vysv∞tlili, proΦ bude v blφzkΘ budoucnosti v²hodnΘ p°evΘst strßnky do XHTML. Podφvejme se proto podrobn∞ji na to, co bude v praxi znamenat p°evedenφ strßnek z HTML do XML (XHTML).
Jeliko₧ strßnky v XHTML jsou XML-dokumenty, musφ spl≥ovat po₧adavky stejnΘ jako ka₧d² XML-dokument. Zßkladnφm po₧adavkem je dodr₧enφ sprßvnΘ struktury (well-formedness). To znamenß, ₧e vÜechny tagy musφ b²t pßrovΘ nebo b²t zapsßny specißlnφm zp∙sobem (viz nφ₧e). Zßrove≥ nesmφ strßnka obsahovat ₧ßdnΘ p°ek°φ₧enΘ tagy, jak je tomu na dneÜnφch strßnkßch zvykem.
<!-- Üpatn² zßpis --> <p>Odstavec se <em>zv²razn∞nφm.</p></em> <!-- sprßvn² zßpis --> <p>Odstavec se <em>zv²razn∞nφm</em>.</p>
V XML zßle₧φ v nßzvech element∙ a atribut∙ na velikosti
pφsmen. VÜechny elementy a atributy proto musφ b²t zapisovßny mal²mi
pφsmeny. V XHTML slou₧φ tag '<li>
' pro zahßjenφ
polo₧ky seznamu, oproti tomu tag '<LI>
' nemß
p°i°azen ₧ßdn² v²znam.
DalÜφm omezenφm, kterΘ mß XHTML, je nutnost uvßd∞nφ ukonΦovacφch
tag∙ u vÜech element∙, kterΘ nejsou prßzdnΘ. V∞tÜina z nßs je
nap°φklad zvyklß, ₧e staΦφ zahßjit odstavec pomocφ tagu
'<p>
'. V XHTML vÜak musφme odstavec ukonΦit
odpovφdajφcφm '</p>
'.
Narozdφl od HTML musφme nynφ v₧dy obsah atribut∙ uzavφrat do uvozovek nebo apostrof∙. Krom∞ toho nem∙₧eme pou₧φvat minimalizaci atribut∙. To znamenß, ₧e nap°φklad u p°epφnacφch tlaΦφtek formulß°∙ musφme mφsto
<input type="radio" name="platba" value="hotovost" checked>
pou₧φt
<input type="radio" name="platba" value="hotovost" checked="checked">
Vidφme, ₧e vÜe je pod°φzeno co nejsnazÜφmu automatickΘmu zpracovßnφ dokument∙.
Aby XML-procesor ihned poznal, zda tag je pßrov² Φi nepßrov²,
musφme vÜechny nepßrovΘ elementy jako br
a
hr
ukonΦovat pomocφ '/>
' --
<br/>
, <hr/>
apod.
Popsali jsme si v∞tÜinu zm∞n, kterΘ je pot°eba v naÜich strßnkßch ud∞lat, aby vyhovovaly XHTML. RuΦnφ provßd∞nφ t∞chto zm∞n by bylo jist∞ zdlouhavΘ a pracnΘ. Konsorcium W3C proto zdarma nabφzφ program Tidy, kter² umφ odstranit mnoho chyb ze stßvajφcφch HTML strßnek a p°evΘst je do XML. Program je dostupn² na adrese http://www.w3.org/Status.html#TIDY. Hodφ se i pro mnoho dalÜφch ·Φel∙. Nap°φklad umφ krßsn∞ zaΦistit HTML k≤d vygenerovan² r∙zn²mi textov²mi editory -- nap°. MS Wordem.
Strßnky vytvß°enΘ pomocφ XHTML p°inßÜejφ mnoho nov²ch mo₧nostφ jak autor∙m, tak u₧ivatel∙m strßnek. Nem∙₧eme vÜak Φekat, ₧e jako mßvnutφm kouzelnΘho proutku budou vÜechny pou₧φvanΘ prohlφ₧eΦe podporovat XHMTL. V nßsledujφcφch odstavcφch naleznete rady, jak psßt strßnky v XHTML tak, aby byly ΦitelnΘ i pro dnes b∞₧n∞ pou₧φvanΘ prohlφ₧eΦe.
V XML jsou nepßrovΘ tagy ukonΦeny znaky
'/>
'. S touto dvojicφ znak∙ vÜak v∞tÜina
prohlφ₧eΦ∙ nepoΦφtß. P°ed ukonΦovacφ znak bychom proto m∞li psßt
mezeru -- starÜφ prohlφ₧eΦe pak lomφtko ignorujφ jako neznßm²
atribut. P°φklad:
<br /> <hr /> <img src="logo.gif" width="320" height="160" alt="Logo" />
Pokud pot°ebujeme pou₧φt element, kter² je normßln∞ pßrov², pouze jako nepßrov², nem∞li bychom pou₧φvat minimalizovanou formu. P°φklad:
<p><p/> <!-- sprßvnΘ odd∞lenφ textu --> <p /> <!-- ÜpatnΘ odd∞lenφ textu -->
V XML majφ znaky '<
', '&
' a
']]>
' specißlnφ v²znam. Pokud tyto znaky obsahujφ
skripty nebo kaskßdovΘ styly vlo₧enΘ ve strßnce, je lepÜφ tyto skripty
a styly ulo₧it do samostatnΘho souboru.
V XML jsou v obsahu atribut∙ vÜechny zbyteΦnΘ mezery a konce °ßdk∙ nahrazovßny mezerou jedinou. Toto chovßnφ je odliÜnΘ od praxe dneÜnφch prohlφ₧eΦ∙. V obsahu atribut∙ bychom se proto m∞li vyhnout opakovßnφ vφce mezer za sebou a konc∙m °ßdek.
Pokud u n∞jakΘho elementu urΦujeme jazyk jeho obsahu, m∞li bychom
krom∞ atributu xml:lang
pou₧φt i lang
, kter²
je podporovßn prohlφ₧eΦi.
Pokud se v XML odkazujeme na Φßsti dokumentu pomocφ fragmentu (za URL je
p°idßno '#nßv∞stφ
'), vztahuje se fragment k elementu
oznaΦenΘmu pomocφ atributu id
. V∞tÜina prohlφ₧eΦ∙ vÜak
atribut id
nepodporuje a musφme pou₧φt i starÜφ atribut
name
u elementu a
. P°φklad:
<h2><a name="nadpisx" id="nadpisx">Ukßzkov∞ oznaΦen² nadpis</a></h2>
Pokud mßme v dokumentu urΦeno k≤dovßnφ pomocφ
<?xml version="1.0" encoding="iso-8859-2"?>m∞li bychom k≤dovßnφ urΦit i v HTML hlaviΦce, odkud jej Φtou dneÜnφ prohlφ₧eΦe:
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2">
P°i tomto urΦovßnφ zp∙sobu k≤dovßnφ bychom se m∞li ujistit, ₧e na serveru neb∞₧φ n∞jak² modul pro automatickou zm∞nu k≤du, kter² p°i p°ek≤dovßnφ dokumentu nezm∞nφ p°φsluÜnß jmΘna k≤du v hlaviΦkßch.
Poslednφ v∞cφ, kterou si musφme uv∞domit, je neschopnost n∞kter²ch
prohlφ₧eΦ∙ korektn∞ ignorovat instrukce pro zpracovßnφ (processing
instructions) -- '<? ... ?>
'. Tyto instrukce
se v XML pou₧φvajφ nap°φklad pro p°ipojenφ stylu definujφcφho vzhled
dokumentu.