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