260 likes | 408 Views
XML – standardy pokrewne. 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,
E N D
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. • ... XML – standardy pokrewne
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 implementowanyprzy użyciu SAX. • XML data binding – wiązanie XML-a. • Pull parsing – przetwarzanie strumieniowe. XML – standardy pokrewne
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. XML – standardy pokrewne
setDocumentHandler throw SAXException Działanie modelu SAX – przykład <?xml version="1.0"?> <wiersz bialy="nie"> <autor> William Shakespeare </autor> </tytul> </wiersz> Aplikacja startDocument() startElement("wiersz", [bialy="nie" ]) ignorableWhitespace(spacje) startElement("autor",[]) characters("William...") endElement("autor") ignorableWhitespace(spacje) Parser XML – standardy pokrewne
<wiersz> <autor> <tytul> <zwrotka> William Shakespeare Sonet 102 <wers> <wers> <wers> Drzewo DOM – przykład <?xml version="1.0"?> <wiersz> <autor>William Shakespeare </autor> <tytul>Sonet 102</tytul> <zwrotka> <wers>...</wers> ... </zwrotka> </wiersz> XML – standardy pokrewne
Przetwarzanie wsadowe. SAX DOM • Całe drzewo dokumentu ładowane do pamięci. • Oszczędny czasowo i pamięciowo. • Kosztowny czasowo i pamięciowo. • Dobry do wyławiania z dokumentu wybranych elementów. • Pozwala wędrować po drzewie dokumentu. • Dokument tylko do odczytu • Pozwala tworzyć i modyfikować dokumenty. XML – standardy pokrewne
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. XML – standardy pokrewne
Pull parsing: SAX: aplikacja myContentHandler parser aplikacja parser parse() next() next() next() next() SAX a przetwarzanie strumieniowe XML – standardy pokrewne
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. XML – standardy pokrewne
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. XML – standardy pokrewne
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). XML – standardy pokrewne
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). XML – standardy pokrewne
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 (?). XML – standardy pokrewne
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. XML – standardy pokrewne
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). XML – standardy pokrewne
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. XML – standardy pokrewne
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> XML – standardy pokrewne
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> XML – standardy pokrewne
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). XML – standardy pokrewne
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. XML – standardy pokrewne
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> XML – standardy pokrewne
XForms – przykład (program X-Smiles) Źródło: Kazienko, P.,Co tam panie w XML-u?, Software 2.0, 6/2003 XML – standardy pokrewne
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 XML – standardy pokrewne
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 XML – standardy pokrewne
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 XML – standardy pokrewne