XML schΘmata

aneb kdy₧ nßm DTD nestaΦφ

Ji°φ Kosek


Obsah

Kdo se v tom mß vyznat
Nest°elilo W3C vedle?
Definice element∙
Definice atribut∙
DatovΘ typy
SchΘmata prakticky
ZajφmavΘ odkazy

DTD umo₧≥ujφ definovat novΘ jazyky zalo₧enΘ na XML. V mnoha sm∞rech je vÜak vid∞t, ₧e DTD jsou pom∞rn∞ zastaralß a nevyhovujφ dneÜnφm pot°ebßm. Jejich nejv∞tÜφm nedostatkem je nemo₧nost urΦenφ datov²ch typ∙ pro obsah atribut∙ a element∙. Vyu₧itφ automatickΘ kontroly dokument∙, kterΘ reprezentujφ ädatabßzovßô data, je pak v aplikacφch velmi omezenΘ. Vzniklo proto n∞kolik jazyk∙ pro popis schΘmatu dokumentu.

V∞tÜina kritik∙ vyt²kß DTD p°edevÜφm dv∞ v∞cφ û slabou typovou kontrolu a nestandardnφ syntaxi. Ob∞ dv∞ slabiny pochßzejφ jeÜt∞ z jazyka SGML. Jeho standard vznikal v 80. letech. Tehdy se SGML pou₧φvalo p°edevÜφm pro textovß data. Neexistoval tedy po₧adavek na mo₧nost definice typ∙. Mß-li se dnes XML pou₧φvat pro v²m∞nu dat v business-to-business aplikacφch, musφme mφt mo₧nost definovat datovΘ typy na tΘ ·rovnφ, kterou znßme z dneÜnφch databßzov²ch systΘm∙ (celΘ Φφslo, desetinnΘ Φφslo, °et∞zec danΘ dΘlky, datum apod.).

Nestandardnφ syntaxe DTD vy₧aduje, abychom se nauΦili dalÜφ jazyk (i kdy₧ pom∞rn∞ jednoduch²) pro popis struktury dokumentu. Syntaxe DTD je velice ·spornß, co₧ p°esn∞ odpovφdß po₧adavk∙m doby, kdy vznikala. Dnes se zdß, ₧e mnohem vhodn∞jÜφ by byl jazyk, zalo₧en² na XML. Pro editaci schΘmat a jejich zpracovßnφ bychom mohli vyu₧φt nßstroje, kterΘ ji₧ dnes mßme pro XML.

VÜechny nov∞ vzniklΘ jazyky pro zßpis schΘmatu v²Üe zmφn∞nΘ nedostatky °eÜφ. Krom∞ toho nabφzejφ dalÜφ zajφmavΘ rysy, kterΘ se mohou hodit v urΦit²ch aplikaΦnφch oblastech. My se te∩ struΦn∞ podφvßme na neznßm∞jÜφ a nejpou₧φvan∞jÜφ jazyky pro popis schΘmatu dokumentu.

Kdo se v tom mß vyznat

Jednφm z prvnφch schΘmat byl jazyk XML-Data od Microsoftu. Ten byl v polovin∞ roku 1998 troÜku zjednoduÜen a nynφ se pod nßzvem XML-Data Reduced (XDR) pou₧φvß ve vÜech MS produktech (XML parser, BizTalk Server, SQL Server 2000). V souΦasnΘ dob∞ se po DTD jednß asi o nejpou₧φvan∞jÜφ schΘma, co₧ je dßno zejmΘna siln²m postavenφm firmy Microsoft na trhu.

XDR vÜak nenφ jedin²m ₧elφzkem v ohni. Mezi hodn∞ pou₧φvanß schΘmata pat°φ i SOX (Schema for Object-oriented XML). Oproti XDR umo₧≥uje ve schΘmatech pou₧φvat d∞diΦnost. JednotlivΘ Φßsti schΘmat mohou b²t sdφleny a opakovan∞ vyu₧φvßny. SOX vyu₧φvß nap°φklad firma CommerceOne ve sv²ch portßlech nabφzejφcφch B2B slu₧by.

DSD (Document Structure Description) vznikl v laborato°φch firmy AT&T, kterΘ ji₧ softwarov² sv∞t obohatily o mnoho zajφmavΘho. DSD neslou₧φ jen pro validaci dokument∙. Pou₧itφm DSD na XML dokument se provede jednak jeho kontrola a jednak vznikne nov² XML dokument, ve kterΘm jsou podle DSD dopln∞ny chyb∞jφcφ implicitnφ hodnoty. Aplikace zpracovßvajφcφ takto vzniklΘ a upravenΘ dokumenty mohou b²t mnohem jednoduÜÜφ.

Velice jednoduch²m jazykem, kter² ve svΘ zßkladnφ verzi nepodporuje r∙znΘ datovΘ typy je DDML (Document Definition Markup Langugae). Jeho hlavnφm cφlem bylo poskytnou mo₧nost zßpisu DTD pomocφ XML syntaxe, samotnΘ mo₧nosti DDML pro definici p°φpustnΘ struktury dokumentu nenabφzejφ oproti DTD nic novΘho.

Velk² rozruch vyvolal zaΦßtkem tohoto roku jazyk RELAX (Regular Language for XML). Jeho autor, Makoto Murata, toti₧ p∙vodn∞ spolupracoval na standardizaci XML schΘmat v rßmci W3C. S postupem v²voje XML schΘmat v rßmci W3C vÜak nebyl spokojen, a proto vytvo°il jazyk RELAX, kter² bude s nejv∞tÜφ pravd∞podobnostφ v blφzkΘ budoucnosti v Japonsku standardizovßn. Zatφmco vÜichni oΦekßvali, a₧ se dokonΦφ jednotn² standard schΘmat na p∙d∞ W3C, spat°il sv∞tlo sv∞ta nov² jazyk. RELAX je narozdφl od jin²ch jazyk∙ pro popis schΘmatu zalo₧en na zajφmavΘ matematickΘ teorii hedge automat∙. RELAX oproti DTD nabφzφ novΘ zajφmavΘ mo₧nosti, p°itom vÜak zachovßvß mo₧nost p°evodu schΘmat zp∞t na DTD. Samoz°ejmostφ je podpora r∙zn²ch datov²ch typ∙. Autor RELAXu doporuΦuje jeho pou₧itφ pouze na p°echodnou dobu, ne₧ budou schΘmata standardizovßna.

Obrßzek 1. Na zmatku v oblasti schΘmat mohou vyd∞lat snad jen tv∙rc∙ nßstroj∙ pro vizußlnφ nßvrh schΘmatu a jeho konverzi mezi r∙zn²mi formßty. Mezi takovΘto aplikace pat°φ i XML Authority.

Jako p°echodovou technologii mezi DTD a schΘmaty lze chßpat i DT4DTD (Data Types for DTD). Tento nßvrh umo₧≥uje p°φmo do DTD p°idat definici datov²ch typ∙ atribut∙ a element∙. Je vÜak zachovßna zp∞tnß kompatibilita s existujφcφmi parsery. Specißln∞ upravenΘ parsery pak mohou vyu₧φvat p°φdavnou informaci o typech.

VÜechny p°edchozφ jazyky pro zßpis schΘmatu byly zalo₧eny na gramatikßch. To znamenß, ₧e se v nich definovaly mo₧nΘ obsahy jednotliv²ch element∙. VÜechny tyto definice dohromady pak vymezujφ mno₧inu vÜech p°φpustn²ch dokument∙. VÜe musφme definovat postupn∞ a mnohdy zbyteΦn∞ pracn∞. Jazyk Schematron p°ichßzφ se zcela jinou myÜlenkou. Ve schΘmatu se definujφ vzory, kterΘ odpovφdajφ p°φpustn²m zano°enφm jednotliv²ch element∙ ve stromovΘ struktu°e XML dokument∙. Vzory se definujφ pomocφ jazyka XPath, kter² se pou₧φvß i v mnoha dalÜφch XML-technologiφch. Oproti ostatnφm schΘmov²m jazyk∙m, m∙₧e b²t zßpis v Schematronu v n∞kter²ch p°φpadech mnohem struΦn∞jÜφ a nßzorn∞jÜφ. Pro validaci oproti schΘmat∙m zapsan²m v Schematronu nenφ pot°eba vyu₧φtvat ₧ßdn² specißlnφ parser. Existujφ styly v XSL, jejich₧ aplikovßnφm na schΘma a dokument dostaneme p°ehled chyb.

⌐ Ji°φ Kosek 2000-2001