Definiowanie typw dokumentw Cz 3 XML Schema 2008

  • Slides: 27
Download presentation
Definiowanie typów dokumentów Część 3. XML Schema 2008 -10 -23 Definiowanie typów dokumentów –

Definiowanie typów dokumentów Część 3. XML Schema 2008 -10 -23 Definiowanie typów dokumentów – część 3: XML Schema

Wbudowane typy proste Źródło: XML Enhancements to Java™ (XJ). User Manual for Release Version

Wbudowane typy proste Źródło: XML Enhancements to Java™ (XJ). User Manual for Release Version 1. 0 http: //www. research. ibm. com/xj/doc/XJmanual/ XJmanual. html 2008 -10 -23 Definiowanie typów dokumentów – część 3: XML Schema 2

Wbudowane typy proste (wybrane) • string – napis • normalized. String – napis, w

Wbudowane typy proste (wybrane) • string – napis • normalized. String – napis, w którym każdy biały znak jest podczas przetwarzania zastępowany przez spację • token – napis, w którym każdy ciąg białych znaków jest podczas przetwarzania zastępowany przez jedną spację, zaś białe znaki na początku i końcu są usuwane • QName – nazwa kwalifikowana • NCName – nazwa bez dwukropka • base 64 Binary – dane binarne zapisane w kodowaniu Base 64 • hex. Binary – dane binarne zapisane szesnastkowo 2008 -10 -23 Definiowanie typów dokumentów – część 3: XML Schema 3

Wbudowane typy proste (wybrane) Typ Poprawne wartości decimal 12. 3 +000012. 300 float, double

Wbudowane typy proste (wybrane) Typ Poprawne wartości decimal 12. 3 +000012. 300 float, double +24. 3 e-3 Na. N 12 -INF QName os: osoba date 1968 -04 -02 Z 1968 -04 -02 -05: 00 -0045 -02 -02 time 13: 20: 00. 887 13: 30: 00 -05: 00 date. Time 1968 -04 -02 T 13: 20: 00. 887 g. Year. Month 1968 -04 g. Month. Day --04 -02 duration P 2 Y 6 M 5 DT 12 H 35 M 30 S 2008 -10 -23 Definiowanie typów dokumentów – część 3: XML Schema 4

Wyprowadzanie typów • Wyprowadzanie typów prostych: – ograniczanie, – tworzenie list, – tworzenie unii.

Wyprowadzanie typów • Wyprowadzanie typów prostych: – ograniczanie, – tworzenie list, – tworzenie unii. • Wyprowadzanie typów złożonych: – ograniczanie, – rozszerzanie: • typów prostych, • typów złożonych. 2008 -10 -23 Definiowanie typów dokumentów – część 3: XML Schema 5

Ograniczanie typów prostych • Aspekty (ang. facets): – – – – min. Exclusive, min.

Ograniczanie typów prostych • Aspekty (ang. facets): – – – – min. Exclusive, min. Inclusive, max. Exclusive, max. Inclusive, length, min. Length, max. Length, total. Digits, fraction. Digits, enumeration, pattern, white. Space. • Tylko pattern i enumeration można użyć wielokrotnie w jednej definicji typu. 2008 -10 -23 Definiowanie typów dokumentów – część 3: XML Schema 6

Ograniczanie typów prostych – przykłady <xsd: simple. Type name="Numer. Lotto. Typ"> <xsd: restriction base="xsd:

Ograniczanie typów prostych – przykłady <xsd: simple. Type name="Numer. Lotto. Typ"> <xsd: restriction base="xsd: integer"> <xsd: min. Inclusive value="1"/> <xsd: max. Inclusive value="49"/> </xsd: restriction> </xsd: simple. Type> <xsd: simple. Type name="Dokument. Typ"> <xsd: restriction base="xsd: token"> <xsd: enumeration value="dowód osobisty"/> <xsd: enumeration value="paszport"/> </xsd: restriction> </xsd: simple. Type> <xsd: simple. Type name="NIPTyp"> <xsd: restriction base="xsd: string"> <xsd: pattern value="d{3}-d{2}-d{2}"/> <xsd: pattern value="d{3}-d{2}-d{3}"/> </xsd: restriction> </xsd: simple. Type> 2008 -10 -23 Definiowanie typów dokumentów – część 3: XML Schema 7

Ograniczanie typów prostych • Przestrzeń wartości typu wyprowadzonego musi być podzbiorem przestrzeni wartości typu

Ograniczanie typów prostych • Przestrzeń wartości typu wyprowadzonego musi być podzbiorem przestrzeni wartości typu bazowego. • Typy wbudowane mają określone niektóre aspekty, np. : typ byte: – min. Inclusive: -128, – max. Inclusive: 127. • Przykład – niepoprawne wyprowadzenie: <xsd: simple. Type name="Extended. Byte"> <xsd: restriction base="xsd: byte"> <xsd: min. Inclusive value="-256"/> <xsd: max. Inclusive value="255"/> </xsd: restriction> </xsd: simple. Type> 2008 -10 -23 Definiowanie typów dokumentów – część 3: XML Schema 8

Aspekt white. Space • preserve – wszystkie białe znaki są pozostawiane bez zmian •

Aspekt white. Space • preserve – wszystkie białe znaki są pozostawiane bez zmian • replace – każdy biały znak jest podczas przetwarzania zastępowany przez spację • collapse - każdy biały znak jest podczas przetwarzania zastępowany przez spację, a następnie każdy ciąg spacji jest zastępowany przez jedną spację, zaś spacje na początku i na końcu są usuwane 2008 -10 -23 Definiowanie typów dokumentów – część 3: XML Schema 9

Tworzenie list <xsd: simple. Type name="Numer. Lotto. Typ"> <xsd: restriction base="xsd: integer"> <xsd: min.

Tworzenie list <xsd: simple. Type name="Numer. Lotto. Typ"> <xsd: restriction base="xsd: integer"> <xsd: min. Inclusive value="1"/> <xsd: max. Inclusive value="49"/> </xsd: restriction> </xsd: simple. Type> <xsd: simple. Type name="Numery. Lotto. Typ"> <xsd: list item. Type="Numer. Lotto. Typ"/> </xsd: simple. Type> <xsd: simple. Type name="Kupon. Lotto. Typ"> <xsd: restriction base="Numery. Lotto. Typ"> <xsd: length value="6"/> </xsd: restriction> </xsd: simple. Type> 2008 -10 -23 Definiowanie typów dokumentów – część 3: XML Schema 10

Tworzenie list – inaczej <xsd: simple. Type name="Kupon. Lotto. Typ"> <xsd: restriction> <xsd: simple.

Tworzenie list – inaczej <xsd: simple. Type name="Kupon. Lotto. Typ"> <xsd: restriction> <xsd: simple. Type> <xsd: list> <xsd: simple. Type> <xsd: restriction base="xsd: integer"> <xsd: min. Inclusive value="1"/> <xsd: max. Inclusive value="49"/> </xsd: restriction> </xsd: simple. Type> </xsd: list> </xsd: simple. Type> <xsd: length value="6"/> </xsd: restriction> </xsd: simple. Type> 2008 -10 -23 Definiowanie typów dokumentów – część 3: XML Schema 11

Tworzenie unii <xsd: simple. Type name="Rozmiar. Liczbowy. Typ"> <xsd: restriction base="xsd: integer"> <xsd: min.

Tworzenie unii <xsd: simple. Type name="Rozmiar. Liczbowy. Typ"> <xsd: restriction base="xsd: integer"> <xsd: min. Inclusive value="2"/> <xsd: max. Inclusive value="18"/> </xsd: restriction> </xsd: simple. Type> <xsd: simple. Type name="Rozmiar. SMLTyp"> <xsd: restriction base="xsd: token"> <xsd: enumeration value="S"/> <xsd: enumeration value="M"/> <xsd: enumeration value="L"/> </xsd: restriction> </xsd: simple. Type> <xsd: simple. Type name="Rozmiar. Typ"> <xsd: union member. Types="Rozmiar. Liczbowy. Typ Rozmiar. SMLTyp"/> </xsd: simple. Type> 2008 -10 -23 Definiowanie typów dokumentów – część 3: XML Schema 12

Tworzenie unii – inaczej <xsd: simple. Type name="Rozmiar. Typ"> <xsd: union> <xsd: simple. Type>

Tworzenie unii – inaczej <xsd: simple. Type name="Rozmiar. Typ"> <xsd: union> <xsd: simple. Type> <xsd: restriction base="xsd: integer"> <xsd: min. Inclusive value="2"/> <xsd: max. Inclusive value="18"/> </xsd: restriction> </xsd: simple. Type> <xsd: restriction base="xsd: token"> <xsd: enumeration value="S"/> <xsd: enumeration value="M"/> <xsd: enumeration value="L"/> </xsd: restriction> </xsd: simple. Type> </xsd: union> </xsd: simple. Type> 2008 -10 -23 Definiowanie typów dokumentów – część 3: XML Schema 13

Rozszerzanie typów • Wartości typu bazowego nie muszą być poprawnymi wartościami typu wyprowadzonego. •

Rozszerzanie typów • Wartości typu bazowego nie muszą być poprawnymi wartościami typu wyprowadzonego. • Rozszerzanie zawartości prostej – dodawanie atrybutów do: – typu prostego, – typu złożonego o zawartości prostej. • Rozszerzanie zawartości złożonej: – dodawanie do typu bazowego dodatkowych elementów i/lub atrybutów, – elementy dodawane w rozszerzeniu występują zawsze na końcu, po elementach zadeklarowanych w typie bazowym. 2008 -10 -23 Definiowanie typów dokumentów – część 3: XML Schema 14

Rozszerzanie zawartości prostej <xsd: complex. Type name="Masa. Typ"> <xsd: simple. Content> <xsd: extension base="xsd:

Rozszerzanie zawartości prostej <xsd: complex. Type name="Masa. Typ"> <xsd: simple. Content> <xsd: extension base="xsd: decimal"> <xsd: attribute name="jm" type="xsd: string"/> </xsd: extension> </xsd: simple. Content> </xsd: complex. Type> <xsd: complex. Type name="Masa. Niedokładna. Typ"> <xsd: simple. Content> <xsd: extension base="Masa. Typ"> <xsd: attribute name="dokładność" type="xsd: decimal"/> </xsd: extension> </xsd: simple. Content> </xsd: complex. Type> 2008 -10 -23 Definiowanie typów dokumentów – część 3: XML Schema 15

Rozszerzanie zawartości złożonej <xsd: complex. Type name="Osoba. Typ"> <xsd: sequence> <xsd: element name="imie" type="xsd:

Rozszerzanie zawartości złożonej <xsd: complex. Type name="Osoba. Typ"> <xsd: sequence> <xsd: element name="imie" type="xsd: string"/> <xsd: element name="nazwisko" type="xsd: string"/> </xsd: sequence> </xsd: complex. Type> <xsd: complex. Type name="Osoba. ZDokumentem. Typ"> <xsd: complex. Content> <xsd: extension base="Osoba. Typ"> <xsd: choice> <xsd: element name="dowód-os" type="Dowód. Typ"/> <xsd: element name="paszport" type="Paszport. Typ"/> </xsd: choice> </xsd: extension> </xsd: complex. Content> </xsd: complex. Type> 2008 -10 -23 Definiowanie typów dokumentów – część 3: XML Schema 16

Typy • Typy wg zasięgu definicji: – typy nazwane, – typy anonimowe. • Typy

Typy • Typy wg zasięgu definicji: – typy nazwane, – typy anonimowe. • Typy wg zawartości: – typy proste, – typy złożone o zawartości: • • prostej, elementowej, mieszanej, pustej. • Typy wg pochodzenia: – typy wbudowane, – typy zdefiniowane w schemacie: • rozszerzenia innych typów, • ograniczenia innych typów, • listy i unie. 2008 -10 -23 Definiowanie typów dokumentów – część 3: XML Schema 17

Inne metody modularyzacji schematów • Ograniczanie typów złożonych. • Grupy do wielokrotnego wykorzystania (reusable

Inne metody modularyzacji schematów • Ograniczanie typów złożonych. • Grupy do wielokrotnego wykorzystania (reusable groups): – nazwane grupy modeli, – grupy atrybutów. • Grupy zamienne (substitution groups). 2008 -10 -23 Definiowanie typów dokumentów – część 3: XML Schema 18

Ograniczanie typów złożonych • Przestrzeń wartości typu wyprowadzonego musi być podzbiorem przestrzeni wartości typu

Ograniczanie typów złożonych • Przestrzeń wartości typu wyprowadzonego musi być podzbiorem przestrzeni wartości typu bazowego. • Dozwolone operacje: – ograniczenie zawartości prostej (tak jak typu prostego), – ograniczenie atrybutu: • ograniczenie typu atrybutu, • zmiana atrybutu opcjonalnego na wymagany (required) lub zabroniony (prohibited), • dodanie, zmiana lub usunięcie wartości domyślnej, • dodanie wartości ustalonej, jeśli jej nie było. – ograniczenie modelu zawartości, np. : • • 2008 -10 -23 ściślejsze ograniczenia liczebności (min. Occurs, max. Occurs), usunięcie elementów opcjonalnych w grupach sequence i all, wybranie podzbioru elementów w grupie choice, ograniczenie typu poszczególnych podelementów. Definiowanie typów dokumentów – część 3: XML Schema 19

Grupy do wielokrotnego wykorzystania • Grupy używanych wspólnie deklaracji elementów lub atrybutów. <xsd: group

Grupy do wielokrotnego wykorzystania • Grupy używanych wspólnie deklaracji elementów lub atrybutów. <xsd: group name="ImięNazwisko"> <xsd: sequence> <xsd: element name="imie" type="xsd: string"/> <xsd: element name="nazwisko" type="xsd: string"/> </xsd: sequence> </xsd: group> <xsd: attribute. Group name="Biurokracja"> <xsd: attribute name="NIP" type="NIPTyp"/> <xsd: attribute name="PESEL" type="PESELTyp"/> </xsd: attribute. Group> 2008 -10 -23 Definiowanie typów dokumentów – część 3: XML Schema 20

Grupy do wielokrotnego wykorzystania • Odwołania do grup: <xsd: complex. Type name="Osoba. Typ"> <xsd:

Grupy do wielokrotnego wykorzystania • Odwołania do grup: <xsd: complex. Type name="Osoba. Typ"> <xsd: sequence> <xsd: group ref="ImięNazwisko"/> <xsd: element name="obywatelstwo" type="xsd: token"/> </xsd: sequence> <xsd: attribute. Group ref="Biurokracja"/> </xsd: complex. Type> 2008 -10 -23 Definiowanie typów dokumentów – część 3: XML Schema 21

Grupy zamienne • Możliwość deklaracji zamienników dla wybranych elementów. <xsd: element name="katalog"> <xsd: complex.

Grupy zamienne • Możliwość deklaracji zamienników dla wybranych elementów. <xsd: element name="katalog"> <xsd: complex. Type> <xsd: sequence> <xsd: element ref="produkt" max. Occurs="unbounded"/> <xsd: sequence> <xsd: complex. Type> </xsd: element> <xsd: element name="produkt" type="Produkt. Typ"/> <xsd: element name="komputer" type="Komputer. Typ" substitution. Group="produkt"/> <xsd: element name="ubranie" type="Ubranie. Typ" substitution. Group="produkt"/> 2008 -10 -23 Definiowanie typów dokumentów – część 3: XML Schema 22

Grupy zamienne • Wykorzystanie grup zamiennych (egzemplarz): <katalog> <produkt>. . . </produkt> <komputer>. .

Grupy zamienne • Wykorzystanie grup zamiennych (egzemplarz): <katalog> <produkt>. . . </produkt> <komputer>. . . </komputer> <ubranie>. . . </ubranie> <produkt>. . . </produkt> </katalog> 2008 -10 -23 Definiowanie typów dokumentów – część 3: XML Schema 23

Ograniczenia integralności • Ograniczenia integralności (identity constraints): – unique – wartości w ramach określonego

Ograniczenia integralności • Ograniczenia integralności (identity constraints): – unique – wartości w ramach określonego zakresu muszą być unikatowe, – key – wartości w ramach określonego zakresu muszą być unikatowe i nie mogą być puste, – keyref – odwołanie do wartości wskazanego klucza. • Odpowiednik bazodanowych kluczy pierwotnych i kluczy zewnętrznych. 2008 -10 -23 Definiowanie typów dokumentów – część 3: XML Schema 24

Przykład <xsd: element name="zamówienia-i-faktury" type="Zamówienia. Faktury. Typ"> <xsd: unique name="faktura. Id"> <xsd: selector xpath="faktury/faktura"/>

Przykład <xsd: element name="zamówienia-i-faktury" type="Zamówienia. Faktury. Typ"> <xsd: unique name="faktura. Id"> <xsd: selector xpath="faktury/faktura"/> <xsd: field xpath="@nr"/> <xsd: field xpath="rok"/> </xsd: unique> <xsd: keyref name="zamówienie. Ref" refer="zamówienie. Id"> <xsd: selector xpath="faktury/faktura/do-zamówienia"/> <xsd: field xpath="@nr"/> </xsd: keyref> <xsd: key name="zamówienie. Id"> <xsd: selector xpath="zamówienia/zamówienie"/> <xsd: field xpath="numer"/> </xsd: key> </xsd: element> 2008 -10 -23 Definiowanie typów dokumentów – część 3: XML Schema 25

Przykład – egzemplarz (1) <xsd: unique name="faktura. Id"> <xsd: selector xpath="faktury/faktura"/> <xsd: field xpath="@nr"/>

Przykład – egzemplarz (1) <xsd: unique name="faktura. Id"> <xsd: selector xpath="faktury/faktura"/> <xsd: field xpath="@nr"/> <xsd: field xpath="rok"/> </xsd: unique> <zamówienia-i-faktury> <faktura nr="123"> <rok>2007</rok> <do-zamówienia nr="125"/>. . . </faktura> <faktura nr="123"> <rok>2006</rok> <do-zamówienia nr="665"/>. . . </faktura> <faktura nr="127/2007"> <do-zamówienia nr="125"/>. . . <xsd: keyref name="zamówienie. Ref" </faktura> refer="zamówienie. Id"> </faktury> <xsd: selector xpath= "faktury/faktura/do-zamówienia"/> <xsd: field xpath="@nr"/> </xsd: keyref> 2008 -10 -23 Definiowanie typów dokumentów – część 3: XML Schema 26

Przykład – egzemplarz (2) <zamówienia> <zamówienie> <numer>125</numer>. . . </zamówienie> <numer>665</numer>. . . </zamówienie>

Przykład – egzemplarz (2) <zamówienia> <zamówienie> <numer>125</numer>. . . </zamówienie> <numer>665</numer>. . . </zamówienie> <numer>233</numer>. . . </zamówienie> </zamówienia-i-faktury> 2008 -10 -23 <xsd: key name="zamówienie. Id"> <xsd: selector xpath="zamówienia/zamówienie"/> <xsd: field xpath="numer"/> </xsd: key> Definiowanie typów dokumentów – część 3: XML Schema 27