XML Extensible Markup Language 1
Znakowanie tekstu Markup: the process of marking manuscript copy for typesetting with directions for use of type fonts and sizes, spacing, indentation, etc. The Chicago Manual Of Style wytłuszczyć wcięcie Hamlet odstęp Być albo nie być. Oto jest pytanie. 2006-12-09 XML Extensible Markup Language 2 Korzenie XML-a wywodzą się z nowatorskich koncepcji związanych ze znakowaniem tekstu, które powstały na początku lat 60-tych. Kluczem do zrozumienia idei SGML-a [i XML-a] jest rozwikłanie jego nieco dziwnej nazwy, a przede wszystkim znaczenia słowa markup. OtóŜ jest to termin techniczny, utrwalony w tradycji amerykańskiego edytorstwa. [...] W języku polskim czynność ta, nie mająca osobnej nazwy, naleŝy do procedur nazywanych ogólnie adiustacją techniczną. Przetłumaczenie markup jako znakowanie wydaje się jednak trafne (a w kaŝdym razie lepsze niŝ tagowanie lub markowanie). W całkiem podobnym sensie mówimy np. o znakowaniu dróg i ich oznakowaniu jako rezultacie czynności znakowania. (Włodzimierz Wypych, Na początku był rękopis, czyli o historii XML-a, Software 2.0, 6 2001) 2
Znakowanie tekstu w epoce komputerów Treść Hamlet Być albo nie być. Oto jest pytanie Formatowanie, adjustacja {nowy_wiersz} {bold} {wyłącz_bold} {wcięcie} Dokument Hamlet {bold}hamlet{wyłącz_bold}{nowy_wiersz}{wcięcie} Być albo nie być. Oto jest pytanie. Być albo nie być. Oto jest pytanie. + = 2006-12-09 XML Extensible Markup Language 3 Z bardzo podobnym znakowaniem tekstu mamy do czynienia w dokumentach komputerowych. Tekst oznakowany zawiera oprócz samej treści takŝe pewne znaczniki opisujące formatowanie tekstu. Tak oznakowany tekst moŝe być przetworzony np. przez system składu, który wyprodukuje czytelny dla człowieka, sformatowany dokument. 3
Korzenie XML-a Lata 60-te XX wieku: 1967 William Tunnicliffe, prezes Graphic Communications Association, podczas spotkania w Canadian Government Printing Office przedstawia ideę oddzielenia zawartości informacyjnej dokumentów od ich formatu, Stanley Rice proponuje uŝycie uniwersalnych znaczników do znakowania struktury tekstu, projekt GenCode definiuje sposób oznaczania tekstu ukierunkowany na jego strukturę, projekt INTIME (INteractive Textual Information Management Experiment) Charlesa Goldfarba wykazuje potrzebę identyfikacji fragmentów tekstu i określenia ich znaczenia. 2006-12-09 XML Extensible Markup Language 4 Pod koniec lat 60-tych XX wieku pojawiło się kilka niezaleŝnych inicjatyw, których autorzy dostrzegali ograniczenia znakowania tekstu znacznikami opisującymi jego wygląd. Pojawiły się pierwsze propozycje znakowania wskazującego strukturę tekstu i jej znaczenie. Kluczowy był projekt INTIME, prowadzony przez Charlesa Goldfarba w laboratoriach IBM Cambridge Scientific Center. Jego celem było stworzenie prototypu zintegrowanego systemu przetwarzania tekstó prawnych, przeznaczonego dla kancelarii prawniczych. Szybko okazało się, Ŝe z aktów prawnych moŝna wycisnąć znacznie więcej (np. dokładniej wyszukiwać), jeśli znaczenie poszczególnych fragmentów tekstu jest jednoznacznie zidentyfikowane. 4
Wnioski z projektu INTIME The usefulness of a retrieval program can be affected by its ability to identify the structure and purpose of the parts of text (e.g., footnotes, abstracts, citations). [...] A heuristic routine for identifying new paragraphs in normal text was developed for INTIME, but a more sophisticated facility is needed. A typesetting command language could convey such information, but present languages deal with the appearance of the text, not with the purpose which motivated it. C. Goldfarb, SGML: The Reason Why and the First Published Hint, Journal of the American Society for Information Science, Volume 48, Number 7 (July 1997) 2006-12-09 XML Extensible Markup Language 5 5
Ewolucja Internetu człowiek człowiek człowiek aplikacja aplikacja człowiek aplikacja aplikacja czas start dzisiaj 2006-12-09 XML Extensible Markup Language 6 Bezpośrednia przyczyna powstania XML-a związana jest z ewolucją zastosowań Internetu, jaka nastąpiła w ostatnich latach. Początkowo witryny internetowe były tworzone ręcznie (jako statyczne strony) przez ludzi i przeznaczone do czytania przez ludzi. Następnie pojawiły się formularze internetowe, wypełniane w przeglądarkach, a interpretowane przez aplikacje. Kolejne generacje stron były generowane automatycznie przez aplikacje (np. skrypty pobierające treść z bazy danych), zaś czytane przez ludzi. Ograniczenia, jakie niesie ze sobą uŝywany w Internecie format HTML (np. orientacja na wygląd tekstu, a nie jego znaczenie) sprawiają, Ŝe nie sprawdza się on jako medium w komunikacji bezpośrednio między aplikacjami. 6
Idea XML-a (1) Oddzielenie znaczenia tekstu od sposobu prezentacji <OSOBA MÓWIĄCA>Hamlet</OSOBA MÓWIĄCA> <WYPOWIEDŹ>Być albo nie być. Oto jest pytanie.</wypowiedź> 2006-12-09 XML Extensible Markup Language 7 Nowatorski pomysł Charlesa Goldfarba i jego współpracowników z laboratorium IBM polegał na zastąpieniu znaczników opisujących formatowanie tekstu przez abstrakcyjne oznakowanie określające jego znaczenie. Sam Goldfarb nie szukał dla swoich koncepcji uzasadnień teoretycznych. Proponował jedynie, aby uogólnić dotychczasową praktykę i znakować teksty w sposób, który nie przesądza o ich prezentacji. Po prostu wydawało się bardziej efektywne, by zamiast znaczników typograficznych w rodzaju: 14 punktów, Times Roman, kursywa, uŝyć takich, które opisują strukturę i znaczenie tekstu, np.: tytuł, akapit, cytat. (Włodzimierz Wypych, Na początku był rękopis, czyli o historii XML-a, Software 2.0, 6 2001) 7
Sposób prezentacji OSOBA MÓWIĄCA nowy akapit do lewej wytłuszczenie WYPOWIEDŹ nowy akapit wcięcie na 2 cm do lewej Hamlet Być albo nie być. Oto jest pytanie. 2006-12-09 XML Extensible Markup Language 8 PoniewaŜ takie abstrakcyjne znaczniki nie opisują formatowania, formatowanie trzeba opisać w inny sposób. Najczęściej definiuje się w tym celu tzw. arkusz stylów (ang. stylesheet), który określa jednolity sposób formatowania dla kaŝdego elementu semantycznego. Raz zdefiniowany arkusz stylów moŝna oczywiście wykorzystać do formatowania wszystkich dokumentów określonego typu. 8
Inny sposób prezentacji OSOBA MÓWIĄCA na marginesie tekst pionowo niebieski hiperlink do opisu postaci na początku dramatu WYPOWIEDŹ nowy akapit kursywa ew. uŝyj syntezatora mowy z ustawieniami dla OSOBY MÓWIĄCEJ Hamlet Być albo nie być. Oto jest pytanie. 2006-12-09 XML Extensible Markup Language 9 Takie oddzielenie sposobu prezentacji od znaczenia tekstu pozwala na zdefiniowanie dla tego samego tekstu wielu sposobów prezentacji (arkuszy stylów) i uŝywanie ich zamiennie w zaleŝności od zastosowania (np. inny arkusz stylów moŝe być stosowany dla publikacji papierowych, a inny dla elektronicznych). 9
Idea XML-a (2) Stworzenie najodpowiedniejszego modelu dla naszych własnych dokumentów. <OSOBA MÓWIĄCA>Hamlet</OSOBA MÓWIĄCA> <WYPOWIEDŹ> <NUDA> Być albo nie być. Oto jest pytanie. </NUDA> </WYPOWIEDŹ> 2006-12-09 XML Extensible Markup Language 10 Dostępny zestaw semantycznych znaczników nie jest z góry ograniczony. To my jako projektanci nowego języka (typu dokumentu) określamy ich nazwy i znaczenie. Wykorzystanie własnych znaczników opisujących znaczenie tekstu pozwala na zrealizowanie drugiej idei dopasowania modelu dokumentu strukturalnego do potrzeb konkretnego zastosowania. 10
Najodpowiedniejszy model Przykłady: encyklopedia: <nazwisko>, <imie>, <ur>, <zm>, <wymowa>, <etymologia>, <liczba-mieszk> prawo: <promulgator>, <rocznik>, <poz>, <art> <sąd>, <sygn-wyroku>, <teza> dokument techniczny: <part-number>, <function-name> patenty: <wynalazca>, <nr-zgłoszenia> ubezpieczenia: <data-polisy>, <wartość-polisy> 2006-12-09 XML Extensible Markup Language 11 11
Rozwój języków uogólnionego znakowania tekstu 1969: GML Generalized Markup Language (IBM; Goldfarb, Mosher, Laurie). 1986: SGML Standard Generalized Markup Language, ISO 8879:1986. 1991: powstaje World Wide Web. 1994: HTML 2.0 zdefiniowany jako zastosowanie SGML-a. 1998: XML Extensible Markup Language, World Wide Web Consortium. 2006-12-09 XML Extensible Markup Language 12 Pierwszym standardem, który realizował opisane idee, był GML (Generalized Markup Language). Składnia tego standardu stopniowo ewoluowała, dostosowując się do rosnącego zapotrzebowania na rozmaitą funkcjonalność. Rozwój ten zaowocował zdefiniowaniem specyfikacji SGML-a i opublikowaniem jej w 1986 roku jako normy ISO. SGML jest stosowany od lat w profesjonalnych systemach zarządzania dokumentami. Jest to standard elastyczny, oferujący wiele opcji, ale skomplikowany. Spowodowało to, Ŝe nie był on szerzej znany poza gronem fachowców zajmujących się duŝymi systemami zarządzania treścią. Dopiero odwaŝne uproszczenie zawiłości SGML-a i zdefiniowanie w ten sposób XML-a spowodowało gwałtowny wzrost popularności opisanych idei oraz wykorzystywanie ich w znacznie szerszym kontekście zastosowań. Mówi się wręcz, Ŝe XML daje 80% mocy (siły wyrazu) SGML-a przy 20% jego złoŝoności. 12
World Wide Web Consortium (W3C) Kuźnia standardów internetowych, np.: HTML Hyper Text Markup Language, HTTP Hyper Text Transfer Protocol, CSS Cascading StyleSheets,... XML Extensible Markup Language: najwaŝniejsza rekomendacja ostatnich lat, twórcy: Tim Bray (Netscape), Jean Paoli (Microsoft), C.M. Sperberg-McQueen (University of Illinois). Obecne dominują prace nad standardami związanymi z XML-em. 2006-12-09 XML Extensible Markup Language 13 W3C jest organizacją non-profit, zrzeszającą firmy zainteresowane rozwojem i standaryzacją technologii internetowych. Większość z prac prowadzonych przez W3C w ostatnich latach dotyczy technologii związanych z XML-em oraz jego zastosowań. W3C nie publikuje norm ani specyfikacji nie jest to oficjalna organizacja standaryzacyjna. Publikacje W3C są nazywane rekomendacjami. Nie przeszkadza to jednak, aby przynajmniej niektóre rekomendacje stawały się de facto standardami poprzez fakt ich powszechnego uŝywania. 13
Co to jest XML? XML to nie język programowania. XML to sposób zapamiętywania danych wraz z ich strukturą w dokumencie tekstowym: otwarty, elastyczny, bezpłatny, niezaleŝny od platformy sprzętowej. XML to rama składniowa do tworzenia języków specyficznych dla zastosowań. UŜycie XML-a nie zwalnia od myślenia (analizy, projektowania,...) 2006-12-09 XML Extensible Markup Language 14 Otwartość XML-a polega na tym, Ŝe struktura dokumentów XML jest jawna i publicznie dostępna, a same pliki mają format tekstowy (moŝna je obejrzeć w dowolnym edytorze tekstowym). Za korzystanie z formatu XML nie są pobierane Ŝadne opłaty. Dodatkowo, wiele narzędzi wspierających wykorzystanie XML-a (szczególnie tych przeznaczonych dla programistów) jest bezpłatnych. XML nie jest związany z Ŝadną platformą sprzętową ani producentem oprogramowania. Jest więc dobrym formatem do wymiany danych pomiędzy aplikacjami, systemami operacyjnymi czy platformami sprzętowymi. 14
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 2006-12-09 XML Extensible Markup Language 15 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, sposób kodowania 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. Element jest kodowany przy pomocy znacznika początkowego oraz znacznika końcowego. 15
HTML XML Znaczenie elementów i ich atrybutów z góry określone. Znaczenie elementów i ich atrybutów określa uŝytkownik lub aplikacja. Interpretację elementów określa standard, a w praktyce przeglądarki internetowe. <p> moŝe w jednym dokumencie oznaczać paragraf, w drugim pomoc, a w trzecim pismo odręczne. To, co jest poprawne równieŝ określają przeglądarki internetowe. Poprawność XML-a jest ściśle określona przez specyfikację. 2006-12-09 XML Extensible Markup Language 16 ChociaŜ XML nie ma bezpośrednio nic wspólnego z HTML-em (który jest zastosowaniem SGML-a), to jednak warto te dwa języki porównać, ze względu na ich silny związek z Internetem. W odniesieniu do dokumentów HTML przyjęła się praktyka akceptowania dokumentów niepoprawnych. Przeglądarki internetowe nie wyświetlają bowiem komunikatów o błędach składniowych, lecz starają się ominąć błąd i jak najlepiej wyświetlić dokument mimo błędu. Skutkiem tego jest znaczna ilość dokumentów HTML formalnie niepoprawnych. W przypadku XML-a poprawność jest ściśle określona, zaś od narzędzi zgodnych z rekomendacją wymaga się, aby reagowały na napotkane w dokumentach błędy i nie przetwarzały takich dokumentów. 16
SGML XML Filozofia: jeden duŝy system zarządzania treścią. Konieczność definiowania struktury. Skomplikowana składnia, wiele opcji. Trudność tworzenia parserów. Bardzo drogie narzędzia. Filozofia: wiele małych komunikujących się ze sobą modułów. Opcjonalne definiowanie struktury. Uproszczona składnia. Łatwość tworzenia parserów. Darmowe narzędzia. 2006-12-09 XML Extensible Markup Language 17 17
Klasy zastosowań XML-a Zarządzanie dokumentami, treścią, wiedzą: Pierwotne zastosowanie SGML-a. Dokumenty tworzone przez człowieka i przeznaczone dla człowieka. Długi czas Ŝycia dokumentów. Typowy model mieszany zawartości. Elektroniczna wymiana danych, integracja aplikacji: Nowa klasa zastosowań XML-a. Dokumenty tworzone oraz przetwarzane automatycznie Dokumenty tworzone tylko na czas komunikacji. Konieczność dokładnego kontrolowania struktury i zawartości. 2006-12-09 XML Extensible Markup Language 18 Historycznie, zastosowania SGML-a wiązały się z zarządzaniem dokumentami. Są to więc takŝe zastosowania XML-a. Prostota XML-a sprawiła jednak, Ŝe zaczął on być uŝywany takŝe w serwisach internetowych, publikacjach elektronicznych oraz do elektronicznej wymiany danych między systemami komputerowymi. Szczególnie te ostatnie zastosowania zasługują na uwagę, poniewaŝ sposób wykorzystania przez nie XML-a diametralnie róŝni się od pierwotnych załoŝeń leŝących u podstaw SGML-a. SGML był związany z praktyką klasycznego edytorstwa. Dokument SGML, choć elektroniczny, był nadal czymś namacalnym, stanowił określony korpus tekstów, opracowywanych w ramach systemu edytorskiego lub udostępniany w obrębie sieci lokalnej. W normie SGML najwyraźniej załoŝono, Ŝe teksty będą znakowanie ręcznie. [...] XML powstał w innym świecie w świecie opasanym globalną siecią. Stanowi odpowiedź na potrzeby, jakie stawia publikowanie zasobów baz danych w skali Internetu i w lokalnych intranetach. Jego Ŝywiołem są raczej dokumenty automatycznie generowane niŝ redagowane, dokumenty tworzone dynamicznie na Ŝądanie, dokumenty wirtualne, integrujące informacje z wielu źródeł, których nikt nigdy w nie opracował w takim kształcie, w jakim są prezentowane. (Włodzimierz Wypych, Na początku był rękopis, czyli o historii XML-a, Software 2.0, 6 2001) 18
Dwie twarze XML-a Dokument tekstowy: <zeznanie-sprawcy> Wypadek dnia <data> 13.01.2001 r.</data> o godzinie <godzina>13.13 </godzina> (<dzientygodnia>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. </zeznanie-sprawcy> Baza danych: <zamowienie> <pozycja> <nazwa>papier</nazwa> <jednostka>ryza </jednostka> <ilosc>3</ilosc> </pozycja> <zamawiajacy id= 123456 > <imie>szymon</imie> <nazwisko>zioło </nazwisko> <firma>abg Ster-Projekt </firma> </zamawiajacy> </zamowienie> 2006-12-09 XML Extensible Markup Language 19 Te róŝnicę między dwoma klasami zastosowań ilustrują dwa przykłady dokumentów. Podstawą dokumentu tekstowego, stosowanego w zastosowaniach związanych z zarządzaniem treścią, jest mieszany model zawartości, w którym tekst jest w dowolny sposób przemieszany z podelementami. Natomiast aplikacje wymieniające przy pomocy XML-a dane w sposób automatyczny operują zwykle na relacyjnych bazach danych. Dlatego struktura takiego dokumentu jest ściśle określona i często odpowiada strukturze odpowiedniej bazy danych. 19
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> ( 2006-12-09 XML Extensible Markup Language 20 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. 20
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]]> 2006-12-09 XML Extensible Markup Language 21 KaŜdy dokument XML musi zaczynać się od deklaracji XML inaczej nie zostanie rozpoznany jako dokument XML. 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. 21
Encje predefiniowane & & < < > > ' ' " " 2006-12-09 XML Extensible Markup Language 22 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. 22
Język metajęzyk Stan wyjściowy: WieŜa Babel (brak wspólnego języka), czy w ogóle moŝliwy jeden wspólny język? Wspólny metajęzyk: znana gramatyka, jednolita metodologia, takie same narzędzia. Dowolnie wiele języków specyficznych dla zastosowań. 2006-12-09 XML Extensible Markup Language 23 MoŜliwość definiowania własnych elementów i określania ich znaczenia powoduje, Ŝe XML nie jest tak na prawdę zwykłym językiem, lecz metajęzykiem, tzn. językiem słuŝącym do definiowania własnych języków. Przez własny język rozumiemy tu określony zestaw elementów, atrybutów, sposób ich zagnieŝdŝania, dopuszczalną zawartość tekstową, no i przede wszystkim znaczenie poszczególnych elementów i atrybutów. Dzięki temu w XML-u moŝna zapisać dane zupełnie do siebie nie przystające, np. fakturę oraz hasło encyklopedyczne. Wprawdzie kaŝdy z tych dokumentów będzie miał inny zestaw elementów i atrybutów (będzie napisany w innym języku), ale oba będą miały tę samą składnię i oba będzie moŝna przetwarzać przy pomocy tych samych standardowych, uniwersalnych narzędzi. 23
Definiowanie języków XML, SGML metajęzyki. Definiowanie języków (zastosowań, typów dokumentów, schemató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, Relax NG. 2006-12-09 XML Extensible Markup Language 24 Potrzebujemy więc 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 określać 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. 24
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. 2006-12-09 XML Extensible Markup Language 25 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). 25
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. 2006-12-09 XML Extensible Markup Language 26 Podobnie jak implementacja (kodowanie) jest tylko jedną z wielu faz budowy systemu informatycznego, tak zapisywanie definicji języka przy pomocy DTD, XML Schema lub innego formalizmu 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 nigdy 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, bez stosowania pełnego cyklu, po prostu zapisując definicję przy pomocy DTD lub XML Schema. 26
Projektowanie struktury dokumentów autor wiersz? tytuł * zwrotka * wers 2006-12-09 XML Extensible Markup Language 27 Podczas abstrakcyjnego, niezaleŝnego od notacji (DTD lub XML Schema), projektowania struktury dokumentów, uŝywa się z reguły diagramów graficznych. Istnieją specjalne programy, które pozwalają na takie graficzne projektowanie, np. edytor XMLSPY firmy Altova. 27
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 2006-12-09 XML Extensible Markup Language 28 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. Przy pomocy pozycji ATTLIST moŝna określić atrybuty poszczególnych elementów. 28
Gdzie szukać dalej: historia XML-a Charles F. Goldfarb's SGML Source Home Page: www.sgmlsource.com Wypych, W., Na początku był rękopis, czyli o historii XML-a: Software 2.0, 6/2001 2006-12-09 XML Extensible Markup Language 29 29
Gdzie szukać dalej: XML W3C The World Wide Web Consortium: www.w3.org XML.com: www.xml.com The XML Industry Portal, hosted by OASIS: www.xml.org The XML Cover Pages: www.oasis-open.org/cover/xml.html Paweł Stroiński, Kurs języka XML: www.wckp.lodz.pl/~pabloware/xml Goldfarb, C., Prescod, P., The XML Handbook, 5th Edition, Prentice Hall PTR, 2003 Grupa dyskusyjna pl.comp.xml 2006-12-09 XML Extensible Markup Language 30 30