XML Schema. Irena Mlýnková

Podobné dokumenty
XML Schema. Irena Mlýnková. Karlova Univerzita Matematicko-fyzikální fakulta Katedra softwarového inženýrství Malostranské náměstí Praha 1

XML Schema a jeho implementace v prostředí

Příloha č. 1E národního standardu pro elektronické systémy spisové služby

Správnost XML dokumentu

Schéma XML pro výměnu dokumentů a jejich metadat

XML schémata XML teorie a praxe značkovacích jazyků (IZI238)

XML a DTD. <!DOCTYPE kořenový_element [deklarace definující vlastnosti jednotlivých elementů a atributů]> externí deklarace:

24. XML. Aby se dokument XML vůbec zobrazil musí být well-formed (správně strukturovaný). To znamená, že splňuje formální požadavky specifikace XML.

XML schémata. Jiří Kosek

Obsah prezentace. Co je to XML? Vlastnosti. Validita

XML schémata. Agenda. Přínosy použití schématu. Proč potřebujeme schéma dokumentů XML. Tutoriál. Agenda. proč a nač jsou schémata

Teoretické a pokročilé aspekty XML technologií

XML schémata. Jiří Kosek

Popis XML rozhraní Veřejného webu RŽP

Úvod do databázových systémů B

Rozšiřitelný editor XML dokumentů. Tomáš Diviš

<xs:maxlength value="50"/> </xs:restriction> </xs:simpletype>

podnikatele ve formě PDF dokumentu nebo budou jednotlivé datové položky rozvedeny v XML subelementech.

Syntaxe XML XML teorie a praxe značkovacích jazyků (4IZ238)

Popis XML rozhraní Veřejného webu RŽP

Příloha č. 1D národního standardu pro elektronické systémy spisové služby

Analýza dat a modelování. Speciální struktury

Přehled změn v XSD aplikace SSZ pro dodávku D8.1.0 Rámcová smlouva na Rozvoj a údržbu Informačního systému katastru nemovitostí v letech

Distanční opora předmětu: Databázové systémy Tématický blok č. 4: XML, DTD, XML v SQL Autor: RNDr. Jan Lánský, Ph.D.

INFERENCE SCHÉMATU Z XML DOKUMENTU

XML terminologie a charakteristiky. Roman Malo

NDIC - DATEX II Elaborated Data Publication - Hustota provozu

X36DSV 3. cvičení. XML (extensible Markup Language) JavaScript. AJAX (Asynchronous JavaScript and XML) X36DSV. 2007/10 ver.2.0 1

Předmluva k druhému vydání 13. Úvod 17. ČÁST 2 Vytváření dokumentů XML 65

Diplomová práce Generátor XML souborů řízený XSD schématem

APLIKACE XML PRO INTERNET

Vývoj Internetových Aplikací

Obecný popis struktury souborů a rozhraní pro třetí strany společného technického zařízení správců daně (Podatelny EPO)

Schéma XML pro zaznamenání popisných metadat uvnitř datového balíčku SIP

Vánoční hrátky s JAXB

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ

PRG036 Technologie XML

Lidé komunikují prostřednictvím dokumentů připravovaných elektronicky

Úvod do XML Technologie

Uživatelský manuál pro externí uživatele veřejného webu OTE webové služby

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ

Jazyky pro popis dat

Základy XML struktura dokumentu (včetně testových otázek)

Algoritmizace a programování

Uspořádání klient-server. Standardy pro Web

Databáze I. Přednáška 4

Databázové systémy. - SQL * definice dat * aktualizace * pohledy. Tomáš Skopal

Další XML technologie

Rozhraní SAX, SAX vs. SAX2. Jaroslav Ciml

ADT/ADS = abstraktní datové typy / struktury

Principy XQuery. funkcionální jazyk vše je výraz, jehož vyhodnocením vznikne určitá hodnota základní typy stejné jako v XML Schema:

Michal Krátký. Tvorba informačních systémů, 2008/2009. Katedra informatiky VŠB Technická univerzita Ostrava. Tvorba informačních systémů

Tvorba informačních systémů

Tvorba informačních systémů

Datový slovník. Datum vyhlášení :00:00. Platnost od data. Platnost do data. Název oblasti datových prvků. Verze 102

Zápis programu v jazyce C#

Programovací jazyk Pascal

Návrh technických pravidel pro tvorbu SIP

Prezidium Exekutorské komory České republiky se usneslo na tomto stavovském předpisu: Čl. 1

Interaktivní typová kontrola XML a ladění XML transformací

PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE DATUM VYTVOŘENÍ: KLÍČOVÁ AKTIVITA: 02 PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) HODINOVÁ DOTACE: 1

Z n a č k o v a c í j a z y k y Jan Růžička

ISDOC Národní standard pro elektronickou fakturaci

Proč celé lidstvo nemluví esperantem. XML Prague

Datové rozhraní ISOŘ KADR

Tvorba WWW stránek. Mojmír Volf

Uživatelská příručka

Sběr dat P2-04 Příručka uživatele Verze 2.0

Na tomto místě bude oficiální zadání vaší práce

Datový slovník. Datum vyhlášení :00:00. Platnost od data. Platnost do data. Název oblasti datových prvků. Umístění souboru schématu

Tematický celek Proměnné. Proměnné slouží k dočasnému uchovávání hodnot během provádění aplikace Deklarace proměnných

Příklad buňka tabulky

C:\Projekty\ISZI\XSD\iszi_M02_04.xsd page 1 of 33

l Kontakt s klientem SSP Popis automatizované komunikace s ÚP ČR v součinnosti a exekuci

Formátová specifikace má tvar (některé sekce nemají smysl pro načítání) %

Databázové systémy Cvičení 5.2

Využití XML v DB aplikacích

Reprezentace dat v informačních systémech. Jaroslav Šmarda

7. Datové typy v Javě

SCHÉMOVÉ JAZYKY. Přednáška z předmětu KMA/POK. Otakar ČERBA Západočeská univerzita v Plzni

Lidé komunikují prostřednictvím dokumentů připravovaných elektronicky.

Jazyk XSL XPath XPath XML. Jazyk XSL - rychlá transformace dokumentů. PhDr. Milan Novák, Ph.D. KIN PF JU České Budějovice. 9.

PRG036 Technologie XML

Lidé komunikují prostřednictvím dokumentů připravovaných elektronicky.

Výměnný formát XML DTM DMVS PK

Sada 1 - Základy programování

Obsah HE0084/ :45:06

Formátové specifikace formátovací řetězce

Kurz Databáze. Obsah. Návrh databáze E-R model. Datová analýza, tabulky a vazby. Doc. Ing. Radim Farana, CSc.

Program převod z desítkové na dvojkovou soustavu: /* Prevod desitkove na binarni */ #include <stdio.h>

Vývoj Internetových Aplikací

Úvod do programovacích jazyků (Java)

Algoritmizace prostorových úloh

Uživatelská příručka. ASD Software, s.r.o.

SW ATTIS Synchronizace s LDAP serverem

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

RES Partner uživatelská dokumentace

CSS Stylování stránek. Zpracoval: Petr Lasák

Transkript:

XML Schema Irena Mlýnková

Obsah XML úvod, příklad, základnípojmy DTD přehled XML Schema podrobně

XML

Úvod XML = extensible Markup Language(W3C) Podmnožina SGML omezenápravidly Prvky: Elementy = počáteční a koncováznačka, prázdný Atributy = část počátečního elementu, název + hodnota XML deklarace = verze XML, znakovásada Komentáře <!--, --> Sekce CDATA <![CDATA[, ]]> znaky <, >, & Instrukce pro zpracování <?,?> pro nadřazený program

Příklad <?xml version="1.0"encoding="utf-8"?> <kniha typ="povídky" cena="127 Kč"> <název>o mérodině a jinézvířeně</název> <autor>gerald Durrell</autor> <obrázeksrc="o_me_rodine.gif"/> </kniha>

Základní pojmy Správně strukturovaný (well-formed) dokument = splňuje základnísyntaktickápravidla: Neprázdnéelementy uzavřeny mezi obě značky Správnéuzávorkování značek Dokument máprávě jeden kořenovýelement Přípustnou strukturu definujeme XML schématem (v různých jazycích DTD, XML Schema) Poznámka: XML schémavs. XML Schema Validní dokument = dokument odpovídající danému XML schématu

DTD

Definice a připojení k dokumentu <!DOCTYPE koř_elem[ ]> definice uvnitř dokumentu <!DOCTYPE koř_elemsystem "mojedtd.dtd"> připojenísouboru s DTD k dokumentu <!DOCTYPE koř_elemsystem "mojedtd.dtd" [ rozšířeníprvků DTD ]> <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/dtd/wml_1.1.xml"> veřejný identifikátor

Elementy Název + model obsahu: Jednoduchý EMPTY (prázdný), ANY (libovolný), #PCDATA (textový) Elementový seznam (,) nebo výběr ( ) z elementů + jejich četnosti (*, +,?) Jejich kombinace (závorky, smíšenýobsah) <!ELEMENT kniha (název, autor+, obrázek?)> <!ELEMENT název #PCDATA> <!ELEMENT autor #PCDATA> <!ELEMENT obrázek EMPTY>

Atributy (1) Název + datovýtyp + výskyt + implicitníhodnota Datovétypy: CDATA (text) ID (v rámci dokumentu jednoznačnéid), IDREF, IDREFS, (odkaz / seznam odkazů na id) ENTITY, ENTITIES (odkaz / seznam odkazů na entity) NMTOKEN, NMTOKENS (jednoslovnáhodnota / seznam hodnot z písmen, číslic a znaků. : _ atd.) NOTATION (odkaz na deklarovanou notaci, tj. popis ne-xml dat) Skupina přípustných hodnot

Atributy (2) Povinnost výskytu: #REQUIRED (povinný), #IMPLIED (nepovinný, hodnotu doplní aplikace), #FIXED (fixní hodnota) Implicitní hodnota pokud není #REQUIRED nebo #IMPLIED <!ATTLIST kniha typ (povídky román poezie) #REQUIRED cena CDATA #IMPLIED> <!ATTLIST obrázek srccdata "unspecified.gif">

Entity (1) Textové: (interníx externí) <!ENTITY program "SuperSoft6.0"> <!ENTITY kapitola SYSTEM "kap1.xml"> &program; &kapitola; Binární: (externí) <!ENTITY logo SYSTEM "logo.eps" NDATA "EPS"> Odkazujeme přes atributy ENTITY, ENTITIES

Entity (2) Zabudované: < (<) > (>) & (&) " (") &apos; ( ) Znakové: lib. znak např. = mezera Parametrické: (interníx externí) <!ENTITY % společné-atributy "jazyk CDATA #IMPLIED utajení (veřejné tajné) "veřejné"> <!ATTLIST článek %společné-atributy;>

Další prvky Notace deklarace ne-xml formátu, který smí být použit (odkazujeme přes atribut NOTATION nebo parametr NDATA binárních entit) <!NOTATIONTiffSYSTEM "showtiff.exe"> <!NOTATIONTeXPUBLIC " veřejný identifikátor "> Podmíněnésekce vypuštění části textu <![INCLUDE[ ]]>, <![IGNORE[ ]]> nebo pomocí entit

XML Schema

Motivace (1) Nevyžaduje speciálnísyntaxi (XML schémata = XML dokumenty) Silnápodpora datových typů, umožňuje specifikovat vlastníuživatelsky definovanétypy Je možnéopakovaně využívat jiždefinovanéprvky Umožňuje přesnévyjádření počtu výskytů Mnoho objektově-orientovaných prvků Umožňuje definovat elementy se stejným názvem, ale různým obsahem

Motivace (2) Umožňuje specifikovat unikátnost obsahu elementu, hodnoty atributu nebo jejich kombinace v rámci požadované části XML dokumentu Zachovávávětšinu prvků jazyka DTD

Úvod Elementy definujeme pomocíelementů: ( ) Komplikace v pojmech (+) XML schéma v jazyce XML Schema = XML dokument validnívůči DTD jazyka XML Schema (+) Silný nástroj Využíváse jmenných prostorů Tutéžvěc je možnédefinovat několika způsoby (+/ )

Jmennéprostory Jmennýprostor = prostor v němžjsou jména elementů / atributů unikátní Identifikovány svým URI XML schéma můžeme definovat pomocí různých sad značek (množin elementů a atributů) xmlns:<<prefix>>=<<uri sady značek>>... Určení jmenného prostoru pro element a jeho podelementy <<prefix>>:<<název prvku>>... Použitíprvku Implicitní sada značek bez prefixu

Příklad <ceník:nabídka xmlns:ceník="www.cen.cz/e-cenik" xmlns:bib="www.knihy.cz/bibliografie"> <ceník:položka ceník:dph="22%"> <bib:kniha> <bib:název>o mérodině </bib:název> <bib:autor>gerald Durrell</bib:autor> </bib:kniha> </ceník:položka> </ceník:nabídka>

Připojení k dokumentu <?xml version="1.0"encoding="utf-8"?> <KorenovyElement xmlns="http://www.mff.cuni.cz/mojeschema" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:schemalocation="http://www.mff.cuni.cz/mojeschema schema1.xsd">... </KorenovyElement> Nemá-li schéma cílovýjmennýprostor, pak: xs:nonamespaceschemalocation="schema2.xsd"

Kořenový element (1) Globální elementy (na první úrovni v dokumentu) Globálně definovanéprvky (spec. použití viz. dále) <?xml version="1.0"encoding="utf-8"?> <xs:schema xmlns="http://www.mff.cuni.cz/mojeschema" xmlns:xs="http://www.w3.org/2001/xmlschema" targetnamespace="http://www.mff.cuni.cz/mojeschema">... </xs:schema>

Kořenový element (2) version verze schématu targetnamespace URI vytvářeného (cílového) jmenného prostoru finaldefault implicitníhodnota atributu final v celém schématu (viz. dále) blockdefault implicitníhodnota atributu block v celém schématu (viz. dále) elementformdefault implicitní hodnota atributu form všech elementů ve schématu (viz. dále) attributeformdefault implicitní hodnota atributu form všech atributů ve schématu (viz. dále)

Elementy (1) <xs:schema > <xs:element name="objednávka" type="typobjednávky"/> <xs:element name="dárek"> <xs:complextype> <xs:sequence> <xs:element name="narozeniny" type="xs:date"/> <xs:element ref="objednávka" maxoccurs= "5" /> </xs:sequence> </xs:complextype> </xs:element> </xs:schema>

Elementy (2) name název elementu type datovýtyp elementu (x podelementem) ref odkaz na globálně deklarovaný element nillable příznak, zda smí (tj. neemptyelement) být instance elementu uvedena bez obsahu default implicitní hodnota elementu uvedeného bez obsahu (pro elementy s jednoduchými typy) fixed konstantní (jedinámožná) hodnota elementu (pro elementy s jednoduchými typy)

Elementy (3) minoccurs minimálnínutný počet výskytů elementu na daném místě maxoccurs maximální možný počet výskytů elementu na daném místě form příznak, zda musíbýt název elementu uváděn s prefixem cílového jmenného prostoru (qualified) nebo ne (unqualified)

Atributy (1) Součástídefinice složeného typu (viz. dále) elementu <xs:attribute name="věk" type="xs:positiveinteger"/> Typ určujeme atributem type nebo podelementem Pouze jednoduchétypy Globálně x lokálně definované

Atributy (2) name název atributu type datový typ atributu ref odkaz na globálně definovanýatribut default implicitní hodnota atributu, není-li uveden fixed konstantní (jedinámožná) hodnota atributu use nepovinný (optional), povinný (required), nebo zakázaný (prohibited) výskyt atributu form příznak zda musíbýt název atributu uváděn s prefixem cílového jmenného prostoru (qualified) nebo ne (unqualified)

Atributy (3) use="prohibited" <xs:complextype name="shape"> <xs:attribute name="length" type="xs:nonnegativeinteger"/> <xs:attribute name="height" type="xs:nonnegativeinteger"/> <xs:attribute name="width" type="xs:nonnegativeinteger"/> <xs:attribute name="radius" type="xs:nonnegativeinteger"/>... </xs:complextype> <xs:complextype name="box"> <xs:complexcontent> <xs:restriction base="shape"> <xs:attribute name="length" type="xs:nonnegativeinteger"/> <xs:attribute name="height" type="xs:nonnegativeinteger"/> <xs:attribute name="width" type="xs:nonnegativeinteger"/> <xs:attribute name="radius" type="xs:nonnegativeinteger" use="prohibited"/>... </xs:restriction> </xs:complexcontent> </xs:complextype>

Jednoduchétypy (1) Neobsahujíelementy ani atributy Omezení řetězce na množinu přípustných hodnot Vestavěné x uživatelsky definované Vestavěné= základníx odvozené Typy převzatéz DTD (ID, ENTITY ) pouze pro atributy

Jednoduchétypy (2) vestavěné, string Řetězec znaků základní boolean Logickéhodnotytrueafalse, popř. 1 a 0 decimal Kladnénebo zápornéreálné číslo float 32-bitovékladnénebo zápornéreálné číslo vyjádřenépomocí mantisy a exponentu double 64-bitové číslo -//- duration Časovýúsek ve tvaru PnYnMnDTnHnMnS, kde P a T jsou oddělovače,nyznamenán let apod.

Jednoduchétypy (3) vestavěné, základní datetime Datum a čas ve tvaru YYYY-MM- DDThh:mm:ss.ss, T je oddělovač time Čas ve tvaruhh:mm:ss.ss date Datum ve tvaru YYYY-MM-DD gyearmonth Měsíc v roce ve tvaru YYYY-MM gyear Rok ve tvaru YYYY gmonthday Den v měsíci ve tvaru MM-DD gmonth Měsíc ve tvaru MM gday Den ve tvaru DD

Jednoduchétypy (4) vestavěné, základní hexbinary Hexadecimální číslo base64binary Binárnídata s kódováním Base64 anyuri Absolutnínebo relativní URI QName XMLQualified Name, tj. řetězec ve tvaru <<prefix>>:<<místní část>>, kde <<prefix>> je označení jmenného prostoru a <<místní část>> je prvek patřícído daného jmenného prostoru NOTATION z DTD

Jednoduchétypy (5) vestavěné, odvozenéod typu string normalizedstring Řetězec (string), který neobsahuje znaky CR, LF a tabulátor token Řetězec (normalizedstring), kterýnemá mezery na začátku ani na na konci a neobsahuje posloupnost mezer delšínežjedna language Identifikátor jazyka (např.en,en-gb) Name XMLName, tj. řetězec, kterýsmí obsahovat písmena, číslice, - _ : a. NCName XMLName, kterénesmí obsahovat : NMTOKEN, NMTOKENS, ID, IDREF, IDREFS, ENTITY, ENTITIES z DTD

Jednoduchétypy (6) vestavěné, odvozenéod typu decimal integer Kladnénebo zápornécelé číslo positiveinteger Kladnécelé číslo negativeinteger Zápornécelé číslo nonpositiveinteger Nekladnécelé číslo nonnegativeinteger Nezápornécelé číslo long Celé číslo z intervalu 2^63, 2^63 1 int Celé číslo z intervalu 2^31, 2^31 1 short Celé číslo z intervalu 2^15, 2^15 1 byte Celé číslo z intervalu 2^7, 2^7 1

Jednoduchétypy (7) vestavěné, odvozenéod typu decimal unsignedlong Nezáporné číslo < 2^64 unsignedint Nezáporné číslo < 2^32 unsignedshort Nezáporné číslo < 2^16 unsignedbyte Nezáporné číslo < 2^8

Jednoduchétypy (8) uživatelsky definované Odvozenérestrikcí, seznamem nebo sjednocením (viz. dále) Definujeme pomocíelementu simpletype name název jednoduchého typu final z datového typu není možnéodvozovat dalšítypy restrikcí (restriction), seznamem (list), sjednocením (union) nebo libovolným způsobem (#all)

Jednoduchétypy (9) odvození restrikcí Nastavíme omezení hodnot pomocí parametrů (viz. dále) Původní typ určíme atributem base nebo podelementem Novýtyp je podmnožinou původního <xs:simpletype name="neprázdnýřetězec"> <xs:restriction base="xs:string"> <xs:minlength value="1"/> </xs:restriction> </xs:simpletype>

Jednoduchétypy (10) odvození restrikcí length,minlength,maxlength Počet jednotek daného typu (např. znaků v řetězci) pattern Regulární výraz enumeration Explicitně vyjmenovanámnožina povolených hodnot daného typu whitespace Zpracováníbílých znaků v řetězci preserve(žádnézměny),replace(znaky CR, LF a tabulátor jsou nahrazeny mezerou),collapse(navíc odstraněny mezery na začátku a na konci řetězce a posloupnosti mezer nahrazeny jednou mezerou)

Jednoduchétypy (11) odvození restrikcí maxinclusive, mininclusive, maxexclusive, minexclusive Hodnoty datového typu musí být <=, >=, <, > zadanáhodnota totaldigits Maximálnípočet cifer fractiondigits Maximálnípočet cifer za desetinnou čárkou

Jednoduchétypy (12) odvození restrikcí <xs:simpletype name="tvar"> <xs:restriction base="xs:string"> <xs:enumeration value="kruh"/> <xs:enumeration value="trojúhelník"/> <xs:enumeration value="čtverec"/> </xs:restriction> </xs:simpletype>

Jednoduchétypy (13) odvození seznamem Vytvořenítypu seznam hodnot původního typu (kterýnení seznamem) oddělených mezerami NMTOKENS, IDREFS, ENTITIES vestavěné Původní typ určíme atributemitemtypenebo podelementem <xs:simpletype name="seznamreálnýchčísel"> <xs:list itemtype="xs:float"/> </xs:simpletype>

Jednoduchétypy (14) odvození sjednocením Vytvořenítypu sjednocení hodnot všech určených datových typů Sjednocovanétypy určíme atributem membertypes nebo jako podelementy <xs:simpletype name="nenulovacelacisla"> <xs:union membertypes="xs:positiveinteger xs:negativeinteger"/> </xs:simpletype>

Jednoduchétypy (15) odvození sjednocením <xs:simpletype name="sjednocenítypù"> <xs:union> <xs:simpletype> <xs:restriction base="xs:positiveinteger"> <xs:mininclusive value="8"/> <xs:maxinclusive value="72"/> </xs:restriction> </xs:simpletype> <xs:simpletype> <xs:restriction base="xs:string"> <xs:enumeration value="small"/> <xs:enumeration value="large"/> </xs:restriction> </xs:simpletype> </xs:union> </xs:simpletype>

Složenétypy (1) Vztahy element-podelement, element-atribut Varianty obsahu složeného typu: (viz. dále) S jednoduchým obsahem Se složeným obsahem Posloupnost elementů Množina elementů Výběr z elementů Modelováskupina

Složenétypy (2) <xs:complextype name="adresa"> <xs:sequence> <xs:element name="ulice" type="xs:string"/> <xs:element name="cdomu" type="xs:integer"/> <xs:element name="mesto" type="xs:string"/> </xs:sequence> <xs:attribute name="zeme" type="xs:nmtoken default="cz"/> </xs:complextype>

Složenétypy (3) name název složeného datového typu mixed příznak smíšeného obsahu abstract příznak, zda složený typ smí být přiřazen elementu block za element s tímto datovým typem není možnésubstituovat elementy odvozenérestrikcí (restriction), rozšířením (extension) nebo libovolným způsobem (#all) final z datového typu není možnéodvozovat dalšítypy rozšířením (extension), restrikcí (restriction) nebo libovolným způsobem (#all)

Složenétypy (4) s jednoduchým obsahem Rozšíření jednoduchého datového typu o atributy Restrikcejiného složeného typu s jednoduchým obsahem, tj. restrikci jeho obsahu <xs:complextype name="typ"> <xs:simplecontent> <xs:extension base="xs:string"> <xs:attribute name="podtyp" type="xs:string"/> </xs:extension> </xs:simplecontent> </xs:complextype>

Složenétypy (5) s jednoduchým obsahem <xs:complextype name="typauta"> <xs:simplecontent> <xs:restriction base="typ"> <xs:enumeration value="audi"/> <xs:enumeration value="golf"/> <xs:enumeration value="bmw"/> <xs:attribute name="podtyp" type="xs:string"/> </xs:restriction> </xs:simplecontent> </xs:complextype>

Složenétypy (6) se složeným obsahem Obsahuje rozšířenínebo restrikci některého z následujících čtyř typů složeného typu Restrikce znamenávytvořenínového složeného typu, který je podmnožinou typu původního (např. omezením hodnot, omezením počtu výskytů apod.) Rozšířením vznikne složený typ, který obsahuje původní i nový typ (jeho prvky) v tomto pořadí

Složenétypy (7) se složeným obsahem (rozšíření) <xs:complextype name="osoba"> <xs:sequence> <xs:element name="jmeno type="xs:string"/> <xs:element name="prijmeni" type="xs:string"/> <xs:element name="poznamka" type="xs:string" minoccurs="0"/> </xs:sequence> <xs:attribute name="id" type="xs:id"/> </xs:complextype> <xs:complextype name="student"> <xs:complexcontent> <xs:extensionbase="osoba"> <xs:sequence> <xs:element name="obor" type="xs:string"/> <xs:element name="rocnik" type="xs:positiveinteger"/> </xs:sequence> </xs:extension> </xs:complexcontent> </xs:complextype>

Složenétypy (8) se složeným obsahem (restrikce) <xs:complextype name="publikace"> <xs:sequence> <xs:element name="název" type="xs:string"/> <xs:element name="autor" type="xs:string"maxoccurs="unbounded"/> <xs:element name="datum" type="xs:gyear"/> </xs:sequence> </xs:complextype> <xs:complextype name="publikacesjednimautorem"> <xs:complexcontent> <xs:restriction base="publikace"> <xs:sequence> <xs:element name="nazev" type="xs:string"/> <xs:element name="autor" type="xs:string"/> <xs:element name="datum" type="xs:gyear"/> </xs:sequence> </xs:restriction> </xs:complexcontent> </xs:complextype>

Složenétypy (9) posloupnost elementů Množina elementů, posloupností, výběrů s pořadím Sekvence (i elementy) mohou mít danépočty výskytů <xs:complextype name="osoba"> <xs:sequence> <xs:element name="jmeno" type="xs:string" maxoccurs="5"/> <xs:element name="prijmeni" type="xs:string"/> <xs:element name="datumnar" type="xs:date"/> <xs:element name="poznamka" type="xs:string" minoccurs="0"/> </xs:sequence> <xs:attribute name="id" type="xs:id"/> </xs:complextype>

Složenétypy (10) výběr z elementů Výběr z elementů, posloupností, výběrů V dokumentu se vyskytuje jedna možnost Prvky výběru mohou mít vícenásobnývýskyt <xs:complextype name="dopravniprostredek"> <xs:choice> <xs:element name="auto" type="xs:string"/> <xs:element name="vlak" type="xs:string"/> <xs:element name="letadlo" type="xs:string"/> </xs:choice> </xs:complextype>

Složenétypy (11) množina elementů Množina elementů (pouze) s libovolným pořadím Max. počet výskytů každého elementu je 1 <xs:complextype name="kniha"> <xs:all> <xs:element name="nazev" type="xs:string"/> <xs:element name="autor" type="xs:string"/> <xs:element name="vydani" type="xs:date"/> <xs:element name="isbn" type="xs:string"/> </xs:all> </xs:complextype>

Složenétypy (12) modelová skupina Jako podelement obsahuje posloupnost, výběr nebo množinu elementů Vždy deklarována globálně (= účel) <xs:group name="elementypropublikaci"> <xs:sequence> <xs:element name="nazev" type="xs:string"/> <xs:element name="autor" type="xs:string"/> <xs:element name="datum" type="xs:date"/> </xs:sequence> </xs:group>

Složenétypy (13) modelová skupina <xs:complextype name="kniha"> <xs:sequence> <xs:group ref="elementypropublikaci"/> <xs:element name="isbn" type="xs:string"/> <xs:element name="vydavatel" type="xs:string"/> </xs:sequence> </xs:complextype> name název modelovéskupiny ref odkaz na globálně definovanou modelovou skupinu (totéžby šlo i pro elementy samotné) minoccurs, maxoccurs

Skupiny atributů (1) Asociace názvu s množinou atributů Umožňuje využít stejnou skupinu atributů opakovaně <xs:attributegroup name="spolecneatributy"> <xs:attribute name="vypujcen" type="xs:boolean"/> <xs:attribute name="id" type="xs:id"/> </xs:attributegroup>

Skupiny atributů (2) <xs:complextype name="kniha"> <xs:sequence> <xs:element name="nazev" type="xs:string"/> <xs:element name="vydavatel" type="xs:string"/> </xs:sequence> <xs:attributegroup ref="spolecneatributy"/> </xs:complextype> Totéž by šlo i pro atributy samotné

Substituční skupiny (1) <xs:element name="publikace" type="typpublikace"/> <xs:element name="kniha" type="typkniha" substitutiongroup="publikace"/> <xs:element name="casopis" type="typcasopis" substitutiongroup="publikace"/> <xs:element name="knihovna"> <xs:complextype> <xs:sequence> <xs:element ref="publikace" maxoccurs="unbounded"/> </xs:sequence> </xs:complextype> </xs:element>

Substituční skupiny (2) <?xml version="1.0"?> <Knihovnaxmlns="http://www.books.org" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance"> <Kniha> <Nazev>Illusions: The Adventures ofareluctant Messiah</Nazev> <Autor>Richard Bach</Autor> <ISBN>0-440-34319-4</ISBN> </Kniha> <Casopis> <Nazev>Natural Health</Nazev> <Datum>1999</Datum> </Casopis> <Kniha> <Nazev>The First and Last Freedom</Nazev> <Autor>J. Krishnamurti</Autor> <ISBN>0-06-064831-7</ISBN> </Kniha> </Knihovna>

Substituční skupiny (3) Elementy musí mít stejnýtyp nebo typ odvozený od typu vedoucího elementu Substituce elementů = řeší substitučnískupiny, nahrazenícelého elementu jiným viz. předchozí příklad vs. Substituce typů = implicitně, nahrazeníobsahu (typu) elementu odvozeným obsahem (typem) viz. následující příklad

Substituční skupiny (4) <?xml version="1.0"?> <Knihovnaxmlns="http://www.books.org" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance"> <Publikace> <Nazev>Staying Young Forever</Nazev> <Autor>Karin Granstrom Jordan, M.D.</Autor> <Datum>1999</Datum> </Publikace> <Publikacexsi:type="BookType"> <Nazev>Illusions The Adventures ofareluctant Messiah</Nazev> <Autor>Richard Bach</Autor> <Datum>1977</Datum> <ISBN>0-440-34319-4</ISBN> </Publikace> </Knihovna>

Substituční skupiny (5) block substitution = za element nelze substituovat jinéelementy extension/ restriction = obsah elementu není možné nahradit žádným typem odvozeným rozšířením / restrikcí #all = zakazuje všechny tři typy substitucí final v substituční skupině vedoucího elementu se nesmí vyskytovat elementy, jejichžtypy byly odvozeny rozšířením (extension), restrikcí (restriction) nebo libovolným způsobem (#all)

Omezení identity (1) Z DTD typy pro atributy: ID, IDREF, IDREFS XML Schema umožňuje: Rozlišovat mezi pojmy unikátní a klíč Definovat obsah elementu jako unikátní / klíč Definovat unikátní neklíčovéatributy Definovat kombinaci elementu a atributu jako unikátní Definovat část dokumentu v rámci níž je něco unikátní Asociace názvu s omezením na unikátnost / klíč Pro určování prvků a oblastí využívájazyk XPath

Omezení identity (2) key Klíč = je element/atribut/kombinace, pokud: Je v dokumentu vždy obsažen (tj. minoccurs > 0) Nemápříznak nillable="true" Je unikátní <xs:element name="knihovna"> <xs:element name="kniha" maxoccurs="unbounded">... <xs:element name="isbn" type="xs:string"/>... </xs:element> <xs:key name="primarniklic"> <xs:selector xpath="./kniha"/> <xs:field xpath="./isbn"/> </xs:key> </xs:element>

Omezení identity (3) key V rámci elementu <knihovna> mákaždá<kniha> <ISBN> a to je klíčem. Definice je vždy na konci elementu <selector> vybírámnožinu jeho podelementů pro něžklíč platí (vždy právě jeden) <field> vybíráelement nebo atribut, kterýje klíčem (musí být alespoň jeden => daná kombinace je klíčem, např. <jméno> a <příjmení>)

Omezení identity (4) unique Použitístejnéjako klíč Rozdíl je v tom, že pokud je hodnota v dokumentu obsažena, musíbýt unikátní <xs:key name="primarniklic"> <xs:selector xpath="./kniha"/> <xs:field xpath="./isbn"/> </xs:key>

Omezení identity (5) keyref <xs:element name="knihovna"> <xs:element name="kniha" maxoccurs="unbounded">... <xs:element name="isbn" type="xs:string"/>... </xs:element> <xs:element name="autor" maxoccurs="unbounded">... <xs:element name="nejlepsikniha">... <xs:element name="isbn" type="xs:string"/>... </xs:element>... </xs:element> <xs:key name="primarniklic"> <xs:selector xpath="./kniha"/> <xs:field xpath="./isbn"/> </xs:key> <xs:keyref name="ciziklic"refer="primarniklic"> <xs:selector xpath="./autor/nejlepsikniha"/> <xs:field xpath="./isbn"/> </xs:keyref> </xs:element>

Omezení identity (6) keyref <ISBN> z oblasti autoři/autor/nejlepšíkniha se musí odkazovat na ISBN daná klíčem PK Lze se odkazovat na <key> i <unique> <keyref> musí mít tolik polí<field> kolik <key>/<unique> se stejnými typy a pořadím Něco jako <keyrefs> není

Zástupci wildcards (1) Umožňují vložit na danémísto libovolný element (<any>) nebo atribut (<anyattribute>) <xs:complextype name="libovolnyhtmltext"> <xs:sequence> <xs:any namespace="http://www.w3.org/1999/xhtml" minoccurs="1" maxoccurs="unbounded" processcontents="lax"/> </xs:sequence> </xs:complextype>

Zástupci (2) namespace jmennýprostor přípustných elementů: URI konkrétního jmenného prostoru / prostorů Libovolnýznámýjmennýprostor (##any) Cílovýjmennýprostor schématu (##targetnamespace) Prostor jinýnež cílovýjmennýprostor (##other) Elementy bez prefixu jm. prostoru libovolné(##local) processcontents způsob validace zástupců: Přísnávalidace zástupců vůči jm. prostorům (strict) Pouze vůči známým schématům jm. prostorů (lax) Žádnávalidace (skip)

Externí schémata (1) Využitíjiždefinovaných schémat: <include> umožňuje využívat při vytváření XML schématu prvky z externího schématu <redefine> umožňuje tyto prvky předefinovat <import> umožňuje zahrnout do cílového jmenného prostoru prostor externího schématu Pouze jako přímé podelementy elementu <schema>

Externí schémata (2) include <xs:include schemalocation="librarybook.xsd"/> schemalocation URI schématu, jehož prvky chceme používat Na prvky z odkazovaného schématu se lze odkazovat přes ref, type atd., jakoby byly součástí schématu Odkazovanáschémata musí mít stejný jmenný prostor jako aktuálníschéma nebo žádný (tj. odkazujeme se prefixem aktuálního jmenného prostoru)

Externí schémata (3) import Využití prvků z různých jmenných prostorů <xs:import namespace="http://www.nikon.com" schemalocation="nikon.xsd"/> <xs:import namespace="http://www.olympus.com" schemalocation="olympus.xsd"/> <xs:element name="camera"> <xs:complextype> <xs:sequence> <xs:element name="body" type="nikon:body_type"/> <xs:element name="lens" type="olympus:lens_type"/> </xs:sequence> </xs:complextype> </xs:element>

Externí schémata (4) redefine <include> + prvky (simpletype,complextype, attributegroup,group) lze předefinovat Datové typy klasicky Množiny => pod/nadmnožina <xs:redefine schemalocation="jineschema2.xsd"> <xs:simpletype name="neprázdnýřetězec"> <xs:restriction base="neprázdnýřetězec"> <xs:minlength value="5"/> </xs:restriction> </xs:simpletype> </xs:redefine>

Anotace (1) Informace určenápro člověka / aplikaci zpracovávající dokument. Interpretace informace není definována. <xs:annotation> <xs:documentation>hodnota A musí být větší než hodnota B</xs:documentation> <xs:appinfo><assert test="a > B"/></xs:appinfo> </xs:annotation>

Anotace (2) <xs:documentation source="http://www.xfront.com/bookreview.txt" xml:lang="fr"/> <xs:appinfo source="http://www.xfront.com/assertions.xml"/> source URI externího zdroje xml:lang jazyk externího zdroje (pro <documentation>)

Větší příklad

Poznámky: Kořenový element v instancích dokumentu určit nejde (lze obejít definováním jediného globálního elementu). XML schéma v jazyce XML Schema (stejně jako DTD) pro jazyk XML Schema existuje. Čeština pro názvy elementů a atributů: <?xml version="1.0"encoding="utf-8"?>

Zdroje XML 1.0 (Second Edition) http://www.w3.org/tr/rec-xml XML Schema Part 0:Primer http://www.w3.org/tr/xmlschema-0/ XML Schema Part 1:Structures http://www.w3.org/tr/xmlschema-1/ XML Schema Part 2: Datatypes http://www.w3.org/tr/xmlschema-2/