Schematy XML. Tomasz Traczyk. ttraczyk@ia.pw.edu.pl http://www.ia.pw.edu.pl/~ttraczyk/



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

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

Przykładowy dokument 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

- 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

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

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

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

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

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. Motywacja, struktura schematu, typy złożone. Patryk Czarnik. Instytut Informatyki UW

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

XML extensible Markup Language. część 4

Rola języka XML narzędziem

Wprowadzenie do XML schema

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

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

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

MINISTERSTWO SPRAW WEWNĘTRZNYCH I ADMINISTRACJI DEPARTAMENT INFORMATYZACJI

Zasady Nazewnictwa. Dokumentów XML Strona 1 z 9

XML i nowoczesne metody zarządzania treścią

DTD - encje ogólne i parametryczne, przestrzenie nazw

MINISTERSTWO SPRAW WEWNĘTRZNYCH I ADMINISTRACJI DEPARTAMENT INFORMATYZACJI

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

Podstawowe konstrukcje Podstawowymi konstrukcjami są wzorce element oraz attribute:

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

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

Podstawy języka XML. UEK w Krakowie Janusz Stal & Grażyna Paliwoda-Pękosz

Definicja struktury danych XSD dla opisu wzorów dokumentów elektronicznych przyjmowanych w Centralnym Repozytorium Dokumentów

Model semistrukturalny

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

Dlaczego GML? Gdańsk r. Karol Stachura

Wykład 2 xaml, cz Czym jest xml?

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

XML Schema w przykładach

Integracja Obieg Dokumentów - GiS Spis treści

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

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

Wprowadzenie do XML. Joanna Jędrzejowicz. Instytut Informatyki

MINISTERSTWO SPRAW WEWNĘTRZNYCH I ADMINISTRACJI DEPARTAMENT INFORMATYZACJI

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

GML w praktyce geodezyjnej

XML DTD XML Schema CSS

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

XML i nowoczesne technologie zarządzania treścią

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

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

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

Zasady budowy i przekazywania komunikatów XML w systemie kdpw_otc

UEK w Krakowie Janusz Stal & Grażyna Paliwoda-Pękosz

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

Podstawy programowania. Wykład: 12. Struktury, unie, pola bitowe. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Zasady budowy i przekazywania komunikatów wykorzystywanych w Systemie IT KDPW_CCP

Automatyczne generowanie kodu. 4Developers, 26 marca 2010

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

Paweł Kurzawa, Delfina Kongo

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

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

JAVA W SUPER EXPRESOWEJ PIGUŁCE

Zasady budowy i przekazywania komunikatów XML w systemie kdpw_otc

Systemy baz danych. mgr inż. Sylwia Glińska

BGK Zlecenia (Ferryt Enterprise)

XML extensible Markup Language. Paweł Chodkiewicz

Szkolenie systemu POL-on

Zasady budowy i przekazywania komunikatów XML dla rynku OTC w systemie KDPW_CCP

Wprowadzenie do technologii XML

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL III TI 4 godziny tygodniowo (4x30 tygodni =120 godzin ),

Relacyjne bazy danych a XML

Plan dzisiejszego wykładu. Narzędzia informatyczne w językoznawstwie. XML - Definicja. Zalety XML

Dodatkowe możliwości RDF. Seminarium magisterskie Paweł Chrząszczewski

The Binder Consulting

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

XML. Æwiczenia praktyczne

Plan. Wprowadzenie. Co to jest APEX? Wprowadzenie. Administracja obszarem roboczym

Wprowadzenie do arkuszy stylistycznych XSL i transformacji XSLT

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

Bazy danych 1. Wykład 5 Metodologia projektowania baz danych. (projektowanie logiczne)

Nazwa pliku XSD:

Java - tablice, konstruktory, dziedziczenie i hermetyzacja

Programowanie obiektowe

Wykład 8: klasy cz. 4

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

Projektowanie bazy danych przykład

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

Diagramy związków encji. Laboratorium. Akademia Morska w Gdyni

PARADYGMATY PROGRAMOWANIA Wykład 4

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

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

POLITECHNIKA LUBELSKA. Walidacja Modeli Xtext

Systemy ekspertowe i ich zastosowania. Katarzyna Karp Marek Grabowski

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

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

Laboratorium 03: Podstawowe konstrukcje w języku Java [2h]

Projektowanie bazy danych. Jarosław Kuchta Projektowanie Aplikacji Internetowych

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

Programowanie obiektowe

Tworzenie raportów XML Publisher przy użyciu Data Templates

5.14 JSP - Przykład z obiektami sesji Podsumowanie Słownik Zadanie... 86

Transkrypt:

Schematy XML Tomasz Traczyk ttraczyk@ia.pw.edu.pl http://www.ia.pw.edu.pl/~ttraczyk/

Plan prezentacji Dlaczego schematy? Przykład schematu XML Schema nieco szczegółów Rola schematów XML

Problemy z DTD Zalety DTD Prostota Zgodność z SGML DTD a przetwarzanie danych Do wyświetlania zwykle wystarczy poprawność well formed Do przetwarzania postuluje się poprawność valid DTD wystarcza do definiowania dokumentów tekstowych DTD nie wystarcza do definiowania złożonych struktur danych, np. w EDI handlu elektronicznym B2B i B2C DTD nie daje możliwości sprawdzania poprawności typów danych za pomocą standardowych narzędzi Niedostatki DTD Brak definicji typów danych dla zawartości elementów i dla atrybutów możliwe ograniczenia to tylko: wyliczanie dopuszczalnych wartości atrybutu zasady tworzenia nazw i identyfikatorów zawartość elementu: zawsze tekst Ograniczone możliwości sformalizowanej rozbudowy encje parametryczne Brak możliwości efektywnego wyrażenia identyczności kilku części dokumentu encje w DTD rozwijane przed analizą dokumentu Brak dobrego wykorzystania przestrzeni nazw przedrostki wpisane na sztywno do DTD Język zapisu DTD zupełnie różny od XML nie daje możliwości przetwarzania narzędziami XML-owymi

Idea schematów Co to jest schemat? Definicja składni dokumentu XML Stosowana zamiast (lub obok) DTD Zapisana w XML, z użyciem przestrzeni nazw XML Schema Definicja składni dokumentu nie mająca w/w wad spełniająca dodatkowe n/w postulaty Standard W3C (rekomendacja) Sposób definiowania dokumentów, który prawdopodobnie zastąpi DTD

Cechy schematów Postulowane cechy schematu Precyzyjne deklarowanie typów danych z wykorzystaniem rozbudowanego słownika typów elementarnych z możliwością definiowania własnych typów Mechanizmy jednokrotnego definiowania powtarzających się fragmentów modelu (np. typów, grup elementów i atrybutów) i wielokrotnego odwoływania się do takich definicji Możliwość definiowania zbiorów elementów, w których liczba wystąpień każdego elementu jest kontrolowana, ale kolejność jest dowolna Możliwość deklarowania niepowtarzalności wybranych wartości w określonej części dokumentu, np. definiowanie kluczy i odwołań do nich Możliwość deklarowania wielu elementów o takiej samej nazwie, ale innym położeniu w dokumencie i innej budowie Mechanizmy pozwalające na kontrolowane rozszerzanie i uszczegóławianie modeli dokumentów; korzystanie z wielu schematów w jednym dokumencie Uwzględnienie przestrzenie nazw; komponowanie nowych modeli z kilku przestrzeni nazw

Wady schematów Stałe Większa długość od odpowiadającego DTD Znacznie bardziej skomplikowana składnia Brak możliwości definiowania encji Przejściowe Niewielka popularność Niewielu ekspertów umiejących wykorzystywać schematy Narzędzia nie zawierające wsparcia dla schematów

Plan prezentacji Dlaczego schematy? Przykład schematu XML Schema nieco szczegółów Rola schematów XML

Przykład dokumentu <?xml version="1.0" encoding="iso-8859-2"?> <?xml-stylesheet type="text/xsl" href="konspekty.xsl"?> <eres_konspekty xmlns="http://www.elka.pw.edu.pl/eres" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:schemalocation="http://www.elka.pw.edu.pl/eres konspekty.xsd"> <przedmiot id="kbd2" wersja="1"> <slowo_kluczowe>bazy danych</slowo_kluczowe> <slowo_kluczowe>oracle</slowo_kluczowe> <konspekt> <czesc_konspektu id="streszczenie"> <P>Monograficzny przedmiot poświęcony bazie danych i narzędziom Oracle.</P> </czesc_konspektu> <czesc_konspektu id="treść"> <P>Omawiane są podstawowe zagadnienia związane z wykorzystaniem RDBMS Oracle8 i Oracle8<I>i</I>, w tym możliwości wykorzystania języka XML.</P> <P>Przedstawiane są także narzędzia Oracle:</P> <UL> <LI> Oracle Forms, </LI> <LI> Oracle Reports, </LI> <LI> Oracle XDK. </LI> </UL> </czesc_konspektu> </konspekt> </przedmiot> </eres_konspekty>

Przykład dokumentu, c.d. <?xml version="1.0" encoding="iso-8859-2"?> <?xml-stylesheet type="text/xsl" href="konspekty.xsl"?> <eres_konspekty xmlns="http://www.elka.pw.edu.pl/eres" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:schemalocation="http://www.elka.pw.edu.pl/eres Domyślna przestrzeń nazw konspekty.xsd"> <przedmiot id="kbd2" wersja="1"> Nie wymaga prefiksów w dokumencie <slowo_kluczowe>bazy danych</slowo_kluczowe> <slowo_kluczowe>oracle</slowo_kluczowe> Jest zgodna z przestrzenią docelową schematu <konspekt> <czesc_konspektu id="streszczenie"> <P>Monograficzny przedmiot poświęcony bazie danych i narzędziom Oracle.</P> </czesc_konspektu> <czesc_konspektu id="treść"> <P>Omawiane są podstawowe zagadnienia związane z wykorzystaniem RDBMS Oracle8 i Oracle8<I>i</I>, w tym możliwości wykorzystania języka XML.</P> <P>Przedstawiane są także narzędzia Oracle:</P> <UL> <LI> Oracle Forms, </LI> <LI> Oracle Reports, </LI> <LI> Oracle XDK. </LI> </UL> </czesc_konspektu> </konspekt> </przedmiot> </eres_konspekty>

Przykład dokumentu, c.d. <?xml version="1.0" encoding="iso-8859-2"?> <?xml-stylesheet type="text/xsl" href="konspekty.xsl"?> <eres_konspekty xmlns="http://www.elka.pw.edu.pl/eres" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:schemalocation="http://www.elka.pw.edu.pl/eres konspekty.xsd"> <przedmiot id="kbd2" wersja="1"> Przestrzeń nazw XML Schema <slowo_kluczowe>bazy danych</slowo_kluczowe> <slowo_kluczowe>oracle</slowo_kluczowe> Definiuje atrybut xsi:schemalocation <konspekt> <czesc_konspektu id="streszczenie"> <P>Monograficzny przedmiot poświęcony bazie danych i narzędziom Oracle.</P> </czesc_konspektu> <czesc_konspektu id="treść"> <P>Omawiane są podstawowe zagadnienia związane z wykorzystaniem RDBMS Oracle8 i Oracle8<I>i</I>, w tym możliwości wykorzystania języka XML.</P> <P>Przedstawiane są także narzędzia Oracle:</P> <UL> <LI> Oracle Forms, </LI> <LI> Oracle Reports, </LI> <LI> Oracle XDK. </LI> </UL> </czesc_konspektu> </konspekt> </przedmiot> </eres_konspekty>

Przykład dokumentu, c.d. <?xml version="1.0" encoding="iso-8859-2"?> <?xml-stylesheet type="text/xsl" href="konspekty.xsl"?> <eres_konspekty xmlns="http://www.elka.pw.edu.pl/eres" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance xsi:schemalocation="http://www.elka.pw.edu.pl/eres konspekty.xsd"> <przedmiot id="kbd2" wersja="1"> <slowo_kluczowe>bazy danych</slowo_kluczowe> Określenie schematu <slowo_kluczowe>oracle</slowo_kluczowe> Dwa parametry: <konspekt> <czesc_konspektu id="streszczenie"> - nazwa URI przestrzeni nazw <P>Monograficzny przedmiot poświęcony - URL bazie lub nazwa danych pliku i ze narzędziom schematemoracle.</p> </czesc_konspektu> <czesc_konspektu id="treść"> <P>Omawiane są podstawowe zagadnienia związane z wykorzystaniem RDBMS Oracle8 i Oracle8<I>i</I>, w tym możliwości wykorzystania języka XML.</P> <P>Przedstawiane są także narzędzia Oracle:</P> <UL> <LI> Oracle Forms, </LI> <LI> Oracle Reports, </LI> <LI> Oracle XDK. </LI> </UL> </czesc_konspektu> </konspekt> </przedmiot> </eres_konspekty>

Przykład schematu <?xml version="1.0" encoding="iso-8859-2"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/xmlschema" targetnamespace="http://www.elka.pw.edu.pl/eres" xmlns="http://www.elka.pw.edu.pl/eres" elementformdefault="qualified" version="1.1"> <xsd:include schemalocation="teksty.xsd"/> <xsd:element name="eres_konspekty"> <xsd:element name="przedmiot"> <xsd:element name="czesc_konspektu"> <xsd:attributegroup name="identyfikatory"> </xsd:attributegroup> </xsd:schema>

<?xml version="1.0" encoding="iso-8859-2"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/xmlschema" targetnamespace="http://www.elka.pw.edu.pl/eres" xmlns="http://www.elka.pw.edu.pl/eres" elementformdefault="qualified" version="1.1"> <xsd:include schemalocation="teksty.xsd"/> <xsd:element name="eres_konspekty"> <xsd:element name="przedmiot"> Przykład schematu, c.d. Element główny schematu Odwołanie do przestrzeni nazw xsd Określenie docelowej przestrzeni nazw dla dokumentu <xsd:element name="czesc_konspektu"> prefiksem przestrzeni nazw <xsd:attributegroup name="identyfikatory"> </xsd:attributegroup> </xsd:schema> Określenie domyślnej przestrzeni nazw dla schematu Żądanie kwalifikowania wszystkich elementów dokumentu

Przykład schematu, c.d. <?xml version="1.0" encoding="iso-8859-2"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/xmlschema" targetnamespace="http://www.elka.pw.edu.pl/eres" xmlns="http://www.elka.pw.edu.pl/eres" elementformdefault="qualified" version="1.1"> <xsd:include schemalocation="teksty.xsd"/> <xsd:element name="eres_konspekty"> <xsd:element name="przedmiot"> Włączenie schematu Włącza schemat zawierający typowe deklaracje i definicje, powtarzające się w innych schematach Tak włączany schemat musi nie określać docelowej przestrzeni nazw lub określać ją tak samo jak <xsd:element name="czesc_konspektu"> schemat włączający <xsd:attributegroup name="identyfikatory"> </xsd:attributegroup> </xsd:schema>

Przykład schematu, c.d. <?xml version="1.0" encoding="iso-8859-2"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/xmlschema" targetnamespace="http://www.elka.pw.edu.pl/eres" xmlns="http://www.elka.pw.edu.pl/eres" elementformdefault="qualified" version="1.1"> <xsd:include schemalocation="teksty.xsd"/> <xsd:element name="eres_konspekty"> Deklaracje i definicje zawartości <xsd:element name="przedmiot"> Deklaracje określają budowę dokumentu Definicje określają obiekty pomocnicze, np. typy, powtarzalne grupy itp. wykorzystywane w <xsd:element name="czesc_konspektu"> deklaracjach <xsd:attributegroup name="identyfikatory"> </xsd:attributegroup> </xsd:schema>

<xsd:element name="eres_konspekty"> <xsd:annotation> <xsd:documentation>przykład</xsd:documentation> </xsd:annotation> <xsd:complextype> Dokumentacja <xsd:sequence> <xsd:element ref="przedmiot" Opisy w specjalnej strukturze </xsd:sequence> </xsd:complextype> Deklarowanie elementów <xsd:key name="id_wersji"> <xsd:selector xpath="przedmiot"/> <xsd:field xpath="@id"/> <xsd:field xpath="@wersja"/> </xsd:key> <xsd:element name="przedmiot"> <!-- Definicja wywoływana po nazwie --> minoccurs="1" Zwykłe komentarze maxoccurs="unbounded"/> XML (trudniejsze do przetwarzania!)

Deklarowanie elementów, c.d. <xsd:element name="eres_konspekty"> <xsd:annotation> <xsd:documentation>przykład</xsd:documentation> </xsd:annotation> <xsd:complextype> <xsd:sequence> <xsd:element ref="przedmiot" minoccurs="1" maxoccurs="unbounded"/> </xsd:sequence> </xsd:complextype> Definicje struktur <xsd:key name="id_wersji"> Typy złożone służą do definiowania struktur <xsd:selector xpath="przedmiot"/> <xsd:field xpath="@id"/> zagnieżdżonych <xsd:field xpath="@wersja"/> Element sequence pozwala definiować następstwo </xsd:key> Można ściśle określić krotności <xsd:element name="przedmiot"> <!-- Definicja wywoływana po nazwie -->

<xsd:element name="przedmiot"> <xsd:complextype> <xsd:sequence> <xsd:element name="slowo_kluczowe" type="xsd:string" minoccurs="0" maxoccurs="unbounded"/> <xsd:element name="konspekt"> <xsd:complextype> <xsd:sequence> <xsd:element ref="czesc_konspektu minoccurs="1" maxoccurs="unbounded"/> </xsd:sequence> </xsd:complextype> </xsd:sequence> <xsd:attributegroup ref="identyfikatory"/> <xsd:attribute name="wersja"> Metody deklarowania <xsd:simpletype> <xsd:restriction base="xsd:unsignedbyte"> Bezpośrednia (inline) <xsd:maxexclusive value="10"/> Z użyciem definicji i odwołań przez nazwę </xsd:restriction> </xsd:simpletype> </xsd:attribute> </xsd:complextype> Deklarowanie elementów, c.d. <xsd:element name="czesc_konspektu">

<xsd:element name="przedmiot"> <xsd:complextype> <xsd:sequence> <xsd:element name="slowo_kluczowe" type="xsd:string" minoccurs="0" maxoccurs="unbounded"/> <xsd:element name="konspekt"> <xsd:complextype> <xsd:sequence> <xsd:element Definicje ref="czesc_konspektu" typów Do określania typów/atrybutów minoccurs="1" należy maxoccurs="unbounded"/> użyć typów prostych </xsd:sequence> </xsd:complextype> Typ prosty bazuje na jednym z typów wbudowanych Typ może być uściślony przez różne ograniczenia (aspekty) </xsd:sequence> <xsd:attributegroup ref="identyfikatory"/> <xsd:attribute name="wersja"> <xsd:simpletype> <xsd:restriction base="xsd:unsignedbyte"> <xsd:maxexclusive value="10"/> </xsd:restriction> </xsd:simpletype> </xsd:attribute> </xsd:complextype> <xsd:element name="czesc_konspektu"> Deklarowanie atrybutów

<xsd:element name="przedmiot"> <xsd:complextype> <xsd:sequence> </xsd:sequence> <xsd:attributegroup ref="identyfikatory"/> <xsd:attribute name="wersja"> <xsd:simpletype> <xsd:restriction base="xsd:unsignedbyte"> <xsd:maxexclusive value="10"/> </xsd:restriction> </xsd:simpletype> </xsd:attribute> </xsd:complextype> Deklarowanie atrybutów, c.d. Metody deklarowania Bezpośrednio Z użyciem definicji i odwołania przez nazwę - grupa atrybutów definiuje powtarzalne atrybuty <xsd:element name="czesc_konspektu"> <xsd:complextype> <xsd:group ref="tekst" minoccurs="1" maxoccurs="unbounded"/> <xsd:attributegroup ref="identyfikatory"/> </xsd:complextype> <xsd:attributegroup name="identyfikatory"> <xsd:attribute name="id" type="xsd:name" use="required"/> </xsd:attributegroup>

Klucze <xsd:element name="przedmiot"> <xsd:complextype> Definicja klucza <xsd:sequence> <xsd:element name="slowo_kluczowe" type="xsd:string" Nazwa klucza (może służyć do <xsd:element name="konspekt"> <xsd:complextype> <xsd:sequence> <xsd:element ref="czesc_konspektu" </xsd:sequence> </xsd:complextype> </xsd:sequence> <xsd:attributegroup ref="identyfikatory"/> <xsd:attribute name="wersja"> </xsd:attribute> </xsd:complextype> <xsd:key name="id_czesci"> <xsd:selector xpath="konspekt/czesc_konspektu"/> <xsd:field xpath="@id"/> </xsd:key> <xsd:attributegroup name="identyfikatory"> <xsd:attribute name="id" type="xsd:name" use="required"/> </xsd:attributegroup> minoccurs="0" budowy maxoccurs="unbounded"/> odwołań) Selektor: które elementy są unikalnie identyfikowane przez minoccurs="1 klucz maxoccurs="unbounded"/> Pole: składnik klucza (może być kilka) Używa się wyrażeń XPath Zakres unikalności: element nadrzędny w stosunku do deklaracji

Plan prezentacji Dlaczego schematy? Przykład schematu XML Schema nieco szczegółów Rola schematów XML

Budowa schematu XML Schema Rodzaje elementów schematu Deklaracje: określają elementy i atrybuty dokumentu Definicje: określają elementy pomocnicze, używane w deklaracjach: typy, grupy itp. Elementy globalne Elementy schematu bezpośrednio należące do elementu głównego schema Tworzą nazwane definicje, do których można odwoływać się w definicjach i deklaracjach Typy Służą do określania nazw elementów i atrybutów, następstwa, zawierania typów danych i zakresów wartości dla atrybutów i zawartości elementów Rodzaje proste: bez zagnieżdżeń (np. dla atrybutów) złożone: zawierają zagnieżdżone elementy Dokumentacja Elementy annotation służą do umieszczania dodatkowych informacji element documentation może zawierać dokumentację w języku naturalnym element appinfo może zawierać informacje dla aplikacji przetwarzających

Złożone typy danych Budowanie złożonych typów danych Element complextype służy do definiowania typów złożonych Grupowanie elementów w ramach typu sequence wyznacza ścisłe następstwo choice wyznacza wybór z kilu możliwości all wyznacza zbiór elementów i liczbę powtórzeń, ale bez określenia kolejności grupowania te można zagnieżdżać Liczba powtórzeń elementu lub grupy ściśle określana za pomocą atrybutów minoccurs i maxoccurs Atrybuty Deklaracje atrybutów podaje się na końcu definicji złożonego typu danych Atrybut use="required" deklaracji wymusza obowiązkowość Atrybut default deklaracji określa wartość domyślną Atrybut fixed deklaracji narzuca wartość stałą Elementy mieszane (tekst + znaczniki) definiuje się jak zwykłe typy złożone atrybut mixed określa, że znaczniki mogą być przeplecione tekstem

Proste typy danych Typy wbudowane Typy elementarne Podtypy typy pochodne Budowanie nowych typów prostych Ograniczenie (restriction) wzorce (wyrażenia regularne) ograniczenia długości określenie liczby cyfr dziesiętnych ograniczenia wartości Wyliczenie (enumeration) Listy Wartość atrybutu lub elementu może być listą wartości prostego typu, rozdzielonych białymi znakami Do deklarowania typu lista służy konstrukcja <xsd:list itemtype="typprosty"/> Połączenie (union)

Proste typy danych, c.d. Typy wbudowane (wybór) Nazwa typu Opis Przykładowe podtypy string Napis normalizedstring, language, Name boolean Wartości true i false decimal Liczba stałoprzecinkowa integer, negativeinteger, nonpositiveinteger, int, short, byte, unsignedint float, double Liczba zmiennoprzecinkowa duration Długość okresu czasu datetime Data i czas date, time Data, czas

Unikalność i klucze Unikalność Element unique deklaruje niepowtarzalność Klucze Element key: podobny do unique, definiuje klucz złożony z niepustych składników Odwołania można deklarować za pomocą elementu keyref Budowa klucza Element selector podaje jaki zbiór elementów ma zawierać niepowtarzalne klucze Element(y) field określa(ją) składnik(i) klucza Zakres niepowtarzalności określa się przez umieszczenie deklaracji unique lub key na końcu definicji odpowiedniego elementu

Schematy a przestrzenie nazw Przestrzenie nazw w schematach Schematy w pełni wykorzystują możliwości przestrzeni nazw (namespaces) Schemat określa znaczniki w konkretnej przestrzeni nazw Docelowa przestrzeń nazw Znaczniki znajdą się w docelowej przestrzeni nazw podanej w atrybucie targetnamespace Znaczniki w dokumencie muszą być w tej samej docelowej przestrzeni nazw Kwalifikowanie znaczników Atrybut elementformdefault: reguły kwalifikowania prefiksem przestrzeni nazw wartość qualified kwalifikować wszystkie znaczniki wartość unqualified kwalifikować tylko elementy globalne w przestrzeni nazw znajdują się tylko elementy globalne ich elementy podrzędne (lokalne) przynależą do przestrzeni pośrednio można tworzyć różne elementy lokalne o tych samych nazwach w różnych miejscach schematu bez konfliktu w przestrzeni nazw Kilka przestrzeni nazw Dokument może korzystać z kilku przestrzeni nazw każdej powiązanej z innym schematem Rozszerzanie XML Schema Zapis schematu można rozszerzyć o własne elementy Umieścić je trzeba w innej przestrzeni nazw

Wielokrotne użycie Grupowanie Definicja powtarzalnej grupy elementów: group atrybutów: attributegroup Odwołanie: po nazwie grupy Włączanie schematów include włącza schemat do schematu redefine włącza schemat, umożliwiając przedefiniowanie wybranych elementów, atrybutów i typów włączanego schematu Włączanie a przestrzenie nazw include działa jeśli włączany schemat nie określa przestrzeni nazw znaczniki włączane przypisywane są do przestrzeni docelowej schematu włączającego włączany schemat określa tę samą przestrzeń nazw co włączający import włącza schemat z pozostawieniem jego przestrzeni nazw stosowane w przypadku, gdy włączany schemat określa inną przestrzeń nazw w definiowanym dokumencie pozostają dwie różne przestrzenie nazw

Rozszerzanie schematów Zastępowanie (substitution) Można określić zbiór elementów mogących zastąpić dany element Definiowanie atrybut substitutiongroup wskazuje element zastępowany (bazowy) typ elementów ten sam albo pochodny od typu elementu bazowego Wykorzystanie w dokumencie element typu bazowego może być zastąpiony elementem typu zastępującego przykład: nazwy w kilku językach Typy pochodne (derived types) Dla typów prostych: ograniczenie, wyliczenie, połączenie Dla typów złożonych ograniczenie zawężenie zakresu wartości ograniczenie liczności elementów rozszerzenie: dodanie nowych elementów lub atrybutów do typu bazowego Ograniczanie rozszerzalności Specjalne atrybuty pozwalają określić dopuszczone mechanizmy wyprowadzania typów Definicje elementów i typów abstrakcyjnych nie mogą być bezpośrednio wykorzystane w deklaracjach służą do zastępowania lub wyprowadzania nowych definicji Zezwolenie na rozszerzenia użytkownika any, anyattribute i anytype pozwalają użyć elementów/atrybutów/typów nie zdefiniowanych w schemacie

XML Schema w narzędziach Narzędzia firmy Microsoft MS XML SDK 4.0 wspiera specyfikację XML Schema (XSD) parser DOM waliduje dokumenty z użyciem XSD obiekt XMLSchemaCache służy do ładowania schematów Narzędzia Microsoft zawierają także wsparcie dla firmowych specyfikacji XML- Data i XML-Data Reduced Narzędzia firmy Oracle Najnowsze wersje XDK (XML Developer Kit) zawierają Oracle XML Schema Processor for Java Procesor ten jest wykorzystywany przez parser typu DOM Walidacja na podstawie schematu ładowanego automatycznie na podstawie zawartości dokumentu ładowanego programowo Walidacja z linii komendy oraxml schema nazwa_pliku_xml

Plan prezentacji Dlaczego schematy? Przykład schematu XML Schema nieco szczegółów Rola schematów XML

Rola schematów XML Zastosowania schematów XML W przetwarzaniu walidacja na podstawie schematu pozwala uniknąć sprawdzeń poprawności struktury w czasie przetwarzania W wymianie danych walidacja na podstawie schematu pozwala pod razu odrzucać błędne komunikaty, bez ich szczegółowej analizy W ładowaniu do baz danych schemat może być użyty do automatycznego utworzenia odpowiedniej struktury danych i sterowania wczytywaniem informacji do tej struktury W tworzeniu dokumentacji schemat można uzupełnić o elementy opisowe i automatycznie generować dokumentację struktur XML (za pomocą XSL) Przyszłość schematów XML Wszystko wskazuje na to, że schematy całkowicie wyprą DTD w zastosowaniu do definiowania struktur dokumentów i walidacji Zastosowaniem DTD pozostanie definiowanie encji