Title: Definiowanie typ
1Definiowanie typów dokumentówCzesc 3. XML Schema
2Wbudowane typy proste
ZródloXML Enhancements to Java (XJ). User
Manual for Release Version 1.0 http//www.research
.ibm.com/xj/doc/XJmanual/XJmanual.html
3Wbudowane typy proste (wybrane)
- string napis
- normalizedString napis, w którym kazdy bialy
znak jest podczas przetwarzania zastepowany przez
spacje - token napis, w którym kazdy ciag bialych znaków
jest podczas przetwarzania zastepowany przez
jedna spacje, zas biale znaki na poczatku i koncu
sa usuwane - QName nazwa kwalifikowana
- NCName nazwa bez dwukropka
- base64Binary dane binarne zapisane w kodowaniu
Base64 - hexBinary dane binarne zapisane szesnastkowo
4Wbudowane typy proste (wybrane)
Typ Poprawne wartosci
decimal 12.3 000012.300
float, double 24.3e-3 12 NaN -INF
QName ososoba osoba
date 1968-04-02 1968-04-02-0500 1968-04-02Z -0045-02-02
time 132000.887 133000-0500
dateTime 1968-04-02T132000.887
gYearMonth 1968-04
gMonthDay --04-02
duration P2Y6M5DT12H35M30S
5Wyprowadzanie typów
- Wyprowadzanie typów prostych
- ograniczanie,
- tworzenie list,
- tworzenie unii.
- Wyprowadzanie typów zlozonych
- ograniczanie,
- rozszerzanie
- typów prostych,
- typów zlozonych.
6Ograniczanie typów prostych
- Aspekty (ang. facets)
- minExclusive, minInclusive,
- maxExclusive, maxInclusive,
- length, minLength, maxLength,
- totalDigits, fractionDigits,
- enumeration,
- pattern,
- whiteSpace.
- Tylko pattern i enumeration mozna uzyc
wielokrotnie w jednej definicji typu.
7Ograniczanie typów prostych przyklady
- ltxsdsimpleType name"NumerLottoTyp"gt
ltxsdrestriction base"xsdinteger"gt
ltxsdminInclusive value"1"/gt
ltxsdmaxInclusive value"49"/gt
lt/xsdrestrictiongtlt/xsdsimpleTypegtltxsdsimpleT
ype name"DokumentTyp"gt ltxsdrestriction
base"xsdtoken"gt ltxsdenumeration
value"dowód osobisty"/gt ltxsdenumeration
value"paszport"/gt lt/xsdrestrictiongtlt/xsdsimp
leTypegtltxsdsimpleType name"NIPTyp"gt
ltxsdrestriction base"xsdstring"gt
ltxsdpattern value"\d3-\d3-\d2-\d2"/gt
ltxsdpattern value"\d3-\d2-\d2-\d3"/gt
lt/xsdrestrictiongtlt/xsdsimpleTypegt
8Ograniczanie typów prostych
- Przestrzen wartosci typu wyprowadzonego musi byc
podzbiorem przestrzeni wartosci typu bazowego. - Typy wbudowane maja okreslone niektóre aspekty,
np. typ byte - minInclusive -128,
- maxInclusive 127.
- Przyklad niepoprawne wyprowadzenieltxsdsimpleT
ype name"ExtendedByte"gt ltxsdrestriction
base"xsdbyte"gt ltxsdminInclusive
value"-256"/gt ltxsdmaxInclusive
value"255"/gt lt/xsdrestrictiongtlt/xsdsimpleTyp
egt
9Aspekt whiteSpace
- preserve wszystkie biale znaki sa pozostawiane
bez zmian - replace kazdy bialy znak jest podczas
przetwarzania zastepowany przez spacje - collapse - kazdy bialy znak jest podczas
przetwarzania zastepowany przez spacje, a
nastepnie kazdy ciag spacji jest zastepowany
przez jedna spacje, zas spacje na poczatku i na
koncu sa usuwane
10Tworzenie list
- ltxsdsimpleType name"NumerLottoTyp"gt
ltxsdrestriction base"xsdinteger"gt
ltxsdminInclusive value"1"/gt
ltxsdmaxInclusive value"49"/gt
lt/xsdrestrictiongtlt/xsdsimpleTypegtltxsdsimpleT
ype name"NumeryLottoTyp"gt ltxsdlist
itemType"NumerLottoTyp"/gtlt/xsdsimpleTypegtltxsd
simpleType name"KuponLottoTyp"gt
ltxsdrestriction base"NumeryLottoTyp"gt
ltxsdlength value"6"/gt lt/xsdrestrictiongtlt/xsd
simpleTypegt
11Tworzenie list inaczej
- ltxsdsimpleType name"KuponLottoTyp"gt
ltxsdrestrictiongt ltxsdsimpleTypegt
ltxsdlistgt ltxsdsimpleTypegt
ltxsdrestriction base"xsdinteger"gt
ltxsdminInclusive value"1"/gt
ltxsdmaxInclusive value"49"/gt
lt/xsdrestrictiongt lt/xsdsimpleTypegt
lt/xsdlistgt lt/xsdsimpleTypegt
ltxsdlength value"6"/gt lt/xsdrestrictiongtlt/xsd
simpleTypegt
12Tworzenie unii
- ltxsdsimpleType name"RozmiarLiczbowyTyp"gt
ltxsdrestriction base"xsdinteger"gt
ltxsdminInclusive value"2"/gt
ltxsdmaxInclusive value"18"/gt
lt/xsdrestrictiongtlt/xsdsimpleTypegtltxsdsimpleT
ype name"RozmiarSMLTyp"gt ltxsdrestriction
base"xsdtoken"gt ltxsdenumeration
value"S"/gt ltxsdenumeration value"M"/gt
ltxsdenumeration value"L"/gt lt/xsdrestrictiongt
lt/xsdsimpleTypegtltxsdsimpleType
name"RozmiarTyp"gt ltxsdunion
memberTypes"RozmiarLiczbowyTyp
RozmiarSMLTyp"/gtlt/xsdsimpleTypegt
13Tworzenie unii inaczej
- ltxsdsimpleType name"RozmiarTyp"gt
ltxsduniongt ltxsdsimpleTypegt
ltxsdrestriction base"xsdinteger"gt
ltxsdminInclusive value"2"/gt
ltxsdmaxInclusive value"18"/gt
lt/xsdrestrictiongt lt/xsdsimpleTypegt
ltxsdsimpleTypegt ltxsdrestriction
base"xsdtoken"gt ltxsdenumeration
value"S"/gt ltxsdenumeration value"M"/gt
ltxsdenumeration value"L"/gt
lt/xsdrestrictiongt lt/xsdsimpleTypegt
lt/xsduniongtlt/xsdsimpleTypegt
14Rozszerzanie typów
- Wartosci typu bazowego nie musza byc poprawnymi
wartosciami typu wyprowadzonego. - Rozszerzanie zawartosci prostej dodawanie
atrybutów do - typu prostego,
- typu zlozonego o zawartosci prostej.
- Rozszerzanie zawartosci zlozonej
- dodawanie do typu bazowego dodatkowych elementów
i/lub atrybutów, - elementy dodawane w rozszerzeniu wystepuja zawsze
na koncu, po elementach zadeklarowanych w typie
bazowym.
15Rozszerzanie zawartosci prostej
- ltxsdcomplexType name"MasaTyp"gt
ltxsdsimpleContentgt ltxsdextension
base"xsddecimal"gt ltxsdattribute
name"jm" type"xsdstring"/gt
lt/xsdextensiongt lt/xsdsimpleContentgtlt/xsdcomp
lexTypegtltxsdcomplexType name"MasaNiedokladnaTy
p"gt ltxsdsimpleContentgt ltxsdextension
base"MasaTyp"gt ltxsdattribute
name"dokladnosc"
type"xsddecimal"/gt lt/xsdextensiongt
lt/xsdsimpleContentgtlt/xsdcomplexTypegt
16Rozszerzanie zawartosci zlozonej
- ltxsdcomplexType name"OsobaTyp"gt
ltxsdsequencegt ltxsdelement name"imie"
type"xsdstring"/gt ltxsdelement
name"nazwisko" type"xsdstring"/gt
lt/xsdsequencegtlt/xsdcomplexTypegtltxsdcomplexTy
pe name"OsobaZDokumentemTyp"gt
ltxsdcomplexContentgt ltxsdextension
base"OsobaTyp"gt ltxsdchoicegt
ltxsdelement name"dowód-os"
type"DowódTyp"/gt ltxsdelement
name"paszport"
type"PaszportTyp"/gt lt/xsdchoicegt
lt/xsdextensiongt lt/xsdcomplexContentgtlt/xsdcom
plexTypegt
17Typy
- Typy wg zasiegu definicji
- typy nazwane,
- typy anonimowe.
- Typy wg zawartosci
- typy proste,
- typy zlozone o zawartosci
- prostej,
- elementowej,
- mieszanej,
- pustej.
- Typy wg pochodzenia
- typy wbudowane,
- typy zdefiniowane w schemacie
- rozszerzenia innych typów,
- ograniczenia innych typów,
- listy i unie.
18Inne metody modularyzacji schematów
- Ograniczanie typów zlozonych.
- Grupy do wielokrotnego wykorzystania (reusable
groups) - nazwane grupy modeli,
- grupy atrybutów.
- Grupy zamienne (substitution groups).
19Ograniczanie typów zlozonych
- Przestrzen wartosci typu wyprowadzonego musi byc
podzbiorem przestrzeni wartosci typu bazowego. - Dozwolone operacje
- ograniczenie zawartosci prostej (tak jak typu
prostego), - ograniczenie atrybutu
- ograniczenie typu atrybutu,
- zmiana atrybutu opcjonalnego na wymagany
(required) lub zabroniony (prohibited), - dodanie, zmiana lub usuniecie wartosci domyslnej,
- dodanie wartosci ustalonej, jesli jej nie bylo.
- ograniczenie modelu zawartosci, np.
- scislejsze ograniczenia liczebnosci (minOccurs,
maxOccurs), - usuniecie elementów opcjonalnych w grupach
sequence i all, - wybranie podzbioru elementów w grupie choice,
- ograniczenie typu poszczególnych podelementów.
20Grupy do wielokrotnego wykorzystania
- Grupy uzywanych wspólnie deklaracji elementów lub
atrybutów. -
- ltxsdgroup name"ImieNazwisko"gt
ltxsdsequencegt ltxsdelement name"imie"
type"xsdstring"/gt ltxsdelement
name"nazwisko" type"xsdstring"/gt
lt/xsdsequencegtlt/xsdgroupgtltxsdattributeGroup
name"Biurokracja"gt ltxsdattribute name"NIP"
type"NIPTyp"/gt ltxsdattribute name"PESEL"
type"PESELTyp"/gt lt/xsdattributeGroupgt
21Grupy do wielokrotnego wykorzystania
- Odwolania do grup
- ltxsdcomplexType name"OsobaTyp"gt
ltxsdsequencegt ltxsdgroup ref"ImieNazwisko"/gt
ltxsdelement name"obywatelstwo"
type"xsdtoken"/gt lt/xsdsequencegt
ltxsdattributeGroup ref"Biurokracja"/gt
lt/xsdcomplexTypegt
22Grupy zamienne
- Mozliwosc deklaracji zamienników dla wybranych
elementów. - ltxsdelement name"katalog"gt ltxsdcomplexTypegt
ltxsdsequencegt ltxsdelement
ref"produkt"
maxOccurs"unbounded"/gt ltxsdsequencegt
ltxsdcomplexTypegt lt/xsdelementgt ltxsdelement
name"produkt" type"ProduktTyp"/gtltxsdelement
name"komputer" type"KomputerTyp"
substitutionGroup"produkt"/gt ltxsdelement
name"ubranie" type"UbranieTyp"
substitutionGroup"produkt"/gt
23Grupy zamienne
- Wykorzystanie grup zamiennych (egzemplarz)
- ltkataloggt ltproduktgt...lt/produktgt
ltkomputergt...lt/komputergt ltubraniegt...lt/ubraniegt
ltproduktgt...lt/produktgtlt/kataloggt
24Ograniczenia integralnosci
- Ograniczenia integralnosci (identity
constraints) - unique wartosci w ramach okreslonego zakresu
musza byc unikatowe, - key wartosci w ramach okreslonego zakresu musza
byc unikatowe i nie moga byc puste, - keyref odwolanie do wartosci wskazanego klucza.
- Odpowiednik bazodanowych kluczy pierwotnych i
kluczy zewnetrznych.
25Przyklad
- ltxsdelement name"zamówienia-i-faktury"
type"ZamówieniaFakturyTyp"gt ltxsdunique
name"fakturaId"gt ltxsdselector
xpath"faktury/faktura"/gt ltxsdfield
xpath"_at_nr"/gt ltxsdfield xpath"rok"/gt
lt/xsduniquegt ltxsdkeyref name"zamówienieRef"
refer"zamówienieId"gt
ltxsdselector xpath"faktury/faktura/do-zamó
wienia"/gt ltxsdfield xpath"_at_nr"/gt
lt/xsdkeyrefgt ltxsdkey name"zamówienieId"gt
ltxsdselector xpath"zamówienia/zamówienie"/gt
ltxsdfield xpath"numer"/gt lt/xsdkeygtlt/xsdelem
entgt
26Przyklad egzemplarz (1)
ltxsdunique name"fakturaId"gt ltxsdselector
xpath"faktury/faktura"/gt ltxsdfield
xpath"_at_nr"/gt ltxsdfield xpath"rok"/gt
lt/xsduniquegt
- ltzamówienia-i-fakturygt ltfakturygt ltfaktura
nr"123"gt ltrokgt2007lt/rokgt
ltdo-zamówienia nr"125"/gt ...
lt/fakturagt ltfaktura nr"123"gt
ltrokgt2006lt/rokgt ltdo-zamówienia nr"665"/gt
... lt/fakturagt ltfaktura
nr"127/2007"gt ltdo-zamówienia nr"125"/gt
... lt/fakturagt lt/fakturygt
ltxsdkeyref name"zamówienieRef"
refer"zamówienieId"gt ltxsdselector xpath
"faktury/faktura/do-zamówienia"/gt
ltxsdfield xpath"_at_nr"/gt lt/xsdkeyrefgt
27Przyklad egzemplarz (2)
- ltzamówieniagt ltzamówieniegt
ltnumergt125lt/numergt ... lt/zamówieniegt
ltzamówieniegt ltnumergt665lt/numergt ...
lt/zamówieniegt ltzamówieniegt
ltnumergt233lt/numergt ... lt/zamówieniegt
lt/zamówieniagtlt/zamówienia-i-fakturygt
ltxsdkey name"zamówienieId"gt
ltxsdselector xpath"zamówienia/zamówienie"/
gt ltxsdfield xpath"numer"/gt lt/xsdkeygt