XML: Další magická zkratka internetového světa

V počítačové branži můžeme stále častěji slyšet o jazyku XML (eXtensible Markup Language). Všichni přisuzují XML...


V počítačové branži můžeme stále častěji slyšet o jazyku XML (eXtensible Markup
Language). Všichni přisuzují XML velice slibnou budoucnost a mluví o něm jen v
superlativech. Pravdou ovšem je, že přesnou představu o tom, co XML je, má jen
velice málo počítačových odborníků. V dnešním Tématu týdne rozptýlíme mlhu,
která XML zahaluje. Po jeho přečtení budete sami schopni posoudit, zda si XML
pozornost zaslouží oprávněně.
Podíváme se, jaká je souvislost mezi XML a zkratkami, které se nejčastěji
vyskytují v blízkosti tohoto pojmu (HTML, CSS, XSL, SGML, DTD...). Naučíme se
základy jazyka XML, povíme si i něco málo o aplikacích využívajících vlastností
tohoto jazyka...
Nástupce HTML
V současné době se o XML hovoří nejčastěji v souvislosti s Webem a považuje se
za nástupce dnes používaného jazyka HTML. Výhoda XML spočívá v tom, že autor
stránky může používat vlastní tagy, které dokáží mnohem přesněji označit význam
prezentovaných informací. To má velký význam především pro vyhledávání. Dnešní
Web je totiž přehlcen a nalézt konkrétní informaci je stále obtížnější. Tento
problém nevyřeší sebelepší prohledávací servery, pokud jim nepomohou autoři
stránek, kteří pomocí XML uloží do dokumentů mnohem více metainformací.
V jazyce HTML musíme z větší části definovat, jak se má daný text zobrazit, a
ne co znamená. Představme si nyní, že by část ceníku byla zapsána pomocí XML
následujícím způsobem:
Nyní víme, jaký význam mají jednotlivé části stránky. Víme, že "Hifi věž
SuperSound PX 537" je název výrobku a že stojí 8 356 korun. Není problém zadat
vyhledávacímu serveru příkaz k nalezení všech stránek, které obsahují informace
o dané hifi věži, a jejich seřazení podle ceny. Vidíme obrovský posun oproti
HTML v něm jsme nanejvýš mohli hledat všechny stránky, které obsahují název
hifi věže.
Dokumenty nejen prohledáváme, ale v konečné fázi i zobrazujeme. V jazyce HTML
je vše jednoduché jednotlivé tagy určují, jak se má daná část stránky zobrazit.
V XML žádná podobná přímá vazba neexistuje, a proto musíme způsob zobrazení
jednotlivých elementů dokumentu definovat jiným způsobem pomocí stylů. Ve stylu
pak můžeme pro každý element určit, jak se má zobrazit (řez a velikost pís-ma,
barva, zarovnání, umístění apod.). Podle našeho přání tak můžeme výše uvedenou
část ceníku zobrazit třeba v přehledné tabulce nebo pěkně pod sebou jako v
nějakém tištěném katalogu.
Velká výhoda stylů spočívá v tom, že jsou od samotného dokumentu odděleny a
jsou v samostatném souboru. Jeden styl tedy můžeme využívat v mnoha XML
dokumentech a dosáhnout tak jednotného vzhledu mnoha stránek. Na druhou stranu,
pokud potřebujeme změnit design stránky, stačí drobně opravit styl a změna se
promítne na všech stránkách, které styl používají.
Kaskádové styly (CSS) bylo možné používat i v HTML. Jejich použití však bylo
pouze doplňkem, kterým jsme mohli modifikovat vzhled některých elementů. Autoři
stránek mohli zcela beztrestně "zneužívat" jednotlivé HTML tagy pro dosažení
požadovaného vzhledu stránky. XML dokument bez stylu nelze zobrazit, autoři tak
ztratí důvod pro vytváření špatně strukturovaných stránek, které však dosahují
požadovaného vzhledu.
Využití XML
Na následujících řádkách se pokusíme nastínit oblasti, kde je vhodné XML
nasadit a kde může použití XML přinést něco nového. V žádném případě však
nepůjde o kompletní výčet. XML je nový jazyk, a všechny jeho aplikace neznají
ani ti největší vizionáři.
O XML se nejčastěji hovoří jako o novém jazyku pro tvorbu webových stránek.
Situace se dnes vyvíjí tak, že nám XML umožní rozšiřovat množinu elementů,
které nám při tvorbě stránek nabízí HTML. Stránky v XML jsou zároveň snazší pro
čtení než ty současné (psané v HTML), které obsahují mnoho chyb. To umožní
vývoj nových jednoduchých prohlížečů určených zejména pro různá kapesní mobilní
zařízení. Více informací naleznete v části XHTML nová budoucnost pro jazyk
HTML, která je součástí dnešního Tématu týdne.
XML však nezůstává pouze technologií určenou pro Web. Využití nalezne všude,
kde je potřeba jedny informace prezentovat v několika formátech v tištěné
podobě na papíře, jako publikaci na CD-ROMu a na Webu.
Výhoda XML spočívá v tom, že kromě samotného textu nese i informaci o jeho
významu. Konverze do libovolného formátu je pak snadná a může probíhat zcela
automaticky. XML proto nalézá uplatnění při tvorbě technické dokumentace, což v
některých oblastech průmyslu znamená práci s tisícistránkovými dokumenty, které
je potřeba několikrát ročně aktualizovat a distribuovat uživatelům v různých
formách. Příspěvky do různých vědeckých a odborných časopisů je dnes kromě
tradiční papírové podoby rovněž potřeba publikovat i elektronicky. XML se
nabízí jako otevřený standard pro uchovávání a výměnu tohoto typu dat.
Využití XML může být výhodné i při klasickém publikování na papír. Pokud budou
rukopisy odevzdávány v XML, bude jejich import a zalomení v nějakém sázecím
systému mnohem jednodušší, než když import provedeme z textového editoru, kde
může autor zcela neodborně měnit vzhled dokumentu. Práce se ušetří sazeči,
který nemusí opravovat chyby autora, a autor se může soustředit na vlastní
psaní textu, na jeho obsah výslednou grafickou úpravu ponechá na odbornících.
Nejde jen o texty
Hovoříme-li o XML dokumentech, může to v nás vyvolat dojem, že se XML hodí
pouze pro textové dokumenty webové stránky, dopisy, knihy apod. Opak je však
pravdou. Největší objem dat, který bude v podobě XML přenášen, budou
strukturovaná data, která se dnes ukládají do relačních databází. XML poslouží
jako vhodný přenosový formát při komunikaci mezi aplikacemi různých výrobců,
mezi webovým serverem a prohlížečem apod.
V USA se připravuje pilotní projekt, který umožňuje odeslat daňové přiznání ve
formátu XML bernímu úřadu. Díky tomu, že je definován požadovaný datový formát,
může být k odeslání daňového přiznání použita libovolná aplikace úplně stačí,
aby zvládla vyexportovat data do XML. Někdo si daňové přiznání vyplní ručně v
obyčejném textovém editoru, někdo si může vygenerovat daňové přiznání přímo z
účetního programu, který používá.
XML může obrovským způsobem pomoci při rozvoji elektronického obchodování. Při
virtuálních nákupech je potřeba přenášet data mezi uživatelem, internetovým
obchodním domem, bankou a certifikačními autoritami. Pro výměnu těchto dat může
být rovněž použit formát založený na XML. Tím odpadne použití nekompatibilních
proprietárních a drahých řešení.
Již několik let se úspěšně používá EDI (Electronic Data Interchange), které
umožňuje elektronické zprostředkování objednávek a plateb mezi obchodními
partnery. Problémem EDI je jeho složitost a nekompatibilita. Každá velká firma
měla svoje vlastní řešení EDI. Pokud nějaký dodavatel spolupracoval s více
velkými odběrateli, musel si za velké peníze pořídit tolik EDI aplikací, kolik
měl odběratelů. Pokud by se však jako formát pro výměnu dat mezi EDI aplikacemi
používalo XML, odpadly by problémy s kompatibilitou a EDI by se mohlo masově
rozšířit do oblasti malého a středního podnikání.
Poslední oblastí, ve které se XML dnes používá, je přenos metadat. Všichni asi
známe formát CDF (Channel Definition Format), který slouží k definici kanálů
pro prohlížeč Internet Explorer 4.0. Zcela obecně pak problém metadat řeší nový
standard RDF (Resource Description Framework) konsorcia W3C.
Syntaktické minimum
Pro toho, kdo má nějaké zkušenosti s HTML nebo SGML, nebude práce s XML žádný
problém. Oproti HTML musí dokument v jazyce XML splňovat mnohem přísnější
pravidla. Pokud tato pravidla splňuje, říkáme, že je správně strukturovaný
(well-formed). Takovýto dokument pak mohou zpracovávat různé aplikace. Každá
aplikace obsahuje tzv. parser, který XML dokument načte a pomocí předem daného
rozhraní ho zpřístupní aplikaci k dalšímu zpracování.
Základním požadavkem na správně strukturovaný XML dokument je, aby byl celý
uzavřen v jednom elementu tedy musí být uzavřen mezi nějaký počáteční a
ukončovací tag:
<dokument> ...tělo dokumentu
</dokument>
Všechny tagy musí být párové, to znamená, že pro počáteční tag <tag> musí vždy
existovat i ukončovací tag </tag>. Výjimku tvoří prázdné elementy, které nemají
žádný obsah. Jim odpovídající tag však musí být ukončen znaky "/>" místo
pouhého ">". To umož-ní parseru snadné rozpoznání prázdných elementů. Příkladem
prázdného elementu může být například <br/>.
V XML můžeme používat atributy podobně, jak je známe z HTML. Na rozdíl od HTML
však musíme vždy obsah atributu uzavřít do uvozovek nebo apostrofů:
<para security="public">... veřejně přístupný text...</para>
V XML jsou jména všech elementů a atributů citlivá na velikost písmen. Na to
musíme dávat pozor, zejména pokud dokumenty připravujeme ručně. Zvykem bývá
psát všechna jména malými písmeny, abychom si nemuseli pamatovat, kde je
náhodou velké písmeno.
Počítače nejsou dnes již jen záležitostí anglicky hovořících zemí, a tak bylo v
XML hned od začátku pamatováno na potřeby ostatních jazyků. Jako standardní
znaková sada se v XML dokumentu používá Unicode (ISO 10646), která obsahuje
všechny dnes používané znaky. Zajímavostí je, že různé národní znaky můžeme
používat i v názvech elementů a atributů. Nic tedy nebrání tomu, aby si Japonci
své elementy pojmenovali v japonštině.
Standardně se předpokládá, že dokument bude uložen v kódování UTF-8, které má
prvních 128 znaků shodných s ASCII. Pokud v dokumentu použijeme jiné kódování,
musíme to uvést v deklaraci XML následujícím způsobem:
<?xml version="1.0" enco ding="iso-8859-2"?>
<dokument> ...
</dokument>
Pokud dodržíme výše popsaná pravidla, můžeme vytvářet XML dokumenty. Velká
výhoda XML spočívá v tom, že u dokumentu můžeme určit jeho typ. Typ dokumentu
může být např. webová stránka, dopis, kapitola knihy, databáze zákazníků apod.
Typ dokumentu určíme v deklaraci typu dokumentu (DOCTYPE):
Druhá řádka ukázkového XML dokumentu nám říká, že definice typu dokumentu (DTD
Document Type Definition) je uložena v souboru dopis.dtd. DTD definuje elementy
a atributy, které můžeme v dokumentu daného typu použít. Naše DTD pro psaní
dopisů by nadefinovalo, že dopis se skládá z informací o adresátovi, z předmětu
dopisu a z jeho těla. U adresáta můžeme zadat jméno a adresu. Tělo dopisu se
skládá z jednotlivých odstavců textu.
V DTD definujeme, jaké jsou přípustné vzájemné kombinace elementů, které
elementy mohou být vynechány, které se mohou opakovat atd. Pokud je XML
dokument spojen s nějakým DTD, můžeme snadno pomocí parseru zjistit, zda
dokument splňuje požadavky definované v DTD.
DTD je "malý hlídací pes", jenž donutí autora do dokumentu zadat všechny údaje,
které musí daný typ dokumentu obsahovat. DTD tu slouží jako šablona, jak ji
známe z dnešních textových editorů. Schopnosti DTD jsou však mnohem větší.
Pokud XML dokument editujeme v editoru, který obsahuje parser a umí načíst DTD,
editor nám neumožní vytvořit špatný dokument a dokonce nám napoví, které
elementy můžeme v jednotlivých místech dokumentu použít.
Pro efektivní výměnu a sdílení informací je potřeba, aby se používala
standardizovaná DTD. Přehled nejčastěji používaných DTD naleznete ve vloženém
článku Nejběžnější DTD.
Pěkný kabát pro dokumenty
V úvodu článku jsme naznačili, že vzhled jednotlivých elementů a tím i celého
dokumentu je potřeba definovat pomocí stylu. Pro definici vzhledu XML dokumentů
se dnes používají 3 stylové jazyky: CSS, XSL a DSSSL.
CSS (Cascading Style Sheets) není nic jiného než kaskádové styly používané v
HTML. Tento stylový jazyk bude ze začátku podporovat nejvíce aplikací, protože
je velmi jednoduchý a dnešní čtyřkové verze obou nejrozšířenějších webových
prohlížečů jej umí. Kaskádové styly byly původně určeny pouze pro prezentování
informací na obrazovce. Další parametry formátování, které je potřeba zadat pro
tištěný výstup, byly přidány do nové verze kaskádových stylů, která se jmenuje
CSS2. Pro potřeby XML byly do CSS2 přidána i další rozšíření, která umožňují
konkrétní styl aplikovat i na základě hodnoty atributu. CSS1 umožňovalo styl
aplikovat pouze na určitý element bez návaznosti na obsah jeho atributů.
Protipólem k CSS je jazyk DSSSL (Document Style Semantics and Specification
Language). DSSSL je rozsáhlý jazyk, který byl původně vyvinut pro použití se
SGML. Jeho použití s XML však nic nebrání. DSSSL je tak komplexní jazyk, že jej
zatím nepodporuje příliš mnoho aplikací. Pro potřebu elektronického publikování
byla definována jeho podmnožina DSSSL-O, která se hodí pro méně náročné
aplikace.
Zlatou střední cestou mezi oběma jazyky je XSL (eXtensible Stylesheet
Language). Tento jazyk má možnosti srovnatelné s DSSSL, jeho syntaxe je však
jednodušší. Zajímavostí je, že XSL se zapisuje v jazyce XML. Pro tvorbu stylů
můžeme tedy použít stejný editor, který používáme pro tvorbu dokumentů.
Jednoduchá manipulace s dokumentem a jeho elementy může být v XSL prováděna
přímo. Pokud máme něja-ké náročnější požadavky, můžeme je vyřešit pomocí
ECMAScriptu. ECMAScript je standardizovaná verze JavaScriptu a v XSL jej můžeme
použít pro manipulaci s dokumentem např. můžeme automaticky vygenerovat jeho
obsah apod.
XLink a XPointer
Hypertextové odkazy tak, jak je známe z HTML, byly v době svého vzniku
převratnou technologií, která se dnes dostala na stoly milionů uživatelů. Po 10
letech jejich používání se však objevily nové požadavky, které bylo potřeba
řešit. Problematiku odkazů v XML dokumentech řeší proto samostatné jazyky XLink
a XPointer, které někdy bývají souhrnně označovány jako XLL.
XLL samozřejmě umožňuje vytváření jednoduchých odkazů, které známe z HTML.
Přichází však také s jednou velkou novinkou: Odkaz nyní může vést i na tu část
stránky, která neobsahuje žádné návěstí. Odkazy v XLL mohou být definovány
mnohem flexibilnějším způsobem. Můžeme se např. odkázat na 3. odstavec, který
následuje po kapitole, jež se jmenuje "Ze života hmyzu". Tímto způsobem můžeme
vytvářet odkazy i na ta místa dokumentu, kam jeho autor neumístil žádné návěstí.
Další novinkou je možnost vytvářet obousměrné odkazy, které jasně vyjadřují
souvislost 2 stránek. Problémem nejsou ani odkazy, kdy jeden odkaz ukazuje
najednou na několik dalších zdrojů. Uživatel pak má možnost vybrat si zdroj,
který jej nejvíce zajímá.
Odkazy lze pomocí XLL ukládat i zcela mimo dokumenty, kterých se týkají. Tímto
způsobem můžeme vytvářet např. anotace ke stránkám, ke kterým nemáme jinak
přístup pro zápis. Na svém počítači nebo na firemním serveru můžeme mít
databázi odkazů, se kterou bude spolupracovat náš prohlížeč, a budeme pak mít
na cizích stránkách přístupné anotace vlastní i našich kolegů. Není vyloučeno,
že se najdou provozovatelé serverů, které budou spravovat veřejné databáze
odkazů. Stránky tak půjde snadno doplňovat o další informace.
Aplikace pracující s XML
Aby se používání XML rozšířilo, je potřeba, aby byl podporován co největším
množstvím aplikací. Podívejme se nyní proto na jednotlivé typy aplikací, které
se při práci s dokumenty XML běžně používají.
Editory
Pokud budeme chtít psát dokumenty v XML, budeme k tomu dozajista potřebovat
nějaký vhodný editor. Jelikož je dokument XML obyčejný textový soubor doplněný
o tagy, můžeme k jeho vytváření a následné editaci použít libovolný textový
editor. Přijdeme tak však o spoustu užitečných funkcí lepší editor může
automaticky kontrolovat strukturu. Nedovolí nám pak vytvořit dokument, který
není správně strukturovaný či neodpovídá požadovanému DTD. Chytrý editor nám
také může napovídat, které elementy a atributy můžeme v daném místě dokumentu
použít.
XML editory můžeme rozdělit do několika skupin, podle toho, jak moc je uživatel
vystaven styku se samotným jazykem XML. Nejjednodušší editory zobrazují přímo
zdrojový kód XML s tím, že mohou tagy zvýraznit jinou barvou pro odlišení od
textu. Pokročilejší editory již pracují v částečném WYSIWYG režimu, kdy je text
vidět zformátovaný pomocí stylu, ale jsou v něm vidět jednotlivé tagy. Poslední
stupeň již před uživatelem XML úplně schová. Vkládání tagů je pak plně v režii
editoru, který může podle nějakých pravidel mapovat jednotlivé vizuální styly
na XML elementy.
Již dnes je jasné, že pro masové rozšíření XML bude zapotřebí zejména editorů
poslední skupiny. Uvědomme si, jak se v poslední době začal hodně využívat
editor FrontPage pro tvorbu HTML stránek. Uživatel v něm do styku s HTML kódem
nemusí vůbec přijít.
Editory, o kterých jsme dosud mluvili, byly určeny především pro textové
dokumenty. Jak jsme již řekli, XML se hodí i pro uchovávání a přenos různých
metadat a datových struktur obecně. Pro editaci složitějších datových struktur
může být výhodnější speciální editor, který celý XML dokument zobrazuje jako
stromovou strukturu navzájem vnořených elementů. Pro silně strukturovaná data
je takový editor vhodný.
Kromě obecných editorů XML existují i editory určené pouze pro editaci XML
dokumentů, vyhovujících určitému DTD. To, co tyto editory ztrácí na obecné
použitelnosti, většinou bohatě vynahradí rozšířenou funkčností. Již dnes můžeme
matematické vzorce zapsané pomocí MathML vytvářet pohodlně ve vizuálním editoru
rovnic, jehož výstupem je XML, vyhovující jednomu konkrétnímu DTD pro MathML.
Prohlížeče
Na Webu se dnes používá jazyk HTML, ale v blízké budoucnosti bude nahrazen
nějakým jazykem založeným na XML. Než se tak stane, musí existovat dostatečné
množství dostatečně kvalitních prohlížečů, které zvládnou XML.
Co by měl takový prohlížeč zvládnout? Předně musí umět zobrazit XML podle
pravidel určených v připojeném stylu (CSS nebo XSL). Kromě toho by měl
podporovat všechny běžné formáty pro přenos grafiky a multimédií. Důležitá bude
i podpora XLL práce s odkazy bude přece jen složitější než dnes.
Dobrý prohlížeč by měl nabízet i další funkce, mezi něž patří navigace v
dokumentu a kontextové vyhledávání. Pod navigací si můžeme představit např.
schopnost vygenerovat a zobrazit strom struktury dokumentu, který může
posloužit zároveň jako obsah a jako navigační pomůcka. Kontextové prohledávání
není nic jiného, než že při hledání textu na stránce můžeme zadat element, ve
kterém se má text hledat. Prohledávání tak můžeme omezit např. jen na popisy
tabulek.
Prakticky se s použitelnou podporou XML setkáme v "pětkových" verzích
prohlížečů Netscape Navigator a Microsoft Internet Explorer. Pokud mohu
posoudit z rozsáhlejšího testování beta-verzí obou programů, mají sice mnohé
problémy (zejména se zpracováním XSL), nicméně doufejme, že finální verze budou
pracovat spolehlivě.
Od nových prohlížečů však nemůžeme čekat zázraky. Přinesou sice podporu XML,
XSL a XLL, ale to je vše. Prohlížeče s lepší možností navigace či vyhledávání
budeme muset zřejmě hledat u jiných výrobců, než jsou Netscape a Microsoft.
Jednak mezi výrobci tradičních SGML prohlížečů, kteří své programy rozšiřují o
podporu XML, a za druhé mezi mladými firmami, které se snaží zaplnit mezeru na
trhu.
Aby bylo možné XML stránky zobrazovat ve starších prohlížečích, je zapotřebí je
ještě na serveru převést do HTML. Již dnes existují řešení, která umožní
automatické zaslání XML dokumentu v podobě vhodné pro klienta.
Vyhledávací nástroje
Dnes jsou na Internetu využívány zejména techniky fulltextového vyhledávání.
Schopnosti fulltextových technologií však narážejí na velký objem informací,
které jsou na Webu přítomny. Pokud tedy zadáme nějakému fulltextovému
vyhledávači slovo, které nás zajímá, dostaneme jako odpověď tisíce stránek.
Pokud by byly dnešní fulltextové vyhledávače schopné využít přídavné informace
uložené v XML dokumentech, byla by možnost efektivního vyhledávání na Internetu
opět o něco lepší. Vyhledávací servery by mohly lépe rozpoznat důležitost
dokumentů podle částí textu, kde se hledané slovo vyskytuje. Dokument, který
dané slovo obsahuje v nadpisu, je jistě více relevantní, než když ho obsahuje
pouze v nějaké poznámce pod čarou. Zlepšení přinese i kontextové vyhledávání,
které umožní u hledaného slova zadat, zda se jedná o jméno člověka, jméno ulice
nebo popis fotografie.
Další nástroje
Jelikož se XML hodí na uchování informací libovolného typu, nebyl předchozí
výčet typů aplikací zdaleka kompletní. Pokud pracujeme s velkým množstvím
dokumentů, budeme potřebovat nějaký systém pro správu dokumentů. Funkce systému
mohou sahat od jednoduché databáze, která bude někde ukládat naše dokumenty, až
po složité systémy, které podporují workflow dokumentů a správu verzí.
Pro lidstvo je tištěný výstup stále ještě nejpoužívanější. Není tedy divu, že
existuje mnoho programů, které umožňují XML dokumenty formátovat a tisknout. Do
podobné kategorie spadají i různé konvertory, které umožňují převody dat mezi
různými formáty.
Pokud pro naše vlastní aplikace potřebujeme nějaký datový formát, může být XML
tou pravou volbou. Vytváření XML dokumentů je velice jednoduché jedná se o
textové soubory. Pro jejich čtení můžeme použít některý z mnoha volně
dostupných parserů. Takový parser přitom existuje snad pro všechny dnes běžně
používané programovací a skriptovací jazyky.
XHTML nová budoucnost pro HTML
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.
Název není znám
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 přitom
velice důležité, protože vše je v tuto chvíli ve stadiu 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 tomu bylo 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í. Taková
zaříze-ní 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 WWW
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 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 nevědí.
Konverze stávajících HTML stránek do XHTML
V předchozím textu jsme si 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 obecně. 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. Zároveň nesmí stránka obsahovat žádné překřížené tagy, jak
je tomu na dnešních stránkách zvykem.
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 zvyklá, že stačí zahájit
odstavec pomocí tagu <p>. V XHTML však musíme odstavec ukončit odpovídajícím
</p>.
Na rozdí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ř. 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 editory např. MS
Wordem.
Kompatibilita XHTML se stávajícími prohlížeči
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:
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:
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="nad pisx">Ukázkově označený nad pis</a></h2>
Pokud máme v dokumentu určeno kódování pomocí
<?xml version="1.0" enco ding="iso-8859-2"?>
měli bychom kódování určit i v hlavičce HTML dokumentu, odkud jej čtou dnešní
prohlížeče:
<meta http-equiv="Content-Ty pe" content="text/html; char set=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ř. pro připojení stylu definujícího
vzhled dokumentu.
9 0705 / pahn

Trocha historie: XML je staronový formát
Už jsme si asi zvykli na překotný vývoj v oblasti informačních technologií.
Vždyť kdo z nás znal před třemi lety pojmy jako Java, MP3 nebo XML? Při
podrobnějším pátrání však zjistíme, že za všemi novinkami stojí dlouholetý
vývoj. I přesto vás asi překvapí, že historie XML je více jak třicetiletá.
V 60. letech řešila firma IBM problém ukládání velkého množství právních
dokumentů. Potřebovala vymyslet formát, který by měl dlouhou životnost, nebyl
závislý na používaných programech atd. Výsledkem jejich snažení byl obecný
značkovací jazyk, který se v praktickém nasazení osvědčil. Jazyk se postupně
rozšiřoval, až se z něj v roce 1986 stal jazyk SGML (Standard Generalized
Markup Language), který byl přijat za ISO normu s číslem 8879.
SGML bylo velice flexibilní, aby vyhovělo celé řadě požadavků. To byla jeho
velká přednost, ale zároveň i největší slabina. Vývoj aplikací, které by plně
podporovaly SGML, byl velice nákladný. SGML se proto používalo převážně na
velkých projektech, jako byla dokumentace ke zbrojním systémům americké armády
nebo např. technická dokumentace letadel Boeing.
První masově rozšířenou aplikací SGML byl jazyk HTML. Jazyk HTML byl zpočátku
malou množinou tagů, které umožňovaly vytvářet hypertextové dokumenty. Výrobci
prohlížečů postupně HTML rozšiřovali, aby se zavděčili uživatelům, kteří měli
stále větší požadavky. Začaly tak vznikat problémy s kompatibilitou, které
vyústily v nutnost vytvářet stránky v několika verzích pro různé verze
prohlížečů.
Konsorcium W3C se snažilo tomuto trendu zabránit tím, že by právě pomocí SGML
přesně definovalo, které tagy (a na jakých místech) mohou webové stránky
obsahovat. Vznikly tak postupně jazyky HTML 2.0, HTML 3.2 a HTML 4.0. Výrobci
prohlížečů však stále přidávali nové tagy a působili tím značné komplikace
především autorům stránek.
Bylo jasné, že současný stav je neudržitelný a že Web potřebuje novou
technologii, která by byla mnohem flexibilnější než HTML. Výsledkem práce
několika předních odborníků byl jazyk XML, jehož finální verze byla publikována
v únoru 1998. Jazyk XML je zjednodušenou podmnožinou SGML. Byl tak odstraněn
největší problém SGML přílišná složitost. Flexibilita však zůstala zachována, a
tak XML na rozdíl od HTML umožňuje tvorbu dokumentů s vlastními tagy a s
možností validace dokumentů oproti DTD.
Po 30 letech se tak na stoly běžných uživatelů dostává vyzrálá technologie.
Určitě se nemusíme bát, že za rok nadšení opadne a XML již bude jen minulostí.
Vlastnosti XML předurčují tento jazyk jako vhodný nástroj pro uchovávání
informací, na kterých nám opravdu záleží. Díky otevřenosti XML se nám nestane,
že XML dokument otevřeme jen v jednom programu od jedné firmy.

Co dál?
Tímto Tématem týdne se pro čtenáře Computerworldu problematika XML rozhodně
neuzavírá. Na stránkách našeho týdeníku se od nynějška setkáte také se
seriálem, věnovaným XML a elektronickému publikování vůbec.
Naleznete zde popis zajímavého softwaru, který pracuje s XML, podrobněji se
seznámíte se syntaxí XML, XLL a stylových jazyků. Nevyhneme se ani seznámení s
nejběžněji používanými DTD, jako je např. MathML, CDF, RDF, DocBook apod. Na
své si přijdou i programátoři, kterým přineseme popis použití knihoven, s
jejichž pomocí mohou číst a zapisovat XML dokumenty v jejich oblíbeném
prostředí, ať je to C++, JavaScript, PHP či Perl. Aby náš seriál nebyl odtržen
od reality, bude obsahovat příklady vhodného použití XML a případové studie
popisující systémy, které jsou založeny na XML.
Jazyk XML je poměrně nový, a proto vás jistě napadá spousta otázek, jejichž
zodpovězení by vám pomohlo celou problematiku XML lépe pochopit. Nestyďte se a
dotazy nám zašlete do redakce nebo na adresu xml@kosek.cz. Pokud to bude v
našich silách, pokusíme se odpověď na váš dotaz přinést na stránkách
Computerworldu.

<!-š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>
<br /> <hr />
<img src="logo.gif"
width="320" height="160"
alt="Logo" />
<p><p/> <!-správné oddělení textu -->
<p /> <!-špatné oddělení textu -->

Jaká jsou nejběžnější DTD?
Pokud dodržíme určitá pravidla, můžeme vytvářet XML dokumenty, které obsahují
libovolné elementy s libovolnou strukturou. V praxi je však potřeba, aby
dokumenty splňovaly určitá pravidla. Dopis musí např. vždy obsahovat adresáta,
předmět dopisu, oslovení a tělo dopisu. Pravidla pro strukturu dokumentu lze
zapsat pomocí DTD (Document Type Definition). V DTD určíme, jaké elementy může
dokument obsahovat, v jakém mohou být vzájemném vztahu a jaké atributy může
každý element mít.
Dnes existuje několik desítek a možná i stovek DTD, která se běžně používají.
Pokud pro naše dokumenty použijeme některé standardní DTD, otevírá se nám
možnost využívání dalšího softwaru, který umí s dokumenty daného typu pracovat.
Následující přehled obsahuje některé nejběžnější DTD a oblast jejich použití.
HyperText Markup Language (HTML)
Jazyk HTML není třeba nikomu představovat. Existují DTD pro jeho jednotlivé
verze 2.0, 3.2 a 4.0. V současné době se pracuje na rozložení jednoho DTD HTML
4.0 na několik nezávislých. Každé DTD pak bude obsahovat určitou část
funkčnosti HTML např. formátování, formuláře či tabulky.
Channel Definition Format (CDF)
Formát CDF byl poprvé použit pro definici kanálů v prohlížeči MSIE 4.0.
Kanálová mánie dnes již pominula, ale na milionech počítačů po celém světě
nicméně stále nalezneme soubory CDF.
Mathematical Markup Language (MathML)
MathML je jazyk určený pro zápis matematických výrazů. Kromě přesného vzhledu
výrazu dokáže zachytit i jeho přesný význam. Použití nalezne zejména při
zařazování matematických vzorců do webových stránek a při výměně dat mezi
různými matematickými programy (jako jsou Maple a Mathematica) a webovými
stránkami.
Resource Description Framework (RDF)
RDF je standardem z dílny konsorcia W3C. Definuje standardní rámec, který je
možné využít pro přidávání metainformací k datovým zdrojům. Praktické využití
je zejména pro zlepšení práce vyhledávacích strojů a agentů, navigačních
aplikací a aplikací pro hodnocení obsahu stránek.
Open Software Description Format (OSD)
Formát OSD slouží pro popis softwarových aplikací a jejich jednotlivých částí.
Cílem je usnadnit automatickou distribuci a obnovu (update) softwaru.
Chemical Markup Language (CML)
CML je jazyk určený pro snadný zápis vzorců chemických sloučenin. Kromě
standardu pro výměnu dat mezi chemickými aplikacemi umožní zařazování
chemických vzorců na webové stránky mnohem úspornějším a efektivnějším
způsobem, než by to bylo pomocí bitmapových obrázků.
Synchronized Multimedia Integration Language (SMIL)
SMIL slouží pro tvorbu multimediálních prezentací. Pomocí jazyka můžeme
definovat jednotlivé zdroje audio a videodat, jejich umístění na obrazovce a
čas, ve kterém budou jednotlivé části prezentace přehrány.
Precision Graphics Markup Language (PGML)
PGML je návrh jazyka určeného pro zařazování dvojrozměrné vektorové grafiky na
webové stránky. Vychází z PostScriptu a PDF, syntaxe je však upravena tak, aby
vyhovovala XML.
UML eXchange Format (UXF)
UXF slouží k výměně dat v jazyce UML. UML (Unified Modeling Language) je
standardní jazyk používaný při analýze a návrhu IS.
DocBook
DocBook je DTD vhodné pro psaní technické dokumentace. Jedná se o rozšířené DTD
a je podporováno mnoha aplikacemi.
Scalable Vector Graphics (SVG)
SVG je vektorový formát pro dvourozměrnou grafiku. Tento formát má dnes
největší předpoklady stát se standardem pro vektorovou grafiku na Webu. Na jeho
vývoji pracuje konsorcium W3C.
Text Encoding Initiative (TEI)
TEI je rozsáhlý projekt, jehož cílem je vytvoření skupiny standardizovaných DTD
vhodných pro uchovávání a výměnu knih. Na několika univerzitách ve světe
probíhají projekty, které převádějí klasická díla (např. Shakespearova) do
elektronické podoby právě pomocí TEI.
Continuos Acquisition and Lifecycle Support (CALS)
Skupina několika DTD a dalších formátů pro výměnu dokumentace mezi
Ministerstvem obrany USA a jeho dodavateli. Jedno z DTD je vhodné pro zápis
tabulek a v praxi se používá velice často.









Komentáře
K tomuto článku není připojena žádná diskuze, nebo byla zakázána.