Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Definiowanie typów dokumentów

Podobne prezentacje


Prezentacja na temat: "Definiowanie typów dokumentów"— Zapis prezentacji:

1 Definiowanie typów dokumentów
DTD, XML Schema

2 Tematyka Struktura XML DTD XML Schema

3 Struktura XML Deklaracja XML Element główny Atrybut Element
Znacznik początkowy Zawartość tekstowa Slajd przedstawia jedynie podstawowe elementy składni dokumentu XML. Każdy dokument XML zaczyna się od deklaracji XML, określającej wersję składni XML-a, kodowanie znaków, itp. Cała zawartość dokumentu zawarta jest w jednym elemencie – elemencie głównym. On dopiero zawiera inne elementy oraz tekst. Elementy mogą posiadać atrybuty, opisujące pewne właściwości elementów. Element jest kodowany przy pomocy znacznika początkowego oraz znacznika końcowego. Znacznik końcowy

4 Struktura logiczna dokumentu XML
zeznanie-sprawcy nr="1313/2001" autor miejsce tresc Jan Leski Sopot ... Wypadek dnia data o godzinie godzina ( dzienTygodnia środa 13:13

5 Składnia XML Deklaracja XML: Znaczniki: Znaczniki elementu pustego:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> Znaczniki: <tag attributename="attribute value"> </tag> Znaczniki elementu pustego: <br></br> <br/> Komentarz: <!-- komentarz --> Instrukcja przetwarzania: <?target processing-instruction-body?> Sekcja CDATA: <![CDATA[dowolny <tekst " nieprzetwarzany & przez [ parser]]>

6 Encje predefiniowane & & < < > > &apos; ' " "

7 Unicode Światowy standard kodowania znaków. Odmiany:
UTF-7 (korzysta tylko z 7-bitowego zestawu znaków ASCII) UTF-8 (pierwsze 128 – ASCII, znak zajmuje od 1 do 6 bajtów) UTF-16 (każdy znak to 16-bitów) UTF-32 (każdy znak 32-bity) UCS-4 (znak zajmuje zawsze 4 bajty) Obowiązkowy standard dla dokumentów XML: każde narzędzie XML-owe musi wspierać przynajmniej UTF-8 Sposób użycia w dokumentach XML: jako odpowiedni ciąg bajtów &#kod; - kod dziesiętny znaku &#xkod; - kod szesnastkowy znaku

8 Definiowanie języków XML, SGML
Definiowanie języków (zastosowań, struktury dokumentów, typów dokumentów): określanie zestawu dopuszczalnych elementów, atrybutów definiowanie dopuszczalnej zawartości elementów (tekst, inne elementy) przypisywanie atrybutów do elementów inne części Metody definiowania struktury: dokument XML bez formalnej definicji struktury DTD – Document Type Definition XML Schema (rekomendacja W3C z 2 maja 2001)

9 Poprawność struktury dokumentu
Dokument XML poprawny składniowo każdy element musi być zamknięty: nie ma nakładających się elementów wartości atrybutów w apostrofach lub cudzysłowach Dokument XML poprawny strukturalnie struktura dokumentu zgodna ze strukturą zdefiniowaną w definicji typu dokumentu, obecne wszystkie wymagane atrybuty Drugi stopień poprawności (poprawność strukturalna) wymaga, aby spełniony był także pierwszy. Ma on sens jedynie dla dokumentów z określoną strukturą. Dokument, który nie jest poprawny składniowo, nie jest dokumentem XML.

10 Modelowanie typów dokumentów
Wieloetapowy proces: analiza struktury modelowanych bytów, analiza przykładowych dokumentów, analiza potencjalnych zastosowań dokumentów oraz przypadków użycia, abstrakcyjny projekt struktury, kodowanie projektu struktury np. przy pomocy DTD lub XML Schema, testowanie, stała adaptacja. Podobnie jak implementacja (kodowanie) jest tylko jedną z wielu faz budowy systemu informatycznego, tak zapisywanie definicji języka przy pomocy DTD lub XML Schema jest jedynie jednym z etapów modelowania języka. Etap ten powinien być poprzedzony przez analizę oraz projektowanie struktury języka w sposób abstrakcyjny. Stosowanie pełnego cyklu modelowania ma sens w przypadku skomplikowanych języków, wykorzystywanych np. w systemach zarządzania aktami prawnymi czy zasobami encyklopedycznymi. Proces modelowania takich języków właściwie się nie kończy, ponieważ żyją i zmieniają się same reguły biznesowe będące podstawą modelu języka, lub pojawiają się nowe zależności, które trzeba zamodelować. Dlatego w profesjonalnych zastosowaniach, typy dokumentów muszą podlegać pielęgnacji. Oczywiście w prostych przypadkach (np. modelowanie komunikatu z klienta do serwera aplikacji), "rozgarnięty" projektant poradzi sobie od razu kodując definicję przy pomocy DTD lub XML Schema.

11 Projektowanie struktury dokumentów
autor ? wiersz tytuł Podczas abstrakcyjnego, niezależnego od notacji zapisu (DTD lub XML Schema), projektowania struktury dokumentów, używa się z reguły notacji graficznych. Istnieją specjalne programy, które pozwalają na takie graficzne projektowanie, np. XML Authority. * * zwrotka wers

12 DTD – prosty przykład <!DOCTYPE wiersz [
<!ELEMENT wiersz (autor, tytul?, zwrotka*)> <!ATTLIST wiersz bialy (tak|nie) "nie"> <!ELEMENT autor (#PCDATA)> <!ELEMENT tytul (#PCDATA)> <!ELEMENT zwrotka (wers)*> <!ELEMENT wers (#PCDATA)> ]> Definicja typu dokumentu jest zawarta w deklaracji DOCTYPE, po której następuje nazwa elementu głównego. Pozycje ELEMENT określają dopuszczalną zawartość poszczególnych elementów przy pomocy wyrażeń regularnych. #PCDATA (Parsed Characters Data) oznacza "czysty" tekst, bez podelementów. DTD określa także atrybuty elementów. zawartość elementów element główny atrybuty wyrażenia regularne

13 Braki DTD Zastosowania XML w integracji aplikacji – struktury danych:
Przeniesienie zadania sprawdzania poprawności tworzonej aplikacji przez narzędzie walidujące 60% tworzonego kodu dotyczy weryfikacji poprawności danych Cechy DTD: Mała kontrola nad tekstową zawartością elementów i wartościami atrybutów Ogólne metody definiowania częstości wystąpień Nieobiektowe, nierozszerzalne modele struktury Taką kontrolę poprawności możemy oczywiście zaimplementować sami w kodzie naszej aplikacji (ewentualnie parametryzując aplikację przy pomocy atrybutów #FIXED), jest to jednak dość pracochłonne. Dobrze byłoby zrzucić walidację na parser XML. Standard XML Schema pozwala na definiowanie struktur dokumentów z dużo bardziej niż w DTD zaawansowaną kontrolą zawartości.

14 DTD vs XML Schema Wywodzi się z SGML-a Zaprojektowany na potrzeby XML
Specyficzna składnia Składnia XML 10 typów danych 44 wbudowane typy proste Brak kontroli tekstowej zawartości elementów Zaawansowana kontrola tekstowej zawartości elementów Typowy mieszany model zawartości Możliwość definiowania własnych typów danych

15 XML Schema 15 lutego 1999: Dokument W3C opisujący wymagania stawiane przed nowym formatem: mechanizmy tworzenia struktury typy proste reguły przetwarzania Przestrzeń nazw XML Schema:

16 Elementy i atrybuty <xsd:element name="osoba"> <xsd:complexType> <xsd:sequence> <xsd:element name="imie" type="xsd:string"/> <xsd:element name="nazwisko" type="xsd:string"/> <xsd:element name="plec" type="xsd:string"/> <xsd:element name="wiek" type="xsd:string"/> </xsd:sequence> <xsd:attribute name="id" type="xsd:ID"/> <xsd:attribute name="NIP" type="NIPTyp"/> </xsd:complexType> </xsd:element>

17 Kontrola użycia elementów i atrybutów
<xsd:element name="osoba"> <xsd:complexType> <xsd:sequence> <xsd:element name="imie" type="xsd:string" minOccurs="1" maxOccurs="2"/> <xsd:element name="nazwisko" type="xsd:string"/> <xsd:element name="plec" type="xsd:string"/> <xsd:element name="wiek" type="xsd:string"/> </xsd:sequence> <xsd:attribute name="id" type="xsd:ID" use="required"/> <xsd:attribute name="NIP" type="NIPTyp"/> </xsd:complexType> </xsd:element>

18 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

19 Typy nazwane i anonimowe
Typy nazwane: <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:element name="osoba" type="OsobaTyp"/> Typy anonimowe: <xsd:element name="osoba"> <xsd:complexType> <xsd:sequence> <xsd:element name="imie" type="xsd:string"/> <xsd:element name="nazwisko" type="xsd:string"/> </xsd:sequence> </xsd:complexType> </xsd:element>

20 Typy proste i złożone Typy proste: <xsd:simpleType name="NIPTyp"> <xsd:restriction base="xsd:string"> <xsd:pattern value="\d{3}-\d{3}-\d{2}-\d{2}"/> </xsd:restriction> </xsd:simpleType> Typy złożone: <xsd:complexType name="OsobaTyp"> <xsd:sequence> <xsd:element name="imie" type="xsd:string"/> <xsd:element name="nazwisko" type="xsd:string"/> </xsd:sequence> </xsd:complexType> Element może mieć typ prosty lub złożony Atrybut może mieć wyłącznie typ prosty

21 Typy złożone – typy zawartości
Zawartość elementowa: <osoba PESEL=" "> <imie>Jan</imie> <nazwisko>Kowalski</nazwisko> </osoba> Zawartość prosta: <masa jm="kg">10.55</masa>

22 Typy złożone – typy zawartości
Zawartość mieszana: Zawartość pusta: <osoba PESEL=" "/>

23 Definiowanie zawartości elementowej
Grupy deklaracji elementów: sequence, choice, all Zagnieżdżanie grup: <xsd:complexType name="OsobaTyp"> <xsd:sequence> <xsd:element name="imie" type="xsd:string"/> <xsd:element ref="nazwisko"/> <xsd:choice> <xsd:element name="nr-dowodu" type="DowódTyp"/> <xsd:element name="nr-paszportu" type="PaszportTyp"/> </xsd:choice> </xsd:sequence> </xsd:complexType>

24 Grupa all – ograniczenia
Nie może zawierać innych grup (tylko deklaracje elementów i odwołania do elementów) Każdy element może wystąpić co najwyżej raz Grupa all nie może być zagnieżdżona w innej grupie Zagnieżdżanie grup <xsd:complexType name="OsobaTyp"> <xsd:all> <xsd:element name="imie" type="xsd:string"/> <xsd:element name="drugie-imie" type="xsd:string" minOccurs="0"/> <xsd:element ref="nazwisko"/> </xsd:all> </xsd:complexType>

25 Definiowanie 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>

26 Definiowanie zawartości mieszanej
<xsd:complexType name="ZeznanieTyp" mixed="true"> <xsd:sequence> <xsd:element name="data" type="xsd:string"/> <xsd:element name="godzina" type="xsd:string"/> <xsd:element name="dzien-tygodnia" type="xsd:string"/> <xsd:element name="poszkodowany" type="xsd:string"/> </xsd:sequence> </xsd:complexType>

27 Definiowanie zawartości pustej
<xsd:complexType name="OsobaTyp"> <xsd:attribute name="PESEL" type="PESELTyp"/> </xsd:complexType>

28 Globalne i lokalne deklaracje elementów i atrybutów - lokalne
Deklaracje lokalne <xsd:complexType name="OsobaTyp"> <xsd:sequence> <xsd:element name="imie" type="xsd:string" minOccurs="1" maxOccurs="2"/> <xsd:element name="nazwisko" type="xsd:string"/> </xsd:sequence> <xsd:attribute name="NIP" type="NIPTyp" use="required"/> </xsd:complexType>

29 Globalne i lokalne deklaracje elementów i atrybutów - globalne
Deklaracje globalne i odwołania <xsd:element name="imie" type="xsd:string"/> <xsd:element name="nazwisko" type="xsd:string"/> <xsd:attribute name="NIP" type="NIPTyp"/> <xsd:complexType name="OsobaTyp"> <xsd:sequence> <xsd:element ref="imie" minOccurs="1" maxOccurs="2"/> <xsd:element ref="nazwisko"/> </xsd:sequence> <xsd:attribute ref="NIP" use="required"/> </xsd:complexType>

30 Elementy a atrybuty Informacje modelowane zwykle w elementach:
zawartość - np. nazwisko, wiek struktura – np. akt prawny, rozdział wyszukiwanie - indeks, słowo kluczowe odesłania – odnośniki, przypisy Informacje modelowane zwykle w atrybutach: metainformacje – język, format liczb identyfikatory wartości i odwołania do nich

31 Elementy vs atrybuty Zalety elementów: Zalety atrybutów:
mogą zawierać inne elementy i atrybuty mogą się powtarzać można bezpiecznie rozszerzać ich model zawartości można dokładnie sterować sposobem ich występowania - kolejność, liczba wystąpień Zalety atrybutów: szybsze do definiowania mogą mieć wartości domyślne

32 Wartości domyślne i ustalone
<xsd:element name="ilość" type="xsd:positiveInteger" default="1"/> <xsd:element name="cena" type="xsd:positiveInteger" fixed="5"/> <xsd:attribute name="waluta" type="xsd:string" default="PLN"/> <xsd:attribute name="VAT" type="xsd:string" fixed="22%"/> Przykład <kwota waluta="EUR" VAT="16%">20</kwota> powinno być bez VAT

33 Przestrzenie nazw Wykorzystanie Koncepcja Historia
Analogiczna nazwa określająca te same elementy w różnych powiązanych dokumentach - wspólnie przetwarzane, zagnieżdżenie jednego w drugim Koncepcja grupa nazw oddzielona (składniowo i semantycznie) od innych nazw Historia rekomendacja W3C ze stycznia 1999 r XML 1.0 (również DTD) nie wspierają przestrzeni nazw standardy XML Schema, XSL, XLink wspierają przestrzenie nazw

34 Nazwy przestrzeni nazw
Identyfikatory URI, np: urn:szz:mimuw Nazwy przestrzeni nazw: nie muszą wskazywać konkretnych zasobów pełnią funkcję unikatowych identyfikatorów są porównywane jako napisy - istotna wielkości liter Wykorzystanie w dokumentach XML: odwzorowanie na kilkuznakowy prefiks poprzedzanie nazw prefiksem

35 Użycie przestrzeni nazw XML
<os:osoba xmlns:os=" xmlns:inst=" xmlns:xhtml=" <os:imie>Adam</os:imie> <os:nazwisko>Leski</os:nazwisko> <os:NIP> </os:NIP> <os:opis><xhtml:b>Prezes firmy</xhtml:b> </os:opis> <os:pracuje-w> <inst:firma> <inst:nazwa>WinPol</inst:nazwa> <inst:NIP> </inst:NIP> </inst:firma> </os:pracuje-w> </os:osoba>

36 Domyślna przestrzeń nazw
<osoba xmlns=" xmlns:inst=" xmlns:xhtml=" <imie>Adam</imie> <nazwisko>Leski</nazwisko> <NIP> </NIP> <opis><xhtml:b>Prezes firmy</xhtml:b> <pracuje-w> <inst:firma> <inst:nazwa>WinPol</inst:nazwa> <inst:NIP> </inst:NIP> </inst:firma> </pracuje-w> </osoba>

37 Widoczność przestrzeni nazw
<os:osoba xmlns:os=" <os:imie>Adam</os:imie> <os:nazwisko>Leski</os:nazwisko> <os:NIP> </os:NIP> <os:pracuje-w> <os:firma xmlns:os=" <os:nazwa>WinPol</os:nazwa> <os:NIP> </os:NIP> </os:firma> </os:pracuje-w> </os:osoba>

38 Nazwy z prefiksem i bez Nazwy atrybutów: Nazwy elementów:
kwalifikowane – należą do pewnej przestrzeni nazw poprzedzone prefiksem nie poprzedzone prefiksem, jeśli są w zasięgu deklaracji domyślnej niekwalifikowane – nie należą do żadnej przestrzeni nazw nie poprzedzone prefiksem, poza zasięgiem deklaracji domyślnej przestrzeni nazw Nazwy atrybutów: poprzedzone prefiksem – należą do pewnej przestrzeni nazw nie poprzedzone prefiksem – nie należą do żadnej przestrzeni nazw

39 Nazwy elementów bez prefiksów
<osoba xmlns=" <imie>Adam</imie> <nazwisko>Leski</nazwisko> <NIP> </NIP> <pracuje-w> <firma xmlns=""> <nazwa>WinPol</nazwa> <NIP> </NIP> </firma> </pracuje-w> </osoba>

40 Nazwy atrybutów <osoba xmlns=" xmlns:xlink=" <imie>Jan</imie> <nazwisko>Kowalski</nazwisko> <NIP> </NIP> <pracuje-w xlink:type="simple" xlink:href="..." rodzaj="etat">Business Consulting</pracuje-w> </osoba>

41 Atrybuty - analiza Poprawne <x xmlns:n1="    xmlns:n2="    <good n1:a="1" n2:a="2"/> </x> Niepoprawne <x xmlns:n1="    xmlns:n2="   <bad n1:a="1" n2:a="2"/> </x> Poprawne <x xmlns:n1="    xmlns="   <good n1:a="1" a="2"/> </x>

42 Przestrzenie nazw a schematy
Schemat zapisuje się przy pomocy jednego lub więcej dokumentów schematów Schemat deklaruje nazwy należące do zero lub więcej przestrzeni nazw Dokument schematu deklaruje nazwy należące do zera lub jednej przestrzeni nazw Przestrzeń nazw zawiera nazwy zadeklarowane w zero lub więcej schematach

43 Przestrzenie nazw a schematy
import osoba imię nazwisko NIP osoby.xsd firma nazwa NIP inst.xsd

44 Dokument schematu <xsd:schema xmlns:xsd=" xmlns=" targetNamespace=" <xsd:complexType name="OsobaTyp"> </xsd:complexType> <xsd:element name="osoba" type="OsobaTyp"/> <xsd:element name="numer" type="xsd:integer"/> </xsd:schema>

45 Łączenie schematów Schemat zapisuje się przy pomocy jednego lub więcej dokumentów schematów Metody budowania schematu z dokumentów schematów instrukcje include, import i redefine lokalizacje dokumentów schematów są określone w egzemplarzu procesor łączy dokumenty schematów znajdujące się w zdefiniowanych lokalizacjach lokalizacje dokumentów schematów są przekazywane jako parametry wiersza poleceń

46 include Dołączanie dokumentu schematu do docelowej przestrzeni nazw głównego dokumentu schematu <xsd:schema xmlns:xsd=" xmlns=" targetNamespace=" <xsd:include schemaLocation="inst.xsd"/> </xsd:schema> Dołączany dokument musi: mieć taką samą docelową przestrzeń nazw jak dokument główny, lub nie mieć docelowej przestrzeni nazw osoby.xsd inst.xsd osoba imię nazwisko NIP firma nazwa REGON

47 redefine Dołączanie dokumentu schematu do docelowej przestrzeni nazw głównego dokumentu schematu z możliwością przedefiniowania: typów prostych i złożonych nazwanych grup modeli grup atrybutów <xsd:redefine schemaLocation="inst.xsd"/> osoby.xsd inst.xsd osoba imię nazwisko NIP NIPTyp firma nazwa REGON NIPTyp

48 import Odwołanie do komponentów w innej przestrzeni nazw <xsd:schema xmlns:xsd=" xmlns=" xmlns:inst=" targetNamespace=" <xsd:import schemaLocation="inst.xsd" namespace=" </xsd:schema> osoby.xsd osoba imię nazwisko NIP inst.xsd firma nazwa NIP

49 Wbudowane typy proste

50 Podstawowe typy proste
Poprawne wartości decimal float, double +24.3e-3 12 string osoba Date :00 Z time 13:20: :30:00-05:00 dateTime T13:20:00.887

51 Wyprowadzanie typów Wyprowadzanie typów prostych:
ograniczanie tworzenie list tworzenie unii Wyprowadzanie typów złożonych: rozszerzanie: typów prostych typów złożonych

52 Ograniczanie typów prostych
Aspekty minExclusive, minInclusive maxExclusive, maxInclusive length, minLength, maxLength totalDigits, fractionDigits enumeration pattern Tylko pattern i enumeration można użyć wielokrotnie w jednej definicji typu

53 Ograniczanie typów prostych – przykłady
<xsd:simpleType name="OcenaTyp"> <xsd:restriction base="xsd:integer"> <xsd:minInclusive value="2"/> <xsd:maxInclusive value="5"/> </xsd:restriction> </xsd:simpleType> <xsd:simpleType name="OrganizacjaTyp"> <xsd:restriction base="xsd:token"> <xsd:enumeration value="Firma"/> <xsd:enumeration value="Instytucja publiczna"/> </xsd:restriction> </xsd:simpleType> <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> </xsd:simpleType>

54 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, 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> </xsd:simpleType>

55 Listy <xsd:simpleType name="OcenaTyp"> <xsd:restriction base="xsd:integer"> <xsd:minInclusive value="2"/> <xsd:maxInclusive value="5"/> </xsd:restriction> </xsd:simpleType> <xsd:simpleType name="OcenySTDTyp"> <xsd:list itemType="OcenaTyp"/> </xsd:simpleType> <xsd:simpleType name="StudentSTDTyp"> <xsd:restriction base=„OcenySTDTyp"> <xsd:length value="2"/> </xsd:restriction> </xsd:simpleType>

56 Unie <xsd:simpleType name="RozmiarLiczbowyTyp"> <xsd:restriction base="xsd:integer"> <xsd:minInclusive value="2"/> <xsd:maxInclusive value="18"/> </xsd:restriction> </xsd:simpleType> <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> <xsd:simpleType name="RozmiarTyp"> <xsd:union memberTypes="RozmiarLiczbowyTyp RozmiarSMLTyp"/> </xsd:simpleType>

57 Rozszerzenia Rozszerzanie zawartości złożonej
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

58 Rozszerzanie zawartości prostej
<xsd:complexType name="CenaTyp"> <xsd:simpleContent> <xsd:extension base="xsd:decimal"> <xsd:attribute name="waluta" type="xsd:string"/> </xsd:extension> </xsd:simpleContent> </xsd:complexType> <xsd:complexType name="CenaKlientWaznyTyp"> <xsd:simpleContent> <xsd:extension base="CenaKlientTyp"> <xsd:attribute name="rabat" type="xsd:decimal"/> </xsd:extension> </xsd:simpleContent> </xsd:complexType>

59 Rozszerzanie zawartości złożonej
<xsd:complexType name="pracownikTyp"> <xsd:sequence> <xsd:element name="imieNazwisko" type="xsd:string"/> <xsd:element name="stanowisko" type="xsd:string"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="pracownikTymczasowyTyp"> <xsd:complexContent> <xsd:extension base="pracownikTyp"> <xsd:choice> <xsd:element name="kontrakt" type="KontraktTyp"/> <xsd:element name="zlecenie" type="ZlecenieTyp"/> </xsd:choice> </xsd:extension> </xsd:complexContent> </xsd:complexType>

60 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 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 ś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

61 Ograniczanie zawartości prostej i atrybutów
<xsd:complexType name="MasaNiedokladnaTyp"> <xsd:simpleContent> <xsd:extension base="xsd:decimal"> <xsd:attribute name="jm" type="xsd:string"/> <xsd:attribute name="dokładność" type="xsd:decimal"/> </xsd:extension> </xsd:simpleContent> </xsd:complexType> <xsd:complexType name="MasaDoUniesieniaTyp"> <xsd:simpleContent> <xsd:restriction base="MasaNiedokladnaTyp"> <xsd:minInclusive value="0"/> <xsd:maxInclusive value="50"/> <xsd:attribute name="dokładność" use="prohibited"/> <xsd:attribute name="jm" fixed="kg"/> </xsd:restriction> </xsd:simpleContent> </xsd:complexType>

62 Ograniczanie zawartości złożonej
<xsd:complexType name="BazowyTyp"> <xsd:sequence> <xsd:element name="a" type="xsd:string" minOccurs="3" maxOccurs="7"/> <xsd:element name="b" type="xsd:string" minOccurs="0"/> <xsd:element name="c" type="xsd:string"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="OgraniczonyTyp"> <xsd:complexContent> <xsd:restriction base="BazowyTyp"> <xsd:sequence> <xsd:element name="a" type="xsd:string" minOccurs="4" maxOccurs="6"/> <xsd:element name="c" type="xsd:string"/> </xsd:sequence> </xsd:restriction> </xsd:complexContent> </xsd:complexType>

63 Metody modularyzacji schematów
Grupy do wielokrotnego wykorzystania nazwane grupy modeli grupy atrybutów Grupy zamienne

64 Grupy wielokrotnego wykorzystania
<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= "DaneUrzedowe"> <xsd:attribute name="NIP" type="NIPTyp"/> <xsd:attribute name="PESEL" type="PESELTyp"/> </xsd:attributeGroup> <xsd:complexType name="OsobaTyp"> <xsd:sequence> <xsd:group ref="ImięNazwisko"/> <xsd:element name="obywatelstwo" type="xsd:token"/> </xsd:sequence> <xsd:attributeGroup ref= "DaneUrzedowe"/> </xsd:complexType>

65 Grupy zamienne <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"/>

66 Grupy zamienne – wykorzystanie
<katalog> <produkt>...</produkt> <komputer>...</komputer> <ubranie>...</ubranie> <produkt>...</produkt> </katalog>

67 Więzy integralności Elementy więzów integralności Zalety
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 Zalety można tworzyć wiele niezależnych od siebie ograniczeń odwołanie wskazuje konkretny klucz więzy integralności mogą być nałożone na kombinację wartości więzy integralności mogą być nałożone na zawartość elementów

68 Więzy integralności <xsd:element name="zamówienia-i-faktury" type="ZamówieniaFakturyTyp"> <xsd:unique name="fakturaId"> <xsd:selector xpath="faktury/faktura"/> <xsd:field <xsd:field xpath="rok"/> </xsd:unique> <xsd:keyref name="zamówienieRef" refer="zamówienieId"> <xsd:selector xpath="faktury/faktura/do-zamówienia"/> <xsd:field </xsd:keyref> <xsd:key name="zamówienieId"> <xsd:selector xpath="zamówienia/zamówienie"/> <xsd:field xpath="numer"/> </xsd:key> </xsd:element>

69 Tworzenie schematu XSD za pomocą .NET


Pobierz ppt "Definiowanie typów dokumentów"

Podobne prezentacje


Reklamy Google