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 & & < < > > ' ' " " 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