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



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

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

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

Przykładowy dokument XML

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

- 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

Schematy XML. Tomasz Traczyk.

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

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

Schema Schemat_JPK_PKPIR_v1-0.xsd

XML Schema w przykładach

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

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

XML Schema. Motywacja, struktura schematu, typy złożone. 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.

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

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

Wprowadzenie do XML schema

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

XML extensible Markup Language. część 4

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

MINISTERSTWO SPRAW WEWNĘTRZNYCH I ADMINISTRACJI DEPARTAMENT INFORMATYZACJI

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

XML i nowoczesne metody zarządzania treścią

Załączniki do rozporządzenia Ministra Finansów z dnia 2011 r. (poz. ) Załącznik nr 1. Struktura logiczna urzędowego poświadczenia odbioru

Implementacja schematów i statycznej kontroli typów w systemie JLoXiM

MINISTERSTWO SPRAW WEWNĘTRZNYCH I ADMINISTRACJI DEPARTAMENT INFORMATYZACJI

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

Schema bsb-kwy xsd

Wykład 2 xaml, cz Czym jest xml?

Rola języka XML narzędziem

Podstawowe konstrukcje Podstawowymi konstrukcjami są wzorce element oraz attribute:

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

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

Zasady Nazewnictwa. Dokumentów XML Strona 1 z 9

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

Warszawa, dnia 5 stycznia 2012 r. Pozycja 18 ROZPORZĄDZENIE MINISTRA FINANSÓW 1) z dnia 3 stycznia 2012 r.

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

MINISTERSTWO SPRAW WEWNĘTRZNYCH I ADMINISTRACJI DEPARTAMENT INFORMATYZACJI

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

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

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

Struktura logiczna zgłoszenia aktualizacyjnego osoby fizycznej nieprowadzącej samodzielnie działalności gospodarczej (NIP-3)

Rozprawa doktorska mgr Dariusza Mikułowskiego, pt. Koncepcja i realizacja rozproszonych ontologii w systemie entish

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

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

Wprowadzenie do technologii XML

D D L S Q L. Co to jest DDL SQL i jakie s jego ą podstawowe polecenia?

Nazwa pliku XSD:

Załączniki do rozporządzenia Ministra Finansów z dnia marca 2008 r. (poz. )

XML DTD XML Schema CSS

Format elektroniczny deklaracji o wysokości opłaty za gospodarowanie odpadami komunalnymi oraz układ informacji i powiązań między nimi

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

Projekt z dnia 20 grudnia 2006 r. ROZPORZĄDZENIE MINISTRA FINANSÓW 1) z dnia 2007 r.

Instrukcja CREATE TABLE

Tworzenie tabel. Bazy danych - laboratorium, Hanna Kleban 1

Egzamin z przedmiotu Projektowanie języków XML imię i nazwisko. Zadanie Suma Punkty Max Punkty

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

Powtórka algorytmów. Wprowadzenie do języka Java.

Wykład 4. SQL praca z tabelami 1

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

Integracja Obieg Dokumentów - GiS Spis treści

XML extensible Markup Language. Paweł Chodkiewicz

XML i nowoczesne metody zarządzania treścią

Stałe, znaki, łańcuchy znaków, wejście i wyjście sformatowane

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

XML. Æwiczenia praktyczne

Załączniki do rozporządzenia Ministra Finansów z dnia 2010 r. (poz. ) Załącznik nr 1

Załącznik do rozporządzenia. Ministra Finansów z dnia września 2006 r. (poz. )

BGK Zlecenia (Ferryt Enterprise)

Projektowanie bazy danych. Jarosław Kuchta Projektowanie Aplikacji Internetowych

Na podstawie artykułu:

XML extensible Markup Language. część 2

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

Wprowadzenie do języka Java

Implementacja reguł integralności w XML-owych bazach danych

Słowem wstępu. Część rodziny języków XSL. Standard: W3C XSLT razem XPath 1.0 XSLT Trwają prace nad XSLT 3.0

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 4 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44

Wprowadzenie do technologii XML

Przed zaimportowaniem danych należy odpowiednio skonfigurować sposób interpretacji danych z zakładki [Ustawienie pliku importu]

Politechnika Koszalińska

Podstawy i języki programowania

Oczywiście plik musi mieć rozszerzenie *.php

Java Podstawy. Michał Bereta

Schema Schemat_JPK_EWP_v1-0.xsd

Podstawy Informatyki. Metalurgia, I rok. Wykład 3 Liczby w komputerze

Języki formalne i automaty Ćwiczenia 6

ROZPORZĄDZENIE MINISTRA FINANSÓW 1) z dnia 2008 r.

Laboratorium 1. Wprowadzenie do protokołu SNMP i kodowanie BER (ASN.1)

Technologie zarządzania treścią

Technologie internetowe

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

Informatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki

BAZY DANYCH. Dr hab. Sławomir Zadrożny, prof. PR

XML i Java 1. XML Budowa dokumentu XML. Projektowanie systemów informatycznych

1 Podstawy c++ w pigułce.

Powtórka algorytmów. Wprowadzenie do języka Java.

XML extensible Markup Language. część 3

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 5 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 41

Transkrypt:

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

XML 5 XML Schema Projektowany jako rozszerzenie i uzupełnienie DTD Jest w stanie odwzorować dowolną definicję DTD (ale nie odwrotnie!) Bardzo rozbudowana specyfikacja System typów (liczby, daty) Możliwość nakładania ograniczeń na wartości Możliwość tworzenia nowych typów Obsługa przestrzeni nazw i jeszcze więcej... od 2001 oficjalna rekomendacja W3C (XML Schema 1.0) standardowe rozszerzenie:.xsd (jak i prefix przestrzeni nazw) 2

XML 5 XML Schema a DTD DTD wywodzi się z SGML-a specyficzna składnia 10 typów danych brak kontroli wartości XML Schema zaprojektowany dla XML-a składnia XML 44 typy proste zaawansowana kontrola zawartości elementów 3

XML 5 Deklaracja schematu w pliku XML Bez przestrzeni nazw <elgłówny xmlns:xsi= http://www.w3c.org/2001/xmlschema-instance xsi:nonamespaceschemalocation= schemat.xsd > Z przestrzenią nazw <abc:elgłówny xmlns:abc= http://abc.abc/abc <!-- nasza przestrzeń nazw --> xmlns:xsi= http://www.w3c.org/2001/xmlschema-instance xsi:schemalocation= schemat.xsd > 4

XML 5 Korzeń pliku schematu <xsd:schema xmlns:xsd= http://www.w3.org/2001/xmlschema xmlns:abc= http://test/abc targetnamespace= http://test/abc elementformdefault= qualified attributeformdefault= unqualified > targetnamespace docelowa przestrzeń nazw (dla której definiujemy schemat) element/attribute FormDefault czy elementy/atrybuty mają być prefiksowane odpowiednią przestrzenią nazw 5

XML 5 XML Schema podstawowy przykład <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> 6

XML 5 Kompozycja Obok deklaracji elementów i atrybutów, istnieje możliwość globalnego zdefiniowania własnego typu prostego (zazwyczaj przez ograniczenia innego typu prostego), simpletype własnego typu złożonego (składającego się z podelementów i atrybutów), complextype 7

XML 5 Kompozycja Deklaracje atrybutów mogą występować w ramach definicji elementu lub definicji typu złożonego Deklaracje elementów mogą występować globalnie, w ramach definicji typu złożonego lub w ramach definicji innego elementu Definicje typów mogą wystąpić globalnie (z atrybutem name) albo wewnątrz deklaracji opisywanego elementu (anonimowo, celem jednorazowego wykorzystania) 8

XML 5 Typy podział w/g zasięgu definicji nazwane anonimowe w/g zawartości proste złożone o zawartości prostej elementowej mieszanej pustej w/g pochodzenia wbudowane zdefiniowane rozszerzenia ograniczenia listy unie 9

XML 5 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> 10

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. 11

XML 5 Typy złożone rodzaje zawartości Zawartość elementowa: <osoba PESEL="12345678901"> <imie>jan</imie> <nazwisko>kowalski</nazwisko> </osoba> Zawartość prosta: <masa jm="kg">10.55</masa> Zawartość mieszana: <treść>wypadek dnia <data>13.10.2001 r.</data> o godzinie <godzina>13:13</godzina> (<dzien-tygodnia>piątek</dzien-tygodnia>) miał miejsce nie z mojej winy. <poszkodowany>alojzy M.</poszkodowany></treść> Zawartość pusta: <osoba PESEL="12345678901 /> 12

XML 5 Definiowanie zawartości elementów Grupy deklaracji elementów sequence sekwencja choice wybór all - wszystko 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> 13

XML 5 Definiowanie zawartości elementów Grupa all 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 nie może zawierać się w innej grupie 14

XML 5 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> 15

XML 5 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> 16

XML 5 definiowanie zawartości pustej <xsd:complextype name="osobatyp"> <xsd:attribute name="pesel" type="peseltyp"/> </xsd:complextype> 17

XML 5 Deklaracje globalne i lokalne Deklaracje lokalne: <xsd:complextype name="osobatyp"> <xsd:sequence> <xsd:element name="imie" type="xsd:string" /> <xsd:element name="nazwisko" type="xsd:string" /> </xsd:sequence> <xsd:attribute name="nip" type="niptyp" /> </xsd:complextype> Deklaracje globalne: <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" /> <xsd:element ref="nazwisko"/> </xsd:sequence> <xsd:attribute ref="nip" /> </xsd:complextype> 18

XML 5 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> 19

XML 5 kontrola użycia elementów Ograniczenia na liczbę wystąpień podelementów domyślnie 1 minoccurs minimalna ilość wystąpień (>=0) maxoccurs maksymalna ilość wystąpień (>=1) maxoccurs= unbounded - nieskończoność nie można określić dla elementów globalnych (zawsze 1) Wartość domyślna default= qwerty (użyta zostanie tylko dla elementu pustego, nie zostanie podstawiona gdy element w ogóle nie wystąpił) 20

XML 5 kontrola użycia atrybutów Atrybuty mogą być tylko typami prostymi Ograniczenia na występowanie atrybutu use= optional - atrybut opcjonalny (wartość domyślna) use= required - atrybut obowiązkowy use= prohibited - atrybut niedopuszczalny Wartość domyślna default= xyz (wymusza use= optional ) Wartość stała fixed= qwerty 21

XML 5 - Więzy integralności Więzy integralności (ang. identity contraints) unique wartość niepowtarzalna key wartość niepowtarzalna i niepusta (podobnie do ID) keyref odwołanie do wstkazanego klucza (podobnie do IDREF) Zalety w porównaniu do ID/IDREF można tworzyć wiele niezależnych od siebie ograniczeń odwołanie wskazuje konkretny klucz więzy mogą obejmować kombinację wartości więzy mogą być nałożone na zawartość elementów 22

XML 5 Wbudowane typy proste 23

XML 5 Wbudowane typy proste podstawowe string napis boolean wartość logiczna (0, 1, false, true) decimal liczba dziesiętna (20, -5, +12.3, -0001.300) float, double liczba zmiennoprzecinkowa (1, -24.3e-3, 1E4, INF, NaN) date data i (opcjonalnie) czas (2007-01-23, 2007-01-24Z) time czas (13:20:01.123, 15:33:00+02:00) datetime data i czas (2007-01-23T10:31:22.123) duration okres (P2Y6M1D12H5M59S) 24

XML 5 Wbudowane typy proste - podstawowe base64binary dane binarne zapisane jako Base64 (dgvzdhrlc3r0zxn0cg==) hexbinary dane binarne zapisane szesnastkowo (07F4DBA4) anyuri URI (http://x.y.z) 25

XML 5 Wbudowane typy proste - pochodne normalizedstring białe znaki zamieniane na spacje token białe znaki zamieniane na 1 spację, usuwane z początku i końca QName nazwa kwalifikowana, z dwukropkiem (abc:osoba) NCName nazwa niekwalifikowana integer liczba dziesiętna całkowita (1, -3) negativeinteger, positiveinteger,... - ograniczone dziesiętne liczby całkowite long liczba całkowita możliwa do zapisania na 64 bitach (odpowiednio int 32 bity, short 16 bitów, byte 8 bitów) 26

XML 5 Wyprowadzanie typów Wyprowadzanie typów prostych ograniczanie tworzenie list tworzenie unii Wyprowadzanie typów złożonych ograniczanie rozszerzanie typów prostych typów złożonych 27

XML 5 Ograniczanie typów prostych Aspekty (ang. facets) minexclusive, mininclusive wartość minimalna (bez/z ogr.) maxexclusive, maxinclusive wartość maksymalna length, minlength, maxlength długość totaldigits, fractiondigits ilość cyfr (całości, cz. ułamkowej) enumeration wyliczenie dopuszczalnych wartości pattern wzorzec (wyrażenie regularne) whitespace białe znaki tylko pattern i enumeration mogą być użyte wielokrotnie w jednej definicji 28

XML 5 Ograniczanie typów prostych przykłady <xsd:simpletype name="numerlottotyp"> <xsd:restriction base="xsd:integer"> <xsd:mininclusive value="1"/> <xsd:maxinclusive value="49"/> </xsd:restriction> </xsd:simpletype> <xsd:simpletype name="dokumenttyp"> <xsd:restriction base="xsd:token"> <xsd:enumeration value="dowód osobisty"/> <xsd:enumeration value="paszport"/> </xsd:restriction> </xsd:simpletype> <xsd:simpletype name="temperaturatyp"> <xsd:restriction base="xsd:decimal"> <xsd:fractiondigits value="1"/> </xsd:restriction> </xsd:simpletype> 29

XML 5 Ograniczanie typów prostych Nie wolno naruszyć ograniczeń typu bazowego w typie pochodnym, np. byte ma wbudowane ograniczenia: mininclusive = -128 maxinclusive = 127 Nie można zatem napisać: <xsd:simpletype name="extendedbyte"> <xsd:restriction base="xsd:byte"> <xsd:mininclusive value="-256"/> <xsd:maxinclusive value="255"/> </xsd:restriction> </xsd:simpletype> 30

XML 5 Aspekt whitespace Dopuszczalne są trzy wartości preserve białe znaki pozostawiane bez zmian replace wszystkie białe znaki zastępowane spacją collapse po kolei: każdy biały znak jest zastępowany spacją każdy ciąg spacji zastępowany pojedynczą spacją spacje na początku i na końcu są usuwane 31

XML 5 Aspekt pattern Wyrażenia regularne zgodne z perlem (Perl Compatible Regular Expressions, PCRE) http://pl.wikipedia.org/wiki/wyrażenia_regularne http://www.regular-expressions.info/ http://perldoc.perl.org/perlre.html przykłady: kod pocztowy: [0-9][0-9]-[0-9][0-9][0-9] lub \d\d-\d\d\d pesel: \d{11} NIP: (d{3}-\d{3}-\d{2}-\d{2} d{3}-\d{2}-\d{2}-\d{3}) Rejestracja samochodowa: [A-Z]+[0-9]+[A-Z]* ISBN: \d{9}(\d [Xx]) 32

XML 5 - Listy Listy wartości (w jednym elemencie podajemi kilka wartości) <xsd:simpletype name="numerlottotyp"> <xsd:restriction base="xsd:integer"> <xsd:mininclusive value="1"/> <xsd:maxinclusive value="49"/> </xsd:restriction> </xsd:simpletype> <xsd:simpletype name="numerylottotyp"> <xsd:list itemtype="numerlottotyp"/> </xsd:simpletype> <xsd:simpletype name="kuponlottotyp"> <xsd:restriction base="numerylottotyp"> <xsd:length value="6"/> </xsd:restriction> </xsd:simpletype> 33

XML 5 Listy wersja anonimowa <xsd:simpletype name="kuponlottotyp"> <xsd:restriction> <xsd:simpletype> <xsd:list> <xsd:simpletype> <xsd:restriction base="xsd:integer"> <xsd:mininclusive value="1"/> <xsd:maxinclusive value="49"/> </xsd:restriction> </xsd:simpletype> </xsd:list> </xsd:simpletype> <xsd:length value="6"/> </xsd:restriction> </xsd:simpletype> 34

XML 5 - 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> 35

XML 5 Czego nie da się zamodelować w XSD? Brak kontekstowego sprawdzania poprawności, np.: cena-netto cena-brutto jeśli sposób-transportu = powietrze to środek-transporu = samolot lub środek transportu = balon Kontekstowe sprawdzanie w aplikacji w transformacjach XSLT inny język schematów (np. Schematron) 36