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