XML standardy pokrewne 1
Standardy wykorzystywane w przetwarzaniu dokumentów XML XPath XML Path Language. XSLT Extensible Styleshheet Language Transformations. Modele dostępu programistycznego do dokumentów XML: SAX Simple API for XML, przetwarzanie strumieniowe (ang. pull parsing), DOM Document Object Model, wiązanie XML-a (ang. XML data binding), np. JAXB. XQuery XML Query Language. XLink uogólnione dowiązania (linki). XForms uogólnione formularze internetowe. XML Signature podpis elektroniczny. XML Encryption szyfrowanie dokumentów XML.... 2006-12-09 XML standardy pokrewne 2 Na slajdzie wymieniono najwaŝniejsze standardy związane z XML-em. XPath język tzw. wyraŝeń ścieŝkowych, pozwalających m. in. na wskazywanie elementów i atrybutów w dokumentach XML, np. /artykuł/rozdział[3]/tytuł. XSLT język opisu przekształceń dokumentów XML. XQuery język zapytań o zawartość dokumentów XML; odpowiednik języka SQL w bazach danych. XML Signature standard podpisywania dokumentów XML (lub ich fragmentów) podpisem elektronicznym. XML Encryption standard szyfrowania dokumentów XML (lub ich fragmentów). 2
Modele dostępu do dokumentu XML Pozwalają programistom na wysokopoziomowy dostęp do zawartości dokumentów XML : korzystamy z abstrakcyjnych obiektów, nie troszczymy się o analizę leksykalną i składniową. SAX Simple API for XML: model zdarzeniowy. DOM Document Object Model: obiektowy model drzewa struktury, zwykle implementowany przy uŝyciu SAX. XML data binding wiązanie XML-a. Pull parsing przetwarzanie strumieniowe. 2006-12-09 XML standardy pokrewne 3 Dzięki standardowym modelom dostępu do dokumentów XML programiści są zwolnieni z obowiązku Ŝmudnego programowania mechanizmów analizy leksykalnej i składniowej. Korzystając z parsera implementującego model dostają bowiem dokumenty przetworzone do postaci wygodnej abstrakcyjnej struktury danych (np. ciągu zdarzeń lub drzewa). Modele dostępu moŝemy podzielić na: wsadowe (dokument jest przeglądany liniowo od początku do końca) SAX i przetwarzanie strumieniowe, pamięciowe (dokument jest w całości ładowany do pamięci) DOM i wiązanie XML-a. 3
Implementacja modelu parser Parser (procesor) XML-a moduł programistyczny analizujący dokument XML i udostępniający jego zawartość w postaci abstrakcyjnego modelu. Funkcjonalność parsera: analiza leksykalna i składniowa, sprawdzenie poprawności strukturalnej (opcjonalnie). Uniwersalność niezaleŝność od konkretnego języka (schematu, typu dokumentu)! Po co abstrakcyjne modele: jednolity sposób programowania, niezaleŝnie od uŝytego parsera, moŝliwość wymiany parsera, moŝliwość porównywania parserów. 2006-12-09 XML standardy pokrewne 4 Parser zwykle implementuje i pozwala na korzystanie z jednego lub kilku modeli dostępu do dokumentu XML. Parsery są uniwersalne, tzn. moŝna przy ich pomocy przetwarzać dowolne dokumenty XML. 4
Działanie modelu SAX przykład <?xml version="1.0"?> <wiersz bialy="nie"> <autor> William Shakespeare </autor> </tytul> </wiersz> Parser setdocumenthandler Aplikacja startdocument() startelement("wiersz", [bialy="nie" ]) ignorablewhitespace(spacje) startelement("autor",[]) characters("william...") endelement("autor") ignorablewhitespace(spacje) throw SAXException 2006-12-09 XML standardy pokrewne 5 Parser SAX przegląda dokument od początku do końca. KaŜdy napotkany znacznik rozpoczynający lub kończący element, kaŝdy tekst oraz ignorowalne białe znaki powodują wygenerowanie zdarzenia, które aplikacja uŝytkownika moŝe przechwycić, aby wykonać odpowiednie operacje. Białe znaki są zgodnie ze rekomendacją ignorowane, gdy zawartością elementu są jedynie podelementy (model elementowy). SłuŜą bowiem wówczas jedynie do ładnego formatowania dokumentu XML. Parser SAX rozpoznaje je jednak jako ignorowalne, pozwalając aplikacji zdecydować, czy naleŝy jakoś obsłuŝyć ich wystąpienie. Dokument pokazany na slajdzie jest niepoprawny. Dowiadujemy się o tym jednak dopiero w momencie napotkania na błędny znacznik końcowy </tytul>, dla którego nie ma odpowiedniego znacznika początkowego. Do momentu napotkania błędnej sytuacji zawartość dokumentu jest normalnie przetwarzana, zaś aplikacja otrzymuje kolejne zdarzenia. Dopiero w momencie wystąpienia błędu parser zgłasza wyjątek. 5
Drzewo DOM przykład <?xml version="1.0"?> <wiersz> <autor>william Shakespeare </autor> <tytul>sonet 102</tytul> <zwrotka> <wers>...</wers>... </zwrotka> </wiersz> <wiersz> <autor> <tytul> <zwrotka> William Shakespeare Sonet 102 <wers> 2006-12-09 XML standardy pokrewne 6 W modelu DOM na podstawie dokumentu w pamięci tworzone jest drzewo obiektów reprezentujące zawartość dokumentu. Kod programu moŝe nawigować po tym drzewie, pobierać z niego informacje oraz je modyfikować. 6
SAX DOM Przetwarzanie wsadowe. Oszczędny czasowo i pamięciowo. Dobry do wyławiania z dokumentu wybranych elementów. Dokument tylko do odczytu Całe drzewo dokumentu ładowane do pamięci. Kosztowny czasowo i pamięciowo. Pozwala wędrować po drzewie dokumentu. Pozwala tworzyć i modyfikować dokumenty. 2006-12-09 XML standardy pokrewne 7 7
Przetwarzanie strumieniowe (pull parsing) Alternatywa dla modelu SAX: aplikacja wyciąga kolejne zdarzenia z parsera, przetwarzanie kontrolowane przez aplikację, a nie parser, parser działa podobnie jak iterator, kursor lub strumień danych, zachowane cechy modelu SAX: duŝa wydajność, moŝliwość przetwarzania dowolnie duŝych dokumentów. NajwaŜniejsze zalety: moŝliwość przerwania przetwarzania przed końcem pliku, moŝliwość przetwarzania kilku plików na raz, bardziej proceduralny styl programowania. Standaryzacja: Java Community Process, JSR 173: Streaming API for XML, Common API for XML Pull Parsing. 2006-12-09 XML standardy pokrewne 8 Przetwarzanie strumieniowe, podobnie jak SAX, jest modelem wsadowym. RóŜnica polega na tym, Ŝe w modelu SAX parser bombarduje aplikację zdarzeniami, zaś w modelu strumieniowym to aplikacja pobiera z parsera kolejne zdarzenia wtedy, gdy ich potrzebuje. 8
SAX a przetwarzanie strumieniowe SAX: Pull parsing: aplikacja mycontenthandler parser aplikacja parser parse() next() next() next() next() 2006-12-09 XML standardy pokrewne 9 W modelu SAX aplikacja na czas przetwarzania oddaje pełną kontrolę parserowi. Parser jedynie wywołuje metodę aplikacji odpowiedzialną za obsłuŝenie zdarzenia. Natomiast w modelu strumieniowym sterowanie pozostaje pod kontrolą aplikacji, która wtedy gdy potrzebuje kolejnych informacji z dokumentu pobiera je z parsera wywołując metodęnext(). 9
SAX czy pull parsing co wybrać? Kiedy uŝywać modelu wsadowego: potencjalnie duŝe dokumenty, stosunkowo proste, lokalne operacje, waŝna jest efektywność. Pull parsing sprawdza się, gdy: kończymy przetwarzanie po wystąpieniu poszukiwanych danych, przetwarzanie zdarzenia zaleŝy od kontekstu (np. od tego, czy jesteśmy wewnątrz pewnego elementu), przetwarzamy równolegle więcej niŝ jeden plik (np. porównujemy pliki). SAX sprawdza się, gdy: chcemy odfiltrować dokument interesują nas tylko wybrane elementy za jednym przebiegiem dokonujemy kilka niezaleŝnych rodzajów przetwarzania. 2006-12-09 XML standardy pokrewne 10 W wielu sytuacjach znacznie łatwiej programuje się aplikacje korzystając z modelu strumieniowego. MoŜna wtedy bowiem łatwo wykorzystać kontekst wystąpienia elementów oraz stosować rózne techniki programistyczne, np. rekursję. W metodzie SAX jest to niemoŝliwe, poniewaŝ kaŝde wywołanie metody obsługującej zdarzenie jest niezaleŝne od pozostałych wywołań i nie moŝna go wprost związać z innymi zdarzeniami. Model SAX sprawdza się jednak w niektórych prostych zastosowaniach. 10
Wiązanie XML-a (XML data binding) Dokumenty XML a obiekty Javy: DTD/schemat odpowiada definicji klasy, dokument XML (instancja schematu) odpowiada obiektowi (instancji klasy). Pomysł: automatyczne generowanie klas z DTD/schematów. RóŜnice w stosunku do modelu uniwersalnego (np. DOM): zestaw typów/klas i funkcji/metod zaleŝy od typu dokumentu, struktura mniej kosztowna pamięciowo, intuicyjny interfejs dostępu do zawartości, modyfikacja struktury i wartości tylko w ramach tego samego typu dokumentu. 2006-12-09 XML standardy pokrewne 11 Pomysł wiązania XML-a jest podobnie jak model DOM modelem pamięciowym, w którym dokument jest reprezentowany w postaci obiektów w pamięci. O ile jednak w modelu DOM są to obiekty uniwersalne element, atrybut, węzeł tekstowy, o tyle w wiązaniu XML-a są to obiekty specyficzne dla konkretnego zastosowania, odpowiadające elementom i atrybutom zadeklarowanym w schemacie (np. zamawiający, pozycja zamówienia, towar). Klasy implementujące te obiekty są generowane na podstawie schematu lub DTD. 11
DOM czy data binding co wybrać? Kiedy uŝywać modelu pamięciowego: nieduŝe dokumenty (muszą mieścić się w pamięci), operacje wymagające jednoczesnego dostępu do wielu węzłów, tworzenie, edycja i zapisywanie dokumentów w kodzie. DOM sprawdza się, gdy: struktura dokumentów jest nieznana, niedoprecyzowana lub zmienna, dopuszczalna jest niŝsza efektywność. Data binding sprawdza się, gdy: struktura dokumentu jest ustalona i znana (XML Schema/DTD), obiekty w aplikacji są czytanie z dokumentów XMLi zapisywane do dokumentów XML (np. w zastosowaniach związanych z wymianą danych). 2006-12-09 XML standardy pokrewne 12 12
XML i Java Ideologia: Java umoŝliwia uruchamianie raz napisanych programów na wielu platformach sprzętowych/systemowych, XML stanowi uniwersalny nośnik danych, przenośny pomiędzy platformami sprzętowymi i systemami operacyjnymi. Praktyka: wsparcie dla Unicode i róŝnych standardów kodowania, wsparcie dla XML juŝ w bibliotece standardowej (JAXP), wiele narzędzi wspierających i uŝywających XML w Javie: JAXB, SJSXP, JAXR (rejestry w XML), XML Signature (podpis elektroniczny), JAX-RPC, SOAP (programowanie rozproszone). 2006-12-09 XML standardy pokrewne 13 XML i Java są technologiami, któe się lubią ze względu na oferowaną przez nie przenośność pomiędzy platformami sprzętowymi i systemami operacyjnymi. Nie przypadkiem więc najwięcej narzędzi programistycznych wspierających wykorzystanie dokumentów XML napisano w języku Java. 13
JAXP Java API for XML Processing: definicja interfejsów, za pomocą których programiści mogą przetwarzać dokumenty XML we własnych aplikacjach, wzorcowa implementacja, moŝliwość podmiany implementacji wybranego modułu (np. parsera). Wersja 1.3 zawarta w J2SE 5.0: parsery (DOM Level 3 i SAX 2), procesor XSLT 1.0, ewaluator XPath 1.0, procesor XML Schema i DTD. W kolejnych wersjach zapewne: XQuery, przetwarzanie strumieniowe (?). 2006-12-09 XML standardy pokrewne 14 Interfejs JAXP pozwalający na wykorzystanie narzędzi XML-owych (w tym parserów) oraz zawierający ich wzorcowe implementacje został nawet umieszczony jako element standardowych bibliotek Javy. 14
XLink dowiązania w XML-u Linki jakie znamy (HTML): łączą dwa dokumenty: źródło i cel linku, źródłem linku jest zawsze element opisujący link (A, IMG). XLink rozszerzona koncepcja dowiązań: dowolne elementy przechowują informacje o linkach, informacja o linkach poza połączonymi dokumentami, więcej niŝ dwa końce linku. Status: rekomendacja W3C z 27 czerwca 2001, korzenie historyczne: HyTime. 2006-12-09 XML standardy pokrewne 15 Tradycyjne hiperlinki HTML-owe są dość ograniczone. XLink znosi te ograniczenia, pozwalając na wiązanie linkiem więcej niŝ dwóch zasobów oraz na zapisywanie informacji o liknku w dowolnym miejscu, takŝe poza zasobami połączonymi linkiem. Dobrym przykładem linku łączącego wiele zasobów jest połączenie dokumentów opisujących cztery osoby: męŝa, Ŝonę, syna i córkę. Taki link moŝe nosić nazwę rodzina. 15
Terminologia Zasób (resource) dowolna adresowalna jednostka informacji lub usługa. Dowiązanie (link) jawnie wyraŝona (przy pomocy elementu wiąŝącego (linking element)) relacja pomiędzy zasobami. te zasoby uczestniczą (participate) w dowiązaniu. Przejście (traversal) uŝycie pary zasobów połączonej dowiązaniem. Łuk (arc) informacja o przejściu między dwoma zasobami (kierunek, zachowanie aplikacji, itp.): wychodzący (outbound), wchodzący (inbound), niezaleŝny (third party). 2006-12-09 XML standardy pokrewne 16 Jeśli link łączy wiele zasobów, to istotne staje się, jak będzie moŝna pomiędzy nimi nawigować. Określają to przejścia pomiędzy zasobami. Domyślnie przejścia są tworzone dla kaŝdej pary zasobów uczestniczących w linku, ale moŝna to ograniczyć tylko do wybranych przejść. Przejścia są zapisane w postaci łuków, określających m. in. kierunek przejścia, sposób zachowania aplikacji w momencie wykonania przejścia (np. otwarcie nowego okna lub zastąpienie treści w bieŝącym oknie), itp. 16
Dowiązania XLink Extended link: wiąŝe dowolną liczbę zasobów: zasoby zewnętrzne (np. odwołania do innych dokumentów), zasoby lokalne (zawarte w elemencie wiąŝącym). łuki opisujące sposoby przechodzenia pomiędzy zasobami, role zasobów uczestniczących w linku, role łuków. Simple link: link wychodzący, wiąŝe dokładnie 2 zasoby: 1 lokalny i 1 zewnętrzny, jeden łuk z zasobu lokalnego do zewnętrznego. 2006-12-09 XML standardy pokrewne 17 Linki proste odpowiadają modelowi znanemu z HTML-a. Ciekawsze są linki rozszerzone, któe mogą łączyć wiele zasobów. 17
Simple link przykład <osoba xmlns:xlink="http://www.w3.org/1999/xlink"> <nazwisko>kopernik, Mikołaj</nazwisko> <biogram>wybitny polski astronom, matematyk, lekarz, prawnik, tłumacz poezji włoskiej i ekonomista, pochodził z rodziny wywodzącej się z mieszczan krakowskich. Urodzony w <geogr xlink:type="simple" xlink:href="torun.xml">toruniu</geogr>.</biogram> </osoba> 2006-12-09 XML standardy pokrewne 18 Link jest zapisany w elemencie geogr. Parser rozpoznaje link nie po nazwie elementu (jak w HTML-u), lecz po wystąpieniu specjalnego atrybutu xlink:type. Dzięki temu linki moŝna umieszczać w elementach o dowolnych nazwach (zgodnie z duchem XML-a, który nie ogranicza repertuaru nazw elementów). 18
Extended link - przykład <fikcja xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="extended"> <wypowiedz xlink:type="resource">kopernik była kobietą!</wypowiedz> <film xlink:type="locator" xlink:href="seksmisja.xml" xlink:title="seksmisja"/> <osoba xlink:type="locator" xlink:href="kopernik.xml" xlink:title="kopernik, Mikołaj"/> <pojecie xlink:type="locator" xlink:href="kobieta.xml" xlink:title="kobieta"/> </fikcja> 2006-12-09 XML standardy pokrewne 19 Pokazany na slajdzie link rozszerzony łączy cztery zasoby: jeden lokalny (zapisany w elemencie wypowiedz) oraz trzy zewnętrzne, znajdujące się w osobnych dokumentach. 19
Przyszłość XLink Zastosowania: organizowanie, kojarzenie zasobów, nawet gdy nie mamy prawa zapisu, dostarczanie wartości dodanej zbiorów linków. Zasięg: lokalny: serwery linków operujące na bazie linków, Internet? Problemy: wizualizacja extended links, synchronizacja zasobów i linków (Internet). 2006-12-09 XML standardy pokrewne 20 XLink nie jest powszechnie wykorzystywany. Spotyka się wprawdzie serwery linków, które przechowują linki poza dokumentami, w bazie danych, i nanoszą je na dokumenty wtedy, gdy chcemy je wyświetlić. Są to jednak póki co prace badawcze. Zastosowanie XLink w Internecie moŝe napotkać zasadnicze problemy infrastrukturalne: skąd moja przeglądarka internetowa ma wiedzieć, Ŝe dokument, któy chcę wyświetlić na mojej prywatnej stronie uczestniczy w linku stworzonym przez kogoś na drugim końcu świata? Nawet kwestia sensownego wyświetlania linkó łączących więcej niŝ dwa zasoby nie jest problemem trywialnym. MoŜna sobie jednak wyobrazić nowy model biznesowy działania przyszłych wydawnictw, które zamiast sprzedawać treść (np. czasopisma, encyklopedie), mogłyby sprzedawać bazy linków porządkujące treść dostępną w Internecie, mimo Ŝe nie mają prawa modyfikowania tej treści. Taka baza linków choć nie obejmująca samej treści mogłaby sama w sobie posiadać wartość poznawczą i ekonomiczną. 20
XForms zaawansowane formularze Odpowiedź na ograniczenia formularzy w HTML-u: kontrola dziedziny wprowadzanych danych po stronie klienta, specyfikowanie pól obowiązkowych i opcjonalnych, zaleŝności między polami, np.: wartość pola jest funkcją wartości innych pól, pole jest widoczne tylko przy określonej zawartości innych pól; wyzwalacze aktywowane zdarzeniami interfejsu uŝytkownika, bogaty zasób kontrolek, np.: powtórzenia, grupy, wielopoziomowe wybory, suwaki do wyboru wartości z zakresu, kontrolki wyboru plików. Status: rekomendacja W3C z 14 października 2003 r., moŝliwość zanurzania w XHTML-u. 2006-12-09 XML standardy pokrewne 21 Formularze internetowe dostępne w HTML-u mają bardzo ograniczone moŝliwości: nie pozwalają (bez uŝycia dodatkowych skomplikowanych mechanizmów) na kontrolę poprawności wpisywanych wartości, nie umoŝliwiają sterowania widocznością pewnych pól w zaleŝności od wartości innych pól (np. pole Nr karty kredytowej widoczne tylko wtedy, gdy jako formę płatności wybrano kartę), itp. Te niedogodności rozwiązuje standard XForms. Nie jest on powszechnie uŝywany aby korzystać z formularzy XForms w popularnych przeglądarkach internetowych, trzeba instalować dodatkowe wtyczki. Przygotowywana właśnie wersja 2.0 rekomendacji XHTML będzie jednak zawierała XForms jako swą integralną część, co daje szanse na szersze wykorzystanie XForms. 21
XForms prosty formularz <html xmlns="http://www.w3.org/1999/xhtml" xmlns:xf="http://www.w3.org/2002/xforms"> <head> <xf:model id="model1"> <xf:instance> <dane xmlns=""><imię/><nazwisko/></dane> </xf:instance> <xf:submission id="submit" method="post" action="http://xformstest.org/test"/> </xf:model> </head> <body> <h1>wpisz swoje dane</h1> <xf:input model="model1" ref="imię"> <xf:label>imię</xf:label> </xf:input> <xf:input model="model1" ref="nazwisko"> <xf:label>nazwisko</xf:label> </xf:input> <xf:submit submission="submit"> <xf:label>save</xf:label> </xf:submit> </body> </html> 2006-12-09 XML standardy pokrewne 22 W definicji formularza XForms osobno definiuje się model danych (fragment dokuemntu XML, w którym zostaną zapisane wartości wprowadzone na formularzu), a osobno wizualizację formularza. Wizualizacja, oprócz samych pól, moŝe zawierać elementy interaktywne oraz definiować zaleŝności pomiędzy polami. 22
XForms przykład (program X-Smiles) Źródło: Kazienko, P., Co tam panie w XML-u?, Software 2.0, 6/2003 2006-12-09 XML standardy pokrewne 23 23
Gdzie szukać dalej: programowanie SAX Home Page: www.saxproject.org Document Object Model (DOM): www.w3.org/dom xml.coverpages.org/dom.html Common API for XML Pull Parsing www.xmlpull.org IBM alphaworks: www.alphaworks.ibm.com Free XML tools and software Lars Marius Garshol: www.garshol.priv.no/download/xmltools/ XML w Javie: java.sun.com/xml 2006-12-09 XML standardy pokrewne 24 24
Gdzie szukać dalej: programowanie Gajda, P., SAX i DOM, czyli XML w naszych aplikacjach Software 2.0, nr 6/2001, Wydawnictwo Software Brauncajs, T., JAXB i Castor wiązanie XML-a w Javie Software 2.0, nr 6/2002, Wydawnictwo Software Plechawski, M., Nie pozwól się popychać Software 2.0, nr 6/2003, Wydawnictwo Software Czarnik, P., Alternatywne źródła zdarzeń SAX Software 2.0, nr 6/2004, Wydawnictwo Software 2006-12-09 XML standardy pokrewne 25 25
Gdzie szukać dalej Arciniegas, A. F., What is XLink? www.xml.com/pub/a/2000/09/xlink Carr, L., Initial Experiences of an XLink Implementation journals.ecs.soton.ac.uk/xml4j/xlinkexperience.html XForms Institute. Interactive XForms School xformsinstitute.com Dubinko, M., What Are XForms? www.xml.com/pub/a/2001/09/05/xforms.html Dubinko, M., Ten Favorite XForms Engines www.xml.com/pub/a/2005/02/09/xforms.html Kazienko, P., Co tam panie w XML-u? Software 2.0, nr 6/2003, Wydawnictwo Software 2006-12-09 XML standardy pokrewne 26 26