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 środowisku
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 integracji systemów — wszystko
dzięki tym trzem literkom. Programiści Javy będą zmuszeni do przyswajania
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 wymagał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 reprezentacji
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 platformach, 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ą technologią. Przedstawione zostaną
różne słowniki XML. Czytelnik nauczy się tworzyć, zawężać i przekształ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 razem 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 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 reklamowania standardu XML.
Połowa tej książki to kod — praktyczny i działający. Można go także pobrać z
Internetu, ale umieszczono 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.
Organizacja książ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 niniejszej 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
rozwią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 konferencjach i w samouczkach programistów. Analiza
tych tematów pozwoli Czytelnikowi maksymalnie 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
dokumentu (DTD) oraz XML Schema.
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 narzucone 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 metody 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
transformacji 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ą obsł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 niego 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 dynamicznej 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 przypadku 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 systemach 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ą.
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.
Dla kogo jest ta książ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
odpowiedzialny 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 formatach
firmowych, tworzyć rozproszone systemy lub po prostu ciekaw jest, skąd całe to
zainteresowanie 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
pracował i szybko przyswajał wiedzę. Dlatego podstawy zostaną omówione
błyskawicznie, by jak najszybciej 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.
Oprogramowanie i wersje
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 specyfikacje 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 biblioteki 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.
Kod źródłowy przykładów, w tym klasy narzędziowe com.oreilly.xml, jest w
całości zamieszczony 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łowym, 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 komentowanie źródeł. Informacje o tym, jak
korzystać z CVS-a JDOM, można znaleźć także pod adresem http://www.jdom.org.
Konwencje typograficzne
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.
Opinie i komentarze
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 katalogu, wystarczy wysłać e-mail pod adres helion@helion.pl.
Podziękowania
Kiedy tak spoglądam na plik arkuszy składających się na manuskrypt tej książki,
to widzę, że w tych kilku akapitach nie udałoby się podziękować wszystkim,
którzy przyczynili się do jej powstania. A jednak jest to na pewno prostsze
niż omówienie całej tematyki Javy i XML-a, więc za chwilę spróbuję... Gdybym
kogoś pominął, bardzo proszę — wybaczcie!
Historia tej książki rozpoczęła się w Święto Dziękczynienia w roku 1999. Wtedy
to mój redaktor, Mike Loukides, zaproponował mi napisanie tej książki, mimo
że w tym czasie zajęty byłem pisaniem innej książki dla O'Reilly. Nieco
wahałem się przed odłożeniem na jakieś sześć miesięcy tekstu, którego
tworzenie bardzo mnie pochłonęło. Mike jednak przekonywał mnie tak wprawnie,
jak potem redagował gotowy tekst do czytelniejszej postaci. Teraz ten czas
wspominam jako najciekawszy okres w mojej karierze technicznej i wiem, jak
wiele zawdzięczam właśnie Mike'owi: służył mi wskazówkami przy pisaniu
trudnych, pierwszych rozdziałów; wysłuchał narzekań, gdy trzykrotnie (tak,
trzykrotnie!) zmieniałem rozdział o XML Schema z powodu aktualizacji
specyfikacji; wreszcie, kiedy trzeba było trochę odpocząć, okazywał swoje
wszechstronne zdolności muzyczne. Bez niego ta książka nie osiągnęłaby tak
wysokiego poziomu.
Książce mogłem poświęcić tak wiele wysiłku i czasu tylko dzięki rodzinie i
przyjaciołom: rodzicom, którzy dzień w dzień przez osiemnaście lat zabiegali o
poprawność mojego języka; cioci, która pasjonowała się tym, co robię, nawet
jeśli nie wiedziała, o co w tym chodzi; Jody Durret, Carlowi Henry'emu i Pam
Merryman, którzy poświęcili bardzo dużo czasu na zrobienie ze mnie autora
książek; Gary'emu i Shirley Greathouse'om, którzy zawsze przypominali, abym
wytrwale parł naprzód i nie osiadał na laurach; oraz moim dziadkom, Deanowi i
Gladys McLaughlinom, którzy cały czas mnie wspierali.
Nad merytoryczną poprawnością i precyzją książki czuwali liczni recenzenci
techniczni: Marc Loy, Don Weiss, George Reese (którego komentarze spowodowały
dodanie całego rozdziału!), Matthew Merlo i James Duncan Davidson. Szczególną
pomoc okazał James — pieczołowicie punktował drobne błędy i był brutalnie
szczery, dzięki czemu nigdy nie zapomniałem, że jestem przede wszystkim
programistą, a dopiero potem autorem książek.
Bardzo dużo zawdzięczam Jasonowi Hunterowi, autorowi Java Servlet Programming
(O'Reilly & Associates). Choć pisanie tej książki rozpoczęło się w listopadzie
1999 roku, to przeżyła ona swoiste odrodzenie w marcu 2000, kiedy to Jason i ja
całe popołudnie spędziliśmy na trawniku w Santa Clara, narzekając na istniejące
interfejsy API Javy do obsługi XML-a. Te utyskiwania zaprocentowały w
dwójnasób — przede wszystkim, stworzyliśmy opisywany w tej książce interfejs
JDOM (przy pomocy i zachętach ze strony Jamesa Davidsona z Sun Microsystems).
Uważamy, że interfejs ten znacząco przyczyni się do zacieśnienia współpracy
pomiędzy XML-em i Javą i spowoduje, że XML z punktu widzenia Javy będzie
standardem przejrzystym i użytecznym, a nie zagmatwanym i nieprzydatnym. Po
drugie, bardzo zaprzyjaźniliśmy się z Jasonem. Pomógł mi
w niełatwym procesie tworzenia książki. Niejednokrotnie siedzieliśmy do późnych
godzin nocnych, zastanawiając się, co można zrobić by JDOM i inne programy
działały bardziej intuicyjnie.
Na pewno ta książka nie powstałaby, gdyby nie moja żona, Leigh. Jakimś cudem
wytrzymała i nie wyrzuciła mnie z domu przez te ostatnie 6 miesięcy, w ciągu
których najczęściej byłem zmęczony, nieprzystępny i w ogóle zajęty. Te krótkie
chwile, jakie udawało nam się zdobyć dla siebie po moim pisaniu i pełnoetatowej
pracy konsultanta, sprawiały, że cała moja praca wydawała mi się więcej warta.
Tęsknię już za nią bardzo i nie mogę się doczekać, kiedy wrócę do zwyczajnego
trybu życia właśnie z nią, z naszymi trzema bassetami (Charlie, Molly i Daisy)
i moimi labradorami (Sethem i Mosesem).
Dziękuję też mojemu dziadkowi, Robertowi Earlowi Burdenowi, który nie doczekał
wydania tej książki. Był takim człowiekiem, jakim ja zawsze chciałem być.
Dziękuję mu za to, że nauczył mnie, iż nigdy nie powinienem poprzestawać tylko
na tym, czego oczekują ode mnie inni.
Wyszukiwarka
Podobne podstrony:
TI 00 08 22 T pl(2)TI 00 08 22 T pl(2)TI 00 08 15 T pl(2)TI 00 08 16 B pl(2)WSM 00 08 pl(2)TI 00 08 21 T pl(2)TI 00 08 31 T pl(1)TI 00 08 28 GT T B pl(1)TI 00 08 14 B pl(2)więcej podobnych podstron