Validace a schémata XML dat (XML Schema, Relax NG, Schematron...) Obsah Specifikace a validita XML...........................................................................................2 Aktuální specifikace XML ....................................................................................................2 Jakou verzi použít?..............................................................................................................2 Validita XML dokumentů.....................................................................................................2 XML Schema.............................................................................................................2 XML Schema - základní zdroje informací................................................................................3 XML Schema - motivace ......................................................................................................3 XML Schema - hlavička definice schématu..............................................................................3 XML Schema - přiřazení typu elementu s daným názvem ...........................................................3 XML Schema - definice jednoduchého typu .............................................................................4 XML Schema - definice jednoduchého typu - příklad 1 ..............................................................4 XML Schema - definice jednoduchého typu - příklad 2 ..............................................................4 XML Schema - jednoduché typy - "union" ...............................................................................4 XML Schema - jednoduché typy - seznam hodnot .....................................................................5 XML Schema - definice složeného typu ..................................................................................5 XML Schema - definice složeného typu - skupiny .....................................................................5 XML Schema - definice složeného typu - skupiny atributů..........................................................6 XML Schema - použití skupin ...............................................................................................6 XML Schema - kompozitor "sequence" ...................................................................................6 XML Schema - kompozitor "choice".......................................................................................7 XML Schema - kompozitor "all" ............................................................................................7 XML Schema - jednoduchý obsah elementu.............................................................................7 XML Schema - smíšený obsah elementu..................................................................................8 XML Schema - další možnosti...............................................................................................8 XML Schema - anotace schémat ............................................................................................8 XML Schema - znovupoužití definice schématu........................................................................9 XML Schema - abstraktní a konečné typy ................................................................................9 XML Schema - jmenné prostory ............................................................................................9 XML Schema - nespecifikované elementy a atributy ..................................................................9 XML Schema - odkaz na definici schématu............................................................................10 Relax NG ................................................................................................................10 Relax NG - motivace .........................................................................................................10 Relax NG - základní zdroje informací ...................................................................................10 Jazyky schémat používající vzory.................................................................................11 Schematron......................................................................................................................11 Examplotron ....................................................................................................................11 Ostatní jazyky schémat...............................................................................................11 DSD 2.0 ..........................................................................................................................11 1 Validace a schémata XML dat (XML Schema, Relax NG, Schematron...) Vyjadřovací síla těchto modelů, jejich nedostatky....................................................................11 Nástroje na validaci XML dat modelovaných podle těchto standardů ..........................................11 Specifikace a validita XML Aktuální specifikace XML • Původní specifikace (W3C Recommendation) XML 1.0 na W3C: http://www.w3.org/XML/ • 4th Edition (aktualizace, opravy, ne změny) na Extensible Markup Language (XML) 1.0 (Fourth Edition) [http://www.w3.org/TR/2006/REC-xml-20060816/] • výborná komentovaná verze téhož na XML.COM (Annotated XML): http://www.xml.eom/pub/a/axml/axmlintro.html • XML 1.1 (Second Edition) [http://www.w3.org/TR/2006/REC-xmlll-20060816/] - změny indukované zavedením UNICODE 3, lepší možnosti normalizace, upřesnění postupu manipulace se znaky ukončení řádku. XML 1.1 není už vázaný na konkrétní verzi UNICODE, ale vždy na verzi poslední. Jakou verzi použít? Jakou verzi specifikace bychom měli v nových aplikacích používat? Odpověď dává W3C XML Core Working Group [http://www.w3.Org/XML/Core/#Publications]: • nepíšeme-li parser, ale aplikaci, která generuje nebo vytváří XML (editor), používejme XML 1.0 (zpětná kompatibilita) nové parsery by měly umět XML 1.1 Validita XML dokumentů Opakování: každý XML dokument MUSÍ být správně utvořený {well formed) Nové: XML dokument můřže být platný {valid) dokument: Platný podle specifikace znamená přísnější omezení než správně utvořený. Obvykle se validitou myslí soulad s DTD (Document Type Definition) dokumentu nebo (moderněji) - soulad s XML Schematem, případně jinými schématy (RelaxNG, Schematron). XML Schema 2 Validace a schémata XML dat (XML Schema, Relax NG, Schematron...) XML Schema - základní zdroje informací Specifikace XML Schema - http://www.w3.org/XML/Schema Tutoriál Using W3CXML Schema: http://www.xml.eom/pub/a/2000/ll/29/schemas/partl.html - stručný XML Schema Tutorial - http://www.w3schools.com/schema/default.asp - obsáhlejší vynikající komplexní tutoriál na http://www.xfront.com XML Schema - motivace Dát silnější prostředek pro specifikaci modelu XML dat než je DTD; mít možnost: • Oddělit koncept typu (např. typu elementu) od jeho výskytu (instance, např. elementu s určitým názvem) - to DTD neumí • Poskytnout bohatší škálu primitivních datových typů • Umožnit použití jmenných prostorů Umožnit jemnější specifikaci modelu obsahu (elementů) • Umožnit odvozování nových typů {dědičností) Umožnit modularizaci a znovupoužitelnost schémat • Zapisovat schéma v XML XML Schema - hlavička definice schématu .../... XML Schema - přiřazení typu elementu s daným názvem ... definice typu - je přimo zde - tzv. "local" nebo daná odkazem - tzv. "globa 3 Validace a schémata XML dat (XML Schema, Relax NG, Schematron...) XML Schema - definice jednoduchého typu • Neobsahuje dceřinné elementy, lze použít jako typ obsahu elementu nebo atributu • Lze definovat restrikcí z existujícího typu ... XML Schema - definice jednoduchého typu - příklad 1 Restrikce délky obsahu XML Schema - definice jednoduchého typu - příklad 2 Restrikce obsahu regulárním výrazem XML Schema -jednoduché typy - "union" Zhruba odpovídá konceptu "union" v C Výsledkem je jednoduchý typ Lze spojovat bázový typ a výčet hodnot Příklad: 4 Validace a schémata XML dat (XML Schema, Relax NG, Schematron...) XML Schema -jednoduché typy - seznam hodnot Lze definovat typ jako seznam hodnot oddělených bílými znaky Dalším odvozením lze omezit počet prvků seznamu Příklad XML Schema - definice složeného typu Místo sekvence lze použít a XML Schema - definice složeného typu - skupiny 5 Validace a schémata XML dat (XML Schema, Relax NG, Schematron...) při definici složeného typu lze použít skupiny (group) Skupina elementů: Místo sekvence lze použít a XML Schema - definice složeného typu - skupiny atributů Skupina atributů: Může být uvedena povinnost výskytu (use=required) XML Schema - použití skupin Příklad použití skupin elementů a atributů XML Schema - kompozitor "sequence" Předepisuje výskyt dceřinných elementů v určitém pořadí .../... 6 Validace a schémata XML dat (XML Schema, Relax NG, Schematron...) .../... sequence označuje model obsahu připouštějící výskyt dané posloupnosti (sekvence) dceřinných elementů xs je prefix vázaný na NS s URL http://www.w3.org/2001/XMLSchema Místo lze použít nebo XML Schema - kompozitor "choice" Předepisuje výskyt jednoho z dceřinných elementů nebo skupin elementů .../... .../... XML Schema - kompozitor "all" Předepisuje výskyt dceřinných elementů bez určeného pořadí Smí být jen na nejvyšší úrovni definice obsahu Dceřinné elementy nesmí mít kardinalitu vaší než 1 Příklad: XML Schema -jednoduchý obsah elementu 7 Validace a schémata XML dat (XML Schema, Relax NG, Schematron...) Příklad: XML Schema - smíšený obsah elementu Nelze validovat textový obsah (textové dceřinné uzly) Lze validovat dceřinné elementy Příklad: XML Schema - další možnosti Možnost specifikace integritních omezení:hodnota je jedinečná - xs :uniquehodnota je klíčem -xs : keyhodnota je odkazem na klíč - xs : keyref XML Schema - anotace schémat Anotace je (lidsky čitelná) poznámka-komentář ke schématu Může též obsahovat informace pro zpracování - viz příklad - xs:appinfo Další obsah není předepsán (omezen) - viz příklad - bind, class Příklad Top level element. Element racine. Validace a schémata XML dat (XML Schema, Relax NG, Schematron...) XML Schema - znovupoužití definice schématu Přímo: S předefinováním: XML Schema - abstraktní a konečné typy abstract - nelze instanciovat, pouze jako zákad k odvozování dědičností final - nelze rozšiřovat/odvozovat dědičností XML Schema -jmenné prostory Příklad .../... XML Schema - nespecifikované elementy a atributy Umožní připustit i něco, co předem neznáme 9 Validace a schémata XML dat (XML Schema, Relax NG, Schematron...) Přiklad Pro atributy - xs: any Attribute XML Schema - odkaz na definici schématu Relax NG Relax NG - motivace XML Schema: • Je (zbytečně) složité (specifikace má přes 200 stran) • Může vést v jistých situacích k nejednoznačnostem. Snaží se o pokrytí všech aplikačních oblastí (dokumentové i databázové použití XML a všechno mezi tím). • Obtížně (úplně) implementovatelné. • Dále viz http://www.xml.eom/lpt/a/2002/01/23/relaxng.html Relax NG - základní zdroje informací Vznikl z RELAXu při skupině OASIS-OPEN: 10 Validace a schémata XML dat (XML Schema, Relax NG, Schematron...) • http://www.oasis-open.org/committees/relax-ng Jazyky schémat používající vzory Schematron Schematron home page [http://www.ascc.net/xml/resource/schematron/schematron.html] Examplotron Examplotron home page [http://examplotron.org] Ostatní jazyky schémat DSD 2.0 Vznikl na Univerzitě v Aarhusu, DK Podobně jako RELAX NG je jednodušší než XML Schema viz http://www.brics.dk/~amoeller/XML/ Spíše akademický charakter, skutečnými soupeři zůstávají XML Schema a RELAX NG Vyjadřovací síla těchto modelů, jejich nedostatky viz http://www.xml.eom/lpt/a/2001/12/12/schemacompare.html Nástroje na validaci XML dat modelovaných podle těchto standardů Nástroje na validaci XML dat modelovaných podle těchto standardů 11