1 XML, DTD, Schema Zaawansowane Aplikacje Internetowe Dawid Weiss
2 Plan wykładu XML Czym jest XML?, krótka historia języka XML Dlaczego XML jest użyteczny? Jak wygląda XML? Prezentacja elementów języka Parsery języka XML Walidacja XML – DTD/ Schema Czemu służy walidacja? Jak wygląda DTD? Jak wygląda Schema?
3 Czym jest XML? www.w3.org/XML XML is a simple, very flexible text format derived from SGML. Originally designed to meet the challenges of large-scale electronic publishing, XML is also playing an increasingly important role in the exchange of a wide variety of data on the Web and elsewhere XML definiuje strukturę dokumentu, pozostawiając interpretację znaczenia elementów tej struktury programiście XML jest sposobem meta-opisu, dowolnej innej struktury danych
4 Czym jest XML? – struktura a znaczenie Dawid Weiss xxxxx
5 Krótka historia XML XML powstał jako uproszczenie SGML Standard Generalized Markup Language (~1960/70), standard ISO SGML jest bardzo rozbudowany, kosztowny w implementacji i długotrwały w opanowaniu XML – podzbiór SGML, 1998 (specyfikacja tylko ok. 20 stronicowa) XML szybko się rozprzestrzenił, powstają parsery dla wielu języków Technologie follow-up: Xpath, Xpointer, XSLT, XSL:FO, Xlink...
6 Dlaczego XML jest pożyteczny? XML jest zrozumiały dla ludzi (jest plikiem tekstowym) uwaga: chyba, że struktura dokumentu nie ma sensu: XML ułatawia pracę programisty Parsery Walidacja Łatwo rozszerzalny XML jest trendy :)
7 Dlaczego XML jest użyteczny, c.d. Fragment dokumentu z napisem hello world zapisanego z OpenOffice (w XML) i MS Word (w formacie własnym)
8
9
10 Elementy języka: prolog XML jest plikiem tekstowym zwykle rozpoczynającym się od prologu Wszystkie parsery muszą wspierać przynajmniej UTF-8 i UTF-16 Prolog jest opcjonalny, ale powinien być wyspecyfikowany
11 Elementy języka: tagi Struktura jest zdefiniowana przez tagi (ang. markup) Tag to sekwencja alfanumerycznych znaków zawartych między ' ' Tag otwierający: Tag zamykający: Tag pusty (bez ciała): Przykłady: 129 79 married
12 Elementy języka: atrybuty Atrybuty są częścią struktury i pozwalają na związanie z tagami par nazwa-wartość Jedynie tagi otwierające mogą posiadać atrybuty Nazwa atrybutu jest unikalna w obrębie jednego tagu niepoprawny przykład: Przykłady 129
13 Pierwszy dokument XML
14 Elementy języka: instrukcje sterujące Instrukcje sterujące nie są częścią dokumentu, ale są wykrywane i sygnalizowane przez parsery XML Instrukcja sterująca wygląda następująco: Prolog w XML jest przykładem instrukcji sterującej
15 Elementy języka: komentarze Komentarze to bloki tekstowe występujące między sekwencjami znaków: ' ' Przykłady: Komentarze nie mogą być deklarowane w definicji tagów W komentarzach nie może pojawić się sekwencja -- Weiss
16 Elementy języka: tekst, czyli Piąty Element Tekst może wystąpić wszędzie między tagami Białoszewski Miron Być to... być to źle a nie? Białoszewski Miron Być to... być to źle a nie?
17 Tekst, c.d. Spacje mogą być, na życzenie programisty, zignorowane przez parsery XML Jeśli zachodzi potrzeba umieszczenia znaków specjalnych (&), należy posłużyć się albo encjami, albo blokiem CDATA Wszystkie znaki w bloku CDATA są przekazywane do parsera XML dokładnie tak, jak zostały zapisane
18 Blok CDATA Białoszewski Miron Namuzowywanie
19 Kodowanie znaków w XML Prolog mówi parserowi jakiego kodowania należy użyć w interpretacji dokumentu Nazwy stron kodowych: IETF RFC 1766 Domyślna 'UTF-8' (Unicode) Przykład: prosty plik XML z literką ą
20 Przykład: UTF-16 (ą=0x0105) ą
21 ą Przykład: ISO8859-2 (ą = 0xB1)
22 Encje w tekście Ponieważ niektóre znaki ( ' ' ) mają dla parsera specjalne znaczenie, więc trzeba je albo zakodować, albo umieścić w bloku CDATA Encje: '&' + entity_name + ';' Przykład: © Dawid Weiss & Krzysztof Kowalczykiewicz © Dawid Weiss & Krzysztof Kowalczykiewicz
23 Parsery XML Moduły programowe, które ułatwiają interpretację plików XML Dwie strategie: DOM i SAX [pull/ push] DOM (Document Object Model) Obiektowa reprezentacja dokumentu Łatwiejsza w obsłudze, ale wymaga pamięci i sparsowania całego dokumentu XML SAX (Simple API for XML) Interfejs oparty na zdarzeniach Interpretacja w locie; zdarzenia są przekazywane do kodu programu, przetworzona część pliku nie jest pamiętana
24 Parsery XML Parsers for Java: Xerces Saxon Piccolo Crimson (obsolete)... Parsery dla C++ (i C) Xerces-C Libxml
25 Zadanie domowe (1) Napisać aplikację opartą o interfejs SAX i DOM, która wypisze osobę, której wiek jest większy niż 25 lat Przykładowy plik wejściowy: Dawid Weiss 20 Krzysztof Kowalczykiewicz 40
26 Walidacja XML Dokument XML określamy jako poprawny (ang. well formed), jeśli jego struktura jest poprawna w sensie składni języka XML Parser XML nie wskaże błędów przy interpretacji takiego pliku Dokument XML określamy jako valid, jeśli jego struktura jest poprawna i jest on poprawny w sensie składni elementów zdefiniowanej za pomocą DTD lub języka XML Schema
27 DTD DTD jest tekstowym opisem tego, jak tagi i zawartość pliku XML powinna być zorganizowana DTD pozwala na specyfikację następujących elementów tagi atrybuty encje bloki PCDATA (parsed character data) bloki CDATA (character data – not to be processed by the parser)
28 Elementy języka DTD Dawid Weiss 20 Krzysztof Kowalczykiewicz 40 or
29 Elementy języka DTD (c.d.) Dawid Weiss 20 Krzysztof Kowalczykiewicz 40 or
30 Elementy języka DTD (c.d.) Dawid Weiss 20 Krzysztof Kowalczykiewicz 40 or
31 Elementy języka DTD (c.d.) Dawid Weiss 20 Krzysztof Kowalczykiewicz 40 or
32 DTD: jak go wskazać parserowi XML? DTD załączone z dokumentem Dawid Weiss 20 Krzysztof Kowalczykiewicz 40
33 DTD: jak go wskazać parserowi XML? DTD wskazane jako plik w systemie Dawid Weiss 20 Krzysztof Kowalczykiewicz 40
34 DTD: jak go wskazać parserowi XML? DTD wskazane jako publiczny plik
35 Zadanie domowe (2) Proszę przeczytać tutorial do DTD ze strony: http://www.w3schools.com/dtd/default.asp Proszę eksperymentować z DTD i przykładami Parser (walidujący) i przykłady będą dostępne na stronie: http://www.cs.put.poznan.pl/dweiss/tmp
36 Język XML Schema Argumenty przeciwko DTD Jest dziwny Nie jest wystarczająco precyzyjny XML Schema jest jak DTD, lecz specyfikowane w języku XML Wspiera typy danych Wspiera warunki na wartości atrybutów Wspiera dziedziczenie typów Argumenty przeciwko XML Schema Jest trudniejszy do nauczenia
37 XML Schema – jak tego użyć? Plik XML Schema można zweryfikować przy pomocy XML Schema XML Schema jest dość skomplikowany. Polecany jest edytor wizualny, np. XML Spy
38
39 XML namespaces Przykład* Oba tagi TITLE mają inne znaczenie, jednak parser potraktuje je identycznie Specyfikacja XML Namespaces pozwala na wyodrębnienie kontekstu dla elementów XML XML Developer's Guide 44.95 Ms Ambercrombie Kim * quoted from Microsoft's documentation
40 XML namespaces Przykład XML Developer's Guide 44.95 Ms Ambercrombie Kim
41 Więcej informacji o XML... XML 1.0 recommendation (W3C) http://www.w3.org/TR/REC-xml XML tutorial (W3C) http://www.w3schools.com/xml/default.asp AllTheWeb, Google, inne wyszukiwarki (jest mnóstwo informacji o XML)