Java i XML - Brett McLaughlin [Helion].pdf

(3574 KB) Pobierz
Java i XML
7
Przedmowa
XML, XML, XML... Ten skrót pojawia si ę na czapeczkach i koszulkach. W ka Ŝ dym czasopi ś mie
technicznym, w radiu, w czasopismach kobiecych... no, mo Ŝ e sprawy nie zaszły jeszcze tak daleko,
ale niewiele brakuje. XML, rozszerzalny j ę zyk znaczników (ang. Extensible Markup Language) ,
wydaje si ę pojawia ć w ka Ŝ dej bran Ŝ y technicznej, a szczególnie cz ę sto słycha ć o nim w ś rodo-
wisku programistów j ę zyka Java ® . Aplikacji nie uwa Ŝ a si ę ju Ŝ za produkt przemysłowy, je ś li nie
u Ŝ yto w niej w jaki ś sposób j ę zyka XML. Wreszcie powstała mo Ŝ liwo ść nowych zastosowa ń dla
starych, firmowych systemów, a przedsi ę biorstwa oszcz ę dzaj ą miliony i miliardy dolarów na inte-
gracji systemów — wszystko dzi ę ki tym trzem literkom. Programi ś ci Javy b ę d ą zmuszeni do przy-
swajania sobie jeszcze jednej technologii, a zadanie wydaje si ę by ć tym trudniejsze, im bardziej
si ę w nie zagł ę bi ć . Drog ę do XML-a wytyczaj ą kolejne skróty: XSL, XPath, RDF, XML Schema,
DTD, PI, XSLT, XSP, JAX ® , SAX, DOM i inne. I nie ma ju Ŝ chyba dyrektora, który nie wyma-
gałby od swojego personelu informatycznego znajomo ś ci XML-a!
Kiedy na pocz ą tku 1998 roku XML zyskał status specyfikacji formalnie okre ś lonej przez World
Wide Web Consortium, niewiele osób zgodziłoby si ę uzna ć , Ŝ e powstała wła ś nie najwspanialsza
technologia od czasów Javy (a mo Ŝ e jeszcze wspanialsza!). Ale ju Ŝ dwa lata pó ź niej XML i grupa
technologii słu Ŝą cych do manipulacji tym j ę zykiem zacz ę ły stanowi ć podstawowy sposób repre-
zentacji danych w Javie. XML ma szans ę wnie ść do formatu danych to, co Java wniosła do
j ę zyków programowania — całkowit ą przeno ś no ść . I wła ś ciwie to zamierzenie twórców Javy
osi ą gn ąć mo Ŝ na tylko dzi ę ki j ę zykowi XML; przeno ś no ść Javy bardzo ucierpiała ze wzgl ę du na
u Ŝ ywane od lat, firmowe formaty danych — aplikacja mogła zosta ć uruchomiona na wielu platfor-
mach, ale nie w wielu firmach, na standardowym formacie danych. XML mo Ŝ e rozwi ą za ć ten
problem — powoduje, Ŝ e te firmowe formaty danych zaczynaj ą by ć zb ę dne i umo Ŝ liwia wzajemne
komunikowanie si ę systemów za pomoc ą standardowej reprezentacji danych.
To ksi ąŜ ka o j ę zyku XML, ale napisana głównie z my ś l ą o programistach Javy. Zarówno XML,
jak i Java s ą pot ęŜ nymi narz ę dziami. W tej ksi ąŜ ce jednak uwaga skupiona zostanie na tym, jak ze
sob ą współpracuj ą — to wła ś nie dzi ę ki tej współpracy XML staje si ę naprawd ę pot ęŜ n ą technolo-
gi ą . Przedstawione zostan ą Ŝ ne słowniki XML. Czytelnik nauczy si ę tworzy ć , zaw ęŜ a ć i prze-
kształca ć XML, pozna tak Ŝ e wszystkie interfejsy programistyczne (API) do obsługi j ę zyka XML
z poziomu kodu Javy. W ksi ąŜ ce zostan ą tak Ŝ e podj ę te najciekawsze zagadnienia dotycz ą ce j ę zyka
XML: dynamiczna zawarto ść , usługi powiadamiania, e-biznes i składnice danych. Za ka Ŝ dym ra-
zem b ę dzie stosowany ten sam, w ą ski punkt widzenia programisty, któremu zale Ŝ y na wykonaniu
konkretnego zadania z u Ŝ yciem opisywanych narz ę dzi. Zostan ą przedstawione narz ę dzia, jakie
85876032.001.png
OrganizacjaksiąŜki
8
udost ę pnia XML; a je ś li istnieje co ś , co — cho ć popularne! — nie jest zbyt u Ŝ yteczne, zostanie
tylko pobie Ŝ nie omówione. Je Ŝ eli natomiast która ś wyj ą tkowo przydatna funkcja XML-a sprawia
wra Ŝ enie „ukrytego rodzynka” — zostanie on wydobyty i opisany pod k ą tem u Ŝ yteczno ś ci. Java
i XML ma słu Ŝ y ć pomoc ą Czytelnikowi. Nie jest pozycj ą referencyjn ą ani nie ma na celu reklamo-
wania standardu XML.
Połowa tej ksi ąŜ ki to kod — praktyczny i działaj ą cy. Mo Ŝ na go tak Ŝ e pobra ć z Internetu, ale umie-
szczono go w ksi ąŜ ce po to, aby Czytelnik mógł prze ś ledzi ć proces tworzenia ró Ŝ nych aplikacji
XML. Czytelnik powinien wi ę c raczej zagł ę bia ć si ę w te przykłady, a nie je pomija ć . Jest tutaj
przedstawiony tak Ŝ e nowy interfejs API do manipulacji XML-em z poziomu Javy — został on
opisany w pełni, z przykładami. To ksi ąŜ ka dla programisty Javy, dlatego zastosowano podej ś cie
praktyczne. To nie jest ani teoretyczny, ani pobie Ŝ ny przegl ą d „fajnej” technologii. Tam, gdzie to
mo Ŝ liwe, unikamy słów-haseł; tam, gdzie nie — podajemy ich precyzyjne definicje. Cały kod oraz
rozwi ą zania z tej ksi ąŜ ki zostały r ę cznie wpisane do edytora i przetestowane. S ą tutaj po to, by
pomóc Czytelnikowi w solidnym opanowaniu Javy i XML-a.
OrganizacjaksiąŜki
Ksi ąŜ ka została podzielona w szczególny sposób. W pierwszej połowie (rozdziały 1. do 7.) został
przedstawiony standard XML oraz najwa Ŝ niejsze interfejsy API Javy do jego obsługi. Mo Ŝ e nie s ą
to rozdziały niezwykle interesuj ą ce, jednak powinny by ć czytane w proponowanej kolejno ś ci,
a przynajmniej dokładnie przejrzane — nawet je ś li XML nie jest Czytelnikowi obcy. Rozdział 8.
to jakby fragment przej ś ciowy pomi ę dzy dwiema cz ęś ciami ksi ąŜ ki. Opisano w nim niezwykle
ciekawy nowy interfejs API do obsługi XML-a z poziomu Javy — JDOM. Ten rozdział trzeba
przeczyta ć koniecznie, poniewa Ŝ publikacja tego interfejsu zbiegnie si ę z wprowadzeniem niniej-
szej ksi ąŜ ki do sprzeda Ŝ y, a tutaj przedstawiono pełne materiały referencyjne odno ś nie tego API
(interfejs ten, który autor utworzył wraz z Jasonem Hunterem, ukierunkowany jest wła ś nie na roz-
wi ą zywanie problemów z wykorzystaniem Javy i XML-a!). W pozostałej cz ęś ci ksi ąŜ ki (rozdziały
9. do 14.) omawiane s ą specyficzne tematy zwi ą zane z XML-em, nieustannie poruszane na konfe-
rencjach i w samouczkach programistów. Analiza tych tematów pozwoli Czytelnikowi maksymal-
nie wykorzysta ć XML we własnych aplikacjach — i to od zaraz! Ksi ąŜ k ę zamykaj ą dwa dodatki.
Poni Ŝ ej przedstawiony jest skrótowy opis poszczególnych rozdziałów:
Rozdział 1. Wprowadzenie
Omówienie alfabetu XML-a i próba znalezienia odpowiedzi na pytanie, dlaczego standard
ten jest tak istotny dla obecnych i przyszłych aplikacji stosowanych w przedsi ę biorstwach.
Rozdział 2. Tworzenie dokumentów XML
Omówienie procesu budowania dokumentu XML od podstaw; zastosowanie najwa Ŝ niejszych
konstrukcji XML, takich jak elementy, atrybuty, encje.
Rozdział 3. Przetwarzanie kodu XML
Przedstawienie interfejsu API Javy słu Ŝą cego do obsługi XML-a — Simple API for XML
(SAX). Szczegółowo opisano proces przetwarzania oraz zdarzenia udost ę pniane przez
interfejs SAX, przeznaczone do wykorzystania przez programistów.
Rozdział 4. Zaw ęŜ anie danych XML
Przedstawienie dwu sposobów zaw ęŜ enia dokumentu XML: zastosownie definicji typu doku-
mentu (DTD) oraz XML Schema.
OrganizacjaksiąŜki
9
Rozdział 5. Sprawdzanie poprawno ś ci składni XML-a
Uzupełnienie poprzedniego rozdziału. Omówiono, jak za pomoc ą poznanego interfejsu SAX
umo Ŝ liwi ć weryfikacj ę składni dokumentu oraz reagowa ć , gdy dokument wykracza poza na-
rzucone zaw ęŜ enia.
Rozdział 6. Przekształcanie kodu XML
Opis rozszerzalnego j ę zyka arkuszy stylów XSL oraz innych istotnych komponentów słu Ŝą -
cych do przekształcania dokumentów XML z jednego formatu na inny. Omówiono ró Ŝ ne me-
tody konwersji dokumentów XML na inne formaty tekstowe oraz sposób wykorzystania
obiektów formatuj ą cych do konwersji na formaty binarne.
Rozdział 7. Czerpanie z XML-a
Kontynuacja tematu przekształcania dokumentów XML. Przedstawiono procesory transfor-
macji XML oraz sposoby konwersji dokumentów XML na inne formaty. Opisano równie Ŝ
model obiektowy dokumentu (DOM) i wyja ś niono, w jaki sposób mo Ŝ na za jego pomoc ą ob-
słu Ŝ y ć dane XML.
Rozdział 8. JDOM
Omówienie interfejsu Java API for XML Parsing (JAXP) i próba przeanalizowania, jak du Ŝ e
znaczenie w XML-u ma niezale Ŝ no ść od rozwi ą za ń firmowych. Zaprezentowano te Ŝ interfejs
JDOM, wskazano przyczyny jego powstania, szczegółowo opisano sposób korzystania z nie-
go oraz porównano go z interfejsami SAX oraz DOM.
Rozdział 9. Struktury publikacji WWW
Analiza struktur publikacji WWW i wybór najodpowiedniejszej. Omówiono tak Ŝ e struktur ę
Apache Cocoon oraz wyja ś niono, w jaki sposób korzysta ć z niej przy budowaniu dynami-
cznej zawarto ś ci stron WWW.
Rozdział 10. XML-RPC
Przedstawienie zdalnych wywoła ń procedur (RPC), uwzgl ę dnienie ich znaczenia w systemach
rozproszonych w porównaniu z RMI oraz wyja ś nienie, dlaczego technologie RPC w przy-
padku niektórych problemów tak wiele zyskuj ą dzi ę ki XML-owi. Omówienie biblioteki
XML-RPC Javy oraz konstrukcji klientów XML-RPC.
Rozdział 11. XML na potrzeby konfiguracji
Omówienie sposobów tworzenia danych konfiguracyjnych w postaci XML i wyja ś nienie,
dlaczego format ten jest tak istotny w aplikacjach wieloplatformowych, szczególnie w syste-
mach rozproszonych.
Rozdział 12. Tworzenie danych XML w j ę zyku Java
Przedstawienie procesu generowania i modyfikowania formatu XML z poziomu Javy przy
wykorzystaniu mechanizmów działaj ą cych po stronie serwera, takich jak serwlety. Wskazano
te Ŝ , na co trzeba zwróci ć uwag ę przy dokonywaniu mutacji XML.
Rozdział 13. Operacje typu firma-firma
Omówienie sposobu komunikacji pomi ę dzy firmami i wewn ą trz firmy z wykorzystaniem
przeno ś nego formatu danych XML. Posłu Ŝą do tego przykładowe aplikacje, napisane w ró Ŝ -
nych j ę zykach i porozumiewaj ą ce si ę ze sob ą za pomoc ą XML-a.
Rozdział 14. XML Schema
Omówienie przyczyn niezwykłego zainteresowania specyfikacj ą XML Schema oraz wyja ś -
nienie, dlaczego technologie Java i XML Schema nawzajem si ę uzupełniaj ą .
DlakogojesttaksiąŜka?
10
Dodatek A. Interfejs API — materiał referencyjny
W tym dodatku wymieniono wszystkie klasy, interfejsy i metody dost ę pne w interfejsach
programistycznych SAX, DOM, JAXP i JDOM.
Dodatek B. Funkcje i wła ś ciwo ś ci SAX 2.0
W tym dodatku wymieniono wszystkie funkcje i wła ś ciwo ś ci implementacji interfejsu SAX 2.0.
DlakogojesttaksiąŜka?
Podstaw ą napisania ksi ąŜ ki było przekonanie, Ŝ e XML jest ju Ŝ nieodł ą cznym elementem
programowania w Javie. Ksi ąŜ ka została napisana w taki sposób, Ŝ e najpierw Czytelnik dowiaduje
si ę , jak w ogóle korzysta ć z XML-a i Javy. Nie ma tutaj rozwa Ŝ a ń dotycz ą cych tego, czy powinno
si ę korzysta ć z XML-a. Programista Javy powinien korzysta ć z XML-a. Dlatego, je ś li Czytelnik
programuje w Javie, chce programowa ć w Javie, zarz ą dza programuj ą cymi w Javie lub jest odpo-
wiedzialny albo zwi ą zany z projektem pisanym w Javie — ksi ąŜ ka na pewno mu si ę przyda. Je ś li
Czytelnik chce si ę rozwija ć , pogł ę bia ć wiedz ę programistyczn ą , pisa ć bardziej przejrzysty kod,
tworzy ć udane projekty w terminie i bez przekraczania bud Ŝ etu, musi korzysta ć z danych w forma-
tach firmowych, tworzy ć rozproszone systemy lub po prostu ciekaw jest, sk ą d całe to zaintereso-
wanie XML-em — ksi ąŜ ka na pewno mu si ę przyda.
Pisz ą c ksi ąŜ k ę , starałem si ę czyni ć jak najmniej zało Ŝ e ń . Nie chc ę rozpoczyna ć omawiania XML-a od
takiego poziomu, Ŝ e zniech ę ci to cz ęść Czytelników. Ale uwa Ŝ am tak Ŝ e, Ŝ e je ś li Czytelnik wydał ju Ŝ
pieni ą dze na t ę ksi ąŜ k ę , to zale Ŝ y mu na czym ś wi ę cej ni Ŝ tylko na podstawach. Dlatego zakładam
jedynie znajomo ść Javy i zagadnie ń programowania po stronie serwera (takich jak serwlety Javy czy
komponenty Enterprise JavaBean ® . Je ś li Czytelnik nie miał jeszcze nigdy do czynienia z Jav ą albo
dopiero rozpoczyna przygod ę z tym j ę zykiem, by ć mo Ŝ e warto najpierw przeczyta ć Learning Java Pata
Niemeyera i Jonathana Knudsena (wyd. O'Reilly & Associates). Zakładam, Ŝ e Czytelnik nie wie nic
o XML-u, wi ę c zaczynam od samych podstaw. Ale zakładam równie Ŝ , Ŝ e Czytelnik b ę dzie ci ęŜ ko pra-
cował i szybko przyswajał wiedz ę . Dlatego podstawy zostan ą omówione błyskawicznie, by jak naj-
szybciej przej ść do bardziej zaawansowanych zagadnie ń . Materiał nie b ę dzie wielokrotnie powtarzany
poza tymi miejscami, gdzie jest to absolutnie koniecznie. Mo Ŝ e wi ę c zaj ść potrzeba ponownego
przeczytania wcze ś niejszych fragmentów. Je ś li Czytelnik chce uczy ć si ę XML-a, troch ę zna Jav ę
i przygotowany jest na „wstukanie” przykładowego kodu do swojego ulubionego edytora tekstów, nie
powinien mie ć wi ę kszych problemów z przyswojeniem materiału opisanego w ksi ąŜ ce.
Oprogramowanieiwersje
Informacje w tej ksi ąŜ ce dotycz ą XML-a w wersji 1.0 oraz ró Ŝ nych słowników XML w wersjach
najbardziej aktualnych w czasie uko ń czenia ksi ąŜ ki, tj. w kwietniu 2000 r. Poniewa Ŝ rozmaite spe-
cyfikacje XML nie uzyskały jeszcze ostatecznej postaci, pomi ę dzy drukowan ą wersj ą ksi ąŜ ki
a opisywanymi specyfikacjami mog ą wyst ą pi ć drobne ró Ŝ nice.
Cały kod Javy prezentowany w tej ksi ąŜ ce oparty jest na platformie Java 1.1, za wyj ą tkiem opisów
dotycz ą cych interfejsu JDOM 1.0. Ta odmienno ść jest odnotowana i uzasadniona w odpowiednim
miejscu, w rozdziale 8. Wykorzystano parser Apache Xerces, procesor Apache Xalan oraz biblio-
teki Apache FOP w najnowszych stabilnych wersjach z kwietnia 2000 r. Zastosowano struktur ę
publikacji WWW Apache Cocoon w wersji 1.7.3, a biblioteki Javy XML-RPC w wersji 1.0 beta 3.
Całe oprogramowanie mo Ŝ na pobra ć za darmo z adresów http://java.sun.com , http://xml.apache.org
oraz http://www.xml-rpc.com .
Konwencjetypograficzne
11
Kod ź ródłowy przykładów, w tym klasy narz ę dziowe com.oreilly.xml, jest w cało ś ci zamieszczo-
ny w ksi ąŜ ce. Zarówno kod ź ródłowy, jak i posta ć binarn ą wszystkich przykładów (w tym szerok ą
dokumentacj ę Javadoc) mo Ŝ na pobra ć z adresów http://www.oreilly.com/catalog/javaxml oraz
http://www.newInstance.com . Wszystkie przykłady mog ą ce funkcjonowa ć jako serwlety lub
nadaj ą ce si ę do przekonwertowania na serwlety mo Ŝ na obejrze ć w działaniu online pod adresem
http://www.newInstance.com .
Pełn ą dystrybucj ę JDOM 1.0, wraz ze specyfikacj ą , implementacj ą referencyjn ą , kodem ź ródło-
wym, dokumentacj ą interfejsu oraz postaci ą binarn ą mo Ŝ na pobra ć z adresu http://www.jdom.org .
Ponadto stworzono drzewo CVS zawieraj ą ce kod JDOM i pozwalaj ą ce na uzupełnianie i komento-
wanie ź ródeł. Informacje o tym, jak korzysta ć z CVS-a JDOM, mo Ŝ na znale źć tak Ŝ e pod adresem
http://www.jdom.org .
Konwencjetypograficzne
W ksi ąŜ ce zastosowane zostały nast ę puj ą ce konwencje typograficzne:
Druk pochyły wykorzystywany jest do oznaczania:
·
uniksowych ś cie Ŝ ek dost ę pu, nazw plików i nazw programów,
·
adresów internetowych (nazw domen i identyfikatorów URL),
·
nowych, definiowanych terminów.
Czcionka proporcjonalna oznacza:
·
tekst wpisywany w wierszu polece ń i opcje — czyli to, co ma by ć wpisane dokładnie tak, jak
wydrukowano,
·
nazwy i słowa kluczowe w programach Javy, w tym nazwy metod, zmiennych i klas,
nazwy elementów i znaczników XML-a, nazwy atrybutów i innych konstrukcji XML-a
wygl ą daj ą cych tak, jak wygl ą dałyby w dokumencie XML .
Czcionka proporcjonalna pogrubiona słu Ŝ y do oznaczania:
·
nowo wprowadzonych fragmentów kodu,
·
fragmentów wi ę kszego kodu, które wła ś nie s ą opisywane w tek ś cie.
Opinieikomentarze
Opinie i komentarze dotycz ą ce tej ksi ąŜ ki mo Ŝ na przysyła ć do wydawcy:
O'Reilly & Associates, Inc.
101 Morris Street
Sebastopol, CA 95472
(800) 998-9938 (Stany Zjednoczone lub Kanada)
(707) 829-0515 (mi ę dzynarodowe lub lokalne)
(707) 829-0104 (faks)
Mo Ŝ na tak Ŝ e wysła ć list elektroniczny. W celu zapisania si ę na list ę adresow ą lub zamówienia ka-
talogu, wystarczy wysła ć e-mail pod adres helion@helion.pl.
·
Zgłoś jeśli naruszono regulamin