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

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

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

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

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

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

Przykładowy dokument XML

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

- 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

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

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

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

XML Schema w przykładach

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

Rola języka XML narzędziem

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

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

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

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

XML extensible Markup Language. Paweł Chodkiewicz

XML Extensible Markup Language

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

Wprowadzenie do technologii XML

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

XML DTD XML Schema CSS

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

XML i nowoczesne metody zarządzania treścią

XML w sosie własnym. Standard XML wraz z DTD, przestrzenie nazw, projektowanie 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. Typy proste, wyprowadzanie typów, modularyzacja schematu. Patryk Czarnik. Instytut Informatyki UW

Zasady Nazewnictwa. Dokumentów XML Strona 1 z 9

Wprowadzenie do XML schema

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

XML extensible Markup Language. część 4

MINISTERSTWO SPRAW WEWNĘTRZNYCH I ADMINISTRACJI DEPARTAMENT INFORMATYZACJI

DTD - encje ogólne i parametryczne, przestrzenie nazw

Podstawowe konstrukcje Podstawowymi konstrukcjami są wzorce element oraz attribute:

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

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

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

Wprowadzenie do XML. Joanna Jędrzejowicz. Instytut Informatyki

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

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

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

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

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

Technologie zarządzania treścią

11. PROFESJONALNE ZABEZPIECZENIE HASŁEM

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

MINISTERSTWO SPRAW WEWNĘTRZNYCH I ADMINISTRACJI DEPARTAMENT INFORMATYZACJI

Środowisko XML (Extensible Markup Language).

Schematy XML. Tomasz Traczyk.

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

Model semistrukturalny

MINISTERSTWO SPRAW WEWNĘTRZNYCH I ADMINISTRACJI DEPARTAMENT INFORMATYZACJI

Systemy liczenia. 333= 3*100+3*10+3*1

GML w praktyce geodezyjnej

XML i nowoczesne metody zarządzania treścią

Dodatek Technologie internetowe 1. UTF-8 wg 2. Adresy URL

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

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

XML extensible Markup Language. część 1

XML i nowoczesne metody zarządzania treścią

Programowanie internetowe

Modelowanie związków encji. Oracle Designer: Diagramy związków encji. Encja (1)

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

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

Dlaczego GML? Gdańsk r. Karol Stachura

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

Po uruchomieniu programu nasza litera zostanie wyświetlona na ekranie

XML i nowoczesne metody zarządzania treścią

Język programowania DELPHI / Andrzej Marciniak. Poznań, Spis treści

Automatyczne generowanie kodu. 4Developers, 26 marca 2010

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

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

Pracownia Komputerowa wyk ad VII

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

Integracja Obieg Dokumentów - GiS Spis treści

PLAN ZARZĄDZANIA WYMAGANIAMI PROJEKT <NAZWA PROJEKTU> WERSJA <NUMER WERSJI DOKUMENTU>

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

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

Wprowadzenie do XML. Tomasz Przechlewski

Definicje. Algorytm to:

ABC języka HTML i XHTML / Maria Sokół. wyd. 2. Gliwice, cop Spis treści

Podstawy JavaScript ćwiczenia

XML i nowoczesne technologie zarządzania treścią 2007/08

PROGRAMOWANIE. WNPiD UAM, Programowanie, inż. Piotr Jabłoński

E.14.1 Tworzenie stron internetowych / Krzysztof T. Czarkowski, Ilona Nowosad. Warszawa, Spis treści

Cel ogólny lekcji: Wprowadzenie do tworzenia stron WWW w języku HTML. Wprowadzenie pojęć: strona WWW, język HTML, dokument HTML.

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

HTML DOM, XHTML cel, charakterystyka

KARTA KURSU. Przetwarzanie dokumentów XML i zaawansowane techniki WWW

Zasady budowy i przekazywania komunikatów XML w systemie kdpw_otc

XML extensible Markup Language. część 3

Zasady budowy i przekazywania komunikatów XML w systemie kdpw_otc

Wykład 2 Składnia języka C# (cz. 1)

Typy, klasy typów, składnie w funkcji

Czym są właściwości. Poprawne projektowanie klas

Web frameworks do budowy aplikacji zgodnych z J2EE

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

Transkrypt:

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

Jak wygląda XML? <?xml version= 1.0?> <zeznanie-sprawcy nr= 1313/2001 > <autor>st. asp. Jan Łapówka</autor> <miejsce>dołowice Górne</miejsce> <treść>wypadek dnia <data>13.10.2001r</data> o godzinie <godzina>13:13</godzina> (<dzien-tygodnia>piątek </dzien-tygodnia>) miał miejsce nie z mojej winy. <poszkodowany>alojzy M.</poszkodowany> nie miał Ŝadnego pomysłu w którą stronę uciekać, więc go przejechałem.</treść> </zeznanie-sprawcy> Deklaracja XML Element główny Atrybut Element Znacznik początkowy Znacznik końcowy Zawartość tekstowa 2008-10-09 Definiowanie typów dokumentów część 1: DTD, XML Schema 2 Slajd przedstawia jedynie podstawowe elementy składni dokumentu XML. KaŜdy dokument XML zaczyna się od deklaracji XML, określającej wersję składni XML-a, kodowanie znaków, itp. Cała zawartość dokumentu zawarta jest w jednym elemencie elemencie głównym. On dopiero zawiera inne elementy oraz tekst. Elementy mogą posiadać atrybuty, opisujące pewne właściwości elementów. Dokument XML musi mieć dokładnie jeden element główny. KaŜdy element jest kodowany przy pomocy znacznika początkowego oraz znacznika końcowego. 2

Struktura logiczna dokumentu XML zeznanie-sprawcy nr="1313/2001" autor miejsce treść st. asp. Jan Łapówka Dołowice Górne Wypadek dnia data godzina dzien-tygodnia... 13.10.2001 13:13 piątek o godzinie <?xml version= 1.0?> <zeznanie-sprawcy nr= 1313/2001 > <autor>st. asp. Jan Łapówka</autor> <miejsce>dołowice Górne</miejsce> <treść>wypadek dnia <data>13.10.2001r</data> o godzinie <godzina>13:13</godzina> (<dzien-tygodnia>piątek </dzien-tygodnia>) miał miejsce nie z mojej winy. <poszkodowany>alojzy M.</poszkodowany> nie miał Ŝadnego pomysłu w którą stronę uciekać, więc go przejechałem.</treść> </zeznanie-sprawcy> ( 2008-10-09 Definiowanie typów dokumentów część 1: DTD, XML Schema 3 O dokumencie XML moŝemy myśleć na dwa sposoby: jako o tekście (ciągu znaków) lub jako o strukturze drzewiastej, w której elementy, atrybuty i fragmenty tekstu są węzłami drzewa. Sposób patrzenia na dokument XML w danym momencie zaleŝy oczywiście od konkretnego zastosowania. 3

Składnia XML Deklaracja XML: <?xml version="1.0" encoding="utf-8" standalone="yes"?> Znaczniki: <tag attributename="attribute value"> </tag> Znaczniki elementu pustego: <br></br> <br/> Komentarz: <!-- komentarz --> Instrukcja przetwarzania: <?target processing-instruction-body?> Sekcja CDATA: <![CDATA[dowolny <tekst " nieprzetwarzany & przez [ parser]]> 2008-10-09 Definiowanie typów dokumentów część 1: DTD, XML Schema 4 Dokument XML powinien zaczynać się od deklaracji XML. Deklarację moŝna pominąć, jeśli dokument jest w wersji 1.0 składni XML-a, zaś jego kodowanie to UTF-8 lub UTF-16. W przeciwnym razie deklaracja XML jest obowiązkowa. Znacznik elementu pustego w postaci <br/> jest skrótem składniowym upraszczającym tworzenie dokumentów i oznacza dokładnie to samo, co pełny zapis <br></br>. Komentarze nie są interpretowane jako część treści dokumentu i pełnią taką samą role, jak komentarze w językach programowania. Instrukcje przetwarzania są swego rodzaju wolnymi elektronami, które moŝna umieszczać w dowolnych miejscach w dokumentach XML i nie trzeba ich nigdzie deklarować. MoŜna je wykorzystywać jako ukryte (tzn. nie naleŝące do właściwej struktury dokumentu) polecenia dla aplikacji przetwarzających dokumenty. Sekcje CDATA są konstrukcją składniową pozwalającą w prosty sposób umieszczać w dokumencie XML teksty zawierające znaki zastrzeŝone, np. <, &. Wewnątrz sekcji CDATA znaki zastrzeŝone nie są bowiem interpretowane. 4

Encje predefiniowane & & < < > > &apos; ' " " 2008-10-09 Definiowanie typów dokumentów część 1: DTD, XML Schema 5 Innym sposobem zapisu w dokumencie XML znaków zastrzeŝonych w składni XML-a jest uŝycie tzw. encji predefiniowanych. Są one domyślnie zdefiniowane i nie trzeba ich samemu definiować. Oczywiście encja predefiniowana to tylko sposób zapisu składniowego znaku. Aplikacje korzystające z dokumentów XML ukrywają tą warstwę składniową i wyświetlają normalne znaki. 5

Unicode Światowy standard kodowania znaków. Odmiany: UTF-7 (korzysta tylko z 7-bitowego zestawu znaków ASCII), UTF-8 (pierwsze 128 ASCII, znak zajmuje od 1 do 6 bajtów), UTF-16 (kaŝdy znak to jedno lub dwa słowa 16-bitowe), UTF-32 (kaŝdy znak to jedno słowo 32-bitowe), UCS-4 (znak zajmuje zawsze 4 bajty). Obowiązkowy standard dla dokumentów XML: kaŝde narzędzie XML-owe musi wspierać przynajmniej UTF-8. Sposób uŝycia w dokumentach XML: jako odpowiedni ciąg bajtów, &#kod; - kod dziesiętny znaku, &#xkod; - kod szesnastkowy znaku. 2008-10-09 Definiowanie typów dokumentów część 1: DTD, XML Schema 6 Unicode (zwany czasem po polsku Unikod) - komputerowy zestaw znaków mający w zamierzeniu obejmować wszystkie pisma uŝywane na świecie. Definiują go dwa standardy Unicode oraz ISO 10646. Znaki obu standardów są identyczne. Standardy te róŝnią się w drobnych kwestiach. (Wikipedia, pl.wikipedia.org/wiki/unicode) 6

Definiowanie języków XML, SGML metajęzyki. Definiowanie języków (zastosowań, struktury dokumentów, typów dokumentów): określanie zestawu dopuszczalnych elementów, atrybutów,..., definiowanie dopuszczalnej zawartości elementów (tekst, inne elementy), przypisywanie atrybutów do elementów,... Metody definiowania struktury: dokument XML bez formalnej definicji struktury, DTD Document Type Definition, XML Schema (rekomendacja W3C z 2 maja 2001), Relax NG. 2008-10-09 Definiowanie typów dokumentów część 1: DTD, XML Schema 7 Aby korzystać z dokumentów XML, potrzebujemy metod i narzędzi, aby móc w oparciu o metajęzyk XML definiować własne języki (inaczej mówiąc: zastosowania XML-a, typy dokumentów lub schematy). XML dopuszcza wprawdzie dokumenty, które nie mają formalnej definicji struktury, ale szczególnie w odniesieniu do większych, bardziej skomplikowanych dokumentów zaleca się korzystanie z takiej definicji. Mamy do dyspozycji co najmniej kilka metod definiowania języków. DTD wywodzi się z SGML-a i jest metodą dość prostą i ograniczoną. W DTD nie moŝna na przykład definiować typów zawartości elementów i wartości atrybutów (nie moŝna np. określić, Ŝe dany element powinien zawierać datę). Niemniej jednak DTD wciąŝ są popularne zapewne m. in. dzięki swej prostocie. Najpopularniejszym obecnie standardem definiowania języków jest XML Schema standard znacznie bardziej rozbudowany niŝ DTD i dający znacznie większe moŝliwości. Coraz większą popularność zdobywa teŝ technika RELAX NG, pozwalająca ominąć niektóre słabe punkty XML Schema. 7

Poprawność dokumentów Dokument XML poprawny składniowo (ang. well-formed): kaŝdy element musi być zamknięty, nie ma nakładających się elementów, wartości atrybutów w apostrofach lub cudzysłowach,... Dokument XML poprawny strukturalnie (ang. valid): struktura dokumentu zgodna ze strukturą zdefiniowaną w definicji typu dokumentu, obecne wszystkie wymagane atrybuty. 2008-10-09 Definiowanie typów dokumentów część 1: DTD, XML Schema 8 Dokument, który nie jest poprawny składniowo, tak na prawdę nie jest dokumentem XML. Drugi stopień poprawności (poprawność strukturalna) wymaga, aby spełniony był takŝe pierwszy. Ma on sens jedynie dla dokumentów dla których zdefiniowano strukturę (schemat). 8

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

Projektowanie struktury dokumentów autor wiersz? tytuł * zwrotka * wers 2008-10-09 Definiowanie typów dokumentów część 1: DTD, XML Schema 10 Podczas abstrakcyjnego, niezaleŝnego od notacji zapisu (DTD lub XML Schema), projektowania struktury dokumentów, uŝywa się z reguły notacji graficznych. Istnieją specjalne programy, które pozwalają na takie graficzne projektowanie, np. XML SPY firmy Altova. 10

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

Dlaczego DTD nie wystarcza? Zastosowania XML-a w integracji aplikacji struktury danych: przeniesienie zadania sprawdzania poprawności z tworzonej aplikacji na narzędzie walidujące 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 tekstową zawartością elementów i wartościami atrybutów, bardzo ogólne metody definiowania częstości wystąpień, mało obiektowe, nierozszerzalne modele struktury. 2008-10-09 Definiowanie typów dokumentów część 1: DTD, XML Schema 12 Kontrolę poprawności moŝemy oczywiście zaimplementować sami w kodzie naszej aplikacji, jest to jednak dość pracochłonne. Dobrze byłoby zrzucić sprawdzanie poprawności na parser XML. Standard XML Schema pozwala na definiowanie struktur dokumentów z duŝo bardziej niŝ w DTD zaawansowaną kontrolą zawartości. 12

DTD XML Schema Wywodzi się z SGML-a Specyficzna składnia 10 typów danych Zaprojektowany na potrzeby XML-a Składnia XML 44 wbudowane typy proste Brak kontroli tekstowej zawartości elementów Typowy mieszany model zawartości Zaawansowana kontrola tekstowej zawartości elementów MoŜliwość definiowania własnych typów danych 2008-10-09 Definiowanie typów dokumentów część 1: DTD, XML Schema 13 13

Status XML Schema 2 maja 2001: XML Schema staje się oficjalną rekomendacją W3C: XML Schema Part 0: Primer, XML Schema Part 1: Structures, XML Schema Part 2: Datatypes. Obecnie trwają prace nad wersją 1.1 XML Schema (status: working draft). Przestrzeń nazw XML Schema: http://www.w3.org/2001/xmlschema 2008-10-09 Definiowanie typów dokumentów część 1: DTD, XML Schema 14 XML Schema jest jedną z nielicznych rekomendacji, które oprócz części zawierających formalne specyfikacje zawiera takŝe nadające się do czytania, napisane prostym językiem wprowadzenie (Primer). 14

Deklarowanie elementów i atrybutów <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> 2008-10-09 Definiowanie typów dokumentów część 1: DTD, XML Schema 15 Elementy i atrybuty są podstawowymi składnikami dokumentów XML. Tworząc schemat, musimy zadeklarować wszystkie elementy i atrybuty, które chcemy wykorzystywać w naszych dokumentach. Deklaracja elementu i atrybutu zawiera nazwę elementu lub atrybutu oraz określenie jego typu danych. 15

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> 2008-10-09 Definiowanie typów dokumentów część 1: DTD, XML Schema 16 W lokalnych deklaracjach elementów i atrybutów mogą pojawiać się ograniczenia liczebności: minoccurs i maxoccurs dla elementów określają, ile razy element moŝe się powtórzyć w dokumencie, use dla atrybutów określa, czy atrybut jest wymagany (required), czy opcjonalny (optional). Atrybut maxoccurs moŝe oprócz wartości liczbowych przyjmować specjalną wartość unbounded, oznaczającą brak górnego ograniczenia. 16

Typy Typy wg zasięgu definicji: typy nazwane, typy anonimowe. Typy wg zawartości: typy proste, typy złoŝone o zawartości: prostej, elementowej, mieszanej, pustej. Typy wg pochodzenia: typy wbudowane, typy zdefiniowane w schemacie: rozszerzenia innych typów, ograniczenia innych typów, listy i unie. 2008-10-09 Definiowanie typów dokumentów część 1: DTD, XML Schema 17 W deklaracji kaŝdego elementu i atrybutu musimy podać jego typ danych. Dlatego tworząc schematy nie da się uniknąć operowania typami. Typy danych pozwalają na sprawdzanie poprawności zawartości elementów oraz wartości atrybutów. Tworząc schematy moŝemy korzystać z kilkudziesięciu typów wbudowanych oraz definiować własne typy. 17

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> 2008-10-09 Definiowanie typów dokumentów część 1: DTD, XML Schema 18 Typy danych mogą być nazwane lub anonimowe. Typy nazwane są zawsze zdefiniowane globalnie (na najwyŝszym poziomie struktury dokumentu schematu) i muszą mieć unikatowe nazwy. Z drugiej strony, typ anonimowy nie moŝe mieć nazwy. Jest zawsze zdefiniowany całkowicie wewnątrz deklaracji elementu lub atrybutu i moŝe być uŝyty tylko raz przez tą deklarację. (Priscilla Walmsley, Wszystko o XML Schema, WNT, 2008) 18

Typy proste i złoŝone Typy proste: <xsd:simpletype name="niptyp"> <xsd:restriction base="xsd:string"> <xsd:pattern value="\d{3}-\d{3}-\d{2}-\d{2}"/> </xsd:restriction> </xsd:simpletype> Typy złoŝone: <xsd:complextype name="osobatyp"> <xsd:sequence> <xsd:element name="imie" type="xsd:string"/> <xsd:element name="nazwisko" type="xsd:string"/> </xsd:sequence> </xsd:complextype> Element moŝe mieć typ prosty lub złoŝony. Atrybut moŝe mieć wyłącznie typ prosty. 2008-10-09 Definiowanie typów dokumentów część 1: DTD, XML Schema 19 Elementy, którym przypisano typy proste, mają zawartość tekstową, lecz nie mają podelementów ani atrybutów. Natomiast elementy, którym przypisano typy złoŝone, mogą mieć podelementy i (lub) atrybuty. Do atrybutów moŝna przypisywać wyłącznie typy proste. Jest to rozsądne, poniewaŝ atrybut nie moŝe mieć podelementów ani atrybutów. 19

Typy złoŝone typy 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> nie miał Ŝadnego pomysłu w którą stronę uciekać, więc go przejechałem.</treść> Zawartość pusta: <osoba PESEL="12345678901"/> 2008-10-09 Definiowanie typów dokumentów część 1: DTD, XML Schema 20 Zawartością (ang. contents) elementu nazywamy dane znakowe oraz podelementy znajdujące się pomiędzy znacznikami tego elementu. Kolejność i strukturę podelementów typu złoŝonego nazywamy jego modelem zawartości (ang. content model). KaŜdy typ złoŝony ma jeden z czterech typów zawartości (ang. types of content): zawartość prostą, elementową, mieszaną lub pustą. Element o zawartości prostej (ang. simple content) moŝe zawierać wyłącznie dane znakowe, bez podelementów. Element o zawartości elementowej (ang. element-only content) moŝe zawierać wyłącznie podelementy i nie moŝe zawierać danych znakowych. Element o zawartości mieszanej (ang. mixed content) moŝe zawierać zarówno podelementy, jak i dane znakowe. Element o zawartości pustej nie moŝe zawierać ani danych znakowych, ani podelementów. Takie elementy często mają wartości w swoich atrybutach. A czasami nie mają nawet atrybutów. Wówczas znacząca jest sama ich obecność. Przykładem takiego elementu jest <br/> w języku XHTML, oznaczający nowy wiersz. Nie zawiera on Ŝadnych informacji poza tym, Ŝe znaczące jest samo jego wystąpienie. (Priscilla Walmsley, Wszystko o XML Schema, WNT, 2008) 20

Definiowanie zawartości elementowej Grupy deklaracji elementów: sequence, choice, all. ZagnieŜdŜanie grup: <xsd:complextype name="osobatyp"> <xsd:sequence> <xsd:element name="imie" type="xsd:string"/> <xsd:element ref="nazwisko"/> <xsd:choice> <xsd:element name="nr-dowodu" type="dowódtyp"/> <xsd:element name="nr-paszportu" type="paszporttyp"/> </xsd:choice> </xsd:sequence> </xsd:complextype> 2008-10-09 Definiowanie typów dokumentów część 1: DTD, XML Schema 21 Zawartość elementową deklaruje się przy pomocy grup deklaracji: sequence składniki grupy (tzn. elementy lub inne grupy) muszą wystąpić dokładnie w takiej kolejności, jaka jest określona w deklaracji, choice musi wystąpić jeden ze składników grupy, all składniki grupy muszą wystąpić w dowolnej kolejności. Grupy deklaracji moŝna zagnieŝdŝać, tworząc w ten sposób bardziej skomplikowane modele zawartości. 21

Grupa all ograniczenia Nie moŝe zawierać innych grup (tylko deklaracje elementów i odwołania do elementów). KaŜdy element moŝe wystąpić co najwyŝej raz. Grupa all nie moŝe być zagnieŝdŝona w innej grupie. ZagnieŜdŜanie grup: <xsd:complextype name="osobatyp"> <xsd:all> <xsd:element name="imie" type="xsd:string"/> <xsd:element name="drugie-imie" type="xsd:string" minoccurs="0"/> <xsd:element ref="nazwisko"/> </xsd:all> </xsd:complextype> 2008-10-09 Definiowanie typów dokumentów część 1: DTD, XML Schema 22 Ze względu na to, Ŝe przetwarzanie grup all jest trudne i sprawia kłopoty twórcom parserów, wprowadzono ostre ograniczenia co do ich stosowania. W praktyce grupy all są rzadko uŝywane. Nawet jeśli faktyczna kolejność elementów nie jest dla nas istotna, zwykle jesteśmy w stanie określić pewną naturalną kolejność i zdefiniować ją przy pomocy grupy sequence. 22

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> 2008-10-09 Definiowanie typów dokumentów część 1: DTD, XML Schema 23 Typ złoŝony o zawartości prostej róŝni się tym od typu prostego,ŝe posiada atrybuty. Nawet jeśli nie ma podelementów, to sam fakt wystąpienia atrybutów powoduje, Ŝe mamy do czynienia z typem złoŝonym. Typ złoŝony o zawartości prostej definiujemy jako rozszerzenie (extension) pewnego typu prostego. 23

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> 2008-10-09 Definiowanie typów dokumentów część 1: DTD, XML Schema 24 Element o zawartości mieszanej moŝe zawierać zarówno podelementy, jak i dane znakowe. Definiując typ, wystarczy zadeklarować wyłącznie podelementy. Zawartość tekstowa jest dopuszczalna dzięki atrybutowi mixed o wartości true. Zawartości mieszanej uŝywa się najczęściej modelując dokumenty o orientacji tekstowej, pisane przez ludzi (np. umowy, protokoły, hasła encyklopedyczne). Dzięki zawartości mieszanej, autor dokumentu moŝe w dowolnych miejscach w treści dokumentu wpleść elementy oznaczające lub wyróŝniające pewne wyrazy i zwroty. 24

Definiowanie zawartości pustej <xsd:complextype name="osobatyp"> <xsd:attribute name="pesel" type="peseltyp"/> </xsd:complextype> 2008-10-09 Definiowanie typów dokumentów część 1: DTD, XML Schema 25 Zawartość pustą definiujemy podając wyłącznie deklaracje atrybutów. 25

Gdzie szukać dalej DTD Tutorial www.xmlfiles.com/dtd Megginson, D., Structuring XML Documents, Prentice Hall, 1998 W3C Architecture Domain: XML Schema www.w3.org/xml/schema Costello, R., XML Schema Tutorial www.xfront.com/xml-schema.html Costello, R., XML Schemas: Best Practices www.xfront.com/bestpracticeshomepage.html Walmsley, P., Wszystko o XML Schema, WNT, 2008 2008-10-09 Definiowanie typów dokumentów część 1: DTD, XML Schema 26 26