Title: XML
1XML standardy pokrewne
2Standardy wykorzystywane w przetwarzaniu
dokumentów XML
- XPath XML Path Language.
- XSLT Extensible Styleshheet Language
Transformations. - Modele dostepu programistycznego do dokumentów
XML - SAX Simple API for XML,
- przetwarzanie strumieniowe (ang. pull parsing),
- DOM Document Object Model,
- wiazanie XML-a (ang. XML data binding), np. JAXB.
- XQuery XML Query Language.
- XLink uogólnione dowiazania (linki).
- XForms uogólnione formularze internetowe.
- XML Signature podpis elektroniczny.
- XML Encryption szyfrowanie dokumentów XML.
- ...
3Modele dostepu do dokumentu XML
- Pozwalaja programistom na wysokopoziomowy dostep
do zawartosci dokumentów XML - korzystamy z abstrakcyjnych obiektów,
- nie troszczymy sie o analize leksykalna i
skladniowa. - SAX Simple API for XML
- model zdarzeniowy.
- DOM Document Object Model
- obiektowy model drzewa struktury,
- zwykle implementowanyprzy uzyciu SAX.
- XML data binding wiazanie XML-a.
- Pull parsing przetwarzanie strumieniowe.
4Implementacja modelu parser
- Parser (procesor) XML-a modul programistyczny
analizujacy dokument XML i udostepniajacy jego
zawartosc w postaci abstrakcyjnego modelu. - Funkcjonalnosc parsera
- analiza leksykalna i skladniowa,
- sprawdzenie poprawnosci strukturalnej
(opcjonalnie). - Uniwersalnosc niezaleznosc od konkretnego
jezyka (schematu, typu dokumentu)! - Po co abstrakcyjne modele
- jednolity sposób programowania, niezaleznie od
uzytego parsera, - mozliwosc wymiany parsera,
- mozliwosc porównywania parserów.
5Dzialanie modelu SAX przyklad
lt?xml version"1.0"?gt ltwiersz bialy"nie"gt
ltautorgt William Shakespeare lt/autorgt
lt/tytulgt lt/wierszgt
Aplikacja
startDocument()
startElement("wiersz", bialy"nie" )
ignorableWhitespace(spacje)
startElement("autor",)
characters("William...")
endElement("autor")
ignorableWhitespace(spacje)
Parser
6Drzewo DOM przyklad
lt?xml version"1.0"?gt ltwierszgt ltautorgtWilliam
Shakespeare lt/autorgt lttytulgtSonet
102lt/tytulgt ltzwrotkagt ltwersgt...lt/wersgt
... lt/zwrotkagt lt/wierszgt
7SAX ? DOM
- Cale drzewo dokumentu ladowane do pamieci.
- Oszczedny czasowo i pamieciowo.
- Kosztowny czasowo i pamieciowo.
- Dobry do wylawiania z dokumentu wybranych
elementów.
- Pozwala wedrowac po drzewie dokumentu.
- Dokument tylko do odczytu
- Pozwala tworzyc i modyfikowac dokumenty.
8Przetwarzanie strumieniowe (pull parsing)
- Alternatywa dla modelu SAX
- aplikacja wyciaga kolejne zdarzenia z parsera,
- przetwarzanie kontrolowane przez aplikacje, a nie
parser, - parser dziala podobnie jak iterator, kursor lub
strumien danych, - zachowane cechy modelu SAX
- duza wydajnosc,
- mozliwosc przetwarzania dowolnie duzych
dokumentów. - Najwazniejsze zalety
- mozliwosc przerwania przetwarzania przed koncem
pliku, - mozliwosc 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.
9SAX a przetwarzanie strumieniowe
10SAX czy pull parsing co wybrac?
- Kiedy uzywac modelu wsadowego
- potencjalnie duze dokumenty,
- stosunkowo proste, lokalne operacje,
- wazna jest efektywnosc.
- Pull parsing sprawdza sie, gdy
- konczymy przetwarzanie po wystapieniu
poszukiwanych danych, - przetwarzanie zdarzenia zalezy od kontekstu (np.
od tego, czy jestesmy wewnatrz pewnego elementu), - przetwarzamy równolegle wiecej niz jeden plik
(np. porównujemy pliki). - SAX sprawdza sie, gdy
- chcemy odfiltrowac dokument interesuja nas
tylko wybrane elementy - za jednym przebiegiem dokonujemy kilka
niezaleznych rodzajów przetwarzania.
11Wiazanie XML-a (XML data binding)
- Dokumenty XML a obiekty Javy
- DTD/schemat odpowiada definicji klasy,
- dokument XML (instancja schematu) odpowiada
obiektowi (instancji klasy). - Pomysl
- automatyczne generowanie klas z DTD/schematów.
- Róznice w stosunku do modelu uniwersalnego (np.
DOM) - zestaw typów/klas i funkcji/metod zalezy od typu
dokumentu, - struktura mniej kosztowna pamieciowo,
- intuicyjny interfejs dostepu do zawartosci,
- modyfikacja struktury i wartosci tylko w ramach
tego samego typu dokumentu.
12DOM czy data binding co wybrac?
- Kiedy uzywac modelu pamieciowego
- nieduze dokumenty (musza miescic sie w pamieci),
- operacje wymagajace jednoczesnego dostepu do
wielu wezlów, - tworzenie, edycja i zapisywanie dokumentów w
kodzie. - DOM sprawdza sie, gdy
- struktura dokumentów jest nieznana,
niedoprecyzowana lub zmienna, - dopuszczalna jest nizsza efektywnosc.
- Data binding sprawdza sie, gdy
- struktura dokumentu jest ustalona i znana (XML
Schema/DTD), - obiekty w aplikacji sa czytanie z dokumentów XMLi
zapisywane do dokumentów XML (np. w
zastosowaniach zwiazanych z wymiana danych).
13XML i Java
- Ideologia
- Java umozliwia uruchamianie raz napisanych
programów na wielu platformach sprzetowych/systemo
wych, - XML stanowi uniwersalny nosnik danych, przenosny
pomiedzy platformami sprzetowymi i systemami
operacyjnymi. - Praktyka
- wsparcie dla Unicode i róznych standardów
kodowania, - wsparcie dla XML juz w bibliotece standardowej
(JAXP), - wiele narzedzi wspierajacych i uzywajacych XML w
Javie - JAXB, SJSXP,
- JAXR (rejestry w XML),
- XML Signature (podpis elektroniczny),
- JAX-RPC, SOAP (programowanie rozproszone).
14JAXP
- Java API for XML Processing
- definicja interfejsów, za pomoca których
programisci moga przetwarzac dokumenty XML we
wlasnych aplikacjach, - wzorcowa implementacja,
- mozliwosc podmiany implementacji wybranego modulu
(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 (?).
15XLink dowiazania w XML-u
- Linki jakie znamy (HTML)
- lacza dwa dokumenty zródlo i cel linku,
- zródlem linku jest zawsze element opisujacy link
(A, IMG). - XLink rozszerzona koncepcja dowiazan
- dowolne elementy przechowuja informacje o
linkach, - informacja o linkach poza polaczonymi
dokumentami, - wiecej niz dwa konce linku.
- Status
- rekomendacja W3C z 27 czerwca 2001,
- korzenie historyczne HyTime.
16Terminologia
- Zasób (resource) dowolna adresowalna jednostka
informacji lub usluga. - Dowiazanie (link) jawnie wyrazona (przy pomocy
elementu wiazacego (linking element)) relacja
pomiedzy zasobami. - te zasoby uczestnicza (participate) w dowiazaniu.
- Przejscie (traversal) uzycie pary zasobów
polaczonej dowiazaniem. - Luk (arc) informacja o przejsciu miedzy dwoma
zasobami (kierunek, zachowanie aplikacji, itp.) - wychodzacy (outbound),
- wchodzacy (inbound),
- niezalezny (third party).
17Dowiazania XLink
- Extended link
- wiaze dowolna liczbe zasobów
- zasoby zewnetrzne (np. odwolania do innych
dokumentów), - zasoby lokalne (zawarte w elemencie wiazacym).
- luki opisujace sposoby przechodzenia pomiedzy
zasobami, - role zasobów uczestniczacych w linku,
- role luków.
- Simple link
- link wychodzacy,
- wiaze dokladnie 2 zasoby 1 lokalny i 1
zewnetrzny, - jeden luk z zasobu lokalnego do zewnetrznego.
18Simple link przyklad
- ltosoba xmlnsxlink"http//www.w3.org/1999/xlink"gt
ltnazwiskogtKopernik, Mikolajlt/nazwiskogtltbiogramgtW
ybitny polski astronom, matematyk, lekarz,
prawnik, tlumacz poezji wloskiej i ekonomista,
pochodzil z rodziny wywodzacej sie z mieszczan
krakowskich. Urodzony w ltgeogr xlinktype"simple"
xlinkhref"Torun.xml"gtToruniult/geogrgt.lt/biogramgt
lt/osobagt
19Extended link - przyklad
- ltfikcja xmlnsxlink"http//www.w3.org/1999/xlink"
xlinktype"extended"gt ltwypowiedz
xlinktype"resource"gtKopernik byla
kobieta!lt/wypowiedzgt ltfilm xlinktype"locator"
xlinkhref"seksmisja.xml"
xlinktitle"Seksmisja"/gt ltosoba
xlinktype"locator" xlinkhref"kopernik.xml"
xlinktitle"Kopernik, Mikolaj"/gt
ltpojecie xlinktype"locator"
xlinkhref"kobieta.xml"
xlinktitle"kobieta"/gtlt/fikcjagt
20Przyszlosc XLink
- Zastosowania
- organizowanie, kojarzenie zasobów, nawet gdy nie
mamy prawa zapisu, - dostarczanie wartosci dodanej zbiorów linków.
- Zasieg
- lokalny serwery linków operujace na bazie
linków, - Internet?
- Problemy
- wizualizacja extended links,
- synchronizacja zasobów i linków (Internet).
21XForms zaawansowane formularze
- Odpowiedz na ograniczenia formularzy w HTML-u
- kontrola dziedziny wprowadzanych danych po
stronie klienta, - specyfikowanie pól obowiazkowych i opcjonalnych,
- zaleznosci miedzy polami, np.
- wartosc pola jest funkcja wartosci innych pól,
- pole jest widoczne tylko przy okreslonej
zawartosci innych pól - wyzwalacze aktywowane zdarzeniami interfejsu
uzytkownika, - bogaty zasób kontrolek, np.
- powtórzenia, grupy, wielopoziomowe wybory,
- suwaki do wyboru wartosci z zakresu,
- kontrolki wyboru plików.
- Status
- rekomendacja W3C z 14 pazdziernika 2003 r.,
- mozliwosc zanurzania w XHTML-u.
22XForms prosty formularz
- lthtml xmlns"http//www.w3.org/1999/xhtml"
xmlnsxf"http//www.w3.org/2002/xforms"gt
ltheadgt ltxfmodel id"model1"gt
ltxfinstancegt ltdane xmlns""gtltimie/gtltnazwi
sko/gtlt/danegt lt/xfinstancegt
ltxfsubmission id"submit" method"post"
action"http//xformstest.org/test"/gt
lt/xfmodelgt lt/headgt ltbodygt lth1gtWpisz
swoje danelt/h1gt ltxfinput model"model1"
ref"imie"gt ltxflabelgtImielt/xflabelgt
lt/xfinputgt ltxfinput model"model1"
ref"nazwisko"gt ltxflabelgtNazwiskolt/xflabel
gt lt/xfinputgt ltxfsubmit
submission"submit"gt ltxflabelgtSavelt/xflabe
lgt lt/xfsubmitgt lt/bodygt lt/htmlgt
23XForms przyklad (program X-Smiles)
Zródlo Kazienko, P.,Co tam panie w XML-u?,
Software 2.0, 6/2003
24Gdzie szukac 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
25Gdzie szukac 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 wiazanie XML-a w
Javie - Software 2.0, nr 6/2002, Wydawnictwo Software
- Plechawski, M., Nie pozwól sie popychac
- Software 2.0, nr 6/2003, Wydawnictwo Software
- Czarnik, P., Alternatywne zródla zdarzen SAX
- Software 2.0, nr 6/2004, Wydawnictwo Software
26Gdzie szukac 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.ht
ml - 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