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

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

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

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

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

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

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

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

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

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

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

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

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

Wprowadzenie do XML schema

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

- 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

XML extensible Markup Language. część 4

XML extensible Markup Language. część 2

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

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

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

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

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

XML extensible Markup Language. część 4

Schematy XML. Tomasz Traczyk.

DZIENNIK URZĘDOWY WOJEWÓDZTWA ŁÓDZKIEGO

XML Schema w przykładach

Wprowadzenie do technologii XML

Rola języka XML narzędziem

SCHEMAT DOKUMENTU POTWIERDZENIA GENEROWANEGO PRZEZ ZUS

Przykładowy dokument XML

DZIENNIK URZĘDOWY WOJEWÓDZTWA ŁÓDZKIEGO

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

Uradni list Republike Slovenije

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

DZIENNIK URZĘDOWY WOJEWÓDZTWA ŚLĄSKIEGO

UCHWAŁA NR XVII RADY MIASTA MIŃSK MAZOWIECKI. z dnia 27 czerwca 2016 r.

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

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

XML w sosie własnym. Standard XML wraz z DTD, przestrzenie nazw, projektowanie struktury dokumentów. Patryk Czarnik. Instytut Informatyki UW

XML i nowoczesne metody zarządzania treścią

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

Przetwarzanie dokumentów XML i zaawansowane techniki WWW Wykład 02

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

UCHWALA NR RADY MIEJSKIEJ W EODZI. z dnia

kdpw_stream Struktura komunikatu: System rekompensat - deklaracja wpłat (cpss.dcl ) Data utworzenia: r.

XML i nowoczesne technologie zarządzania treścią

asciciele_wnio_trescdokumentu_deklaracja_naglowek_type"></xs:element> </xs:sequence> </xs:complextype> <xs:complextype

Jak wygląda XML? Definiowanie typów dokumentów. Struktura logiczna dokumentu XML. Podstawy składni XML. Definiowanie języków. Poprawność dokumentów

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

Wrocław, dnia 5 kwietnia 2016 r. Poz UCHWAŁA NR XIX/286/2016 RADY MIEJSKIEJ WAŁBRZYCHA. z dnia 29 marca 2016 r.

XML w sosie własnym. Standard XML wraz z DTD, przestrzenie nazw, projektowanie struktury dokumentów. Patryk Czarnik. Instytut Informatyki UW

UCHWAŁA NR XXXVI/284/2018 RADY GMINY BESTWINA. z dnia 19 marca 2018 r.

Jak wygląda XML? Definiowanie typów dokumentów Część 1. DTD. Struktura logiczna dokumentu XML. Podstawy składni XML. Definiowanie języków

kdpw_stream Struktura komunikatu: Informacja o depozycie dodatkowym (colr.exm ) Data utworzenia: r.

Podstawowe konstrukcje Podstawowymi konstrukcjami są wzorce element oraz attribute:

kdpw_stream Struktura komunikatu: Zestawienie stanów posiadania (semt.smh ) Data utworzenia: r.

Symbole wieloznaczne w XML Schema. Definiowanie typów dokumentów Część 4. XML Schema, RELAX NG, Schematron. Schematron

kdpw_stream Data utworzenia: r.

kdpw_stream Struktura komunikatu: Komunikat zgłoszenia do Repozytorium (trar.ins ) Data utworzenia: r.

kdpw_stream Struktura komunikatu: Depozyty zabezpieczające naliczone na konta rozliczeniowe (colr.mrg ) Data utworzenia: r.

UCHWAŁA NR XXXVI RADY MIEJSKIEJ W ANDRYCHOWIE. z dnia 20 czerwca 2013 r.

kdpw_stream Struktura komunikatu: Informacja o aktualizacji funduszu rozliczeniowego (colr.sgf ) Data utworzenia: r.

DZIENNIK URZĘDOWY WOJEWÓDZTWA ŁÓDZKIEGO

kdpw_stream Struktura komunikatu: Informacja o raportowaniu transakcji (secl.str ) Data utworzenia: r.

UCHWAŁA NR AUTOPOPRAWKA RADY MIEJSKIEJ W BRZESZCZACH. z dnia 29 czerwca 2017 r.

Schema bsb-kwy xsd

kdpw_stream Struktura komunikatu: Depozyty zabezpieczające naliczone na konta rozliczeniowe (colr.mrg ) Data utworzenia: r.

kdpw_stream Struktura komunikatu: Raport przepływów papierów na dzień zawarcia transakcji (semt.ssf ) Data utworzenia: r.

kdpw_stream Struktura komunikatu: Informacja o aktualizacji funduszu zabezpieczającego OTC (colr.sgf ) Data utworzenia: r.

Elementy struktur MiCOMP_VAT

Technologie zarządzania treścią

kdpw_stream Struktura komunikatu: Płatności z tytułu depozytów zabezpieczających (colr.mrg ) Data utworzenia: r.

kdpw_stream Struktura komunikatu: Płatności z tytułu depozytów zabezpieczających i obsługi rynku OTC (colr.mrg ) Data utworzenia: r.

kdpw_stream Struktura komunikatu: Raport rejestru zabezpieczeń (colr.sm ) Data utworzenia: r.

UCHWAŁA NR XXXV RADY MIASTA EŁKU. z dnia 29 sierpnia 2017 r.

DZIENNIK URZĘDOWY WOJEWÓDZTWA ŚLĄSKIEGO

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

UCHWAŁA NR XXVII/315/2013 RADY GMINY LUZINO. z dnia 20 marca 2013 r.

Zasady Nazewnictwa. Dokumentów XML Strona 1 z 9

MINISTERSTWO SPRAW WEWNĘTRZNYCH I ADMINISTRACJI DEPARTAMENT INFORMATYZACJI

UCHWAŁA NR XI/71/2017 RADY GMINY HAŻLACH. z dnia 23 listopada 2017 r.

Wprowadzenie do technologii XML

UCHWAŁA NR... RADY MIEJSKIEJ W PIASECZNIE. z dnia... r. w sprawie zmiany Uchwały Nr 292/XII/2015 Rady Miejskiej w Piasecznie w sprawie ustalenia

Aplikacje internetowe laboratorium XML, DTD, XML Schema, XSL

kdpw_stream Struktura komunikatu: Instrukcja techniczna (sese.tec ) Data utworzenia: r.

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

UCHWAŁA NR XXVI/172/13 RADY MIASTA JEDLINA-ZDRÓJ. z dnia 29 maja 2013 r.

DZIENNIK URZĘDOWY WOJEWÓDZTWA ŚLĄSKIEGO

kdpw_stream Struktura komunikatu: Salda rozliczeń pieniężnych (camt.smt ) Data utworzenia: r.

WYMIANA DANYCH SPECYFIKACJA SERWISU CHASE 3.1. Wersja dokumentacji z dnia /IT-P/001. Projekt. Publikacja

DTD - encje ogólne i parametryczne, przestrzenie nazw

WYMIANA DANYCH SPECYFIKACJA SERWISU CHASE 3.1. Wersja dokumentacji z dnia /IT-P/001. Projekt. Publikacja

Technologie internetowe

TWORZENIE SCHEMATU XML

UCHWAŁA NR XXVIII/166/17 RADY MIASTA JEDLINA-ZDRÓJ. z dnia 31 maja 2017 r.

UCHWAŁA NR XXXIV/213/14 RADY MIASTA JEDLINA-ZDRÓJ. z dnia 29 maja 2014 r.

Obwieszczenie Rady Miejskiej Kalisza z dnia 30 marca 2017 r.

WYMIANA DANYCH SPECYFIKACJA SERWISU CHASE 3.1. Wersja z dnia /IT-P/001. Projekt. Publikacja

UCHWAŁA NR 496.XXXVI.2017 RADY MIASTA CZĘSTOCHOWY. z dnia 23 lutego 2017 r.

UCHWAŁA NR 212.XVIII.2015 RADY MIASTA CZĘSTOCHOWY. z dnia 10 grudnia 2015 r.

Transkrypt:

XML Schema Motywacja, struktura schematu, typy złożone Patryk Czarnik Instytut Informatyki UW XML i nowoczesne technologie zarzadzania treścia 2007/08 Patryk Czarnik (MIMUW) 03 XML Schema XML 2007/08 1 / 35

Plan Podstawy 1 Podstawy Motywacja Struktura schematu 2 Typy Typy nazwane i anonimowe Deklaracje globalne i lokalne Typy proste i złożone 3 Typy złożone Grupy modelowe Grupy nazwane Atrybuty Zawartość pusta, prosta i mieszana Więzy integralności Patryk Czarnik (MIMUW) 03 XML Schema XML 2007/08 2 / 35

Dlaczego nie DTD? Podstawy Motywacja Zastosowania XML-a w elektronicznej wymianie danych: przeniesienie zadania sprawdzania poprawności z tworzonej aplikacji na narzędzie walidujace daje spore oszczędności, 60% tworzonego kodu dotyczy weryfikacji poprawności danych. Roger L. Costello, XML Schema Tutorial Cechy DTD: niemal brak kontroli nad tekstowa zawartościa elementów i wartościami atrybutów, bardzo ogólne metody definiowania częstości wystapień. Patryk Czarnik (MIMUW) 03 XML Schema XML 2007/08 3 / 35

Podstawy Motywacja Porównanie DTD i XML Schema DTD pochodzacy z SGML specyficzna składnia 10 typów danych brak kontroli tekstowej zawartości elementów niewielka dla atrybutów modularność tylko na poziomie tekstu DTD (encje parametryczne) XML Schema zaprojektowany dla XML składnia XML 44 wbudowane typy proste zaawansowana kontrola tekstowej zawartości elementów i atrybutów modularność na poziomie pojęć abstrakcyjnych (własne typy zawartości, grupy, import) Patryk Czarnik (MIMUW) 03 XML Schema XML 2007/08 4 / 35

Status XML Schema Podstawy Motywacja 15 lutego 1999: Dokument W3C opisujacy wymagania. 2 maja 2001: XML Schema oficjalna rekomendacja W3C: XML Schema Part 0: Primer, XML Schema Part 1: Structures, XML Schema Part 2: Datatypes. Obecnie prace nad wersja 1.1 XML Schema (status: working draft). Patryk Czarnik (MIMUW) 03 XML Schema XML 2007/08 5 / 35

Podstawy Prosty przykład schematu Struktura schematu <xs:schema xmlns:xs="http://www.w3.org/2001/xmlschema"> <xs:element name="osoba"> <xs:complextype> <xs:sequence> <xs:element name="imię" type="xs:string" minoccurs="1" maxoccurs="unbounded"/> <xs:element name="nazwisko" type="xs:string"/> </xs:sequence> <xs:attribute name="wiek" type="xs:positiveinteger" use="optional"/> </xs:element> </xs:schema> element główny schematu Patryk Czarnik (MIMUW) 03 XML Schema XML 2007/08 6 / 35

Podstawy Prosty przykład schematu Struktura schematu <xs:schema xmlns:xs="http://www.w3.org/2001/xmlschema"> <xs:element name="osoba"> <xs:complextype> <xs:sequence> <xs:element name="imię" type="xs:string" minoccurs="1" maxoccurs="unbounded"/> <xs:element name="nazwisko" type="xs:string"/> </xs:sequence> <xs:attribute name="wiek" type="xs:positiveinteger" use="optional"/> </xs:element> </xs:schema> przestrzeń nazw XML Schema Patryk Czarnik (MIMUW) 03 XML Schema XML 2007/08 6 / 35

Podstawy Prosty przykład schematu Struktura schematu <xs:schema xmlns:xs="http://www.w3.org/2001/xmlschema"> <xs:element name="osoba"> <xs:complextype> <xs:sequence> <xs:element name="imię" type="xs:string" minoccurs="1" maxoccurs="unbounded"/> <xs:element name="nazwisko" type="xs:string"/> </xs:sequence> <xs:attribute name="wiek" type="xs:positiveinteger" use="optional"/> </xs:element> </xs:schema> deklaracja elementu (globalna) Patryk Czarnik (MIMUW) 03 XML Schema XML 2007/08 6 / 35

Podstawy Prosty przykład schematu Struktura schematu <xs:schema xmlns:xs="http://www.w3.org/2001/xmlschema"> <xs:element name="osoba"> <xs:complextype> <xs:sequence> <xs:element name="imię" type="xs:string" minoccurs="1" maxoccurs="unbounded"/> <xs:element name="nazwisko" type="xs:string"/> </xs:sequence> <xs:attribute name="wiek" type="xs:positiveinteger" use="optional"/> </xs:element> </xs:schema> deklaracja elementu (lokalna) Patryk Czarnik (MIMUW) 03 XML Schema XML 2007/08 6 / 35

Podstawy Prosty przykład schematu Struktura schematu <xs:schema xmlns:xs="http://www.w3.org/2001/xmlschema"> <xs:element name="osoba"> <xs:complextype> <xs:sequence> <xs:element name="imię" type="xs:string" minoccurs="1" maxoccurs="unbounded"/> <xs:element name="nazwisko" type="xs:string"/> </xs:sequence> <xs:attribute name="wiek" type="xs:positiveinteger" use="optional"/> </xs:element> </xs:schema> określenie liczności elementów Patryk Czarnik (MIMUW) 03 XML Schema XML 2007/08 6 / 35

Podstawy Prosty przykład schematu Struktura schematu <xs:schema xmlns:xs="http://www.w3.org/2001/xmlschema"> <xs:element name="osoba"> <xs:complextype> <xs:sequence> <xs:element name="imię" type="xs:string" minoccurs="1" maxoccurs="unbounded"/> <xs:element name="nazwisko" type="xs:string"/> </xs:sequence> <xs:attribute name="wiek" type="xs:positiveinteger" use="optional"/> </xs:element> </xs:schema> deklaracja atrybutu Patryk Czarnik (MIMUW) 03 XML Schema XML 2007/08 6 / 35

Podstawy Prosty przykład schematu Struktura schematu <xs:schema xmlns:xs="http://www.w3.org/2001/xmlschema"> <xs:element name="osoba"> <xs:complextype> <xs:sequence> <xs:element name="imię" type="xs:string" minoccurs="1" maxoccurs="unbounded"/> <xs:element name="nazwisko" type="xs:string"/> </xs:sequence> <xs:attribute name="wiek" type="xs:positiveinteger" use="optional"/> </xs:element> </xs:schema> określenie (nie)obowiazkowości atrybutu Patryk Czarnik (MIMUW) 03 XML Schema XML 2007/08 6 / 35

Plan Typy 1 Podstawy Motywacja Struktura schematu 2 Typy Typy nazwane i anonimowe Deklaracje globalne i lokalne Typy proste i złożone 3 Typy złożone Grupy modelowe Grupy nazwane Atrybuty Zawartość pusta, prosta i mieszana Więzy integralności Patryk Czarnik (MIMUW) 03 XML Schema XML 2007/08 7 / 35

Typy w XML Schema Typy Elementy i atrybuty maja w schemacie określony typ zawartości. Typy zwn. zasięg definicji: nazwane, anonimowe. Typy zwn. pochodzenie: predefiniowane (przez standard), definiowane w schemacie. Typy zwn. zawartość: proste, złożone, o zawartości: pustej, prostej, elementowej (złożonej), mieszanej. Patryk Czarnik (MIMUW) 03 XML Schema XML 2007/08 8 / 35

Typy w XML Schema Typy Elementy i atrybuty maja w schemacie określony typ zawartości. Typy zwn. zasięg definicji: nazwane, anonimowe. Typy zwn. pochodzenie: predefiniowane (przez standard), definiowane w schemacie. Typy zwn. zawartość: proste, złożone, o zawartości: pustej, prostej, elementowej (złożonej), mieszanej. Patryk Czarnik (MIMUW) 03 XML Schema XML 2007/08 8 / 35

Typy w XML Schema Typy Elementy i atrybuty maja w schemacie określony typ zawartości. Typy zwn. zasięg definicji: nazwane, anonimowe. Typy zwn. pochodzenie: predefiniowane (przez standard), definiowane w schemacie. Typy zwn. zawartość: proste, złożone, o zawartości: pustej, prostej, elementowej (złożonej), mieszanej. Patryk Czarnik (MIMUW) 03 XML Schema XML 2007/08 8 / 35

Typy Typy nazwane i anonimowe Typy nazwane i anonimowe Typy nazwane <xs:complextype name="osobatyp"> <xs:sequence> <xs:element name="imię" type="xs:string"/> <xs:element name="nazwisko" type="xs:string"/> </xs:sequence> <xs:element name="osoba" type="osobatyp"/> Typy anonimowe <xs:element name="osoba"> <xs:complextype> <xs:sequence> <xs:element name="imię" type="xs:string"/> <xs:element name="nazwisko" type="xs:string"/> </xs:sequence> </xs:element> Patryk Czarnik (MIMUW) 03 XML Schema XML 2007/08 9 / 35

Typy Typy nazwane i anonimowe Typy nazwane i anonimowe Typy nazwane <xs:complextype name="osobatyp"> <xs:sequence> <xs:element name="imię" type="xs:string"/> <xs:element name="nazwisko" type="xs:string"/> </xs:sequence> <xs:element name="osoba" type="osobatyp"/> Typy anonimowe <xs:element name="osoba"> <xs:complextype> <xs:sequence> <xs:element name="imię" type="xs:string"/> <xs:element name="nazwisko" type="xs:string"/> </xs:sequence> </xs:element> Patryk Czarnik (MIMUW) 03 XML Schema XML 2007/08 9 / 35

Typy Typy nazwane i anonimowe Typy nazwane i anonimowe kiedy stosować? Typy nazwane ten sam typ stosowany dla wielu elementów / atrybutów, typ stanowi podstawę zawężeń / rozszerzeń, także w potencjalnych przyszłych rozszerzeniach schematu! Typy anonimowe typ występujacy tylko w jednym miejscu schematu, nie stanowiacy podstawy dla innego typu. Patryk Czarnik (MIMUW) 03 XML Schema XML 2007/08 10 / 35

Typy Typy nazwane i anonimowe Typy nazwane i anonimowe kiedy stosować? Typy nazwane ten sam typ stosowany dla wielu elementów / atrybutów, typ stanowi podstawę zawężeń / rozszerzeń, także w potencjalnych przyszłych rozszerzeniach schematu! Typy anonimowe typ występujacy tylko w jednym miejscu schematu, nie stanowiacy podstawy dla innego typu. Patryk Czarnik (MIMUW) 03 XML Schema XML 2007/08 10 / 35

Typy Deklaracje globalne i lokalne Deklaracje globalne i lokalne Deklaracje globalne <xs:element name="imię" type="xs:string"/> <xs:element name="nazwisko" type="xs:string"/> <xs:complextype name="osobatyp"> <xs:sequence> <xs:element ref="imię" maxoccurs="3"/> <xs:element ref="nazwisko"/> </xs:sequence> </xs:element> Deklaracje lokalne <xs:complextype name="osobatyp"> <xs:sequence> <xs:element name="imię" maxoccurs="3" type="xs:string"/> <xs:element name="nazwisko" type="xs:string"/> </xs:sequence> Patryk Czarnik (MIMUW) 03 XML Schema XML 2007/08 11 / 35

Typy Deklaracje globalne i lokalne Deklaracje globalne i lokalne Deklaracje globalne <xs:element name="imię" type="xs:string"/> <xs:element name="nazwisko" type="xs:string"/> <xs:complextype name="osobatyp"> <xs:sequence> <xs:element ref="imię" maxoccurs="3"/> <xs:element ref="nazwisko"/> </xs:sequence> </xs:element> Deklaracje lokalne <xs:complextype name="osobatyp"> <xs:sequence> <xs:element name="imię" maxoccurs="3" type="xs:string"/> <xs:element name="nazwisko" type="xs:string"/> </xs:sequence> Patryk Czarnik (MIMUW) 03 XML Schema XML 2007/08 11 / 35

Typy Deklaracje globalne i lokalne Deklaracje globalne i lokalne Deklaracje globalne <xs:element name="imię" type="xs:string"/> <xs:element name="nazwisko" type="xs:string"/> <xs:complextype name="osobatyp"> <xs:sequence> <xs:element ref="imię" maxoccurs="3"/> <xs:element ref="nazwisko"/> </xs:sequence> </xs:element> Deklaracje lokalne <xs:complextype name="osobatyp"> <xs:sequence> <xs:element name="imię" maxoccurs="3" type="xs:string"/> <xs:element name="nazwisko" type="xs:string"/> </xs:sequence> Patryk Czarnik (MIMUW) 03 XML Schema XML 2007/08 11 / 35

Typy Deklaracje globalne i lokalne Deklaracje globalne i lokalne kiedy stosować? Deklaracje globalne element (atrybut) występujacy w wielu miejscach schematu z tym samym typem zawartości, także w potencjalnych przyszłych rozszerzeniach schematu! Deklaracje lokalne element (atrybut) tylko w jednym miejscu schematu, w różnych miejscach z różnym typem zawartości... Patryk Czarnik (MIMUW) 03 XML Schema XML 2007/08 12 / 35

Typy Deklaracje globalne i lokalne Deklaracje globalne i lokalne kiedy stosować? Deklaracje globalne element (atrybut) występujacy w wielu miejscach schematu z tym samym typem zawartości, także w potencjalnych przyszłych rozszerzeniach schematu! Deklaracje lokalne element (atrybut) tylko w jednym miejscu schematu, w różnych miejscach z różnym typem zawartości... Patryk Czarnik (MIMUW) 03 XML Schema XML 2007/08 12 / 35

Typy Deklaracje globalne i lokalne Deklaracje lokalne z różnym typem zawartości możliwość użycia tej samej nazwy dla różnych (semantycznie i strukturalnie) elementów i atrybutów, naturalne w przypadku atrybutów, mylace w przypadku elementów używać z rozsadkiem. Przykład <xs:element name="a"> <xs:complextype> <xs:sequence> <xs:element name="c" type="xs:positiveinteger"/> </xs:sequence> </xs:element> <xs:element name="b"> <xs:complextype> <xs:sequence> <xs:element name="c" type="xs:negativeinteger"/> </xs:sequence> </xs:element> <a><c>12</c></a> <b><c>-9</c></b> Patryk Czarnik (MIMUW) 03 XML Schema XML 2007/08 13 / 35

Typy złożone i proste Typy Typy proste i złożone Typ złożony <xs:complextype name="osobatyp"> <xs:sequence> <xs:element name="imię" type="xs:string"/> <xs:element name="nazwisko" type="xs:string"/> </xs:sequence> <xs:element name="osoba" type="osobatyp"/> Typ prosty <xs:simpletype name="plectyp"> <xs:restriction base="xs:string"> <xs:enumeration value="k"/> <xs:enumeration value="m"/> </xs:restriction> </xs:simpletype> <xs:element name="nazwisko" type="xs:string"/> <xs:attribute name="płeć" type="plectyp"/> Patryk Czarnik (MIMUW) 03 XML Schema XML 2007/08 14 / 35

Typy złożone i proste Typy Typy proste i złożone Typ złożony <xs:complextype name="osobatyp"> <xs:sequence> <xs:element name="imię" type="xs:string"/> <xs:element name="nazwisko" type="xs:string"/> </xs:sequence> <xs:element name="osoba" type="osobatyp"/> Typ prosty <xs:simpletype name="plectyp"> <xs:restriction base="xs:string"> <xs:enumeration value="k"/> <xs:enumeration value="m"/> </xs:restriction> </xs:simpletype> <xs:element name="nazwisko" type="xs:string"/> <xs:attribute name="płeć" type="plectyp"/> Patryk Czarnik (MIMUW) 03 XML Schema XML 2007/08 14 / 35

Typy Typy proste i złożone Typy proste i złożone kiedy używać? Typy złożone struktura (podelementy, atrybuty), odpowiednie dla elementów. Typy proste zawartość tekstowa, odpowiednie dla atrybutów i elementów, wiele typów predefiniowanych, możliwość definiowania własnych typów. Patryk Czarnik (MIMUW) 03 XML Schema XML 2007/08 15 / 35

Typy Typy proste i złożone Typy proste i złożone kiedy używać? Typy złożone struktura (podelementy, atrybuty), odpowiednie dla elementów. Typy proste zawartość tekstowa, odpowiednie dla atrybutów i elementów, wiele typów predefiniowanych, możliwość definiowania własnych typów. Patryk Czarnik (MIMUW) 03 XML Schema XML 2007/08 15 / 35

Plan Typy złożone 1 Podstawy Motywacja Struktura schematu 2 Typy Typy nazwane i anonimowe Deklaracje globalne i lokalne Typy proste i złożone 3 Typy złożone Grupy modelowe Grupy nazwane Atrybuty Zawartość pusta, prosta i mieszana Więzy integralności Patryk Czarnik (MIMUW) 03 XML Schema XML 2007/08 16 / 35

Typy złożone Typy złożone rodzaje zawartości Zawartość elementowa: <osoba PESEL="12345678901"> <imię>jan</imię> <nazwisko>kowalski</nazwisko> </osoba> Zawartość pusta: <osoba PESEL="12345678901"/> Zawartość prosta: <masa jm="kg">10.55</masa> Zawartość mieszana: <treść>w <j>pascalu</j> przypisanie ma postać <kod>x := 5</kod>, natomiast w <j>c</j> <kod>x = 5</kod>.</treść> Patryk Czarnik (MIMUW) 03 XML Schema XML 2007/08 17 / 35

Typy złożone Typy złożone rodzaje zawartości Zawartość elementowa: <osoba PESEL="12345678901"> <imię>jan</imię> <nazwisko>kowalski</nazwisko> </osoba> Zawartość pusta: <osoba PESEL="12345678901"/> Zawartość prosta: <masa jm="kg">10.55</masa> Zawartość mieszana: <treść>w <j>pascalu</j> przypisanie ma postać <kod>x := 5</kod>, natomiast w <j>c</j> <kod>x = 5</kod>.</treść> Patryk Czarnik (MIMUW) 03 XML Schema XML 2007/08 17 / 35

Typy złożone Typy złożone rodzaje zawartości Zawartość elementowa: <osoba PESEL="12345678901"> <imię>jan</imię> <nazwisko>kowalski</nazwisko> </osoba> Zawartość pusta: <osoba PESEL="12345678901"/> Zawartość prosta: <masa jm="kg">10.55</masa> Zawartość mieszana: <treść>w <j>pascalu</j> przypisanie ma postać <kod>x := 5</kod>, natomiast w <j>c</j> <kod>x = 5</kod>.</treść> Patryk Czarnik (MIMUW) 03 XML Schema XML 2007/08 17 / 35

Typy złożone Typy złożone rodzaje zawartości Zawartość elementowa: <osoba PESEL="12345678901"> <imię>jan</imię> <nazwisko>kowalski</nazwisko> </osoba> Zawartość pusta: <osoba PESEL="12345678901"/> Zawartość prosta: <masa jm="kg">10.55</masa> Zawartość mieszana: <treść>w <j>pascalu</j> przypisanie ma postać <kod>x := 5</kod>, natomiast w <j>c</j> <kod>x = 5</kod>.</treść> Patryk Czarnik (MIMUW) 03 XML Schema XML 2007/08 17 / 35

Typy złożone Grupy modelowe Definiowanie zawartości elementowej Grupy deklaracji (model groups) sequence, choice, all. Zagnieżdżanie grup sequence i choice <xs:complextype name="osobatyp"> <xs:choice> <xs:sequence> <xs:element name="imię" type="xs:string"/> <xs:element name="nazwisko" type="xs:string"/> </xs:sequence> <xs:element name="pseudonim" type="xs:string"/> </xs:choice> Patryk Czarnik (MIMUW) 03 XML Schema XML 2007/08 18 / 35

Typy złożone Grupy modelowe Liczność wystapień Atrybuty minoccurs i maxoccurs. Dla podelementów oraz grup. Wartość unbounded dla maxoccurs. Domyślna liczność: dokładnie 1. Sztuczny przykład <xs:complextype name="dwieosobytyp"> <xs:choice minoccurs="2"> <xs:sequence> <xs:element name="imię" type="xs:string" minoccurs="0" maxoccurs="3"/> <xs:element name="nazwisko" type="xs:string"/> </xs:sequence> <xs:element name="pseudonim" type="xs:string"/> </xs:choice> Patryk Czarnik (MIMUW) 03 XML Schema XML 2007/08 19 / 35

Typy złożone Modele (nie)deterministyczne Grupy modelowe Model niejednoznaczny: Nawet znajac cały dokument nie jesteśmy w stanie wskazać które deklaracje w schemacie odpowiadaja elementom w dokumencie. (a,a)* (a,a,a)* Model niedeterministyczny: Czytajac dokument od poczatku gdy pojawia się pewien znacznik otwierajacy nie jesteśmy w stanie wskazać która deklaracja w schemacie odpowiada bieżacemu elementowi w dokumencie (bez czytania dalej dokumentu). (a,a?,a?) (a,b)+,a? Modele definiowane w XML Schema musza być deterministyczne: Czytajac dowolny dokument od poczatku gdy pojawia się pewien znacznik otwierajacy jesteśmy w stanie wskazać która deklaracja w schemacie odpowiada bieżacemu elementowi w dokumencie (bez czytania dalej dokumentu). (a,(a,a?)?) Patryk Czarnik (MIMUW) 03 XML Schema XML 2007/08 20 / 35

Typy złożone Grupy modelowe Grupa all Przykład Wszystkie podelementy w dowolnej kolejności. maxoccurs podelementów <= 1. Brak udziału w zagnieżdżeniach. <xs:complextype name="daneosobowetyp"> <xs:all> <xs:element name="pesel" type="peseltyp"/> <xs:element name="dowód" type="dowódtyp"/> <xs:element name="paszport" type="paszporttyp" minoccurs="0"/> </xs:all> Patryk Czarnik (MIMUW) 03 XML Schema XML 2007/08 21 / 35

Typy złożone Nazwane grupy elementów Grupy nazwane <xs:group name="współrzędne"> <xs:sequence> <xs:element name="x" type="xs:double"/> <xs:element name="y" type="xs:double"/> </xs:sequence> </xs:group> <xs:element name="punkt"> <xs:complextype> <xs:sequence> <xs:group ref="współrzędne"/> </xs:sequence> </xs:element> <xs:element name="koło"> <xs:complextype> <xs:sequence> <xs:group ref="współrzędne"/> <xs:element name="r" type="xs:double"/> </xs:sequence> </xs:element> Patryk Czarnik (MIMUW) 03 XML Schema XML 2007/08 22 / 35

Typy złożone Atrybuty Deklaracje atrybutów Przykład Deklaracje globalne i lokalne. W definicji typu złożonego za określeniem typu zawartości. <xs:attribute name="nr" type="positiveinteger"/> <xs:complextype name="osobatyp"> <xs:sequence>... </xs:sequence> <xs:attribute name="pesel" type="peseltyp"/> <xs:attribute name="płeć"> <xs:simpletype>... </xs:simpletype> </xs:attribute> <xs:attribute ref="nr"/> Patryk Czarnik (MIMUW) 03 XML Schema XML 2007/08 23 / 35

Typy złożone Atrybuty Obowiazkowość i wartości domyślne Przykład use required, optional, prohibited. default lub fixed wartość domyślna lub ustalona. <xs:complextype name="osobatyp"> <xs:sequence>... </xs:sequence> <xs:attribute name="pesel" type="peseltyp" use="required"/> <xs:attribute name="płeć" default="k"> <xs:simpletype>... </xs:simpletype> </xs:attribute> <xs:attribute ref="nr" fixed="123"/> Patryk Czarnik (MIMUW) 03 XML Schema XML 2007/08 24 / 35

Typy złożone Nazwane grupy atrybutów Atrybuty <xs:attributegroup name="atrybuty-krawędzi"> <xs:attribute name="kolor-krawędzi" type="kolortyp"/> <xs:attribute name="grubość-krawędzi" type="xs:positiveinteger"/> </xs:attributegroup> <xs:attributegroup name="atrybuty-powierzchni"> <xs:attribute name="kolor-powierzchni" type="kolortyp"/> </xs:attributegroup> <xs:element name="koło"> <xs:complextype> <xs:sequence>... </xs:sequence> <xs:attributegroup ref="atrybuty-krawędzi"/> <xs:attributegroup ref="atrybuty-powierzchni"/> </xs:element> <xs:element name="odcinek"> <xs:complextype> <xs:sequence>... </xs:sequence> <xs:attributegroup ref="atrybuty-krawędzi"/> </xs:element> Patryk Czarnik (MIMUW) 03 XML Schema XML 2007/08 25 / 35

Typy złożone Elementy czy atrtybuty? Przesłanki strukturalne Atrybuty Elementy konieczne gdy: liczność większa od 1, wewnętrzna struktura (podelemety), także w potencjalnych przyszłych rozszerzeniach schematu! Zalety atrybutów: zwięzłość zapisu, wartości domyślne, w DTD dostępne typy zawartości NMTOKEN, ID, IDREF (w XML Schema bez znaczenia). Patryk Czarnik (MIMUW) 03 XML Schema XML 2007/08 26 / 35

Typy złożone Elementy czy atrtybuty? Przesłanki semantyczne Atrybuty Informacje modelowane zwykle w elementach: zawartość (elementy semantyczne, np. nazwisko, nazwa leku, adres), struktura (np. rozdział, akapit, tytuł, lista), wyszukiwanie (np. termin do indeksu, glosariusza, a także elementy dedykowane), odesłania (np. hiperlinki, noty, przypisy). Informacje modelowane zwykle w atrybutach: metainformacje (np. jednostka miary, waluta, język, priorytet), identyfikatory wartości i odwołania do nich. Patryk Czarnik (MIMUW) 03 XML Schema XML 2007/08 27 / 35

Typy złożone Zawartość pusta, prosta i mieszana Typy złożone rodzaje zawartości Zawartość elementowa: <osoba PESEL="12345678901"> <imię>jan</imię> <nazwisko>kowalski</nazwisko> </osoba> Zawartość pusta: <osoba PESEL="12345678901"/> Zawartość prosta: <masa jm="kg">10.55</masa> Zawartość mieszana: <treść>w <j>pascalu</j> przypisanie ma postać <kod>x := 5</kod>, natomiast w <j>c</j> <kod>x = 5</kod>.</treść> Patryk Czarnik (MIMUW) 03 XML Schema XML 2007/08 28 / 35

Typy złożone Zawartość pusta, prosta i mieszana Definiowanie zawartości pustej Schemat <xs:complextype name="osobatyp"> <xs:attribute name="pesel" type="peseltyp"/> Dokument <osoba PESEL="12345678901"/> <masa jm="kg">10.55</masa> <treść>w <j>pascalu</j> przypisanie ma postać <kod>x := 5</kod>, natomiast w <j>c</j> <kod>x = 5</kod>.</treść> Patryk Czarnik (MIMUW) 03 XML Schema XML 2007/08 29 / 35

Typy złożone Zawartość pusta, prosta i mieszana Definiowanie zawartości prostej Schemat <xs:complextype name="masatyp"> <xs:simplecontent> <xs:extension base="xs:decimal"> <xs:attribute name="jm" type="xs:string"/> </xs:extension> </xs:simplecontent> Dokument <masa jm="kg">10.55</masa> Patryk Czarnik (MIMUW) 03 XML Schema XML 2007/08 30 / 35

Typy złożone Zawartość pusta, prosta i mieszana Definiowanie zawartości mieszanej (1) Ważna liczność i kolejność <xs:complextype name="zamówienietyp" mixed="true"> <xs:sequence> <xs:element ref="towar" maxoccurs="unbounded"/> <xs:element ref="adres" /> </xs:choice> Dokument <zamówienie> Zamawiam <towar>pączka</towar> i <towar>kawę</towar>. Proszę przysłać na <adres>banacha 2</adres>. </zamówienie> Patryk Czarnik (MIMUW) 03 XML Schema XML 2007/08 31 / 35

Typy złożone Zawartość pusta, prosta i mieszana Definiowanie zawartości mieszanej (2) Jak w DTD <xs:complextype name="tresctyp" mixed="true"> <xs:choice maxoccurs="unbounded"> <xs:element name="j" type="xs:string"/> <xs:element name="kod" type="xs:string"/> </xs:choice> Dokument <treść>w <j>pascalu</j> przypisanie ma postać <kod>x := 5</kod>, natomiast w <j>c</j> <kod>x = 5</kod>.</treść> Patryk Czarnik (MIMUW) 03 XML Schema XML 2007/08 32 / 35

ID i IDREF Typy złożone Więzy integralności Typy atrybutów w DTD, dostępne także w XML Schema. ID: nazwa w sensie XML, żaden inny atrybut o typie ID nie może mieć tej samej wartości, IDREF: jakiś atrybut o typie ID w dokumencie musi mieć równa wartość. Ograniczenia: tylko nazwy (w szczególności nie numery), jedna przestrzeń identyfikatorów dla wszystkich elementów, tylko atrybuty. Patryk Czarnik (MIMUW) 03 XML Schema XML 2007/08 33 / 35

Klucze i referencje Typy złożone Więzy integralności Więzy integralności (identity constraints) w XML Schema: unique wartości w ramach określonego zakresu unikatowe, key wartości w ramach określonego zakresu unikatowe i niepuste, keyref odwołanie do wartości wskazanego klucza. Zalety w porównaniu z atrybutami typu ID / IDREF: dowolny typ zawartości (nie tylko nazwa), możliwych wiele niezależnych od siebie ograniczeń, odwołanie do konkretnego klucza, kombinacje wartości (krotki), kontrolowane zawartości elementów, nie tylko atrybutów. Patryk Czarnik (MIMUW) 03 XML Schema XML 2007/08 34 / 35

Klucze i referencje Typy złożone 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 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> Patryk Czarnik (MIMUW) 03 XML Schema XML 2007/08 35 / 35