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 (Ważny mechanizm: key, unique, keyref)

Niekiedy elementy lub kombinacje elementów powinny mieć unikalne wartości. Wykorzystuje się do tego mechanizm kluczy oraz wartości unikalnych. Modyfikując przez analogię plik z przykładu zawartego w wykładzie (uczelnia.xsd dla uczelnia.xml), utwórz schemat dla pliku xml zadanie.xml który spełnia następujące własności:
- numer pracownika się nie powtarza
- kombinacja: imię i nazwisko się nie powtarza
- kombinacja: lokalizacja, numer filii
oraz dzial jest unikalna
- wartością pola lokalizacja była wartość klucza, który identyfikuje pole miasto
(zdefniuj klucz dla miasta oraz keyref,
który utożsamia lokalizację z wartością tego klucza)
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ęć) lub jakiegokolwiek pliku xsd, 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 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ęć 17.04.2018.

punktacja

UWAGA: oprócz projektu proszę wypełnić plik samooceny, który jest tu: plik samooceny
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)
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 się, które dane pamietac w postaci atrybutów, a które jako elementy. Postaraj się wymusić 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.

Dodatkowo

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