Zaostřeno na XML

V dnešním článku se podíváme na problematiku prezentací dokumentů. Speciálně na to, co nám nabízí technologie XML, jaké jsou její výhody a použití.

14.5.2004 08:00 | Josef "jose" Kadlec | přečteno 7196×

Co stálo za vznikem značkovacích jazyků a samotného XML?

Byla to jistě složitá situace, která začala se vznikem počítaců někdy v šedesatých letech, kdy byl tisk hodně složitý. Pokud někdo chtěl tisknout třeba noviny nebo časopisy, musel složitými procedurami převádět text na speciálni média, ze kterých mohly jistá zařízení tisknout. Problém byl v tom, že výrobců těchto zařízení bylo více a nebyly navzájem kompatibilní. Možná by se hodilo přirovnání k tomu, že zhruba v téhle době, v době sálových počítačů, běžel na každém počítači jiný OS (resp. později jiný UNIX), takže tu opět nebyla vzájemná kompatibilita a pokud chtěl administrátor jednoho počítače přijít pracovat k jinému, bylo to složité. Zní to asi dost hrozně, když žijeme v době postscriptových tiskáren a systémů, které se snažíme standardizovat například POSIXem, atd. Pak přišla éra TeXu od matematika Donalda Knutha a jemu příbuzných jazyků. Byla to jistá revoluce, vždyť TeX, resp. LaTeX, jakožto sada maker pro TeX, se používá hojně do dnes. Tyto programy byly ovšem určeny především pro tisk, ale co když potřebujeme text prezentovat jak tiskem, tak například na webových stránkách? To byl podnět k tomu, aby vznikl jakyk, kde není možné určit pouze vzhled (jako u TeXu), ale i samotný význam jednotlivých částí textu - např. odstavec, nadpis, kapitola apod. Do této skupiny patří právě XML (eXtensible Markup Language). A není zdaleka jediné a první. Z této skupiny můžeme jmenovat ještě GML, které bylo asi jako prvni jazyk této skupiny. Dále např. SGML (Standard Generalized Markup Language), ze kterého se později pomocí určitého DTD (Document Type Definition), vyvinulo HTML, které jistě mnozí důvěrně znají. Problém je v tom, že značky určující význam textu určené pomocí DTD pro HTML se stávají postupem času nedostačující a bylo nutné vytvořit jazyk, který by umožňoval definici vlastních DTD značek.

Co je to tedy XML?

XML je jazyk podřízený SGML, který ovšem narozdíl od SGML umožňuje definování vlastních značek (sada těchto značek dohromady tvoří DTD). Na druhou stranu je to ovšem jazyk přísný na dodržování synstaxe. Abych uvedl příklad. V HTML si můžete například dovolit udělat plně funkční stránku tímto zápisem:

<HTML>
<BODY>
Nejake telo dokumentu.

Všiměte si, že tagy <HTML> a <BODY> nejsou sparované, ale přes parser vše vesele projde. Tohle bychom si v XML dovolit nemohli a parserem by to neprošlo. Možná to vypada jako nevýhoda pro vývojáře, ale naopak. To že má jazyk daný pevný a přísný řád zjednodušuje výrobu parserů, zpracování samotného dokumentu, takže je zobrazení rychlejší a je možno jej využít například v mobilech. Mohu vás, kteří se chystají psát XML dokumenty, uklidnit, že lepší XML editory doplňují parové tagy sami;-) Další věcí syntaxe je to, že se v tazích rozlišují velká a malá písmena, takže <firma> a <Firma> jsou dva odlišné tagy. V HTML bylo opět jedno, jestli jste napsali <HTML> ci <html>.

Co dál...

Podle mě asi největší výhodou psaní v XML je univerzálnost dokumentu. Pokud mě někdo pošle dokument v XML, budu vždy schopen převést tento dokument do jiného formátu nebo ho editovat v kterémkoliv textovém editoru. Pokud mě někdo pošlě dokument v proprietárním formátu MS Word, tak tento soubor na svém GNU/Linux boxu při velkém stěstí možná správně otevřu. O nějakém převádení na jiné formáty se nedá skoro mluvit. XML je vlastně ještě univerzálnější než například TeX. Na tuto výhodu těsně navazuje další a to, že si každý může pomocí vlastních prostředků definovat samotný vzhled a formátování. Někdo potřebuje daný dokument prezentovat na webu, tak zřejmě nasadí CSS (Cascading Style Sheets), což jsou mnohým důvěrně známé kaskádové styly. Někdo jiný může použít sofistikovanější XSL (eXtensible Stylesheet Language), které se hodí spíše na dokumenty konvertované třeba do formátu PDF. Ne méně důležitou výhodou je i podpora širokého spektra jazyků - někdy i dost bizardních. XML používá 32bitovou znakovou sadu ISO 10646.

Co je to přesně to DTD?

DTD (Document Type Definition) je vlastně sada značek, která celkově definuje určitý typ dokumentu většinou dané pro konkrétní typy dokumentů. Takže například značky <nazevfaktury>, <nazevfirmy>, <ICO>, <DPH>, ... by patřily k DTD, které specifikuje fakturu. Ovšem jaká je pravděpodobnost toho, že si dvě firmy zvoli uplně stejné značky? Co když jedna použije pro název faktury tag <nazevfaktury> a druha <faknazev>? Právě proto vznikají skupiny, které se snazi standardizovat DTD pro určité oblasti. Asi nejznámější DTD se nazýva DocBook a je určeno pro psaní knih.

Co je to tedy DocBook?

DocBook je DTD vytvořené ve dvou verzích - jedna pod SGML a jedna pod XML. Jak už sem zmiňoval, je tento formát určen pro psaní knih a dokumentace. Asi si to neuvědomujete, ale v DocBooku je napsána např. dokumentace k PHP, GNU/Linuxu, FreeBSD, KDE či Gnome. Někdy v době 1999 se udržování DocBooku přesunulo pod záštitu sdružení OASIS, které se stará o mnoho dalších DTD. V DocBooku lze psát skoro jakýkoliv rozsáhlejší strukturovaný text - např. i bakalářskou práci. Existují editory, které DocBook podporují.

Jak s tim vším souvisí XHTML?

XHMTL je vlastně jakési zkřížení HTML (jakožto jazyka založeného na SGML) a XML. XHMTL a HTML jsou si velmi podobní. Vlastně používané značky jsou prakticky stejné. Rozdíl je pouze v tom, že XHTML využívá syntaxi XML. Výhody tohoto jazyka opět plynou z vlastností XML. XHTML se například zobrazí v každém prohlížeči stejně, narozdíl od HTML, kde jsou mnohdy patrné velké rozdíly při použití různých prohlížečů. Další výhody nemá cenu ani jmenovat - patří sem opět vytvoření svých nových jmených prostorů (DTD), atd.

Sami jistě vidíte, jak může XML zjednodušit život. Možná XML používáte a ani o tom nevíte. XML je totiž používáno mnoha aplikacemi (např. v podobě konfiguračních souborů), do kterých byste to možná ani neřekli. Do důsledku je XML jakousi normalizační technologií. Snaží se sjednodit a standardizovat formáty, aby se usnadnila implementace a s tím plynoucí výšše uvedené výhody. XML prostě ruluje:-)

http://www.xml.org/
http://www.root.cz/clanek/1472 - seriál
http://www.kosek.cz/clanky/swn-xml/index.html
http://zvon.org/index.php?nav_id=173 - slovník XML pojmů
http://www.kosek.cz/xml/index.html
http://www.oasis-open.org/docbook/
http://www.docbook.org
http://www.kosek.cz/xml/db/index.html
http://www.root.cz/clanek/1570
http://www.root.cz/clanek/1587
http://www.fi.muni.cz/~xpavlov/xml/

Online verze článku: http://www.linuxsoft.cz/article.php?id_article=137