Metody reprezentacji informacji Jacek Rumiński Kontakt: Katedra Inżynierii Biomedycznej, pk. 106, tel.: 3472678, fax: 3471757, e-mail: jwr@eti.pg.gda.pl Projekt Przygotowanie i realizacja kierunku inżynieria biomedyczna studia międzywydziałowe współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego.
Omówienie planu wykładów i ćwiczeń laboratoryjnych Omówienie ogólnych zagadnień organizacyjnych (zaliczenia) 2
Literatura pomocnicza: -XML, XSL, XPath rekomendacje, specyfikacje i podręczniki na stronach www.w3.org oraz www.xml.com, -podręczniki drukowane o XML, np.: XML. Księga eksperta, Rusty Harold, Wydawnictwo Helion -XML a bazy danych: http://www.rpbourret.com/xml/xmlanddatabases.htm 3
Rekomendacja WWW Consortium www.w3.org 4
Plan wykładu: 1. Wprowadzenie; 2. Cele XML; 3. Podstawowe definicje i pojęcia; 4. Charakterystyka dokumentu XML; 5. Rozbiór składniowy dokumentu XML; 6. Poprawność dokumentu XML; 7. Metody definicji typów dokumentów: DTD, XML-Schema; 8. Rodzaje dokumentów XML i formy ich składowania; 9. NXD Native XML Databases; 10. Wyszukiwanie i przeszukiwanie dokumentów XML: XPath a XQuery; 11. XML w technologii Web Services: XML-RPC, SOAP, WSDL 12. Zastosowania XML 5
XML - extensible Markup Language Rozszerzalny Język Znaczników Znaczników Język Rozszerzalny dokument budowany jest w oparciu o elementy identyfikowane przez znaczniki (ang. tag) dokument budowany jest zgodnie z określonymi zasadami składni, oraz w oparciu o zdefiniowany alfabet, czyli znaczniki wykorzystywane w dokumencie elementy języka, znaczniki, projektowane są przez użytkownika (projektanta schematu dokumentu) 6
Przykładowy dokument XML widok uproszczony element atrybut znacznik 7
wartość atrybutu wartość elementu 8
SGML Standard Generalized Markup Language (SGML) SGML to międzynarodowa norma (ISO; XML to rekomendacja!!!), która tworzy meta-język umożliwiający definiowanie języków bazujących na znacznikach (markup languages). Znaczniki to ogólnie elementy tekstu (adnotacje, oznaczenia) służące do określenia możliwej interpretacji, przetwarzania czy rozumienia tekstu (elektronicznego). Język znaczników określa zbiór formalnych wymagań stosowania znaczników. SGML wykorzystuje pojęcie znaczników opisowych zamiast znaczników definiujących wywołania procedury (np. w danym miejscu wykonaj procedurę z takimi parametrami). SGML wprowadza pojęcie typu dokumentu (bazy danych: schemat bazy). http://www.isgmlug.org/sgmlhelp/g-index.htm 9
SGML Standard Generalized Markup Language (SGML) Wyróżnialną jednostką tekstu jest ELEMENT. Element jest jawnie znakowany (znaczniki) poprzez odpowiednie oznaczenie jego początku (znacznik-początku) i końca (znacznik-końca). Element może zawierać zbiór pusty (brak tekstu), może zawierać tekst lub subelementy. Atrybut jest wartością, którą powinno się wykorzystać do opisu kontekstu pojawienia się elementu a nie do przechowywania treści dokumentu. <raport id=r12 status= szkic wersja= ang >... </raport> SGML definiuje język tworzenia schematu dokumentu: Document Type Definition (DTD) zaadaptowany później w XML. 10
SGML XML rekomendacja bazująca na SGML. XML wykorzystywany jest do reprezentacji informacji wykorzystując odpowiednie reguły. Przyjmuje określony model informacyjny; wprowadza możliwość jawnej definicji schematu; określa specyficzne typy danych, definiuje elementy danych i jednostki danych... JEST SILNIE ZWIĄZANY Z PRZECHOWYWANIEM DANYCH BAZAMI DANYCH. 11
XML a bazy danych: 1. XML jest uniwersalnym formatem składowania danych. 2. Dokument XML zawiera logicznie uporządkowane dane. 3. Dokument XML może zawierać opisy wielokrotnych instancji tej samej klasy. 4. Dokument XML jest bazą danych. 5. XML nie jest systemem zarządzania bazami danych. 6. Dokumenty XML lub dane dokumentów XML podlegają składowaniu w bazach danych. 12
Charakterystyka porównawcza XML z systemami zarządzania relacyjnymi bazami danych (SZRBD) XML Dane w pojedynczej strukturze hierarchicznej Węzły struktury (elementy) mogą posiadać wartość własną oraz liczne wartości atrybutów Elementy mogą być zagnieżdżone SZRBD Dane w wielu relacjach (tabelach) Komórki tabel przechowują pojedyncze wartości Wartości komórek są atomowe Kolejność elementów jest określona Schemat dokumentu jest opcjonalny Bezpośrednie składowanie zbioru danych dokumentu w XML Wyszukiwanie danych poprzez dedykowane języki, np.: XQuery Kolejność krotek (wierszy) nie jest definiowana Schemat bazy jest konieczny Dane dokumentu rozłożone na zbiór atrybutów/relacji Wyszukiwanie danych poprzez język SQL 13
XML a bazy danych podstawowe zadania: 1. Składowanie danych w dokumentach XML 2. Składowanie dokumentów XML 3. Wyszukiwanie dokumentów XML 4. Wyszukiwanie danych z dokumentów XML 14
RDB1 RDB2 Synteza dokumentu XML Prezentacja dokumentu XML NXD1 Transformacja i prezentacja w sieci WWW Składowanie dokumentu XML WWW NXD1 Rozbiór (analiza) dokumentu XML RDB1 RDB2 NXD Native XML Database 15
Plan wykładu: 1. Wprowadzenie; 2. Cele XML; 3. Podstawowe definicje i pojęcia; 4. Charakterystyka dokumentu XML; 5. Rozbiór składniowy dokumentu XML; 6. Poprawność dokumentu XML; 7. Metody definicji typów dokumentów: DTD, XML-Schema; 8. Rodzaje dokumentów XML i formy ich składowania; 9. NXD Native XML Databases; 10. Wyszukiwanie i przeszukiwanie dokumentów XML: XPath a XQuery; 11. XML w technologii Web Services: XML-RPC, SOAP, WSDL 12. Zastosowania XML 16
Podstawowe cele XML: - XML powinien umożliwiać tworzenie dokumentów o strukturze wyznaczanej przez definiowane znaczniki, - Dokument XML powinien być prosty i szybki do utworzenia, czytelny dla twórcy i łatwo interpretowany przez programy komputerowe, - XML powinien być kompatybilny z SGML, - Dokumenty XML powinny być łatwo wymieniane przez Internet i przetwarzane oraz prezentowane w ramach sieci WWW, - XML powinien wspomagać różne typy aplikacji, - Liczba cech opcjonalnych XML powinna być minimalna, - Projektowanie dokumentu XML powinno umożliwiać weryfikację jego poprawności. 17
DEMO 1 -Dokument XML powinien być prosty i szybki do utworzenia, czytelny dla twórcy i łatwo interpretowany przez programy komputerowe. Dowolny edytor: <?xml version= 1.0?> <student>kowalski</student> Dowolny język programowania: Zapis do strumienia ciągu znaków (j.w.), np.: PrintStream ps = new PrintStream(new FileOutputStream( plik.xml )); ps.println( <student>kowalski</student> ); RÓŻNE API gotowe środowiska do obsługi XML 18
Dokumenty XML powinny być łatwo wymieniane przez Internet i przetwarzane oraz prezentowane w ramach sieci WWW. wymiana: HTTP/MIME: text/xml przetwarzanie: API i SDK (parsery) prezentacja: Transformacja dokumentów XML 19
DEMO 2 20
XML powinien wspomagać różne typy aplikacji wymiana: 21
Popularność XML dlaczego? HTML jest językiem bardzo popularnym, i co ważniejsze znanym i stosowanym przez wiele osób (niekoniecznie informatyków). Dlaczego zatem XML? Problem z HTML: 1. Ściśle określone znaczniki HTML służą do opisu prezentacji, nie do opisu danych. Przykładowo: Co oznacza fragment kodu: <td> 3472678</td> - liczbę studentów na sali? - wysokość czesnego? - odległość pomiędzy Gdańskiem a Warszawą? - hasło do ciekawego serwisu w Internecie? 22
Dany jest fragment kodu HTML: <p><b>jacek Rumiński</b> <br> Katedra Inżynierii Biomedycznej <br> 3472678 Przetworzenie kodu przez przeglądarkę wygeneruje wynik: Jacek Rumiński Katedra Inżynierii Biomedycznej 3472678 Czy maszyna (algorytm) jest w stanie zinterpretować ten kod? Czym jest 3472678? 23
Jak w powyższym kodzie można znaleźć nazwę Katedry? Algorytm 1. Jeśli <p> ma dwa <br> to po drugim <br> dany jest numer telefonu. Jak widać algorytm nie jest zbyt uniwersalny, co jest konsekwencją braku informacji wspomagającej interpretację w samym dokumencie HTML. Przechowanie powyższej informacji (HTML) w kodzie XML może wyglądać następująco: <pracownik> <imię>jacek</imię> <nazwisko> Rumiński </nazwisko> <katedra> </katedra> <kontakt> </kontakt> <nazwa>katedra Inżynierii Biomedycznej</nazwa> <telefon>3472678</telefon> </pracownik> 24
Dany wyżej kod XML jest czytelny dla twórcy i potencjalnego użytkownika. Łatwo też stworzyć algorytm interpretujący treść, np.: Algorytm 2. Jeśli nazwa elementu jest telefon to jego treść jest numerem telefonu. Dane zapisane w dokumencie XML mogą być zaprezentowane dokładnie w taki sam sposób jak dla wcześniejszego przykładu z HTML, oraz na miliony innych sposobów. Charakterystyczną cechą dokumentów XML jest więc separacja opisu danych od opisu ich prezentacji, definiowanej poza XML. Można zatem wygenerować HTML z opisem prezentacji danych z dokumentu XML. XML jest bardziej uporządkowany niż HTML, nie umożliwia przykładowo: przeplatania znaczników, omijania znaczników końca, itd. Uporządkowaną na wzór XMLa wersją HTMLa jest XHTML. 25
Zgodnie z prezentowanymi celami utworzenia XML, powstał standard sieci WWW, którego aplikacje są obecnie jedną z najbardziej rozwijających się dziedzin praktycznego zastosowania informatyki w składowaniu i wymianie danych. XML włączono do kanonu uniwersalnych technologii: -TCP/IP uniwersalna sieć; -HTML uniwersalna prezentacja danych; -XML uniwersalne składowanie danych; -Java uniwersalny kod. Do najbardziej istotnych potomków XMLa, należy zaliczyć: XSL, MathML, SVG, XQuery, XPath, SMIL, XHTML, SOAP,... 26
Plan wykładu: 1. Wprowadzenie XML a bazy danych; 2. Cele XML; 3. Podstawowe definicje i pojęcia; 4. Charakterystyka dokumentu XML; 5. Rozbiór składniowy dokumentu XML; 6. Poprawność dokumentu XML; 7. Metody definicji typów dokumentów: DTD, XML-Schema; 8. Rodzaje dokumentów XML i formy ich składowania; 9. NXD Native XML Databases; 10. Wyszukiwanie i przeszukiwanie dokumentów XML: XPath a XQuery; 11. XML w technologii Web Services: XML-RPC, SOAP, WSDL 12. Zastosowania XML 27
Podstawą wszelkich definicji są rekomendacje XML 1.0; XML 1.1 opracowane przez W3C (http://www.w3.org/xml/). DOKUMENT XML Obiekt danych jest dokumentem XML wtedy, jeśli jest dobrze sformułowany ( well-formed ), zgodnie z wymaganiami rekomendacji. DOKUMENT XML posiada strukturę fizyczną i logiczną. Fizycznie dokument XML składa się z encji, logicznie z deklaracji, elementów, komentarzy, instrukcji przetwarzania. Obiekt danych jest dobrze sformułowany (jest dokumentem XML) jeśli wszystkie jego encje zarówno bezpośrednio dane jak i te, do których odnosi się przez referencje, spełniają wymagania specyfikacji, oraz obiekt ten posiada wymaganą strukturę logiczną. 28
Struktura logiczna dokumentu XML zdefiniowana jest jako: document ::= prolog element Misc* Dokument XML składa się z trzech podstawowych jednostek: -prologu deklaracja dokumentu, określająca typ i wersję, -elementu głównego (root) który zawierać może kolejne elementy, -oraz z zera lub więcej jednostek typu Misc definiowanych jako: Misc ::= Comment PI S gdzie: Comment komentarz, PI instrukcja przetwarzania, S znaki puste (#x20 #x9 #xd #xa) ( white spaces ). Przykładowy prolog: <?xml version="1.0"?> 29
Podstawowe znaki wykorzystywane w definicjach specyfikacji XML i jej pochodnych do określania krotności (następstwa) jednostek:? jednostka występuje raz lub wcale, * jednostka występuje jedno lub wielokrotnie lub wcale + jednostka występuje co najmniej raz [wartość] jednostka występuje dokładnie raz, tak jak zapisano, lista jednostek sekwencja rozdzielana znakiem zbiór jednostek do wyboru ( lub ). 30
Instrukcja przetwarzania (PI) zanurzona w dokumencie XML instrukcja dla aplikacji przetwarzającej dokument. Przykładem instrukcji przetwarzania jest prolog. PI ::= '<?' PITarget (S (Char* - (Char* '?>' Char*)))? '?>' PITarget ::= Name - (('X' 'x') ('M' 'm') ('L' 'l')) Char ::= #x9 #xa #xd [#x20-#xd7ff] [#xe000-#xfffd] [#x10000-#x10ffff] czyli Unicode Name ::= (Letter '_' ':') (NameChar)* NameChar ::= Letter Digit '.' '-' '_' ':' CombiningChar Extender gdzie: Letter, Digit, CombiningChar, Extender jak i BaseChar oraz Ideographic to znaki zdefiniowane w rekomendacji XML poprzez zestaw kodów Unicodu. 31
Komentarz opis treści dokumentu XML lub inne uwagi zanurzone w dokumencie Comment ::= '<!--' ((Char - '-') ('-' (Char - '-')))* '-->' Uwaga! Zgodnie z powyższym zakończenie komentarza ---> jest niedozwolone. Przykładowy prolog: <!--Zadania testowe z XML--> CDATA character data dane tekstowe, definiowane w dokumencie XML poza znacznikami. Nie posiadają zatem strukturalnej i uporządkowanej własności języka XML. CDSect ::= CDStart CData CDEnd CDStart ::= '<![CDATA[' CData ::= (Char* - (Char* ']]>' Char*)) CDEnd ::= ']]>' 32
Procesor XML program komputerowy realizujący odczyt i operacje na treści dokumentu XML. Wymagania dotyczące programu i rodzaj procesorów XML określa specyfikacja XML. DTD Document Type Definition (definicja typu/schematu dokumentu) zanurzona w dokumencie XML lub zapisana poza nim struktura dokumentu, a więc dozwolone elementy, ich nazwy, krotność i hierarchia jak również możliwe atrybuty wraz z ich nazwami, typem, krotnością i występowaniem. DTD nie jest dokumentem XML! DTD jest w pełni zdefiniowany w rekomendacji XML. Włączenie DTD w dokumencie XML odbywa się w deklaracji DOCTYPE: <!DOCTYPE tu występuje DTD lub referencja do zewn. DTD> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN"> 33
Encje ( entities ) zgodnie z budową fizyczną dokumentu XML są to jednostki przechowywania danych. Każda encja ma nazwę i wartość. Encje definiowane są jawnie w DTD. Encje mogą być wewnętrzne i zewnętrzne. Wewnętrzna encja ma treść taką jaka jest w niej bezpośrednio zapisana. Zewnętrzna encja odwołuje się do zewnętrznego zasobu. Przykłady: -wewnętrzna encja: <!ENTITY info To są slajdy do wykładu o XML."> -zewnętrzna encja: <!ENTITY plik2 SYSTEM http://biomed.eti.pg.gda.pl/xml/plik2.xml"> W definicji encji zewnętrznych stosuje się dwa typy identyfikatorów: systemowy oraz publiczny. Systemowy występuje zawsze i określa adres URI zasobu. Jeśli tylko ten identyfikator jest używany występuje słowo kluczowe SYSTEM. Przykład tego typu encji pokazano wyżej. 34
Jeśli stosuje się identyfikator publiczny wówczas stosuje się słowo kluczowe PUBLIC, po czym występuje identyfikator publiczny (generowane jest URI główne) i systemowy (URI domyślne). Ogólna postać definicji encji ma więc postać: <!ENTITY nazwa PUBLIC "FPI" "URI"> FPI - Formal Public Identifier posiada budowę zawierającą znak : - zasób niestandardowy; + zasób standardowy, nazwę grupy lub osoby odpowiedzialnej za zasób, tekst określający typ i wersję zasobu, dwa znaki określające język dokumentu, znaki separacji // rozdzielające powyższe pola. <!ENTITY plik3 PUBLIC -//Jack Stone//TEXT CV version 2.1//EN http://biomed.eti.pg.gda.pl/xml/plik3.xml"> 35
Encje mogą być oznaczone jako nie podlegające rozbiorowi, tzn. zawierają dane nie podlegające interpretacji przez procesor XML (np. plik binarny). Stosuje się wówczas słowo kluczowe NDATA. <!ENTITY logo SYSTEM "http://www-med..eti.pg.gda.pl/logo.gif" NDATA gif> Encje dzielą się ponadto na encje ogólne oraz encje parametryczne. Te ostatnie mogą być tylko definiowane w dokumencie DTD. Różnica polega również na samej budowie encji. Encja parametryczna zawiera dodatkowo przed nazwą znak %. <!ENTITY % plik2 SYSTEM http://biomed.eti.pg.gda.pl/xml/plik2.xml"> Do encji odwoływać się można przez referencje: &nazwa_encji; - dla encji ogólnej (konieczne znaki & i ; ), %nazwa_encji; -dla encji parametrycznej (konieczne znaki % i ; ). <!ENTITY email jwr@eti.pg.gda.pl> (...) <!ENTITY jwr "Jacek Rumiński &email;"> 36
Wartość encji może przyjmować tylko określone znaki Unicodu, zgodnie z zakresem podanym na końcu rekomendacji. Zatem jawne wpisanie polskich znaków w danym edytorze, może spowodować, iż zapamiętywany jest kod znaku zgodnie ze stroną kodową edytora, a nie wymaganego Unicodu. Wówczas przy interpretacji znaku przez przeglądarkę wystąpi błąd. Z tych względów znacznie pewniej jest stosowanie w definicji wartości encji, referencji do znaków polskich, zamiast samych znaków. Przykładowo: Zamiast: <!ENTITY jwr "Jacek Rumiński &email;"> Lepiej: <!ENTITY jwr "Jacek Rumiński &email;"> gdzie: ń to referencja (&...;) do znaku (#) w kodzie szesnastkowym (x) o wartości 144. 37
Kody heksadecymalne polskich liter (Unicode) 38
Zgodnie z rekomendacją istnieją również predefiniowane encje: Znak < : Znak > : Znak & : Znak : Znak : <!ENTITY lt "<"> <!ENTITY gt ">"> <!ENTITY amp "&"> <!ENTITY apos "'"> <!ENTITY quot """> Przestrzenie nazw (namespaces) zbiory nazw definiujące słownik możliwych znaczników, definicja: xmlns:<prefix>='<identyfikator przestrzeni nazw>' -<prefix>, znacznik poprzedzający, określający zakres możliwych nazw zgodnie z wybranym przez identyfikator przestrzeni nazw słownikiem. 39
Przykładowo: Przestrzenie nazw definiuje się dla elementu lub atrybutu. Dla elementu: <salon xmlns:s="http://www.salonjac.com/sal"> <s:model> C5 </s:model> </salon> Przestrzenią nazw dla elementu <model> jest http://www.salonjac.com/sal. Dla atrybutu: <salon xmlns:s="http://www.salonjac.com/sal"> <samochod s:vin= 232432432432412 > C5 </samochod> </salon> Przestrzenią nazw dla atrybutu VIN jest http://www.salonjac.com/sal. 40
Przykładowe, standardowe przestrzenie nazw: Prefix/Aplikacja Przestrzeń nazw XHTML http://www.w3.org/1999/xhtml MathML http://www.w3.org/1998/math/mathml SVG http://www.w3.org/2000/svg HTML http://www.w3.org/tr/rec-html40 XSL http://www.w3.org/1999/xsl/format 41
http://www.w3.org/tr/2006/rec-xml-20060816/ 42
Canonical XML Specyfikacja XML Canonicalization (c14n) umożliwia sprowadzanie dokumentów XML do takiej postaci, aby można było porównywać logicznie równoważne dokumenty (np. dla podpisów cyfrowych). http://www.w3.org/tr/2001/rec-xml-c14n-20010315 <salon> <car id1="1" id2="2">audi</car> </salon> JEST RÓWNOWAŻNY <?xml version="1.0" encoding="utf-8"?> <salon> </salon> <car id1="1" id2="2" >audi</car> 43
Canonical XML Proces zamiany na postać kanoniczną obejmuje Zmiana strony kodowej na UTF-8. Nowe linie są normalizowane do oznaczenia "#xa". Wartości atrybutów są normalizowane. Domyślne atrybuty są dodawane do każdego elementu. Sekcje CDATA są zastępowane przez ich treść (literalnie podane znaki z sekcji CDATA). Encje znakowe (2 ) i parsowane referencje do encji są zamieniane na ich znaczenie (np. 2 na 2) Znaki specjalne (wartości atrybutów i elementów) są zamieniane na referencje do znaków. 44
Canonical XML Proces zamiany na postać kanoniczną obejmuje Deklaracje XML i DTD są usuwane. Puste elementy są zamieniane na pary znaczników początku i końca. Znaki puste poza głównym elementem dokumentu oraz te pomiędzy znacznikiem początku i końca są normalizowane. Znaki puste w treści są zachowywane. Wartości atrybutów są otaczane znakami podwójnego cudzysłowu. Zbędne deklaracje przestrzeni nazw są usuwane. Oznaczenia/wystąpienia przestrzenni nazw i atrybuty są sortowane w ramach danego elementu. 45
Canonical XML 46
Canonical XML 47
Plan wykładu: 1. Wprowadzenie XML a bazy danych; 2. Cele XML; 3. Podstawowe definicje i pojęcia; 4. Charakterystyka dokumentu XML; 5. Rozbiór składniowy dokumentu XML; 6. Poprawność dokumentu XML; 7. Metody definicji typów dokumentów: DTD, XML-Schema; 8. Rodzaje dokumentów XML i formy ich składowania; 9. NXD Native XML Databases; 10. Wyszukiwanie i przeszukiwanie dokumentów XML: XPath a XQuery; 11. XML w technologii Web Services: XML-RPC, SOAP, WSDL 12. Zastosowania XML 48
typ wersja strona kodowa rozłączność prolog opcjonalnie obowiązkowo 49
prolog Definicja typu dokumentu poprzez identyfikator systemowy, będący referencją do pliku salon.dtd. Definicja ta jest wymagana, ze względu na określenie w pierwszej instrukcji przetwarzania, iż bieżący plik XML nie jest rozłączny (samodzielny-> standalone= no ). opcjonalnie obowiązkowo 50
root dokumentu Definicja głównego elementu dokumentu XML. Element posiada atrybut o nazwie wlasciciel i wartości stanowiącej referencje do encji o nazwie kontakt. opcjonalnie obowiązkowo 51
opcjonalnie obowiązkowo komentarz Definicja subelementu o nazwie samochod. Element posiada 2 atrybuty ( VIN i nrsilnika ) oraz cztery subelementy ( marka, model, kolor, silnik ). Wartość elementu jest typu zbioru znaków, więc łatwo pomylić się wprowadzając tekst ( ; ). 52
Dokument XML ponownie. Prezentacja w przeglądarce MS IE. 53
Plan wykładu: 1. Wprowadzenie XML a bazy danych; 2. Podstawowe definicje i pojęcia; 3. Cele XML; 4. Charakterystyka dokumentu XML; 5. Rozbiór składniowy dokumentu XML; 6. Poprawność dokumentu XML; 7. Metody definicji typów dokumentów: DTD, XML-Schema; 8. Rodzaje dokumentów XML i formy ich składowania; 9. NXD Native XML Databases; 10. Wyszukiwanie i przeszukiwanie dokumentów XML: XPath a XQuery; 11. XML w technologii Web Services: XML-RPC, SOAP, WSDL 12. Zastosowania XML 54
Parsowanie XML Porządek struktury dokumentu XML związany jest bezpośrednio z jego automatyczną interpretacją. Interpretację tę wspomagać ma opracowany przez konsorcjum W3C model DOM (Document Object Model), stanowiący interfejs API dla potrzeb tworzenia aplikacji będących procesorami XML. DOM bazuje na konstrukcji drzewa elementów, stąd główny element dokumentu nazywany jest <root> (korzeń). Z korzenia dokumentu wyprowadzone są poszczególne gałęzie i węzły, wyznaczające strukturę hierarchii elementów. W tworzeniu modelu obowiązuje zatem zasada od ogółu do szczegółu. DOM implementowany jest na poziomie języków programowania najczęściej Java i C++. 55
Parsowanie XML DOM zaprojektowano w ramach następujących poziomów: Level 1. Obejmuje rdzeń specyfikacji związany z dwoma podstawowymi modelami dokumentów XML i HTML. Określa również nawigację w ramach modelu. Level 2. Obejmuje model arkusza stylów oraz definiuje funkcjonalność związaną z przetwarzaniem informacji o stylu dokumentu. Określa tak ważny model zdarzeń oraz wspiera przestrzenie nazw XML. Level 3. Określi operacje (wczytanie i zapis) wykonywane na dokumentach oraz schematach (DTD, XML Schema). Inne: języki zapytań, zagadnienia bezpieczeństwa, itd. 56
Parsowanie XML serializacja <samochod> <marka> Alfa Romeo </marka> <model> 159</model> <kolor>czarny </kolor> </samochod> samochod marka model kolor Alfa Romeo 159 czarny parsowanie 57
Parsowanie XML Automatyczna analiza dokumentu XML wykorzystuje rozbiór składniowy (parsing). Programy dokonujące takiego rozbioru (parsers) implementują określony model reprezentacji i interpretacji dokumentu XML. Jednym z dwóch głównych metod rozbioru jest budowanie pełnego drzewa dokumentu XML zgodnie ze specyfikacją DOM. Program implementujący DOM zawiera definicję metod zadeklarowanych w abstrakcyjnym modelu. Implementacja ta uwzględnia konkretny język programowania. Przykładowo dla bardzo często wykorzystywanego w pracy z XML języka Java, zestaw klas i metod modelu DOM przedstawia kolejny slajd. Do najbardziej znanych implementacji modelu DOM (parserów) można zaliczyć: Xerces (Apache), XML4J (IBM), JAXP (Sun), XP (James Clark). Z zasady pisząc program dokonujący rozbioru gramatycznego korzystamy z nazw modelu abstrakcyjnego (model DOM). Program będzie działał właściwie jeżeli wczytamy wcześniej wybraną implementację (parsera) tych klas (upcasting). 58
Parsowanie XML Węzeł drzewa zasadniczy element danych Reprezentacja atrybutu Komentarz Wartość tekstowa elementu lub atrybutu Reprezentacja całego dokumentu XML Reprezentacja elementu 59
Parsowanie XML Rozbiór dokumentu XML zgodnie z modelem DOM realizowany jest poprzez kolejne wyszukiwanie węzłów w drzewie. Standardowo pierwszym krokiem jest wczytanie dokumentu i stworzenie jego reprezentacji w pamięci. Etap ten nie jest standaryzowany przez W3C, niemniej wielu dostawców oprogramowania stosuje proste wywołanie: DOMParser.getDocument(). Pobrany dokument znajduje się w pamięci! Jest to ważne z punktu widzenia ograniczeń w przetwarzaniu dokumentu. Wydobywanie informacji z drzewa odbywa się dalej zgodnie ze standardowymi (DOM) metodami parsera, np.: Document.getDocumentElement(); Element.getAttributte(); Node.getFirstChild(); itd. 60
Parsowanie XML DEMO: XMLDOMCreator.java 61
Parsowanie XML DEMO 3 DEMO: XMLCreator.java JDOM: WWW.JDOM.ORG 62
Projekt Przygotowanie i realizacja kierunku inżynieria biomedyczna studia międzywydziałowe współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego.