Obsah
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.
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.