XML extensible Markup Language. część 4



Podobne dokumenty
XML extensible Markup Language. część 2

XML extensible Markup Language. część 4

Wprowadzenie do XML schema

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

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

WYKŁAD 2 DTD DOCUMENT TYPE DEFINITION CZĘŚĆ 1

- 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

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

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

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

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

Rola języka XML narzędziem

SCHEMAT DOKUMENTU POTWIERDZENIA GENEROWANEGO PRZEZ ZUS

Załącznik Nr 1 do Uchwały Nr XX/356/11 Rady Miasta Gdańska z dnia 24 listopada 2011 r.

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

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

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

SCHEMAT DOKUMENTÓW OTRZYMYWANYCH Z ZUS ZAWIERAJĄCYCH INFORMACJE ZGROMADZONE W SYSTEMIE INFORMATYCZNYM ZUS

Załącznik Nr 2 do Uchwały Nr XXVI/172/13 Rady Miasta Jedlina-Zdrój z dnia r.

Schema bsb-kwy xsd

Przykładowy dokument XML

Wprowadzenie do technologii XML

Technologie zarządzania treścią

Aplikacje internetowe laboratorium XML, DTD, XML Schema, XSL

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

DZIENNIK URZĘDOWY WOJEWÓDZTWA ŁÓDZKIEGO

Podstawowe konstrukcje Podstawowymi konstrukcjami są wzorce element oraz attribute:

XML extensible Markup Language. część 3

Elementy struktur MiCOMP_VAT

XML Schema. Forma nazwy lokalnych elementów i atrybutów

XML Schema. Alternatywne metody definiowania struktury dokumentów. Patryk Czarnik. Instytut Informatyki UW

Technologie internetowe

WYKŁAD 1 METAJĘZYK SGML CZĘŚĆ 1

Zasady Nazewnictwa. Dokumentów XML Strona 1 z 9

SCHEMAT DOKUMENTÓW OTRZYMYWANYCH Z ZUS ZAWIERAJĄCYCH INFORMACJE ZGROMADZONE W SYSTEMIE INFORMATYCZNYM ZUS

Warszawa, dnia 2 marca 2017 r. Poz. 461 ROZPORZĄDZENIE MINISTRA ROZWOJU I FINANSÓW 1) z dnia 27 lutego 2017 r.

Dictionaries. <?xml version="1.0" encoding="utf-8"?> <xs:schema attributeformdefault="unqualified" elementformdefault="unqualified"

Integracja Obieg Dokumentów - GiS Spis treści

Schematy XML. Tomasz Traczyk.

MINISTERSTWO SPRAW WEWNĘTRZNYCH I ADMINISTRACJI DEPARTAMENT INFORMATYZACJI

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

UCHWAŁA NR XXIV/163/13 RADY MIASTA JEDLINA-ZDRÓJ. z dnia 7 marca 2013 r.

GML w praktyce geodezyjnej

MINISTERSTWO SPRAW WEWNĘTRZNYCH I ADMINISTRACJI DEPARTAMENT INFORMATYZACJI

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

LABORATORIUM 5 WSTĘP DO SIECI TELEINFORMATYCZNYCH WPROWADZENIE DO XML I XSLT

Uradni list Republike Slovenije

(Dz. U. z dnia 17 listopada 2006 r.)

UCHWAŁA NR 36/IX/15 RADY GMINY WISKITKI. z dnia 24 czerwca 2015 r.

Schema Schemat_JPK_PKPIR_v1-0.xsd

kdpw_stream Struktura komunikatu: Status limitu transakcyjnego (colr.mrs ) Data utworzenia: r.

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

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

Dziennik Ustaw 167 Poz. 383

PL URZĄD MIASTA SZCZECIN N NOF WPiOL/1111/W/123456/2013 KOWALSKI JAN, FELCZAKA 1A SZCZECIN PLN

UCHWAŁA NR VI/32/15 RADY MIASTA JEDLINA-ZDRÓJ. z dnia 30 kwietnia 2015 r.

UCHWAŁA NR 75.IX.2015 RADY MIASTA CZĘSTOCHOWY. z dnia 19 marca 2015 r.

kdpw_stream Struktura komunikatu: Wniesienie lub zwolnienie zabezpieczenia (colr.ins ) Data utworzenia: r.

XML i nowoczesne technologie zarządzania treścią

Extensible Markup Language (XML) Wrocław, Java - technologie zaawansowane

Rzeszów, dnia 18 czerwca 2015 r. Poz UCHWAŁA NR IX RADY MIEJSKIEJ W BOGUCHWALE. z dnia 28 maja 2015 r.

XML i nowoczesne metody zarządzania treścią

Dziennik Ustaw 29 Poz. 199 SCHEMAT APLIKACYJNY GML

MINISTERSTWO SPRAW WEWNĘTRZNYCH I ADMINISTRACJI DEPARTAMENT INFORMATYZACJI

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

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

elektroniczna Platforma Usług Administracji Publicznej

UCHWAŁA NR VII/.../2015 RADY GMINY PORĄBKA. z dnia 2 czerwca 2015 r.

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

XML extensible Markup Language. Paweł Chodkiewicz

kdpw_stream Struktura komunikatu: Potwierdzenie obsługi komunikatu blokady (acmt.bls ) Data utworzenia: r.

Zastosowanie informatyki w gospodarce Wykład 3

Format plików do importu INF-U 18 do e-pfron2

kdpw_stream Struktura komunikatu: Instrukcja dotycząca NKK (acmt.rqc ) Data utworzenia: r.

Wykorzystanie otwartych standardów i wolnego oprogramowania przy udostępnianiu polskich zasobów geoinformacyjnych

SOAP i alternatywy. 1. WSDL. 2. Protokoły tekstowe XML-RPC. JSON-RPC. SOAPjr. 3. Protokoły binarne Google Protocol Bufers. Apache Thrift.

Oczywiście plik musi mieć rozszerzenie *.php

Szczecin, r. Copyright (c) 2015 Izba Skarbowa w Szczecinie. Izba Skarbowa w Szczecinie

<xs:element minoccurs="1" name="rok"> <xs:simpletype> <xs:restriction base="xs:gyear">

DTD - encje ogólne i parametryczne, przestrzenie nazw

DZIENNIK URZĘDOWY WOJEWÓDZTWA ŁÓDZKIEGO

Aplikacje Internetowe

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

Format danych adnotacji do tytułów wykonawczych przekazywanych do organów egzekucyjnych przez epuap w związku ze zbiegiem egzekucji

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

Techniczny opis rozwiązania dla udostępniania danych pomiarowych i zagregowanych z wykorzystaniem standardu AS4

<!-- ============================================================= -->

Warszawa, dnia 27 lutego 2017 r. Poz. 366

BGK Zlecenia. Import zleceń z plików zewnętrznych Dokumentacja tworzenia plików importu dla UNIA2

Uchwała Nr 23/IV/2014 Rady Miasta Ostrołęki z dnia 30 grudnia 2014 r.

MINISTERSTWO FINANSÓW PLAN INTEGRACJI SYSTEMU ZAŁĄCZNIK NR 6 SEAP SPECYFIKACJA KANAŁ DLA PODMIOTÓW ZEWNĘTRZNYCH PL PROJEKT ECIP/SEAP

kdpw_stream Struktura komunikatu: Instrukcja dotycząca konta (acmt.rqa ) Data utworzenia: r.

kdpw_stream Struktura komunikatu: Potwierdzenie obsługi komunikatu blokady (acmt.bls ) Data utworzenia: r.

Poczta Polska S.A. Opis struktury pliku z danymi przekazów pocztowych lub Ekspresów Pieniężnych. Wersja 2.1

1. schemat aplikacyjny GML danych egib. egib

Załącznik nr 14 Struktura logiczna korekty informacji podsumowującej o dokonanych wewnątrzwspólnotowych dostawach/nabyciach towarów (VAT-UEK)

XML. Tworzenie stron WWW z wykorzystaniem XML, CSS, XHTML oraz XSLT. Niebieski podrêcznik

Baza danych przestrzennych modelowa reprezentacja fragmentu świata rzeczywistego

Historia kodowania i format plików XML. Jolanta Bachan

UCHWAŁA NR IX RADY MIEJSKIEJ W BOGUCHWALE. z dnia 28 maja 2015 r.

Transkrypt:

XML extensible Markup Language część 4

XML Schema (Podobnie jak DTD) XML Schema to opracowany przez W3C standard służący do definiowania struktury dokumentu XML. (W przeciwieństwie do DTD) XML Schema jest aplikacją XML. XML pozwala (dokładniej niż DTD) określić strukturę dokumentów XML. XML schema oferuje większą niż DTD ilość typów (elementów, atrybutów, danych). W XML schema możemy definiować własne typy wykorzystując typy wbudowane. Dokumenty zawierające definicje XML Schema zapisuje się zwykle w plikach z rozszerzeniem xsd.

XML Schema Struktura dokumentu XML schema <?xml version="1.0"?> <xs:schema xmlns:xs="http://www.w3.org/2001/xmlschema">...... </xs:schema> Prefix xs możemy pominąć. <?xml version="1.0"?> <schema xmlns="http://www.w3.org/2001/xmlschema">...... <schema>

XML Schema Struktura dokumentu XML schema <?xml version="1.0"?> <xs:schema xmlns="http://www.w3.org/2001/xmlschema" targetnamespace="http://www.abc.org" elementformdefault="qualified">...... </xs:schema> Określenie przestrzeni nazw do której należą elementy definiowane w danym schemacie XML: targetnamespace="http://www.abc.org"

XML Schema Struktura dokumentu XML schema <?xml version="1.0"?> <xs:schema xmlns="http://www.w3.org/2001/xmlschema" targetnamespace="http://www.abc.org" elementformdefault="qualified">...... </xs:schema> Określenie przestrzeni nazw do której należą elementy definiowane w danym schemacie XML: targetnamespace="http://www.abc.org" Każdy element zdefiniowany w tym schemacie XML i użyty w dokumencie XML musi być przypisany do tej przestrzeni nazw: elementformdefault="qualified"

XML Schema Odwołanie do dokumentu XML schema <?xml version="1.0"?> <note xmlns="http://www.abc.org" xmlns:xsi="http://www.a1.com/2012/xmlschema-instance" xsi:schemalocation="http://www.abc.org/note.xsd"> <to>tove</to> <from>jani</from> <heading>reminder</heading> <body>don't forget me this weekend!</body> </note> Określenie przestrzeni nazw: xmlns:xsi="http://www.a1.com/2012/xmlschema-instance" Określenie położenia schematu XML związanego z (powyższą) przestrzenią nazw: xsi:schemalocation="http://www.abc.org/note.xsd"

XML Schema deklaracje elementów i atrybutów Elementy proste Każdy element prosty dokumentu XML deklarujemy w następujący sposób: <element name="nazwa" type="typ elementu"> Przykład 1 Deklaracje elementów: <xs:element name="lastname" type="xs:string"/> <xs:element name="age" type="xs:integer"/> <xs:element name="dateborn" type="xs:date"/> Przykładowe użycie: <lastname>refsnes</lastname> <age>36</age> <dateborn>1970-03-27</dateborn>

XML Schema deklaracje elementów i atrybutów Oprócz atrybutu type każda deklaracja elementu prostego może posiadać nastepujące atrybuty: default="x" - gdzie x jest wartością domyślną elementu Przykład 2 <xs:element name="color" type="xs:string" default="red"/> fixed="x" - gdzie x jest wartością elementu której nie można zmienić Przykład 3 <xs:element name="color" type="xs:string" fixed="red"/>

XML Schema deklaracje elementów i atrybutów Atrybuty Atrybuty dokumentu XML deklarujemy w następujący sposób: <attribute name="nazwa" type="typ atrybutu"> Przykład 4 Atrybut: <lastname lang="en">smith</lastname> i jego definicja: <xs:attribute name="lang" type="xs:string"/>

XML Schema deklaracje elementów i atrybutów Oprócz atrybutu type każda deklaracja atrybutu może posiadać nastepujące atrybuty: default="x" - gdzie x jest wartością domyślną elementu Przykład 5 <attribute name="lang" type="xs:string" default="en"/> fixed="x" - gdzie x jest wartością elementu której nie można zmienić Przykład 6 <attribute name="lang" type="xs:string" fixed="en"/>

XML Schema deklaracje elementów i atrybutów Atrybuty elementów są domyślnie opcjonalne. Można to zmienić za pomocą atrybutu use="required" Przykład 7 <attribute name="lang" type="xs:string" use="required"/> Oprócz atrybutu type każdy element może posiadać nastepujące atrybuty: minoccurs="x" - określa minimalną liczbę wystapień elementu. maxoccurs="x" - określa maksymalną liczbę wystapień elementu. W przypadku braku tych atrybutów wartość x ma domyślną wartość 1.

XML Schema deklaracje elementów i atrybutów Przykład 8 <element name="email"> <element name="head" minoccurs="1" maxoccurs="1"> <element name="to" minoccurs="1">

XML Schema proste typy danych Typy numeryczne Przykłady xs:byte - liczba całkowita z przedziału -128 127 xs:double - 03.1415292, 6.022E23, 127E-13 xs:float 3.1415292, -03.1415292, 6.022E23, 127E-13 xs:integer - 3, 3000, 349847329847983264983264987326487326487324678346374 Typ logiczny xs:boolean - true, false, 0, 1

XML Schema proste typy danych Typy znakowe Przykłady xs:string xs:ncname dowolna nazwa XML xs:id nazwa XML niepowtarzalna w całym dokumencie XML xs:idref xs:nmtoken xs:nmtokens xs:language kody języków zdefiniowane w ISO 639 np. en, en-us, en-gb, fr-ca

Typy wbudowane Typy zwiazane z datą i czasem Przykłady xs:time czas w formacie ±hh:mm:ss.xxx (xxx ułamki sekund). Dodatkowa litera Z oznacza czas Greenwich. 03:32:00-05:00 00:00:00Z 08:30:34.121893632178 xs:date data w formacie YYYY-MM-DD±hh:mm 2001-01-01 2002-12-23+12:00-8750-01-01

Typy proste (simple data types) definiowane przez ograniczenie typów wbudowanych. Przykład 9 <xs:simpletype name="dayofmonth"> <xs:restriction base="xs:integer"> <xs:mininclusive value="1"/> <xs:maxinclusive value="31"/> </xs:restriction> </xs:simpletype> Przykład 10 <xs:simpletype name="namestring"> <xs:restriction base="xs:string"> <xs:maxlength value="50"/> </xs:restriction> </xs:simpletype>

Przykład 11 <xs:simpletype name="locationtype"> <xs:restriction base="xs:string"> <xs:enumeration value="work"/> <xs:enumeration value="home"/> <xs:enumeration value="mobile"/> </xs:restriction> </xs:simpletype>

Deklarowanie elementów w oparciu o typy proste. Przykład 12 <xs:element name="car"> <xs:simpletype> <xs:restriction base="xs:string"> <xs:enumeration value="audi"/> <xs:enumeration value="golf"/> <xs:enumeration value="bmw"/> </xs:restriction> </xs:simpletype> </xs:element> gdzie każdy element enumeration określa dopuszczalną wartości.

To samo ale inaczej... Przykład 13 <xs:element name="car" type="cartype"/>... <xs:simpletype name="cartype"> <xs:restriction base="xs:string"> <xs:enumeration value="audi"/> <xs:enumeration value="golf"/> <xs:enumeration value="bmw"/> </xs:restriction> </xs:simpletype>

Ograniczenie wartości w oparciu o wzorzec. Przykład 14 Wartością może być jedna mała litera z zakresu a-z. <xs:element name="letter"> <xs:simpletype> <xs:restriction base="xs:string"> <xs:pattern value="[a-z]"/> </xs:restriction> </xs:simpletype> </xs:element>

Ograniczenie wartości w oparciu o wzorzec. Przykład 15 Wartością są trzy WIELKIE litery z zakresu a-z. <xs:element name="initials"> <xs:simpletype> <xs:restriction base="xs:string"> <xs:pattern value="[a-z][a-z][a-z]"/> </xs:restriction> </xs:simpletype> </xs:element>

Ograniczenie wartości w oparciu o wzorzec. Przykład 16 Wartością są trzy małe bądź WIELKIE litery z zakresu a-z. <xs:element name="initials"> <xs:simpletype> <xs:restriction base="xs:string"> <xs:pattern value="[a-za-z][a-za-z][a-za-z]"/> </xs:restriction> </xs:simpletype> </xs:element>

Ograniczenie wartości w oparciu o wzorzec. Przykład 17 Wartością jest jedna z liter x, y, z. <xs:element name="choice"> <xs:simpletype> <xs:restriction base="xs:string"> <xs:pattern value="[xyz]"/> </xs:restriction> </xs:simpletype> </xs:element>

Ograniczenie wartości w oparciu o wzorzec. Przykład 18 Wartością jest pięć cyfr z przedziału 0-9. <xs:element name="prodid"> <xs:simpletype> <xs:restriction base="xs:integer"> <xs:pattern value="[0-9][0-9][0-9][0-9][0-9]"/> </xs:restriction> </xs:simpletype> </xs:element>

Ograniczenie wartości w oparciu o wzorzec. Przykład 19 Wartością jest zero bądź więcej małych liter z zakresu a-z. <xs:element name="letter"> <xs:simpletype> <xs:restriction base="xs:string"> <xs:pattern value="([a-z])*"/> </xs:restriction> </xs:simpletype> </xs:element>

Ograniczenie wartości w oparciu o wzorzec. Przykład 20 Wartością jest przynajmniej jedna para liter: mała z zakresu a-z, WIELKA z zakresu A-Z. <xs:element name="letter"> <xs:simpletype> <xs:restriction base="xs:string"> <xs:pattern value="([a-z][a-z])+"/> </xs:restriction> </xs:simpletype> </xs:element>

Ograniczenie wartości w oparciu o wzorzec. Przykład 21 Wartością jest male lub female. <xs:element name="gender"> <xs:simpletype> <xs:restriction base="xs:string"> <xs:pattern value="male female"/> </xs:restriction> </xs:simpletype> </xs:element>

Ograniczenie wartości w oparciu o wzorzec. Przykład 22 Wartością jest osiem znaków (małych lub WIELKICH liter lub cyfry 0-9). <xs:element name="password"> <xs:simpletype> <xs:restriction base="xs:string"> <xs:pattern value="[a-za-z0-9]{8}"/> </xs:restriction> </xs:simpletype> </xs:element>

Ograniczenie wartości w oparciu o długość. Przykład 23 Wartością jest osiem dowolnych znaków. <xs:element name="password"> <xs:simpletype> <xs:restriction base="xs:string"> <xs:length value="8"/> </xs:restriction> </xs:simpletype> </xs:element>

Ograniczenie wartości w oparciu o długość. Przykład 24 Wartością jest minimum pięć i maksymalnie osiem znaków. <xs:element name="password"> <xs:simpletype> <xs:restriction base="xs:string"> <xs:minlength value="5"/> <xs:maxlength value="8"/> </xs:restriction> </xs:simpletype> </xs:element>

Typy definiowane przez użytkownika Typy złożone (complex data types) wykorzystujemy elementy i atrybuty. <xs:complextype name="nazwa typu">... </xs:complextype> Definiując typy złożone możemy wykorzystać następujące elementy: sequence ciąg elementów typów wbudowanych (ważna kolejność) all elementy typów wbudowanych z których wszystkie muszą się pojawić. choice elementy do wyboru.

Przykład 25 Deklaracja typu: <xs:complextype name="lecturertype"> <xs:sequence> <xs:element name="firstname" type="xs:string"/> <xs:element name="lastname" type="xs:string"/> </xs:sequence> <xs:attribute name="title" type="xs:string" use="xs:optional"/> </xs:complextype>

Przykład 26 Wykorzystanie zdefiniowanego typu: <xs:element name="wykladowca"> <xs:complextype> <xs:sequence> <xs:element name="firstname" type="xs:string"/> <xs:element name="lastname" type="xs:string"/> </xs:sequence> <xs:attribute name="title" type="xs:string" use="xs:optional"/> </xs:complextype> </xs:wykladowca>

Przykład 27 Inaczej <xs:element name="wykladowca" type="lecturertype"> <xs:complextype name="lecturertype"> <xs:sequence> <xs:element name="firstname" type="xs:string"/> <xs:element name="lastname" type="xs:string"/> </xs:sequence> <xs:attribute name="title" type="xs:string" use="xs:optional"/> </xs:complextype>

Przykład 28 Zdefiniujemy typy danych które mogą pojawić się w dokumencie XML będącym listem. <xs:element name="letter"> <xs:complextype mixed="true"> <xs:sequence> <xs:element name="greeting"/> <xs:element name="body"/> <xs:element name="closing"/> </xs:sequence> </xs:complextype> </xs:element> Typ złożony może posiadać atrybut mixed, który określa czy w elemencie danego typu mogą pojawić sie dane znakowe.

<xs:element name="greeting"> <xs:complextype mixed="true"> <xs:choice> <xs:element name="hello"/> <xs:element name="hi"/> <xs:element name="dear"/> </xs:choice> </xs:complextype> </xs:element> <xs:element name="body"> <xs:complextype mixed="true"> <xs:all> <xs:element name="item"/> <xs:element name="price"/> <xs:element name="arrivaldate"/> </xs:all> </xs:complextype> </xs:element>

Formularz listu wygląda następująco: <letter> <greeting><hello/> Bob!</greeting> <body> Thank you for ordering the <item/> ($<price/>), it should arrive by <arrivaldate/>. </body> </letter>

Rozszerzanie typów dany rozszerzamy typy danych przez dodanie nowych elementów lub atrybutów. Przykład 29 <xs:complextype name="lecturertype"> <xs:sequence> <xs:element name="firstname" type="xs:string"/> <xs:element name="lastname" type="xs:string"/> </xs:sequence> <xs:attribute name="title" type="xs:string" use="xs:optional"/> </xs:complextype> Chcemy rozszerzyć typ lecturertype do typu extendedlecturertype przez dodanie informacji o adresie e-mail.

<xs:complextype name="extendedlecturertype"> <xs:extension base="lecturertype"> <xs:element name="email" type="xs:string" minoccurs="0" maxoccurs="1"/> </xs:extension> </xs:complextype> Otrzymany w ten sposób następujący typ danych: <xs:complextype name="extendedlecturertype"> <xs:sequence> <xs:element name="firstname" type="xs:string"/> <xs:element name="lastname" type="xs:string"/> <xs:element name="email" type="xs:string" minoccurs="0" maxoccurs="1"/> </xs:sequence> <xs:attribute name="title" type="xs:string" use="xs:optional"/> </xs:complextype>

Ograniczanie typów dany ograniczamy typ danych przez dodanie więzów (ograniczeń) na pewne wartości. Przykład 30 <xs:complextype name="lecturertype"> <xs:sequence> <xs:element name="firstname" type="xs:string"/> <xs:element name="lastname" type="xs:string"/> </xs:sequence> <xs:attribute name="title" type="xs:string" use="xs:optional"/> </xs:complextype> Chcemy ograniczyć typ lecturertype do typu restrictedlecturertype.

<xs:complextype name="restrictedlecturertype"> <xs:restriction base="lecturertype"> <xs:sequence> <xs:element name="firstname" type="xs:string" minoccur="1" maxoccur="2"/> </xs:sequence> <xs:attribute name="title" type="xs:string" use="xs:required"/> </xs:complextype>

Przykład 31 XML schema dla poczty elektronicznej. <element name="email" type="emailtype"> <complextype name="emailtype"> <sequence> <element name="head" type="headtype"/> <element name="body" type="bodytype"/> </sequence> </complextype>

<complextype name="headtype"> <sequence> <element name="from" type="nameadress"/> <element name="to" type="nameadress" minoccurs="1" maxoccurs="unbounded"/> <element name="cc" type="nameadress" minoccurs="0" maxoccurs="unbounded"/> <element name="subject" type="string"/> </sequence> <complextype> <complextype name="nameadress"> <attribute name="name" type="string" use="optional"/> <attribute name="adress" type="string" use="required"/> </xs:complextype>

<complextype name="bodytype"> <sequence> <element name="text" type="string"/> <element name="attachment" minoccurs="0" maxoccurs="unbounded"/> <complextype> <attribute name="encoding" use="default" value="mime"> <simpletype> <restriction base="string"> <enumeration value="mime"/> <enumeration value="binhex"/> </restriction> </simpletype> </attribute> <attribute name="file" type="string" use="required"/> </complextype> </element> </sequence> </complextype>