XML

Jiří Kosek


Obsah

Odkud se vzalo
Co přináší XML nového
Standardní formát pro výměnu a sdílení informací
Mezinárodní podpora
Vysoký informační obsah
Snadná konverze do dalších formátů
Automatická kontrola struktury dokumentu
Hypertext a odkazy
K čemu můžeme XML použít již dnes
B2B – business-to-business aplikace
„Inteligentní“ webové stránky
Elektronické publikování
Univerzální datový formát
Místo závěru
Zajímavé odkazy

O jazyku XML (eXtensible Markup Language) se hodně mluví. Není to jen zbytečně nafouklá bublina? O Javě se před pár lety také mluvilo jen v superlativech a dnes se situace ustálila – na něco se Java používá a na něco ne. Podobné je to i s XML – žádná technologie není samospasitelná, ale v mnoha případech může být její nasazení přínosné. V dnešním čísle se pokusíme odhalit roušku, která XML zakrývá, abyste věděli o co jde. V několika dalších číslech Softwarových novin vás s jednotlivými aspekty XML seznámíme podrobněji, abyste se mohli sami rozhodnout, zda se vám může XML k něčemu hodit. I když je to poměrně nová technologie, jejímu praktickému využití dnes již v cestě nic nestojí.

XML bývá často přirovnáváno k jazyku HTML. Skutečně s ním má mnoho společného. Jazyk XML lze využít pro tvorbu webových stránek, ale narozdíl od HTML si můžeme definovat vlastní značky (tagy). To pak umožní mnohem lepší a přesnější vyhledávání informací, což je v dnešním Internetu jeden z největších problémů. Na většině dnešních webových stránek jsou používány složité tabulky pro dosažení náročných grafických efektů. Výsledný HTML kód je pak samozřejmě dosti nepřehledný. Pokud bychom použili XML, mohla by část domovské stránky firmy zabývající se opravou obuvi vypadat třeba takto

<firma>
  <název>Botička a Verpánek, s.r.o.</název>
  <sídlo>
    <ulice>Přípotoční 17</ulice>
    <město>Praha 4</město>
    <psč>140 00</psč>
    <telefon>02/90123456</telefon>
  </sídlo>
  <oborČinnosti>
    Oprava obuvi, koženého zboží, výměna zipů v kabelkách 
    a taškách, výroba zdravotnické a ortopedické obuvi 
    na zakázku.
  </oborČinnosti>
</firma>

Každému je na první pohled jasné, že nalezení všech opraven obuvi v Praze 4 pomocí Internetu by pak bylo nesmírně jednoduché. XML však není určeno jen pro webové stránky, uplatnění nalezne i v elektronickém publikování nebo při výměně dat mezi různými systémy. Abychom lépe pochopili proč vlastně XML vzniklo, bude lepší vzít to všechno popořádku a podívat se na samotné kořeny XML.

Odkud se vzalo

Pomineme-li vědecké výpočty, simulace jaderných zbraní a kryptografii, byly již od samotného počátku počítače využívány pro přípravu a publikování textu. Situace v šedesátých letech však byla dosti vzdálená té dnešní. Laserové tiskárny byly hudbou budoucnosti. Pokud se na počítačích připravovaly dokumenty pro profesionální tisk – knihy, časopisy apod., výsledek se pomocí osvitové jednotky přenesl na film, ze kterého pak tiskárny dokázaly vyrobit knihu nebo časopis. Osvitové jednotky tehdy vyrábělo několik firem a každá z nich používala vlastní jazyk, pro ovládání jednotky. Dokumenty pro sazbu se tedy připravovaly tak, že se přímo do textu vepisovaly speciální řídící sekvence pro ovládání té které osvitové jednotky. Jednou vytvořený dokument tak byl úzce svázán s výstupním zařízením konkrétního výrobce. Jeho převod pro použití na konkurenční osvitové jednotce rozhodně nebyl jednoduchou záležitostí. V dnešní době, kdy všechny osvitové jednotky rozumí formátům PostScript a PDF to zní neuvěřitelně, ale skutečně to tak tehdy bylo.

Stav to rozhodně nebyl ideální a mnoho lidí si to uvědomovalo. Vzniklo proto několik systémů, které problém nekompatibility různých výstupních zařízení řešily. Princip byl většinou jednoduchý – v dokumentu se používaly nějaké obecné příkazy, které se pak pomocí speciálních konvertorů převedly do jazyka srozumitelného pro konkrétní zařízení. Dalo by se říci, že se jednalo o obdobu ovladačů různých výstupních zařízení, jak je známe dnes. Pokud jsme chtěli dokument vytisknout na nějakém novém zařízení, stačilo sehnat (nebo si napsat;–) příslušný konvertor. Samotný dokument se měnit nemusel.

Mezi nejrozšířenější z těchto systémů patřily bezesporu troff a TeX. Důležité je, že oba dva jazyky byly čistě prezentační – dalo se pomocí nich určit, jak se mají jednotlivé části textu formátovat. Troff používal poměrně kryptické dvouznakové příkazy. Oproti tomu byl TeX velice uživatelsky přívětivý – umožňoval definici maker ve vlastním programovacím jazyce a nekladl žádná omezení na délku jednotlivých názvů. Šlo tak vytvářet přehledné a srozumitelné zdrojové zápisy dokumentů. Zdrojový kód v TeXu je poměrně lidsky čitelný, makropříkazy se míchají s textem

Dokument v TeXu může obsahovat různé formátovací příkazy --
můžeme např. přepnout {\it na kurzívu} nebo {\bf na tučné} písmo.

Pro účely formátování textu pro tisk je v mnoha směrech TeX dodnes nepřekonán a stále se používá (například všechny mé knihy jsou vysázeny TeXem). Vývoj TeXu se nezastavil – dnes lze například upravenou verzí původního TeXu generovat dokumenty ve formátu PDF, v několika komerčních programech pro sazbu textu je zaintegrováno jádro TeXu.

Programy jako TeX se však hodí pouze pro zpracování dokumentů, které se mají ve výsledku tisknout. Hlavně kvůli tomu, že nabízejí příkazy, které umožňují měnit druh použitého písma, způsob zarovnání a nepřeberné množství dalších parametrů. S rozmachem Internetu a dalších médií (např. CD-ROM) vznikla potřeba jedny a tytéž informace prezentovat mnoha způsoby – kvalitním tiskem na papíře, jako hypertextovou příručkou na CD-ROMu či sadu provázaných webových stránek. Pro tyto účely je však potřeba znát logickou strukturu dokumentu. Musíme vědět, že tohle je nadpis a tohle zase popis obrázku. Konkrétní velikost písma a způsob formátování záleží až na tom, zda chceme produkovat tištěnou knihu nebo multimediální CD-ROM.

Potřebujeme tedy jazyk, který umožní označit význam jednotlivých částí textu, a ne jejich vzhled. Takovýmto „samopopisným jazykem“ je i XML. Nejde však zdaleka o první jazyk svého druhu. Jazykům, které umožňují vyznačovat části textu, se říká značkovací jazyky (markup language).

Asi prvním známým značkovacím jazykem byl GML (Generalized Markup Language), který vytvořili pánové Goldfarb, Mosher a Lorie při práci na systému pro uchovávání a následné využití právních textů pro IBM. Museli se tehdy vypořádat s nekompatibilitou jednotlivých systémů a programů a nejsnazší cesta vedla právě přes vytvoření nějakého obecného značkovacího jazyka.

Princip GML se osvědčil a v 80. letech začala na základě GML vyvíjet standardizační organizace ANSI jazyk, který umožňoval definici vlastních značkovacích jazyků – uživatel si dle potřeb mohl vytvořit vlastní sadu značek vhodnou pro daný druh dokumentů. Tou dobou se sdružení GCA (Graphics Communications Association) snažilo vytvořit standardní formátovací jazyk GenCode použitelný na širokém spektru zařízení. Mnohé cíle obou projektů byly podobné, a proto se obě aktivity spojily. Výsledkem byl jazyk SGML (Standard Generalized Markup Language), který je definován v ISO normě 8879 z roku 1986.

Jazyk SGML je skutečně hodně obecný – samozřejmě umožňoval definici vlastních značkovacích jazyků (sad značek a jejich vzájemných vztahů) pomocí tzv. definic typu dokumentu (DTD). Navíc měl spoustu volitelných parametrů – počínaje maximální délkou názvů značek a konče určením znaků použitelných jako oddělovače značek od textu. Komplexnost standardu SGML poněkud zbrzdila jeho praktické využívání. Velkou podporou pro SGML bylo americké ministerstvo obrany, které od svých dodavatelů vyžadovalo dokumentaci k výrobkům právě ve formátu SGML. Důvod byl zřejmý – bylo třeba, aby byla dokumentace použitelná v poměrně dlouhém období. Nešlo tedy použít nějaký proprietární formát textového procesoru, který se každých pár let mění.

Asi nejznámější aplikací SGML je jazyk HTML (Hypertext Markup Language), který se používá pro tvorbu webových stránek. To jaké značky můžeme na stránkách používat určuje příslušné DTD, které je pro každou verzi HTML trošku jiné.

V polovině 90. let došlo k paradoxní situaci. Jazyk HTML si získal velkou oblibu díky své jednoduchosti, která byla v ostrém kontrastu s komplexností SGML. Ukázalo se však, že pevně daná skupina značek, které HTML používá, už nestačí. Pro účely vyhledávání a vůbec efektivnější výměny dat by bylo lepší mít možnost používání vlastních značek, které by přesně vymezily význam textu. Požadavek by tedy mohl bez problémů splnit jazyk SGML.

Jak jsme se již zmínili, standard SGML je dost komplexní a jeho úplná implementace velice náročná. Přitom se během deseti let používání SGML ukázalo, že se v praxi používá stejně jen část jeho možností. Tato nejdůležitější podmnožina SGML proto byla vybrána jako nový jazyk, který dovede Web do třetího tisíciletí. Správně již tušíte, že nový jazyk dostal jméno XML (eXtensible Markup Language). Jedná se o podmnožinu SGML, která si zachovává možnost definování vlastních DTD, a tedy značek, pro jednotlivé skupiny dokumentů. Narozdíl od SGML je mnoho parametrů předem určeno a nelze je měnit – délka názvů značek, použité oddělovače a speciální znaky atd. XML už rovnou počítá s podporou všech možných jazyků, takže není tak úzce svázáno s angličtinou jako většina předchozích počítačových technologií. Navíc je syntaxe zápisu dokumentů v XML oproti SGML poměrně přísná, což umožní mnohem snazší a levnější vývoj aplikací, které umožňují s XML pracovat.

Jak sami vidíte, XML pochází z oblasti, která se zaměřuje na uchovávání a zpracování textových dokumentů. Pro tyto účely se XML výborně hodí. Mnoho velkých i malých firem vyrábějících software, hardware nebo třeba letadla používá pro tvorbu dokumentace systémy založené na XML nebo SGML.

Elektronické publikování dokumentů však není jedinou doménou XML. Značky umožňují v dokumentu zachytit důležité informace o struktuře a významu. Není proto problém do XML dokumentu uložit například obsah tabulky z relační databáze, jak je vidět na obrázku 1. O dokumentech bychom měli spíše uvažovat jako o nosičích informací – není už tak důležité, jak moc jsou data v nich data strukturovaná. Některé aplikace pracují s dokumentem, který je filosofickou esejí, jiné za dokument považují řadu čísel s burzovními indexy.

Obrázek 1. XML není určeno jen pro texty, poradí si s jakýmikoliv daty i databázovými

© Jiří Kosek 2000-2001