COMPUTERWORLD
Specializovan² t²denφk o v²poΦetnφ technice
o Internetu
(CW 26/97)

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). Nynφ 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∞ webov²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φ webovΘ 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 i 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).

KonkrΘtnφmu dokumentu, zapsanΘmu podle pravidel n∞jakΘho DTD (nap°. webovΘ 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, 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.

Jazyk HTML, kter² se dnes pou₧φvß pro tvorbu webov²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 bude mo₧nΘ 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 naÜem obrßzku vidφme, jak to m∙₧e vypadat v praxi. V pravΘ Φßsti je XML nebo SGML-dokument. Prohlφ₧eΦ (v naÜem 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.

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ß bude 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 applet, 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. Na rozdφ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 10 179. 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φ verzφ pro Win32 (http://www.jclark.com/jade/).

Zßv∞rem

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.


| <<< | CW o Internetu | COMPUTERWORLD | IDG CZ homepage |