XML -- šance pro třetí tisíciletí

Jiří Kosek ml.

Před nějakým časem jste si na stránkách našeho týdeníku mohli přečíst krátkou zprávu o XML (eXtensible Markup Language). Dnes si o tomto novém standardu, který připravuje nám již dobře známé konsorcium W3C, povíme něco podrobnějšího a ukážeme si k čemu jej lze již dnes využít.

Než se však pustíme do podrobnějšího pitvání XML, uděláme si trochu jasno v různých *ML, které nás dnes při našich toulkách webem (a nejen jím) potkají. Pravidelným čtenářům rubriky Internet není třeba představovat zkratku HTML (HyperText Markup Language). Jedná se o značkovací jazyk, který se používá při tvorbě webovských stránek. Tento jazyk existuje v několika verzích a dnes nejaktuálnější je verze 3.2 známá rovněž pod kódovým označením Wilbur. Každá verze HTML definuje, jaké značky a kdy lze použít k označení významu jednotlivých částí webovské stránky.

Vývoj samozřejmě neustrnul a pracuje se na další verzi. Ta prozatím nese kódové jméno Cougar a s největší pravděpodobností jí bude příslušet číslo 4.0. Článek, který vás seznámí s novými rysy Cougaru přineseme v některém z brzkých vydání CW. Nedočkavci mohou své prohlížeče nasměrovat na adresu http://www.w3.org/pub/WWW/MarkUp/Cougar, kde se nalézá předběžný návrh standardu Cougar prozatím rozčleněný do několika relativně samostatných dokumentů.

O pár let více než HTML se na světě užívá SGML (Standard Generalized Markup Language). Jeho význam a určení je však zcela jiné než u HTML. Jedná se sice také o značkovací jazyk, ale přívlastek generalized nám říká, že se jedná o 'zevšeobecněný značkový jazyk'. Jde sice o hrozné trojsloví, ale celou věc vystihuje velice dobře. SGML je totiž metajazyk, který umožňuje standardizovaným způsobem definovat další značkovací jazyky. To znamená, že si můžeme definovat jaké značky lze v dokumentech používat, v jakém mohou být vzájemném vztahu atd.

Po tom, co již víme, nás nepřekvapí, že to jaké značky lze používat v HTML lze zapsat pomocí SGML. Použijeme-li analogii s programováním, je SGML něco jako programovací jazyk a HTML pak program zapsaný v tomto jazyce. Popisu značek a jejich vzájemných možných vztahů se říká DTD (Document Type Definition). (Podrobnější informace o DTD jste si mohli přečíst v článku SGML: Standard Generalized Markup Language v CW 44-45/96 -- http://www.kosek.cz/clanky/cw/sgml.html)

Konkrétnímu dokumentu zapsanému podle pravidel nějakého DTD (např. webovské stránce zapsané v HTML) pak říkáme instance. Poslední pojem, kterým obtížíme náš mozek, je prolog. Prolog je počáteční část instance a určuje, podle kterého DTD je instance vytvořena. Na slušnějších nových stránkách, po kterých se brouzdáte, by mělo být na začátku uvedeno:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
Není to nic jiného než prolog, který říká, že následující dokument je instancí DTD HTML 3.2.

Po tomto malém opakování se můžeme zodpovědně postavit k zodpovězení otázky "Co to XML vlastně je?". XML je podmnožinou SGML. Jde o jakousi zjednodušenou verzi, která obsahuje z SGML to nejdůležitější. Můžeme si tedy definovat vlastní značky (tagy) a pak pomocí nich vytvářet dokumenty a zpřístupňovat je ostatním pomocí webu. Ještě před tím než podrobněji rozebereme tyto možnosti, objasníme si to, co vám v tuto chvíli jistě vrtá hlavou. "Nač potřebujeme XML, když tu máme SGML, které zvládne vše, co XML?"

Námitka jistě zcela oprávněná. Pro pochopení přínosu XML si musíme uvědomit, že SGML je normou ISO (číslo 8879 z roku 1996). Nutno podotknout, že normou velice obsáhlou. V praxi to znamená, že se většinou nevyužívají zdaleka všechny možnosti SGML. Programy, které mají umožnit práci s SGML dokumenty, však musí odpovídat normě a proto jsou poměrně složité a jejich vývoj je nákladný a zdlouhavý. Právě tento problém XML brilantně řeší -- obsahuje vše potřebné a při tom je dostatečně jednoduchý, aby šly poměrně snadno psát aplikace pracující nad XML dokumenty.

Navíc díky tomu, že XML je podmnožinou SGML, lze pro práci s XML dokumenty využít všechny stávající SGML aplikace.

Příčiny vzniku XML

Ačkoliv nám vznik XML může připadat poněkud neočekávaný, pro zasvěceného je to jen logické vyústění překotného vývoje na poli informačních a komunikačních technologií. Obrovské množství informací, kterými lidstvo disponuje, přináší mnoho problémů při jejich zpracování. Jedním z těchto problémů je sdílení informací po celém světě. Tento problém se poměrně úspěšně podařilo vyřešit pomocí Internetu a jeho služby WWW. Informace uložené na webu jsou přístupné všem a vůbec nezávisí na tom, jaký používají počítač a operační systém (i když i toto se snaží Microsoft svou pseudo-technologií ActiveX změnit ;-).

Jazyk HTML, který se dnes používá pro tvorbu webovských stránek má však některé rysy, které zabraňují používání efektivnějších prohledávacích metod. V HTML se jednotlivé části textu označují značkami, které textu přiřazují většinou čistě prezentační význam. Text lze označit jako nadpis, buňku tabulky nebo úsek, který bude zobrazen zvýrazněně. Tím, že XML umožňuje definovat vlastní sadu značek, můžeme těmito značkami mnohem výstižněji označit jednotlivé části textu. Text lze tedy označit např. jako název básně, jméno autora, kurz akcie, rodné číslo atd. -- záleží pouze na tom, jaké značky definujeme v DTD. Takto označkovaný a strukturovaný text má mnohem vyšší informační hodnotu než stránka zapsaná v HTML.

V dokumentech založených na XML můžeme snadno vyhledávat odpovědi na dotazy typu: 'Které básně napsal pan X?'. Při použití HTML můžeme klást pouze dotaz typu: 'Které stránky obsahují slovo X?'. Výhody prvního způsobu dotazování v dnešní informacemi přehlcené době netřeba zdůrazňovat.

Samozřejmě, že předchozí výhody půjde používat pouze v případech, kdy prohledávané dokumenty budou vyhovovat stejnému DTD (budou používat stejnou množinu značek). Již dnes existují DTD, které používají určité skupiny uživatelů a v budoucnosti patrně vzniknou ještě další. Své DTD tak budou používat matematici, historici, chemici, elektrotechnici, ...

Jazyk XML byl vytvořen proto, aby uspokojil stále vzrůstající nároky na kvalitu a kvantitu zpracovávání informací.

XML prakticky

Rozeberme tedy, co nám XML přinese a co od nás bude vyžadovat. Velkým přínosem bude již zmíněná možnost kvalitního kontextového prohledávání. Další užitečnou možností, na kterou se velmi často poukazuje, je automatická tvorba obsahu dokumentu. XML-prohlížeč analyzuje a zjistí strukturu (obsah) dokumentu. Tu pak může uživateli vhodným způsobem zpřístupnit a usnadnit tak orientaci v dokumentu. Na obrázku 1 vidíme, jak to může vypadat v praxi. V pravé části je XML nebo SGML-dokument. Prohlížeč (v naše případě freewarová verze Panoramy od SoftQuadu) automaticky sestavil obsah tohoto dokumentu (v levé části obrazovky). Po obsahu se můžeme pohybovat podobně jako po stromově struktuře složek v Exploreru. S tím jak se pohybujeme po obsahu se samozřejmě odpovídajícím způsobem mění i samotná část dokumentu zobrazená v pravé části okna a naopak. Při čtení dokumentu žlutá šipka v obsahu ukazuje na odpovídající sekci.

Ukázka zobrazení struktury SGML dokumentu v
prohlížeči Panorama

Dalším výrazným zlepšením XML oproti HTML je bohatší možnost tvorby odkazů. XML umožňuje kromě odkazů, které známe z HTML, vytvářet i obousměrné odkazy, odkazy na více míst či odkaz na celý úsek dokumentu.

XML rovněž již od začátku řeší podporu různých jazyků. Jako standardní znaková sada je používano ISO 10646, což je 32bitové kódování, které obsahuje všechny dnes používané znaky. V XML je i podpora pro text psaný zprava doleva či shora dolů.

Díky tomu, že v XML lze definovat téměř jakkoliv složitou strukturu, je možné vytvořit DTD, která budou používaná pro výměnu dat např. mezi lékaři a zdravotními pojišťovnami, mezi výrobci elektrotechnických součástek atd. XML poslouží jako univerzální na platformě nezávislý formát pro výměnu informací.

Firma Sun má i další vize: společně s XML dokumentem se ze sítě stáhne i Java aplet, který umožní data zobrazovat různými způsoby -- např. měnit položku, podle které se bude nějaký seznam třídit. Podrobnější informace si můžete přečíst v zajímavém článku XML, Java, and the future of the Web od Jona Bosaka ze Sun Microsystems (http://sunsite.unc.edu/pub/sun-info/standards/xml/why/xmlapps.htm).

Dosud jsme hovořili o tom, jak je důležitá struktura informací. Samozřejmě, že v konečné fázi dokument čte člověk. Mělo by tedy být možné specifikovat, jak se obsah určité značky zobrazí na obrazovce nebo na tiskárně. Pro tyto účely se používají styly. Narozdíl od HTML se však nepoužívá CSS (Cascading Style Sheets) ale DSSSL (Document Style Semantics and Specification Language). DSSSL je přibližně rok starý ISO standard s číslem 10179. Pro každou značku použitou v DTD může být pomocí DSSSL specifikováno, jak se má její obsah zobrazit. Kromě běžných parametrů jako typ a velikost písma, mezery před a za, způsob zarovnávání atd. lze používat i sazbu do více sloupců, otáčení textu nebo plovoucí objekty. Pro použití v aplikacích založených na XML se však nepředpokládá používání celého standardu DSSSL, ale pouze nejdůležitější podmnožiny -- tzv. DSSSL-O (DSSSL On-line).

V souvislosti se styly je velice zajímavý program Jade (James' DSSSL Engine). Tento public domain software umožňuje konvertovat SGML dokumenty na základě stylu DSSSL do formátů RTF (Microsoft Word) a TeX (jeden z nejkvalitnějších systémů pro sazbu). Formátování se samozřejmě řídí specifikací uvedenou ve stylu a navíc lze automaticky generovat např. obsah dokumentu. Kromě toho nám Jade poslouží při konverzi dokumentů s rozdílnými DTD nebo při generování souboru zachycujícího strukturu SGML dokumentu. Pokud potřebujete výstup do jiného formátu, stačí dopsat příslušný modul v C++ -- Jade je totiž distribuován včetně zdrojových textů. Pro první pokusy však vystačíme s binární verzi pro Win32 (http://www.jclark.com/jade/).


XML nám umožňuje vytvářet dokumenty, které lze snadno použít k výměně informací všeho druhu. To zajišťuje přesná definice přípustné struktury dokumentu uložená v DTD. XML dokumenty kromě textu obsahují značky, které určují význam textu. Toho lze výhodně využít zejména při prohledávání a při navigaci v dokumentu. Vzhled XML dokumentu může být definován v DSSSL stylu. Pro jeden druh dokumentu může existovat několik stylů, pokud požadujeme více graficky odlišných výstupů.

Nám nezbývá než doufat, že na trh se brzy dostanou prohlížeče a editory, které budou podporovat XML. Umožní tak široké nasazení XML všude, kde je to výhodné. Samozřejmě, že vás se všemi novinkami včas seznámíme a až bude ten pravý čas, tak pro vás připravíme seriál o tvorbě XML dokumentů. S předběžnou verzí návrhu standardu XML se můžete seznámit na adrese http://www.w3.org/pub/WWW/TR/WD-xml-961114.html.

© Jiří Kosek 1999