i
i
i
i Notaci de nujeme prost°ednictvím elementu
notation
a jeho atribut·. Atribut
name
speci-
kuje název notace, pomocí n¥hoº se na ni v rámci XML schématu dále odkazujeme. Naproti tomu atribut
system
slouºí pro speci kaci URI externího programu nebo dokumentu, který
je danou notací reprezentován, zatímco atribut
public
slouºí pro speci kaci jeho libovolného
(obecn¥ známého) identi kátoru. Je moºné vyuºít kteroukoli z t¥chto variant, významu hodnoty by m¥l ale program, který schéma zpracovává, rozum¥t. S notacemi úzce souvisí jednoduchý vestav¥ný datový typ
NOTATION,
jehoº hodnotami mo-
hou být práv¥ názvy de novaných notací. Pro tento datový typ navíc platí, ºe není moºné pouºívat p°ímo jeho instance, ale pouze instance datových typ· z n¥j odvozených restrikcí
enumeration. Pro kaºdou element notation.
takto de novanou p°ípustnou hodnotu pak musí existovat p°íslu²ný
<xs:notation name="EPS" system="C:\eps\eps.exe"/> <xs:attribute name="Program"> <xs:simpleType> <xs:restriction base="xs:NOTATION"> <xs:enumeration value="EPS"/> </xs:restriction> </xs:simpleType> </xs:attribute> V p°íklad¥ je de nována notace
EPS,
která se odkazuje na spustitelný soubor programu na
lokálním disku. Abychom mohli tuto notaci (resp. její název) p°i°adit na ur£ité místo ve schématu (v na²em p°ípad¥ jako hodnotu atributu od typu
NOTATION,
Program),
je vytvo°en pomocný datový typ odvozený
jehoº jedinou p°ípustnou hodnotou je práv¥ název notace
EPS.
P°ípustných
hodnot by samoz°ejm¥ mohlo být více, pro kaºdou by ale musel existovat odpovídající element
notation. Záv¥rem je ale t°eba poznamenat, ºe se notace v praxi tém¥° nepouºívají.
4.6 Anotace Anotace lze povaºovat za roz²í°ení principu komentá°·, resp. za moºný zp·sob dokumentace vytvá°eného XML schématu. V podstat¥ na libovolné (samoz°ejm¥ vzhledem k vlastnostem dob°e vytvo°eného XML dokumentu korektní) místo v XML schématu je moºné vloºit element
annotation,
který obsahuje libovolné informace týkající se typicky aktuální £ásti schématu.
Dále je moºné rozli²it, zda jsou ur£eny pro £tená°e nebo pro aplikaci zpracovávající dané XML schéma. Pokud se jedná o informace ur£ené pro £lov¥ka, je podelementem elementu ment
documentation,
annotation
ele-
jehoº obsahem m·ºe být libovolný text nebo elementy jakéhokoli jmen-
ného prostoru krom¥ jmenného prostoru schématu. Jazyk tohoto textu je moºné speci kovat atributem
xml:lang
(pocházejícím z implicitního jmenného prostoru v²ech XML dokument·),
jehoº p°ípustné hodnoty ur£uje norma
RFC 3066
(nap°. en , en-GB , cs apod.).
<xs:annotation> <xs:documentation xml:lang="cs"> Toto je p°íklad anotace ur£ené pro £lov¥ka. </xs:documentation> </xs:annotation>
98
XML technologie
i
i i
i
Ukázka elektronické knihy, UID: KOS181547
i
i
i
i Ve druhém p°ípad¥ obsahuje element
annotation
podelement
appinfo,
jehoº obsahem jsou
data ur£ená pro aplikaci, která bude schéma zpracovávat. Op¥t se m·ºe jednat o zcela libovolný text, nap°. o £ást zdrojového kódu, parametry apod. V obou p°ípadech mohou elementy namísto textového obsahu nést pouze odkaz na dokument, v n¥mº jsou p°íslu²né informace uloºeny. URI tohoto zdroje informací je pak v obou p°ípadech
source.
speci kováno hodnotou atributu
4.7 Ko°enový element schema Posledním prvkem jazyka XML Schema, kterým se budeme zabývat, je ko°enový element
schema,
o n¥mº jiº víme, ºe má narozdíl od ostatních prvk· velmi speciální postavení. V první °ad¥ pro n¥j platí, ºe se v instancích XML dokument· nevyskytuje na první úrovni se v XML dokumentu vyskytují aº prvky (elementy), které jsou de novány v rámci jeho podelement·. Jak jiº bylo zmín¥no, tento element dále slouºí k p°ipojení jmenného prostoru jazyka XML Schema, pop°. implicitního jmenného prostoru a jiných jmenných prostor· (prost°ednictvím atribut·
xmlns),
a dále pro p°ípadnou speci kaci cílového jmenného prostoru vytvá°eného
schématu (prost°ednictvím atributu
targetNamespace).
Ostatními atributy elementu
schema
je
moºné speci kovat obecné vlastnosti celého schématu. Atributem
version lze speci kovat verzi vytvá°eného schématu. Konkrétní význam hodnoty
je ponechán na uºivateli hodnotou tohoto atributu m·ºe být totiº zcela libovolný (jednoslovný) text. Podobn¥ pak atribut
xml:lang
(pocházející z implicitního jmenného prostoru v²ech XML
dokument·) umoº¬uje speci kovat jazyk textových hodnot ve schématu. Zajímavý význam má atribut mentu
schema
id, který umoº¬uje speci kovat jednozna£ný identi kátor ele-
v rámci celého XML schématu. Tento atribut totiº m·ºe být speci kován také
pro libovolný jiný prvek (element) XML schématu a umoº¬uje tak jednozna£n¥ identi kovat libovolné místo ve schématu. Tato vlastnost m·ºe být výhodná nap°. pro aplikaci, která bude schéma zpracovávat. Zbývající atributy elementu
schema
umoº¬ují de novat implicitní hodnoty vybraných atri-
a blockDefault. První final, druhý implicitní hodnotu v²ech atribut· block. Druhou dvojicí jsou pak atributy attributeFormDefault, resp. elementFormDefault (a jejich hodnoty qualified a unqualified), které speci kují implicitní hodnotu atributu form v²ech atribut·, resp. element· schématu. Atribut form, kterým jsme se but· schématu. V první °ad¥ se jedná o dvojici atribut·
finalDefault
z nich, jak uº název napovídá, de nuje implicitní hodnotu v²ech atribut·
doposud nezabývali, slouºí pro lokáln¥ de nované elementy nebo atributy jako p°íznak ur£ující, zda je nutné p°íslu²né jméno elementu, resp. atributu, uvád¥t v instancích XML dokument· vºdy pln¥ kvali kované. Tato vlastnost je vhodná v p°ípadech, kdy je kombinováno v¥t²í mnoºství jmenných prostor· se stejn¥ pojmenovanými lokálními elementy, £i atributy, mezi nimiº je nutné rozli²ovat.
4.8 Vztah jazyka XML Schema k XML dokument·m V tabulce 4.1 je uveden p°ehled prvk·, které se mohou vyskytovat v XML dokumentech (tj. v instancích XML schémat) a jim odpovídající prvky jazyka XML Schema, kterými lze speci kovat jejich p°ípustnou strukturu.
4.9 Vztah jazyka XML Schema k DTD V tabulce 4.2 je pro úplnost uveden p°ehled prvk· jazyka DTD a jim odpovídajících prvk· jazyka XML Schema.
Pokro£ilé techniky jazyka XML Schema
99
i
i i
i
Ukázka elektronické knihy, UID: KOS181547
i
i
i
i
Prvek XML dokumentu
Prvek jazyka XML Schema
element
element
obsah elementu
jednoduchý vestav¥ný datový typ, element
atribut
simpleType nebo element complexType element attribute
hodnota atributu
jednoduchý vestav¥ný datový typ nebo element
element
simpleType entita
neexistuje
notace
element
komentá°e
neexistuje
instrukce pro zpracování
neexistuje
XML deklarace
neexistuje
jmenné prostory
neexistuje, resp. celé XML schéma speci kuje
notation
jmenný prostor Tab. 4.1
Prvky XML dokument· a prvky jazyka XML Schema
Jak je z tabulky patrné, tém¥° v²echny d·leºité prvky jazyka DTD lze v jazyce XML Schema speci kovat bu¤to stejn¥ silným, obvykle v²ak siln¥j²ím nástrojem. Zásadní výjimkou je deklarace entit, na ty se lze pouze odkazovat datovými typy
ENTITY,
resp.
ENTITIES.
4.10 Shrnutí Zatímco v kapitole 2 jsme popsali základní konstrukty jazyka XML Schema, které pouºije v¥t²ina jeho uºivatel·, cílem této kapitoly bylo ukázat i siln¥j²í nástroje, které jazyk XML Schema podporuje. Jak bylo moºné vid¥t, jazyk XML Schema umoº¬uje popsat strukturu XML dat velmi podrobn¥ a pro tyto ú£ely vyuºívá n¥kolik známých a ov¥°ených postup· z prost°edí objektov¥ orientovaných £i databázových systém·. Druhou stranou mince je ov²em fakt, ºe je tím pádem pochopení jazyka a v²ech jeho záludností velmi náro£ným úkolem. V¥t²ina uºivatel· proto rad¥ji sáhne po jazyku DTD, který je bezesporu jednodu²²í, nebo se rozhodne schéma XML dat rad¥ji v·bec nepouºívat. Poslední, extrémní p°ípad je samoz°ejm¥ zcela v rozporu s cílem konsorcia W3C, ov²em na druhou stranu vede k zamy²lení nad tím, jestli by se vývoj nem¥l ubírat také sm¥rem k uºivatelsky p°íjemnému a jednoduchému zp·sobu de nice struktury XML dat, neº jen sm¥rem k roz²i°ujícím a siln¥j²ím výraz·m.
100
XML technologie
i
i i
i
Ukázka elektronické knihy, UID: KOS181547