XML i nowoczesne technologie zarządzania treścią

Download Report

Transcript XML i nowoczesne technologie zarządzania treścią

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:
–
–
–
–
•
•
•
•
•
•
2006-12-09
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
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
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
Działanie modelu SAX – przykład
<?xml version="1.0"?>
Aplikacja
startDocument()
<wiersz bialy="nie">
<autor>
startElement("wiersz",
William Shakespeare
[bialy="nie" ])
</autor>
ignorableWhitespace(spacje)
</tytul>
startElement("autor",[])
</wiersz>
characters("William...")
endElement("autor")
ignorableWhitespace(spacje)
Parser
throw SAXException
setDocumentHandler
2006-12-09
XML – standardy pokrewne
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>
William Shakespeare
2006-12-09
XML – standardy pokrewne
<tytul>
Sonet 102
<zwrotka>
<wers>
<wers>
<wers>
6
SAX  DOM
 Przetwarzanie wsadowe.
 Całe drzewo dokumentu
 Oszczędny czasowo i
 Kosztowny czasowo i
pamięciowo.
 Dobry do wyławiania z
dokumentu wybranych
elementów.
 Dokument tylko do odczytu
ładowane do pamięci.
pamięciowo.
 Pozwala wędrować po drzewie
dokumentu.
 Pozwala tworzyć i
modyfikować dokumenty.
2006-12-09
XML – standardy pokrewne
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
SAX a przetwarzanie strumieniowe
Pull parsing:
SAX:
aplikacja myContentHandler
parser
aplikacja
parser
parse()
next()
next()
next()
next()
2006-12-09
XML – standardy pokrewne
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
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):
–
–
–
–
2006-12-09
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
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
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:
•
•
•
•
2006-12-09
JAXB, SJSXP,
JAXR (rejestry w XML),
XML Signature (podpis elektroniczny),
JAX-RPC, SOAP (programowanie rozproszone).
XML – standardy pokrewne
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
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
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
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
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
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
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
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
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
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
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
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
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