Definiowanie typów dokumentów Część 3. XML Schema



Podobne dokumenty
XML Schema. Typy proste, wyprowadzanie typów, modularyzacja schematu. Patryk Czarnik. Instytut Informatyki UW

extensible Markup Language, cz. 4 Marcin Gryszkalis, mg@fork.pl

Język XML Schema. UEK w Krakowie Janusz Stal & Grażyna Paliwoda-Pękosz. UEK w Krakowie Janusz Stal & Grażyna Paliwoda-Pękosz

Przykładowy dokument XML

- wewnątrz elementów prostych występuje tylko jeden typ danych, wewnątrz złoŝonych nie moŝemy dokładnie określić liczby wystąpień elementu

Definiowanie typów dokumentów Część 2. Przestrzenie nazw, XML Schema

XML Schema. Motywacja, struktura schematu, typy złożone. Patryk Czarnik. Instytut Informatyki UW

Wprowadzenie do XML schema

Kurs WWW Język XML, część I

Schematy XML. Tomasz Traczyk.

Implementacja schematów i statycznej kontroli typów w systemie JLoXiM

Dlaczego DTD nie wystarcza? Definiowanie typów dokumentów Część 2. XML Schema. Status XML Schema. DTD XML Schema. Definiowanie elementów i atrybutów

Plan prezentacji. XML Schema Definition Language (XSD) Zalety i wady Schematów XML. Ogólna charakterytyka XML Schema. Wstęp

Schema Schemat_JPK_PKPIR_v1-0.xsd

Definiowanie typów dokumentów Część 2. Przestrzenie nazw, XML Schema

Rozdział 1 Cel dokumentu Rozdział 2 Deklaracja Rozdział 3 Nagłówek Rozdział 4 Podmiot Rozdział 5 FATCA...

Definiowanie typów dokumentów Część 2. Przestrzenie nazw, XML Schema. Elementy czy atrybuty? Wartości domyślne i ustalone. Elementy czy atrybuty?

XML extensible Markup Language. część 4

XML i nowoczesne metody zarządzania treścią

XML Schema. Motywacja, struktura schematu, typy złożone. Patryk Czarnik. Instytut Informatyki UW

XML Schema w przykładach

Dokument poprawnie sformułowany jest zgodny z ogólnymi zasadami składniowymi:

29. Poprawność składniowa i strukturalna dokumentu XML

Tabela wewnętrzna - definicja

Jak wygląda XML? Definiowanie typów dokumentów Część 1. DTD, XML Schema. Struktura logiczna dokumentu XML. Składnia XML. Encje predefiniowane.

PROJEKT CZĘŚCIOWO FINANSOWANY PRZEZ UNIĘ EUROPEJSKĄ. Opis działania raportów w ClearQuest

Rola języka XML narzędziem

Systemy liczenia. 333= 3*100+3*10+3*1

11. PROFESJONALNE ZABEZPIECZENIE HASŁEM

Wykład 8: klasy cz. 4

Definiowanie typów dokumentów Część 1. DTD, XML Schema

Program 6. Program wykorzystujący strukturę osoba o polach: imię, nazwisko, wiek. W programie wykorzystane są dwie funkcje:

Za pomocą atrybutu ROWS moŝemy dokonać podziału ekranu w poziomie. Odpowiedni kod powinien wyglądać następująco:

Wykład 5: Klasy cz. 3

Zasady Nazewnictwa. Dokumentów XML Strona 1 z 9

XML Schema. Bartłomiej Świercz. Łódź, 19 listopada 2005 roku. Katedra Mikroelektroniki i Technik Informatycznych. Bartłomiej Świercz XML Schema

Wykład 4. SQL praca z tabelami 1

Jak wygląda XML? Definiowanie typów dokumentów Część 1. DTD, XML Schema. Struktura logiczna dokumentu XML. Składnia XML. Encje predefiniowane.

Bazy danych 1. Wykład 5 Metodologia projektowania baz danych. (projektowanie logiczne)

Wprowadzenie do technologii XML

ARYTMETYKA KOMPUTERA

XML extensible Markup Language. Paweł Chodkiewicz

Programowanie obiektowe

Transformacja modelu ER do modelu relacyjnego

Podstawowe konstrukcje Podstawowymi konstrukcjami są wzorce element oraz attribute:

XML i nowoczesne technologie zarządzania treścią

KaŜdemu atrybutowi A przyporządkowana jest dziedzina Dom(A), czyli zbiór dopuszczalnych wartości.

Laboratorium nr 5. Temat: Funkcje agregujące, klauzule GROUP BY, HAVING

Stałe, znaki, łańcuchy znaków, wejście i wyjście sformatowane

Informatyka I. Dziedziczenie. Nadpisanie metod. Klasy abstrakcyjne. Wskaźnik this. Metody i pola statyczne. dr inż. Andrzej Czerepicki

MINISTERSTWO SPRAW WEWNĘTRZNYCH I ADMINISTRACJI DEPARTAMENT INFORMATYZACJI

Paczki przelewów w ING BankOnLine

Schematy aplikacyjne UML i GML dla mapy zasadniczej oraz Modelu Podstawowego. Rozdział 1 Założenia podstawowe

Spis treści. I. Czym jest Indeks Haseł 3 II. Wyszukiwanie hasła 4. 1) Alfabetyczna lista haseł 4 2) Wyszukiwarka haseł 4 3) Grupy haseł 6

PODEJŚCIE OBIEKTOWE. Przykład 1 metody i atrybuty statyczne

XML i nowoczesne technologie zarządzania treścią 2007/08

Tworzenie tabel. Bazy danych - laboratorium, Hanna Kleban 1

Laboratorium nr 8. Temat: Podstawy języka zapytań SQL (część 2)

Wykład 2. Relacyjny model danych

MATERIAŁY DO ZAJĘĆ II

PREZENTACJE MULTIMEDIALNE cz.2

Jednostki informacji. Bajt moŝna podzielić na dwie połówki 4-bitowe nazywane tetradami (ang. nibbles).

XML. Æwiczenia praktyczne

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

Zmienne powłoki. Wywołanie wartości następuje poprzez umieszczenie przed nazwą zmiennej znaku dolara ($ZMIENNA), np. ZMIENNA=wartosc.

Relacyjne bazy danych. Podstawy SQL

Paweł Kurzawa, Delfina Kongo

Wykład 5. Cel wykładu. Korespondencja seryjna. WyŜsza Szkoła MenedŜerska w Legnicy. Informatyka w zarządzaniu Zarządzanie, zaoczne, sem.

Ćwiczenie nr 1: Systemy liczbowe

Wprowadzenie do XML. Joanna Jędrzejowicz. Instytut Informatyki

Programowanie obiektowe

Rys. 1. Zestawienie rocznych kosztów ogrzewania domów

Definicja obiektowego modelu danych: struktura i zachowanie

LAB 7. XML EXtensible Markup Language - Rozszerzalny Język Znaczników XSD XML Schema Definition Definicja Schematu XML

Java Podstawy. Michał Bereta

D D L S Q L. Co to jest DDL SQL i jakie s jego ą podstawowe polecenia?

Podstawowe operacje arytmetyczne i logiczne dla liczb binarnych

Wykład 2 xaml, cz Czym jest xml?

referencje Wykład 2. Programowanie (język C++) Referencje (1) int Num = 50; zdefiniowano zmienną Num (typu int) nadając jej wartość początkową 50.

Praca z programem PLANS

Procedury wyzwalane. (c) Instytut Informatyki Politechniki Poznańskiej 1

Informacje ogólne. Karol Trybulec p-programowanie.pl 1. 2 // cialo klasy. class osoba { string imie; string nazwisko; int wiek; int wzrost;

Dostępne grupy kontrolek. Podstawowe kontrolki Web

Biuletyn techniczny. Funkcje dodatkowe dla Clarion Report Writer CDN OPT!MA Copyright 2006 COMARCH S.A.

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 6

Podstawy programowania w C++

Obszar statyczny dane dostępne w dowolnym momencie podczas pracy programu (wprowadzone słowem kluczowym static),

Technologia informacyjna

LibreOffice Calc VBA

Programowanie 3 - Funkcje, pliki i klasy

Autor: dr inż. Katarzyna Rudnik

15. Funkcje i procedury składowane PL/SQL

Dla człowieka naturalnym sposobem liczenia jest korzystanie z systemu dziesiętnego, dla komputera natomiast korzystanie z zapisu dwójkowego

Ćwiczenie 8 Kolory i znaki specjalne

Administracja i programowanie pod Microsoft SQL Server 2000

Modelowanie związków encji. Oracle Designer: Diagramy związków encji. Encja (1)

Dlaczego GML? Gdańsk r. Karol Stachura

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

Utwórz na pulpicie katalog: pierwsza-litera-imienia_nazwisko (np. j_kowalski). W tym katalogu zapisz pliki, które będą tworzone w ramach ćwiczenia

Wstęp do informatyki- wykład 2

Transkrypt:

Definiowanie typów dokumentów Część 3. XML Schema 1

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 Typy wbudowane tworzą hierarchię niektóre typy są wyprowadzone z innych, bardziej ogólnych. Pierwszy poziom hierarchii (bezpośrednio pod anysimpletype) to typy pierwotne (ang. primitive types). Reprezentują one podstawowe abstrakcyjne typy danych. Pozostałe typy nazywamy wyprowadzonymi typami wbudowanymi (ang. derived built-in types). Są one ograniczeniami typów pierwotnych lub listami. 2

Wbudowane typy proste (wybrane) string napis normalizedstring 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 base64binary dane binarne zapisane w kodowaniu Base64 hexbinary dane binarne zapisane szesnastkowo 2008-10-23 Definiowanie typów dokumentów część 3: XML Schema 3 Typy danych string, normalizedstring i token reprezentują ciągi znaków złoŝone z dowolnych znaków standardu Unicode. Jedyna róŝnica między tymi typami polega na sposobie traktowania białych znaków. QName nazwa kwalifikowana to nazwa naleŝąca do pewnej przestrzeni nazw. Jak pamiętamy, niekoniecznie musi ona zawierać prefiks przestrzeni nazw i dwukropek nazwa bez prefiksu takŝe moŝe być kwalifikowana, jeśli jest w zasięgu deklaracji domyślnej przestrzeni nazw. 3

Wbudowane typy proste (wybrane) Typ decimal float, double QName date time datetime gyearmonth gmonthday duration Poprawne wartości 12.3 +000012.300 +24.3e-3 12 NaN os:osoba 1968-04-02 1968-04-02-05:00 1968-04-02Z -0045-02-02 13:20:00.887 13:30:00-05:00 1968-04-02T13:20:00.887 1968-04 --04-02 P2Y6M5DT12H35M30S -INF osoba 2008-10-23 Definiowanie typów dokumentów część 3: XML Schema 4 Podczas sprawdzania poprawności dokumentu względem schematu zachodzi czasami konieczność porównywania wartości. NaleŜy pamiętać, Ŝe procesor schematów, porównując wartości, nie ogranicza się do porównania napisów, lecz porównuje abstrakcyjne wartości danego typu, reprezentowane przez te napisy. Zatem wartości 12.3 i +000012.300 typu decimal są sobie równe (bo reprezentują tą samą liczbę dziesiętną. Ale te same wartości typu string są róŝne. 4

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 Nowy typ prosty moŝna wyprowadzić wyłącznie z innego typu prostego. Natomiast nowy typ złoŝony moŝna wyprowadzić z innego typu złoŝonego lub z typu prostego. Nie moŝna rozszerzać typu prostego, z wyjątkiem dodawania atrybutów, co powoduje powstanie typu złoŝonego. 5

Ograniczanie typów prostych Aspekty (ang. facets): minexclusive, mininclusive, maxexclusive, maxinclusive, length, minlength, maxlength, totaldigits, fractiondigits, enumeration, pattern, whitespace. 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 KaŜdy typ prosty jest ograniczeniem (ang. restriction) innego typu prostego, nazywanego typem bazowym (ang. base type). Przestrzeń wartości typu prostego powstałego w wyniku ograniczenia jest podzbiorem (ograniczeniem) przestrzeni wartości jego typu bazowego. Ograniczenia definiujemy przy pomocy aspektów (x oznacza wartość aspektu): minexclusive, mininclusive, maxexclusive, maxinclusive wartość musi być większa / większa lub równa / mniejsza / mniejsza lub równa niŝ x length długość wartości musi być równa x minlength, maxlength długość wartości musi być większa lub równa / mniejsza lub równa x totaldigits liczba znaczących cyfr musi być mniejsza lub równa x fractiondigits liczba cyfr ułamkowych musi być mniejsza lub równa x whitespace określa sposób traktowania białych znaków enumeration x jest jedną z poprawnych wartości pattern x jest wyraŝeniem regularnym, do których powinna pasować wartość 6

Ograniczanie typów prostych przykłady <xsd:simpletype name="numerlottotyp"> <xsd:restriction base="xsd:integer"> <xsd:mininclusive value="1"/> <xsd:maxinclusive value="49"/> </xsd:restriction> <xsd:simpletype name="dokumenttyp"> <xsd:restriction base="xsd:token"> <xsd:enumeration value="dowód osobisty"/> <xsd:enumeration value="paszport"/> </xsd:restriction> <xsd:simpletype name="niptyp"> <xsd:restriction base="xsd:string"> <xsd:pattern value="\d{3}-\d{3}-\d{2}-\d{2}"/> <xsd:pattern value="\d{3}-\d{2}-\d{2}-\d{3}"/> </xsd:restriction> 2008-10-23 Definiowanie typów dokumentów część 3: XML Schema 7 7

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: mininclusive: -128, maxinclusive: 127. Przykład niepoprawne wyprowadzenie: <xsd:simpletype name="extendedbyte"> <xsd:restriction base="xsd:byte"> <xsd:mininclusive value="-256"/> <xsd:maxinclusive value="255"/> </xsd:restriction> 2008-10-23 Definiowanie typów dokumentów część 3: XML Schema 8 Definiując ograniczenie naleŝy pamiętać, Ŝe musi ono faktycznie ograniczać przestrzeń wartości nie moŝe jej rozszerzać. Jest to szczególnie istotne w przypadku ograniczania typów wbudowanych, które mają określone wartości niektórych aspektów. 8

Aspekt whitespace 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 Aspekt whitespace pozwala na kontrolowanie sposobu traktowania białych znaków. W praktyce tego aspektu uŝywa się rzadko zamiast niego wygodniej jest posługiwać się wbudowanymi typami string, normalizedstring i token oraz ich ograniczeniami. RóŜnią się one od siebie właśnie wartością aspektu whitespace. 9

Tworzenie list <xsd:simpletype name="numerlottotyp"> <xsd:restriction base="xsd:integer"> <xsd:mininclusive value="1"/> <xsd:maxinclusive value="49"/> </xsd:restriction> <xsd:simpletype name="numerylottotyp"> <xsd:list itemtype="numerlottotyp"/> <xsd:simpletype name="kuponlottotyp"> <xsd:restriction base="numerylottotyp"> <xsd:length value="6"/> </xsd:restriction> 2008-10-23 Definiowanie typów dokumentów część 3: XML Schema 10 Wartością typu listy jest lista wartości pewnego typu atomowego (nazywanego typem pozycji listy), oddzielonych od siebie białymi znakami. Pamiętajmy, Ŝe lista jest typem prostym pozycje na liście nie są zapisane w podelementach, a jedynie oddzielone białymi znakami, a więc cała wartość jest napisem. Definiując typ listy podajemy (w atrybucie itemtype lub wewnątrz elementu list patrz następny slajd) typ pozycji listy. Typ listy moŝna dalej ograniczać, wyproiwadzając z niego kolejne typy. Pamiętajmy, Ŝe atrybuty length, minlength i maxlength w przypadku list odnoszą się do liczby pozycji na liście, a nie do liczby znaków, przy pomocy których lista jest zapisana. 10

Tworzenie list inaczej <xsd:simpletype name="kuponlottotyp"> <xsd:restriction> <xsd:simpletype> <xsd:list> <xsd:simpletype> <xsd:restriction base="xsd:integer"> <xsd:mininclusive value="1"/> <xsd:maxinclusive value="49"/> </xsd:restriction> </xsd:list> <xsd:length value="6"/> </xsd:restriction> 2008-10-23 Definiowanie typów dokumentów część 3: XML Schema 11 Poprawną wartością typu zdefiniowanego na tym i poprzednim slajdzie moŝe być: 5 15 9 12 9 43 Niepoprawnymi wartościami tego typu są np.: 5 15 9 12 5 15 59 12 9 43 5 15 abc 12 9 43 11

Tworzenie unii <xsd:simpletype name="rozmiarliczbowytyp"> <xsd:restriction base="xsd:integer"> <xsd:mininclusive value="2"/> <xsd:maxinclusive value="18"/> </xsd:restriction> <xsd:simpletype name="rozmiarsmltyp"> <xsd:restriction base="xsd:token"> <xsd:enumeration value="s"/> <xsd:enumeration value="m"/> <xsd:enumeration value="l"/> </xsd:restriction> <xsd:simpletype name="rozmiartyp"> <xsd:union membertypes="rozmiarliczbowytyp RozmiarSMLTyp"/> 2008-10-23 Definiowanie typów dokumentów część 3: XML Schema 12 Definiując unię, określamy (w atrybucie membertypes lub wewnątrz elementu union patrz kolejny slajd) jej typy składowe. Unia jest sumą teoriomnogościową przestrzeni wartości swoich typów składowych. Inaczej mówiąc, kaŝda poprawna wartość typu składowego, jest poprawną wartością typu unii. 12

Tworzenie unii inaczej <xsd:simpletype name="rozmiartyp"> <xsd:union> <xsd:simpletype> <xsd:restriction base="xsd:integer"> <xsd:mininclusive value="2"/> <xsd:maxinclusive value="18"/> </xsd:restriction> <xsd:simpletype> <xsd:restriction base="xsd:token"> <xsd:enumeration value="s"/> <xsd:enumeration value="m"/> <xsd:enumeration value="l"/> </xsd:restriction> </xsd:union> 2008-10-23 Definiowanie typów dokumentów część 3: XML Schema 13 Poprawnymi wartościami typu zdefiniowanego na tym i poprzednim slajdzie są np.: 15 M 18 Niepoprawnymi wartościami są np.: 15M L 18 19 Z 13

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 Rozszerzać moŝna zarówno typy proste, jak i złoŝone, ale w wyniku rozszerzania zawsze powstaje typ złoŝony. Rozszerzanie polega na dodawaniu do typu bazowego nowych elementów i/lub atrybutów. Wartości typu bazowego niekoniecznie muszą być poprawnymi wartościami typu rozszerzonego, poniewaŝ rozszerzenie moŝe dodawać elementy lub atrybuty, które są wymagane. 14

Rozszerzanie zawartości prostej <xsd:complextype name="masatyp"> <xsd:simplecontent> <xsd:extension base="xsd:decimal"> <xsd:attribute name="jm" type="xsd:string"/> </xsd:extension> </xsd:simplecontent> </xsd:complextype> <xsd:complextype name="masaniedokładnatyp"> <xsd:simplecontent> <xsd:extension base="masatyp"> <xsd:attribute name="dokładność" type="xsd:decimal"/> </xsd:extension> </xsd:simplecontent> </xsd:complextype> 2008-10-23 Definiowanie typów dokumentów część 3: XML Schema 15 Rozszerzając typ prosty lub typ złoŝony o zawartości prostej, moŝemy do niego dodawać wyłącznie atrybuty. Wynikiem takiego rozszerzenia jest typ złoŝony o zawartości prostej. 15

Rozszerzanie zawartości złoŝonej <xsd:complextype name="osobatyp"> <xsd:sequence> <xsd:element name="imie" type="xsd:string"/> <xsd:element name="nazwisko" type="xsd:string"/> </xsd:sequence> </xsd:complextype> <xsd:complextype name="osobazdokumentemtyp"> <xsd:complexcontent> <xsd:extension base="osobatyp"> <xsd:choice> <xsd:element name="dowód-os" type="dowódtyp"/> <xsd:element name="paszport" type="paszporttyp"/> </xsd:choice> </xsd:extension> </xsd:complexcontent> </xsd:complextype> 2008-10-23 Definiowanie typów dokumentów część 3: XML Schema 16 Rozszerzając zawartość złoŝoną moŝna dodawać podelementy na końcu modelu zawartości typu bazowego. MoŜna takŝe dodawać atrybuty. Nie moŝna jednak modyfikować ani usuwać istniejących atrybutów. Definiując rozszerzenie zawartości złoŝonej, nie trzeba powtarzać modelu zawartości typu bazowego. Procesor obsługuje rozszerzenia zawartości złoŝonej dodając nowy model zawartości po modelu zawartości typu bazowego, jak gdyby oba modele były zawarte w grupie sequence. (Priscilla Walmsley, Wszystko o XML Schema, WNT, 2008) 16

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 17

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 18

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.: ściślejsze ograniczenia liczebności (minoccurs, maxoccurs), usunięcie elementów opcjonalnych w grupach sequence i all, wybranie podzbioru elementów w grupie choice, ograniczenie typu poszczególnych podelementów. 2008-10-23 Definiowanie typów dokumentów część 3: XML Schema 19 19

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:attributegroup name="biurokracja"> <xsd:attribute name="nip" type="niptyp"/> <xsd:attribute name="pesel" type="peseltyp"/> </xsd:attributegroup> 2008-10-23 Definiowanie typów dokumentów część 3: XML Schema 20 Są dwa rodzaje grup do wielokrotnego wykorzystania: nazwane grupy modeli (group), grupy atrybutów (attributegroup). Jest to prosta metoda modularyzacji schematu. Jeśli dany fragment modelu zawartości lub zestaw atrybutów jest często uŝywany, moŝna zdefiniować go jako grupę, a następnie odwoływać się do tej grupy w wielu definicjach typów złoŝonych. 20

Grupy do wielokrotnego wykorzystania Odwołania do grup: <xsd:complextype name="osobatyp"> <xsd:sequence> <xsd:group ref="imięnazwisko"/> <xsd:element name="obywatelstwo" type="xsd:token"/> </xsd:sequence> <xsd:attributegroup ref="biurokracja"/> </xsd:complextype> 2008-10-23 Definiowanie typów dokumentów część 3: XML Schema 21 Odwołanie do grupy jest interpretowane w taki sposób, jakby zawartość grupy była wklejona w miejscu, gdzie występuje odwołanie. 21

Grupy zamienne MoŜliwość deklaracji zamienników dla wybranych elementów. <xsd:element name="katalog"> <xsd:complextype> <xsd:sequence> <xsd:element ref="produkt" maxoccurs="unbounded"/> <xsd:sequence> <xsd:complextype> </xsd:element> <xsd:element name="produkt" type="produkttyp"/> <xsd:element name="komputer" type="komputertyp" substitutiongroup="produkt"/> <xsd:element name="ubranie" type="ubranietyp" substitutiongroup="produkt"/> 2008-10-23 Definiowanie typów dokumentów część 3: XML Schema 22 Przy pomocy grup zamiennych moŝna wskazać, Ŝe pewne elementy mogą być uŝywane w egzemplarzach jako zamienniki pewnego elementu, zwanego głową grupy zamiennej. Nie trzeba przy tym w Ŝaden sposób modyfikować deklaracji głowy ani dodawać czegokolwiek w definicji typu, w której głowa występuje. Wystarczy w deklaracjach zamienników (członków grupy zamiennej) wskazać, jaki element mogą one zastępować. Dlatego grupy zamienne uwaŝa się za bardzo elastyczny i wygodny sposób rozszerzania schematów. ZauwaŜmy, Ŝe przy pomocy grup zamiennych moŝna rozszerzyć schemat, nie modyfikując jego bazowych deklaracji i definicji. Jest to istotne np. w sytuacjach, gdy chcemy rozszerzyć schemat branŝowy, nie mając praw do jego modyfikacji. Element A moŝna zadeklarować jako zamiennik elementu B, pod warunkiem, Ŝe typ elementu A jest typem wyprowadzonym z typu elementu B, tzn. rozszerzeniem lub ograniczeniem typu B. 22

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 W egzemplarzu nie ma potrzeby oznaczania zamienników w Ŝaden szczególny sposób. Zamienników uŝywamy tak, jakby były zadeklarowane bezpośrednio w modelu zawartości elementu katalog. 23

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 Ograniczenia unikatowości (unique) pozwalają wymusić, aby wartość (lub kombinacja wartości) była unikatowa w określonym zasięgu. Przy pomocy takiego ograniczenia moŝna na przykład określić, Ŝe wszystkie numery produktów w katalogu muszą być unikatowe. Klucze (key) takŝe zapewniają unikatowość wartości, dodatkowo wymuszając, aby wszystkie wartości występowały w dokumencie. Przy pomocy klucza moŝna na przykład określić, Ŝe kaŝdy produkt musi mieć numer, który jest unikatowy w katalogu. Odwołania do kluczy (keyref) wymuszają, aby dla kaŝdej wartości (lub kombinacji wartości) istniała odpowiednia wartość klucza lub ograniczenia unikatowości. Przy pomocy odwołania moŝna na przykład określić, Ŝe dla kaŝdego numeru produktu, jaki pojawia się w pozycji zamówienia, musi istnieć odpowiedni numer produktu w sekcji zawierającej opisy produktów. (Priscilla Walmsley, Wszystko o XML Schema, WNT, 2008) 24

Przykład <xsd:element name="zamówienia-i-faktury" type="zamówieniafakturytyp"> <xsd:unique name="fakturaid"> <xsd:selector xpath="faktury/faktura"/> <xsd:field xpath="@nr"/> <xsd:field xpath="rok"/> </xsd:unique> <xsd:keyref name="zamówienieref" refer="zamówienieid"> <xsd:selector xpath="faktury/faktura/do-zamówienia"/> <xsd:field xpath="@nr"/> </xsd:keyref> <xsd:key name="zamówienieid"> <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 Definicja ograniczenia integralności składa się z trzech części: Zasięg (ang. scope) to element, w którego deklaracji jest zawarte ograniczenie. Dwa zamówienia o tym samym numerze będą najzupełniej poprawne, jeśli będą umieszczone w dwóch róŝnych elementach zamówienia-i-faktury. Selektor (ang. selector) pozwala wskazać węzły, których dotyczy ograniczenie. Jedno lub więcej pól (ang. fields) to wartości elementów i atrybutów, które muszą być unikatowe wśród wskazanych węzłów. W kaŝdym węźle wskazanym przez selektor moŝe być co najwyŝej jeden egzemplarz kaŝdego pola. Selektory i pola zapisuje się przy pomocy wyraŝeń XPath (nie moŝna uŝywać zupełnie dowolnych wyraŝeń XPath, rekomendacja XML Schema definiuje podzbiór XPath, który jest dozwolony w ograniczeniach integralności). 25

Przykład egzemplarz (1) <zamówienia-i-faktury> <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"/>... </faktura> </faktury> <xsd:unique name="fakturaid"> <xsd:selector xpath="faktury/faktura"/> <xsd:field xpath="@nr"/> <xsd:field xpath="rok"/> </xsd:unique> <xsd:keyref name="zamówienieref" refer="zamówienieid"> <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 Zwróćmy uwagę, Ŝe nie jest wymagane, aby wartości pól odwołania do klucza były unikatowe. 26

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