|
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[Author:RG]
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.
8 Przedmowa
Organizacja książki 9
H:\Książki\!Kudlaty\Java i XML\92 po poprawkach korektora\00-08.doc — strona 8
H:\Książki\!Kudlaty\Java i XML\92 po poprawkach korektora\00-08.doc — strona 9
H:\Książki\!Kudlaty\Java i XML\92 po poprawkach korektora\00-08.doc — strona 7
Usunęłam 3 krótkie akapity.