Dzisiaj są ostatnie zajęcia ze schematów
Poniższe ćwiczenia są częściowo autorstwa dr J. Neumanna:

Zad 1 (restriction dla atrybutów)

Zdefiniuj w schema atrybut o nazwie płec, którego jedynymi wartościami mają być "m" lub "k" (skorzystaj z simpleType, restriction, enumeration).

Zad 2 (grupy elementów i atrybutów):

a) W pliku ze schematem faktury wydziel grupę dane_adresowe obejmującą nazwa, ulica, kod, miasto, kraj.

< group name = "..." >
<xsd:sequence>
...
<xsd:sequence>
< group >

i odnieś się do niej przez

<xsd:group ref="dane_adresowe"> 

b) Utwórz grupę atrybutów o nazwie osobaAtrybut złożoną z atrybutów pesel i NIP. Schemat jest taki:

< attributeGroup name = "..." >
<xsd:attribute name= " ... " type = "...">
...
< attributeGroup >

Ten podpunkt nie ma być częścią większego schematu.

Zad 3

Korzystając z przykładu zawartego w wykładzie, utwórz klucz tak by w przykładzie z fakturą element isbn był niepowtarzalny w dokumencie. Pamiętaj, że miejsce na definicję klucza jest pod koniec elementu którego klucz dotyczy, wewnątrz < element> ... </element>
Przykłady definiowania klucza są tutaj: w przykładach do wykładu

Zad 4 (dzielenie schematów)

Przenieś fragment schematu dotyczącego zadania z zamówieniem (zad 3 z poprzednich zajęć) do pliku inny_schemat.xsd, załącz go następnie poprzez

  
<xsd:include schemaLocation="inny_schemat.xsd"/>

zwróć uwagę, że dane w pliku inny_schemat.xsd powinny być otoczone elementem

 
<xsd:schema xmln:xsd="http://www.w3.org/2001/XMLSchema">

Zad 5 (błąd redeklaracji)

Wywołaj błąd redeklaracji przez skopiowanie fragmentu schematu do zadania z zamówieniem do pliku inny_schemat (zamiast przeniesienia go tam) i sprawdzenie zgodności ze schematem

Zad 6 (redefine)

sprawdzić jak działa redefine (napisać odpowiedni xml do przykładu zawartego w dokumentacji redefine w punkcie 4.2.2

Zad 7

(Projekt)

Zaprojektuj schemat dla dokumentu xml o głębokości drzewa conajmniej 4, i szerokości conajmniej 5. Zadbaj o wykorzystanie umiejętności poznanych na ćwiczeniach. Termin oddania: przoszę wysłać na mejla w trakcie zajęć 25.04.2017.

punktacja

Dopuszczalne formy pliku xsd: Metoda płaskiego katalogu (z użyciem ref) 5 pkt, Metoda typów nazwanych 7 pkt (nie należy mieszać metod).
Użycie odpowiednich elementów jest punktowane jak następuje: - restriction, pattern, choice, all, sequence po 1 pkt - unia, 2 pkt - lista 2 pkt - grupy elementów 2 pkt - grupy atrybutów 2 pkt - typ wbudowany (im więcej różnych użytych tym więcej punktów np. xs:string, xs:integer itp.) każdy po 1 pkt max 6 - atrybut z wybraną wartością 1 pkt
- klucz, wartość unikalna po 2 pkt
- Przydzielenie do przestrzeni nazw - 3 pkt (patrz przykład poniżej) - Dodatkowe 3 punkty za użycie komendy import (patrz przykład poniżej) Uwaga: Można zrobić schemat dla projektu poniższego, ale własny będzie punktowany o 3 punkty wyżej.



Oto przykład projektu: Uzywajac XML Schema zaprojektuj schemat dla dokumentów, w ktorych firma importujaca owoce moze przechowywac dane o zamówienia i dostawach. Zastanów sie, które dane pamietac w postaci atrybutów, a które jako elementy. Postaraj sie wymusic na dokumentach XML jak najwieksza zgodnosc z ponizszym opisem.
Dla kazdej dostawy nalezy zapamietac rodzaj owocu, wielkosc dostawy (kg), dostawce, firme transportowa, date, date przydatnosci, jakosc (pierwsza lub druga) oraz cene (jedna z walut USD/EUR/PLN, domyslnie EUR). Dostawa moze zawierac opis uszkodzen. Kazdy owoc posiada gatunek, odmiane i kaliber (od 1 do 5), niektóre posiadaja informacje o swoich szczególnych własnosciach zdrowotnych. Kazdy odbiorca, dostawca oraz firma transportowa posiada swoja nazwe oraz adres. Sa trzy kategorie odbiorców: hipermarkety, hurtownie, oraz mniejsze sklepy. Zamówienia zawiera rodzaj owocu, wielkosc zamowienia, odbiorce, date oraz moze

zawierac proponowana cene (USD/EUR/PLN).Jesli odbiorca jest hipermarket

to zamówienie zawiera wysokosc opłaty za ekspozycje towaru. Jesli

odbiorca jest mały sklep to zamówienie nie moze posiadac proponowanej ceny.

(wartość use odp. atrybutu prohibited) Minimalna wielkosc zamówienia dla hipermarketu

i hurtowni to 500kg.

Przykłady

przydzielenia schematu do przestrzeni nazw i odwołanie się do tego schematu w pliku xml:

noName.xsd oraz noName.xml

Uwaga: dodatkowe 3 punkty otrzyma się za użycie komendy import, tak jak w przykładowych plikach plik importujący , plik importowany , xml