JSP i XML

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    Favorites, Groups & Events

    JSP i XML - Presentation Transcript

    1. IDZ DO PRZYK£ADOWY ROZDZIA£ SPIS TRE CI JSP i XML Autorzy: Casey Kochmer, Erica Frandsen KATALOG KSI¥¯EK T³umaczenie: Bartosz Grabski ISBN: 83-7197-802-2 KATALOG ONLINE Tytu³ orygina³u: JSP and XML. Integrating XML and Web Services in Your JSP Application ZAMÓW DRUKOWANY KATALOG Format: B5, stron: 474 Przyk³ady na ftp: 53 kB TWÓJ KOSZYK DODAJ DO KOSZYKA Ksi¹¿ka „JSP i XML” ukazuje praktyczne aspekty wykorzystania jêzyka XML do budowy aplikacji internetowych przy wykorzystaniu Java Server Pages (JSP). Po omówieniu podstaw JSP i XML-a oraz towarzysz¹cych im standardów (XSL, XPath, DOM) autor CENNIK I INFORMACJE opisuje bardziej zaawansowane aspekty u¿ycia jêzyka XML w projektach opartych o JSP i przechodzi do omówienia metod tworzenia us³ug opartych na WWW. ZAMÓW INFORMACJE W ksi¹¿ce omówiono: O NOWO CIACH • XML, XSL i XPath • DOM i parsery DOM (JDOM, dom4j) ZAMÓW CENNIK • Szybkie parsowanie za pomoc¹ SAX • Tworzenie w³asnych znaczników JSP • Uruchamianie w³asnych us³ug WWW CZYTELNIA • Opis us³ugi WWW za pomoc¹ WSDL FRAGMENTY KSI¥¯EK ONLINE Ksi¹¿ce towarzysz¹ dodatki po wiêcone konfiguracji rodowiska programistycznego, wprowadzeniu do JSP, tworzeniu bibliotek znaczników JSP oraz standardom XML, XSLT i Xpath. Wydawnictwo Helion ul. Chopina 6 44-100 Gliwice tel. (32)230-98-63 e-mail: helion@helion.pl
    2. Spis treści O Autorach ...................................................................................... 11 Wprowadzenie ................................................................................. 13 Część I Wprowadzenie do danych, XML-a i usług WWW ...............21 Rozdział 1. Integracja JSP i danych.................................................................... 23 Wykorzystywanie JSP we współpracy z bazą danych ......................................................24 Wprowadzanie danych................................................................................................24 Przegląd kodu wprowadzającego dane .......................................................................27 Przeglądanie danych ...................................................................................................30 Inne rozwa ania.................................................................................................................33 Zarządzanie połączeniami...........................................................................................34 Testowanie komponentów ..........................................................................................34 Testowanie skali..........................................................................................................35 Podstawowe zagadnienia projektowe................................................................................35 U ywanie biblioteki znaczników................................................................................36 Podsumowanie ..................................................................................................................39 Rozdział 2. Wprowadzenie do XML-a i XSL-a ....................................................... 41 Co to jest XML?................................................................................................................41 Reguły XML .....................................................................................................................42 Znaczniki i elementy...................................................................................................43 Deklaracja XML .........................................................................................................45 Deklaracja typu dokumentu ........................................................................................46 Schematy.....................................................................................................................49 Encje znakowe ............................................................................................................49 Sekcje CDATA ...........................................................................................................50 Komentarze .................................................................................................................51 Dokumenty poprawne pod względem składniowym i strukturalnym ........................51 Wykorzystywanie XML-a.................................................................................................52 Przetwarzanie..............................................................................................................52 XSL ...................................................................................................................................53 Łączenie arkuszy stylów .............................................................................................54 Przestrzenie nazw........................................................................................................55 Szablony......................................................................................................................56 Błędy arkusza stylów ..................................................................................................58 Spacje i kodowanie .....................................................................................................59 Deklaracje encji ..........................................................................................................60 Drzewa, węzły i rodzina .............................................................................................61 XPath...........................................................................................................................63 Podsumowanie ..................................................................................................................78
    3. 6 JSP i XML Rozdział 3. Podstawy usług WWW ..................................................................... 79 Czym są usługi WWW? ....................................................................................................79 Czytanie z kryształowej kuli .............................................................................................82 ABC usług WWW.............................................................................................................84 Podstawowe elementy składowe.................................................................................85 Inicjatywy zarządzania usługami................................................................................91 API Javy......................................................................................................................94 Jak u ywać usługi WWW .................................................................................................95 U ywanie SOAP .........................................................................................................96 Surfowanie w Internecie ...........................................................................................102 Podsumowanie ................................................................................................................104 Część II Integracja JSP i XML-a .................................................107 Rozdział 4. Szybkie wprowadzenie do JSP i XML-a ............................................ 109 Związek pomiędzy XML-em i JSP .................................................................................109 Ostrze enie................................................................................................................110 JAXP, Xerces i Xalan ...............................................................................................111 JSP i XML: Przegląd ................................................................................................127 API XML i XSL w Javie.................................................................................................127 DOM (obiektowy model dokumentu XML).............................................................128 SAX (parser XML) ...................................................................................................128 JDOM (reprezentacja dokumentu XML)..................................................................129 dom4j (reprezentacja dokumentu XML) ..................................................................129 JAXB (parser i reprezentacja dokumentu XML)......................................................130 Podsumowanie ................................................................................................................130 Rozdział 5. Używanie DOM .............................................................................. 131 Co to jest DOM? .............................................................................................................131 Zalety DOM ..............................................................................................................132 Wady DOM...............................................................................................................132 Węzły i struktura drzewiasta ...........................................................................................132 Węzeł dokumentu .....................................................................................................133 Programowanie z DOM ..................................................................................................136 Atrybuty ....................................................................................................................139 Przestrzenie nazw......................................................................................................142 Usuwanie węzłów .....................................................................................................143 Przenoszenie węzłów ................................................................................................145 Kopiowanie i dołączanie węzłów .............................................................................147 Programowe tworzenie dokumentu XML ................................................................150 Przenoszenie węzłów pomiędzy dokumentami ........................................................153 TreeWalker ...............................................................................................................155 Nodelterator ..............................................................................................................158 Zakresy......................................................................................................................158 JDOM, dom4j i pośredni DOM ......................................................................................159 Podsumowanie ................................................................................................................159 Rozdział 6. Programowanie SAX ...................................................................... 161 Co to jest SAX?...............................................................................................................161 Działanie SAX.................................................................................................................162 Interfejsy SAX ..........................................................................................................162 Ujemne strony SAX..................................................................................................163 Ró nice pomiędzy SAX1 i SAX2.............................................................................163 Pierwszy przykład SAX............................................................................................164 Znaki i spacje ............................................................................................................167
    4. Przetwarzanie a sprawdzanie prawidłowości strukturalnej ......................................169 Ponownie o znakach .................................................................................................170 Obsługa błędów ........................................................................................................172 Ignorowane spacje ....................................................................................................175 Odwołania do encji ...................................................................................................175 Lokalizator dokumentów ..........................................................................................178 Jak to działa?.............................................................................................................182 Ponownie o przetwarzaniu i sprawdzaniu prawidłowości strukturalnej...................182 U ycie SAX do tworzenia HTML ............................................................................182 Podsumowanie ................................................................................................................186 Rozdział 7. Pomyślne wykorzystanie JSP i XML-a w aplikacji ............................ 187 U ywanie reprezentacji Java dokumentu XML ..............................................................187 Dlaczego nie u yć po prostu SAX bądź DOM?..............................................................188 Instalacja JDOM i dom4j ................................................................................................189 JDOM........................................................................................................................189 dom4j ........................................................................................................................189 Uwagi........................................................................................................................189 Dlaczego JDOM i dom4j?...............................................................................................189 JDOM i dom4j — szybkie porównanie...................................................................190 Najczęstsze sposoby wykorzystywania XML-a............................................................190 U ywanie bazy danych z XML-em.................................................................................191 Pliki inicjalizacyjne XML.........................................................................................192 Przechowywanie danych inicjalizacyjnych ..............................................................192 U ycie nasłuchu do przechowania obiektu DatabaseParameter ...............................194 U ycie modelu XML Java ........................................................................................197 Zagadnienia wątkowania ..........................................................................................200 Otrzymanie liczby wierszy .......................................................................................200 XML i WebRowSet ..................................................................................................201 Tworzenie klasy pomocniczej dom4j .......................................................................201 Tworzenie klasy obsługi bannerów ..........................................................................203 Tworzenie testowej strony JSP .................................................................................206 U ywanie reprezentacji Java dokumentu XML........................................................208 U ywanie JAXB .......................................................................................................208 HashMap kontra reprezentacja Java XML ...............................................................208 Pobieranie plików XML..................................................................................................209 Definiowanie pliku XML..........................................................................................210 Koncepcja projektu XML .........................................................................................212 Odczyt plików XML i tworzenie nowego wyjścia ...................................................213 U ywanie JDOM ......................................................................................................216 Tworzenie końcowej strony JSP...............................................................................217 Podsumowanie ................................................................................................................219 Rozdział 8. Integracja JSP i usług WWW .......................................................... 221 Myślenie w kategoriach JSP i usług WWW ...................................................................221 Biblioteki znaczników kontra usługi WWW ............................................................223 U ycie bibliotek znaczników w celu uzyskania dostępu do usługi WWW..............224 Integracja usługi WWW na stronie JSP ..........................................................................225 Ostrze enie związane z biblioteką znaczników i usługą ..........................................235 Naprawianie błędów sieci .........................................................................................235 Niezawodność usługi WWW....................................................................................236 Kiedy powinno się stworzyć własną usługę WWW?......................................................237 Strony JSP kontra usługa WWW..............................................................................238 Tworzenie korporacyjnej usługi WWW .........................................................................239 Cel przykładu usługi WWW.....................................................................................239 Realia tworzenia usługi WWW ................................................................................240 C:AndrzejPDFJSP i XML000-spis-09.doc (02-10-30) 7
    5. 8 JSP i XML Przygotowanie przykładu..........................................................................................240 Inicjalizacja danych ..................................................................................................241 Dostęp do danych aplikacji.......................................................................................242 Tworzenie rzeczywistej usługi WWW .....................................................................243 Rozmieszczenie usługi WWW .................................................................................245 Gdzie jest WSDL? ....................................................................................................247 Strona JSP do rozmieszczenia pliku deskryptora .....................................................248 Więcej o bezpieczeństwie .........................................................................................249 Tworzenie strony dostępu do usługi .........................................................................250 Pomoc Apache SOAP .....................................................................................................253 Podsumowanie ................................................................................................................253 Rozdział 9. Zaawansowane techniki JSP i XML ................................................ 255 Dostęp do usług WWW z poziomu przeglądarki............................................................255 U ycie apletu ............................................................................................................256 Obsługa du ych dokumentów XML ...............................................................................262 JDOM........................................................................................................................263 dom4j ........................................................................................................................263 Obsługa znaków specjalnych i kodowanie......................................................................268 U ywanie bibliotek znaczników XML ...........................................................................271 Biblioteka znaczników XSL .....................................................................................271 Biblioteka XTags dla XML ......................................................................................273 Podsumowanie ................................................................................................................278 Część III Tworzenie stron JSP przy użyciu XML-a .........................279 Rozdział 10. Wykorzystanie XSL-a i JSP w projektowaniu witryny WWW.............. 281 Bezpośrednie posługiwanie się plikami XML ................................................................281 Jak działa odwzorowanie serwletów?.......................................................................283 Tworzenie programu obsługi serwletu XML ..................................................................285 Tworzenie czytnika SAX..........................................................................................285 Tworzenie serwletu do przetwarzania plików XML ................................................288 Rejestracja serwletu ..................................................................................................292 Tworzenie strony błędu.............................................................................................292 Tworzenie plików testowych ....................................................................................293 Bezpośredni dostęp do XML-a .................................................................................297 Podsumowanie ................................................................................................................298 Rozdział 11. Wykorzystanie XML-a w systemach raportowania............................ 299 Architektura systemów raportowania..............................................................................299 Kiedy u ywać XML-a w raportowaniu...........................................................................300 Źródło danych dla raportów ............................................................................................301 Tworzenie danych w bazie danych ...........................................................................301 ResultSet do XML...........................................................................................................306 Zasada działania........................................................................................................306 Łączenie wszystkiego razem...........................................................................................310 Arkusz stylów sortowania tabeli .....................................................................................314 Arkusz stylów tabeli krzy owej ......................................................................................319 Podsumowanie ................................................................................................................322 Rozdział 12. Zaawansowany XML w systemach raportowania............................. 323 Raporty wielostronicowe.................................................................................................323 JSP dla raportu wielostronicowego...........................................................................324 Arkusz stylów dla raportu wielostronicowego .........................................................329
    6. Raporty z danymi o relacji jeden do wielu......................................................................335 JSP dla raportu jeden do wielu..................................................................................337 Arkusz stylów dla raportu jeden do wielu ................................................................340 Rzeczywiste systemy raportowania ................................................................................343 Jeszcze raz o dokumentach poprawnych pod względem składniowym ...............................344 Podsumowanie ................................................................................................................344 Rozdział 13. Rozważania o przeglądarce współpracującej z XML-em ....................... 345 XML po stronie klienta a obsługa przeglądarek .............................................................346 JavaScript i XML po stronie klienta ...............................................................................347 JSP.............................................................................................................................347 Przekształcenia po stronie klienta a XML.......................................................................354 Wspólny plik źródłowy JavaScript dla przeglądarek................................................354 JSP.............................................................................................................................359 Dwa arkusze stylów XSL..........................................................................................361 Podsumowanie ................................................................................................................365 Rozdział 14. Tworzenie usługi WWW .................................................................. 367 Projektowanie usługi WWW...........................................................................................368 Jaki jest cel? ..............................................................................................................368 Jakie są wymagania?.................................................................................................368 Jakich danych potrzebuje usługa?.............................................................................369 Tworzenie usługi WWW.................................................................................................369 Tworzenie programu obsługi plików ........................................................................369 Tworzenie narzędzia wyszukiwania .........................................................................371 Tworzenie ElementHandler ......................................................................................372 Tworzenie obiektu Document...................................................................................374 Zastosowanie arkusza stylów....................................................................................375 Tworzenie arkusza stylów.........................................................................................376 Tworzenie usługi WWW ..........................................................................................378 Rejestracja usługi WWW w Apache SOAP .............................................................378 Tworzenie pliku WSDL ..................................................................................................379 Przestrzenie nazw WSDL .........................................................................................380 Tworzenie pliku WSDL JSPBuzz.............................................................................381 Plik implementacji WSDL........................................................................................386 Dokumentacja WSDL...............................................................................................386 Rejestracja w UDDI ........................................................................................................387 Rejestracja usługi ......................................................................................................387 Dostęp do dokumentu WSDL za pomocą Javy...............................................................389 Podsumowanie ................................................................................................................392 Rozdział 15. Zaawansowane projektowanie aplikacji .......................................... 395 Dynamiczne strony JSP...................................................................................................395 Kiedy nie u ywać dynamicznych stron JSP?............................................................397 Przykład dynamicznej strony JSP.............................................................................397 Zagadnienia bezpieczeństwa serwera SOAP ..................................................................406 U ycie stref bezpieczeństwa w serwerze Tomcat.....................................................407 Filtrowanie serwletów...............................................................................................407 Inne metody zabezpieczeń w Apache SOAP............................................................412 Krótkie spojrzenie ...........................................................................................................414 Usługi WWW — SSL i szyfrowanie danych ...........................................................414 U ywanie Cocoon.....................................................................................................415 Podsumowanie ................................................................................................................415 C:AndrzejPDFJSP i XML000-spis-09.doc (02-10-30) 9
    7. 10 JSP i XML Dodatki .......................................................................................417 Dodatek A Instalacja i konfiguracja................................................................. 419 Instalacja środowiska JSP ...............................................................................................419 Java Software Development Kit (SDK)....................................................................419 Serwer Tomcat ..........................................................................................................420 Tworzenie witryny WWW dla ksią ki .....................................................................421 NetBeans .........................................................................................................................422 Serwer bazy danych MySQL ..........................................................................................423 Tworzenie bazy danych MySQL ..............................................................................424 Instalacja sterownika JDBC......................................................................................426 Podsumowanie ................................................................................................................426 Dodatek B Wprowadzenie do JSP .................................................................... 427 Podstawy JSP ..................................................................................................................427 Przykład bannera JSP................................................................................................428 Akcje .........................................................................................................................431 Akcje, dyrektywy oraz obiekty niejawne ...........................................................................431 Bardziej zło ony przykład JSP........................................................................................432 Dodatkowa informacja o JSP ..........................................................................................441 Co to jest JSP i jak działa?........................................................................................441 Składnia XML JSP....................................................................................................443 Zasoby dokumentacji JSP .........................................................................................443 Podsumowanie ................................................................................................................444 Dodatek C Biblioteka znaczników.................................................................... 445 Omówienie biblioteki znaczników..................................................................................445 Co to jest biblioteka znaczników?...................................................................................446 Zalety ........................................................................................................................446 Wady .........................................................................................................................447 Tworzenie biblioteki znaczników w sześciu krokach .....................................................447 Pojęcia biblioteki znaczników.........................................................................................448 Izolacja algorytmów biznesowych............................................................................448 Program obsługi znacznika .......................................................................................448 Deskryptor biblioteki znaczników (TLD).................................................................451 Tworzenie pliku dystrybucji .....................................................................................451 Rejestracja biblioteki znaczników ............................................................................452 U ycie deklaracji biblioteki znaczników na stronie JSP ...............................................453 Tworzenie biblioteki znaczników ...................................................................................453 Wyodrębnienie algorytmów biznesowych................................................................453 Tworzenie programu obsługi znacznika ...................................................................453 Deskryptor biblioteki znaczników ............................................................................457 Rejestracja biblioteki znaczników ............................................................................459 U ywanie biblioteki znaczników na stronie JSP ......................................................459 Uwagi ogólne ..................................................................................................................461 Dane ciała..................................................................................................................461 Uwagi projektowe.....................................................................................................462 Puste znaczniki..........................................................................................................462 Wątkowanie ..............................................................................................................463 Podsumowanie ................................................................................................................463 Dodatek D Omówienie XSL.............................................................................. 465 XSLT i XPath..................................................................................................................465 Węzły kontekstu i węzły bie ące..............................................................................466 Odniesienie......................................................................................................................467 Elementy XSLT ........................................................................................................467 Funkcje XPath...........................................................................................................470 Skorowidz...................................................................................... 475
    8. Rozdział 4. Szybkie wprowadzenie do JSP i XML-a W tym rozdziale zajmujemy się zagadnieniem łączenia JSP i XML-a. Poka emy w nim, jak łatwo umieścić XML i XSLT na stronie JSP. Omówimy równie kilka API, które umo liwiają wykorzystanie XML-a w Javie. Rozdział zaczyna się krótkimi rozwa aniami na temat powiązań między XML-em i JSP. Następnie przedstawiamy trzy podstawowe API: JAXP, Xerces i Xalan. Wykorzy- stując te biblioteki Javy pogłębimy wiedzę zdobytą w rozdziale 2., „Wprowadzenie do XML-a i XSL-a”, i przedstawimy praktyczne zastosowania w środowisku JSP. Po omówieniu prostych kodów poka emy pełniejszy przykład budowy procesora biuletynu do tworzenia strony informacyjnej. Na zakończenie rozdziału skupimy się na opisaniu innych API, które są wykorzystywane przez programistów JSP i XML. Związek pomiędzy XML-em i JSP Wspólne wykorzystywanie JSP i XML-a ma sporo sensu. JSP słu y do tworzenia wyj- ścia znakowego, a XML do opisywania danych znakowych; razem tworzą naturalne połączenie. Poznanie samego XML-a nie wystarczy, poniewa XML ma na celu zna- kowanie danych, a nie ich przenoszenie. JSP pozwala przenosić dane do i ze źródła danych XML. W celu skutecznego wykorzystania XML-a w projekcie musimy poznać metody pobierania i umieszczania danych znakowych za pomocą JSP. Poni ej wymie- niamy kilka często stosowanych metod wspólnego wykorzystania JSP i XML: Dane są przechowywane w pliku XML. Za pomocą JSP dane są importowane i konwertowane na stronę HTML w celu wyświetlenia w przeglądarce. Dane są przechowywane w bazie danych. Tworzony jest proces Java w celu odczytania danych z bazy danych i zamianę ich na dokument XML. Następnie dane są albo przesyłane do u ytkownika jako plik XML, bądź plik XML jest przekształcany na inny format, taki jak strona HTML, do przeglądania przez u ytkownika.
    9. 2 Część II ♦ Integracja JSP i XML-a Dane są przechowywane w pliku XML. Plik jest przetwarzany za pomocą Javy, a dane są formatowane i umieszczane w bazie danych. Za pomocą JSP uzyskuje się dostęp do bazy danych i wyświetla dane. Dane inicjalizacyjne aplikacji WWW są przechowywane w pliku XML. Plik jest odczytywany za pomocą JSP, a zachowanie aplikacji jest zmieniane w zale ności od zawartości pliku. Dane są przenoszone między dwoma systemami w pliku XML. Technologia JSP jest wykorzystywana jako interfejs u ytkownika w celu inicjacji procesu przesyłania albo pobierania danych. Te przykłady wskazują, e dane są pobierane, zapisywane i konwertowane do ró nych formatów. Trzeba nauczyć się wykorzystywać JSP jako warstwę pośrednią w celu ułatwienia przenoszenia danych u ywających XML albo innych formatów. Ostrzeżenie Nadszedł właściwy moment na ostrze enie związane z wykorzystywaniem XML-a. XML to wspaniała technologia i mo na za jej pomocą robić zdumiewające rzeczy. Jednak e chcemy zauwa yć, e nie jest to jedyne i właściwe rozwiązanie dla wszystkich pro- blemów. Odpowiednie wykorzystanie XML-a pozwoli zwiększyć wydajność i oszczędzić czas. Złe u ycie XML spowoduje spowolnienie działania aplikacji WWW, zmarno- wanie czasu i pieniędzy przeznaczonych na rozwój projektu. Systemy raportowania są zwykle dobrym miejscem na wykorzystanie XML-a i XSL-a z powodu mo liwości filtrowania i formatowania, które mo na zastosować na tych samych zbiorach danych do utworzenia ró nych raportów. Przykłady tego mo na znaleźć w rozdziale 11., „Wykorzystanie XML-a w systemach raportowania”, oraz w rozdziale 12., „Zaawansowany XML w systemach raportowania”. Mo na tak e u yć danych zapisanych w postaci XML na stronie WWW, umo liwiając klientom reorganizację danych w raportach bez potrzeby ponownego łączenia się z serwerem. Przykłady tego mo na znaleźć w rozdziale 13., „Rozwa ania o przeglądarce współ- pracującej z XML-em”. Ponadto XML dodaje warstwę abstrakcji pomiędzy algorytmami biznesowymi i algo- rytmami prezentacji. Oznacza to, e zmiana wyglądu raportu wymaga jedynie aktu- alizacji arkusza stylów XSL, podczas gdy poziom generacji danych pozostaje nie- zmieniony. Podobnie, je eli zmienią się obiekty biznesowe tworzące raport, mogą one wcią generować ten sam kod XML, dzięki czemu warstwa prezentacji będzie wcią działać poprawnie. Tak więc warstwa XML jest jak gumowa uszczelka, która zapewnia sprawne działanie aplikacji WWW. Jak powiedziano wcześniej w tej ksią ce, format XML nie został zaprojektowany jako alternatywa dla baz danych. Chocia pliki XML mogą być u ywane do przechowywania danych, najlepiej je wykorzystywać jako pliki inicjalizacyjne albo małe zbiory danych. Wykorzystanie XML-a do przechowywania i odczytywania du ych ilości danych jest metodą wolniejszą ni u ywanie bazy danych. Bazy danych udostępniają dodatkowe mo liwości, takie jak zarządzanie transakcjami, które nie są częścią specyfikacji XML. Podczas projektowania du ych systemów wykorzystujących XML, powinieneś
    10. Rozdział 4. ♦ Szybkie wprowadzenie do JSP i XML 3 dopasować projekt do mocnych i słabych stron XML-a. XML nie zastępuje baz danych, a raczej je uzupełnia. Projekty systemów powinny zakładać u ycie obu tych techno- logii w zale ności od potrzeb. W dalszych rozdziałach zademonstrujemy połączenie obu technologii. Zdarzają się przypadki, kiedy wykorzystanie XML-a do przechowywania danych mo e być dobrym wyborem. Mógłbyś przykładowo chcieć umo liwić wielu klientom prze- glądanie niezmienionych danych bez potrzeby połączenia z bazą danych bądź z siecią. Mo na by względnie szybko stworzyć bardzo prosty system, który wykorzystywał będzie przeglądarkę, XML i kilka arkuszy stylów do osiągnięcia po ądanego celu. Czasami w projektach dane są zamieniane na format XML tylko po to, aby u ywać XML-a. Jest to złe podejście, poniewa proces tworzenia i u ywania dokumentów XML dodaje kolejną warstwę przetwarzania do projektu. To zarówno zwiększa koszt z powodu dłu szego czasu rozwoju systemu, jak i spowalnia przetwarzanie. Dane powinny być zamieniane na XML tylko wtedy, kiedy wykorzystanie XML-a jest najlepszym roz- wiązaniem. Podstawowa zasada brzmi: nigdy nie przekształcaj danych do postaci XML, je eli nie ma to określonego celu. Nie u ywaj technologii XML dla niej samej. JAXP, Xerces i Xalan Istnieje wiele narzędzi do przetwarzania i przekształcania XML-a. Ka de z nich ma swoje zalety i wady. Jednak e trzeba od czegoś zacząć, omówimy więc API, które są najczęściej u ywane z JSP. Przeło y się to na napisanie przykładu u ywającego API JAXP. API JAXP u ywa parsera Javy Xerces i procesora arkuszy stylów Xalan. Je eli jeszcze nie umieściłeś plików xerces.jar i xalan.jar w katalogu lib serwera Tomcat, zrób to teraz. Lokalizacja plików do skopiowania podana jest poni ej. Xerces (parser XML) Mówiąc prosto, Xerces jest parserem i generatorem XML. Jego nazwa nawiązuje do motyla Xerces Blue. Parser implementuje specyfikacje W3C XML i DOM (poziomy 1. i 2.), oraz standard SAX. Xerces jest dołączany do Tomcata, dlatego nie musisz go instalować. Być mo e jed- nak za pewien czas będziesz potrzebował najnowszej wersji z powodu nowych mo - liwości. U yj następującego URL-a, aby skopiować najnowszą wersję Xercesa: http:/ /xml.apache.org/xerces2-j/index.html. DOM i SAX to ró ne metody przetwarzania XML, które będą omówione w rozdziale 5., „U ywanie DOM”, i rozdziale 6., „Programowanie SAX”. Mówiąc krótko, DOM tworzy w pamięci drzewiastą strukturę, którą mo na programowo manipulować. SAX jest sekwencyjnym, sterowanym zdarzeniami czytnikiem XML. W tej ksią ce u ywamy Xercesa w wersji 1.4.3.
    11. 4 Część II ♦ Integracja JSP i XML-a Xalan (procesor XSLT) Xalan jest procesorem arkuszy stylów XSLT. Jego nazwa nawiązuje do rzadkiego instru- mentu muzycznego. Xalan implementuje specyfikację W3C XSLT i instrukcje XPath. Niestety Xalan nie jest dołączany do Tomcata, dlatego trzeba go zainstalować. Skopiuj Xalana z http://xml.apache.org/xalan-j/index.html. Umieść plik xalan.jar w katalogu lib serwera Tomcat. Zatrzymaj i uruchom ponownie serwer w celu zarejestrowania nowych klas. W tej ksią ce u ywamy Xalana w wersji 2.2.d10. JAXP (podstawowe przetwarzanie XML) Technicznie JAXP to API dla przetwarzania XML. Dokładniej mówiąc, jest to warstwa abstrakcji, poniewa nie zawiera adnej funkcjonalności przetwarzania. JAXP jest poje- dynczym API, przez które mo na uzyskać dostęp do ró nych obsługiwanych procesorów XML i XSL. Jest to podobne do JDBC dla parserów XML. JAXP nie dodaje adnej nowej funkcjonalności do przetwarzania XML, umo liwia jedynie standardowy spo- sób wykorzystania ró nych implementacji procesorów XML. Poprzez JAXP mo na u y- wać ró nych implementacji standardowych procesorów XML, takich jak SAX i DOM. Aby skutecznie wykorzystywać JAXP wa ne jest, aby u ywać tylko jego API i unikać bezpośredniego u ycia jakichkolwiek podrzędnych API zale nych od implementacji. Przyczyną tego faktu jest to, e warstwa JAXP jest warstwą abstrakcji. Jakiekolwiek bezpośrednie wywołania podrzędnych API XML zaprzeczają idei posiadania warstwy podstawowej. Ta zasada jest szczególnie istotna, kiedy aplikacja ma być wdro ona w ró nych sytuacjach, a w ka dym wdro eniu zostanie wykorzystany inny procesor XML. JAXP zapewnia aplikacji niezale ność od implementacji procesora XML. JAXP został stworzony w celu ułatwienia wykorzystania XML-a na platformie Javy. Osiągnięto to dzięki wspólnemu interfejsowi do dowolnie wybranego procesora XML. JAXP jest zawarty w serwerze Tomcat i nie wymaga adnej instalacji. Je eli chcesz przejrzeć źródło JAXP albo sprawdzić szczegóły dotyczące najnowszej wersji, odwiedź stronę http://java.sun.com/xml/jaxp.html. W tej ksią ce u ywamy JAXP w wersji 1.1. Przykład z wykorzystaniem JAXP, XSL-a i XML-a Ten przykład symuluje losowe generowanie bannerów, które mo na spotkać w całej sieci WWW. Istotne jest, e ta wersja jest ograniczona do wyświetlania tylko tekstu. W rozdziale 1., „Integracja JSP i danych”, utworzyliśmy podobny przykład u ywają- cy ró nych metod. Dane dla tej wersji będą przechowane w statycznym pliku XML. Za pomocą JAXP zastosujemy arkusz stylów XSL do dokumentu XML i wyślemy wyniki na wyjście. Na początek przykład będzie słu ył do wyświetlenia wszystkich danych znajdujących się w pliku XML. Następnie zmodyfikujemy kod, aby wybierał losowo łącze do wyświetlenia.
    12. Rozdział 4. ♦ Szybkie wprowadzenie do JSP i XML 5 Zacznijmy od pliku danych XML, pokazanego na wydruku 4.1. Ten i pozostałe pliki w tym rozdziale powinny zostać zapisane w katalogu webapps serwera Tomcat w ście ce dostępu webapps/xmlbook/chapter4/BannerAds.xml. Wydruk 4.1. BannerAds.xml; plik danych XML dla przykładu JAXP !ZON XGTUKQP  ! $#00'45 $#00'4#& 0#/' ,52+PUKFGT0#/' .+0- JVVRYYYLURKPUKFGTEQO.+0- .+0-6':6 ,52 0GYU.+0-6':6 $#00'4#& $#00'4#& 0#/' 5WP0#/' .+0- JVVRYYYUWPEQO.+0- .+0-6':6 9KVT[PC ,CXC.+0-6':6 $#00'4#& $#00'4#& 0#/' *GNKQP0#/' .+0- JVVRYYYJGNKQPRN.+0- .+0-6':6 9[FCYPKEVYQ *GNKQP.+0-6':6 $#00'4#& $#00'4#& 0#/' ,CMCTVC0#/' .+0- JVVRLCMCTVCCRCEJGQTI.+0- .+0-6':6 -GYN 6QQNU.+0-6':6 $#00'4#& $#00'45 Zauwa , e w tym pliku znajdują się cztery grupy danych, z których ka da zawiera informację o łączu bannera. Ka da grupa danych jest właściwie zagnie d ona w ele- mencie głównym $#00'45. Następnie musimy utworzyć arkusz stylów XSL, pokazany na wydruku 4.2, w celu zastosowania formatowania do pliku XML. Mówiąc w skrócie, ten arkusz stylów utworzy wiersz tabeli dla ka dego elementu dziecka $#00'4#& znajdującego się wewnątrz ele- mentu głównego $#00'45. Potem dane tekstowe znajdujące się w ró nych węzłach zostaną wybrane i umieszczone w komórkach tabeli. Wydruk 4.2. BannerAds.xsl; arkusz stylów XSL dla przykładu JAXP !ZON XGTUKQP  GPEQFKPI +51 ! ZUNUV[NGUJGGV XGTUKQP  ZONPUZUN JVVRYYYYQTI:5.6TCPUHQTO ZUNVGORNCVG OCVEJ  *6/. *'#& 6+6.' $CPPGT[ ,#:26+6.' *'#& $1&; 6#$.' DQTFGT  64 6* 0CYC6* 6* æEG6* 6* 6GMUV æEC6* 64
    13. 6 Część II ♦ Integracja JSP i XML-a ZUNHQTGCEJ UGNGEV $#00'45$#00'4#& 64 6& ZUNXCNWGQH UGNGEV 0#/'  6& 6& ZUNXCNWGQH UGNGEV .+0-  6& 6& ZUNXCNWGQH UGNGEV .+0-6':6  6& 64 ZUNHQTGCEJ 6#$.' $1&; *6/. ZUNVGORNCVG ZUNUV[NGUJGGV Instrukcja XPath UGNGEV wybiera wszystkie dzieci $#00'4#& elementu głównego $#00'45. ZUNHQTGCEJ UGNGEV $#00'45$#00'4#& Spowoduje to przetwarzanie ciała elementu HQTGCEJ dla ka dego elementu wybranego przez wyra enie UGNGEV. Nadszedł czas, aby utworzyć stronę JSP, która u ywa JAXP w celu zastosowania prze- kształcania arkusza stylów do pliku XML. Kod jest pokazany na wydruku 4.3. Wydruk 4.3. BannerAds_JAXP.jsp; JSP dla przykładu JAXP  " RCIG KORQTV LCXCZZONVTCPUHQTO
    14.  LCXCZZONVTCPUHQTOUVTGCO
    15.  LCXCKQ
    16.  5VTKPI NUARCVJ  TGSWGUVIGV5GTXNGV2CVJ  NUARCVJ  NUARCVJUWDUVTKPI NUARCVJKPFGZ1H $CPPGT#FUA,#:2LUR  5VTKPI NUAZON  CRRNKECVKQPIGV4GCN2CVJ NUARCVJ $CPPGT#FUZON  5VTKPI NUAZUN  CRRNKECVKQPIGV4GCN2CVJ NUARCVJ $CPPGT#FUZUN  5VTGCO5QWTEG ZON  PGY 5VTGCO5QWTEG PGY (KNG NUAZON  5VTGCO5QWTEG ZUN  PGY 5VTGCO5QWTEG PGY (KNG NUAZUN  5VTGCO4GUWNV TGUWNV  PGY 5VTGCO4GUWNV QWV  6TCPUHQTOGT(CEVQT[ V(CEVQT[  6TCPUHQTOGT(CEVQT[PGY+PUVCPEG  6TCPUHQTOGT VTCPUHQTOGT  V(CEVQT[PGY6TCPUHQTOGT ZUN  VTCPUHQTOGTVTCPUHQTO ZON TGUWNV  Na początku strony zadeklarowane są pakiety u ywane w kodzie. Pierwszy pakiet, LCXCZZONVTCPUHQTO
    17. , zawiera klasy 6TCPUHQTOGT i 6TCPUHQTOGT(CEVQT[. Te klasy przekształcają drzewo źródłowe, XML i XSL, w drzewo wynikowe. W następnym zade- klarowanym pakiecie, a mianowicie LCXCZZONVTCPHQTOUVTGCO
    18. , znajdują się klasy 5VTGCO4GUWNV i 5VTGCO5QWTEG. 5VTGCO5QWTEG to obsługiwane źródło XML. Nie czyni adnej ró nicy, czy jest to plik czytany w strumieniu danych albo istniejąca reprezenta- cja danych XML. 5VTGCO5QWTEG zajmuje się za nas tymi szczegółami. 5VTGCO4GUWNV
    19. Rozdział 4. ♦ Szybkie wprowadzenie do JSP i XML 7 określa, gdzie chcemy wysłać wynikowy dokument XML. Te klasy słu ą jako schowki dla plików XML i XSL przed przekształceniem i dla końcowego wyjścia po przetwa- rzaniu. Na końcu znajduje się pakiet LCXCKQ
    20. , który obsługuje zarządzanie plikami zewnętrznymi. Następnie JSP odczytuje własną ście kę dostępu. Sprawdzamy ście kę dostępu w celu upewnienia się, e u ywamy właściwej ście ki podczas pobierania plików XML i XSL. Kiedy ju mamy określoną ście kę dostępu, u ywamy jej do umieszczenia plików XML i XSL w obiektach 5VTGCO5QWTEG, które słu ą jako schowki. Dalej tworzony jest obiekt 5VTGCO4GUWNV w celu przesłania wyników przekształcenia. W tym przykładzie wyniki są przesyłane bezpośrednio do wyjścia JSP, czyli obiektu niejawnego QWV typu LCXCZ UGTXNGVLUR,UR9TKVGT. Wszystko, co do tej pory zrobiliśmy, miało na celu przygotowanie do uruchomienia przekształcenia XML/XSLT. Następnie tworzony jest egzemplarz obiektu 6TCPUHQTOGT (CEVQT[. Fabryki (ang. factories) są u ywane do tworzenia określonych przekształceń. Fabryka ustawia wszystkie nadające się do ponownego wykorzystania informacje, których proces XML będzie później potrzebował podczas wykonywania rzeczywistego przekształcenia XSL danych XML. U ywamy 6TCPUHQTOGT(CEVQT[ do utworzenia okre- ślonego obiektu 6TCPUHQTOGT. Ka dy utworzony 6TCPUHQTOGT obsługuje pojedynczy plik XSL. Gdybyśmy musieli przetworzyć pięć ró nych plików XSL, utworzylibyśmy pięć egzemplarzy tego obiektu albo inicjalizowalibyśmy pojedynczy 6TCPUHQTOGT pięć razy. Tak więc podczas tworzenia obiektu 6TCPUHQTOGT określamy, którego pliku XSL ma on u ywać. Następnie wywołujemy metodę przekształcającą w celu przetworzenia doku- mentu XML. Wymaga to wiedzy, który plik XML ma być przetwarzany (który obiekt 5VTGCO5QWTEG) oraz dokąd przesłać wyjście (5VTGCO4GUWNV). Całe przekształcenie obejmuje tylko kilka linii kodu JAXP. Wyniki pokazano na rysunku 4.1. Rysunek 4.1. Wyniki przekształcenia JAXP Mo liwość wyświetlenia wyników przekształcenia XSLT jest sama w sobie potę na, ale rozszerzymy ten przykład o dodatkową funkcjonalność. Rzeczywisty system obsługi bannerów wyświetlałby tylko jeden losowo wybrany banner. Zmodyfikujemy nasz przykład, aby działał podobnie. Przykład z parametrami XSL Zaczniemy od dodania znacznika parametru do arkusza stylów XSL. Znacznik ten utworzy parametr, który poinformuje arkusz stylów, który banner ma zostać wyświe- tlony. Wartość tego parametru będzie ustawiana przez stronę JSP (a dokładnie przez JAXP). Na wydruku 4.4 pokazano nowy arkusz stylów ze zmianami zaznaczonymi drukiem wytłuszczonym.
    21. 8 Część II ♦ Integracja JSP i XML-a Wydruk 4.4. BannerAds_Param.xsl; parametr ustawiany zewnętrznie !ZON XGTUKQP  GPEQFKPI +51 ! ZUNUV[NGUJGGV XGTUKQP  ZONPUZUN JVVRYYYYQTI:5.6TCPUHQTO ZUNRCTCO PCOG %JQQUG  ZUNVGORNCVG OCVEJ  *6/. *'#& 6+6.' $CPPGT[ RCTCOGVTGO6+6.' *'#& $1&; 6#$.' DQTFGT  64 6* 0CYC6* 6* æEG6* 6* 6GMUV æEC6* 64 ZUNHQTGCEJ UGNGEV $#00'45$#00'4#&= %JQQUG? 64 6& ZUNXCNWGQH UGNGEV 0#/'  6& 6& ZUNXCNWGQH UGNGEV .+0-  6& 6& ZUNXCNWGQH UGNGEV .+0-6':6  6& 64 ZUNHQTGCEJ 6#$.' $1&; *6/. ZUNVGORNCVG ZUNUV[NGUJGGV Wewnątrz elementu UV[NGUJGGV dodaliśmy element parametru o nazwie %JQQUG. ZUNRCTCO PCOG %JQQUG  Ten element parametru ma globalny zakres dla całego arkusza stylów, poniewa został umieszczony na zewnątrz znacznika ZUNVGORNCVG. Zwykle podczas deklaracji para- metru ustawiana jest równie jego domyślna wartość za pomocą atrybutu UGNGEV. Wybraliśmy mo liwość nieustawiania wartości domyślnej; gdybyśmy jednak ją usta- wili, wyglądałoby to w ten sposób: ZUNRCTCO PCOG %JQQUG UGNGEV   Innym miejscem, w którym mo na zadeklarować parametry, jest początek szablonu. W takim przypadku zakres parametru jest ograniczony do szablonu, w którym para- metr został zadeklarowany. Następna zmieniona część oryginalnego arkusza stylów z wydruku 4.2 to instrukcja UGNGEV pętli HQTGCEJ. ZUNHQTGCEJ UGNGEV $#00'45$#00'4#&= %JQQUG? Instrukcja XPath UGNGEV znów wybierze wszystkie elementy dzieci $#00'4#& elementu głównego $#00'45. Jednak e teraz tylko te elementy $#00'4#&, których numer pozycji równa się parametrowi w nawiasach kwadratowych, zostaną wybrane do przetworzenia w pętli HQTGCEJ. W rezultacie zostanie wybrana tylko jedna ze wszystkich mo li- wych opcji, która będzie umieszczona na wyjściu przez kod zawarty w tej pętli.
    22. Rozdział 4. ♦ Szybkie wprowadzenie do JSP i XML 9 Aby odwołać się do parametru w dowolnym miejscu w jego zakresie, użyj znaku dolara () przed nazwą parametru. Na koniec mamy nowy dokument JSP, pokazany na wydruku 4.5. Ta strona zawiera oryginalny kod z wydruku 4.3 z pewnym dodatkowym przetwarzaniem. Musimy teraz dowiedzieć się, ile bannerów znajduje się w pliku XML, a następnie losowo wybrać liczbę z tego zakresu. Po wybraniu tej liczby umieszczamy parametr w arkuszu stylów XSL, tak więc tylko te dane zostaną wyświetlone. Wydruk 4.5. BannerAds_Param.jsp; elementy i parametry XSL  " RCIG KORQTV LCXCZZONVTCPUHQTO
    23.  LCXCZZONVTCPUHQTOUVTGCO
    24.  LCXCKQ
    25.  LCXCZZONRCTUGTU
    26.  QTIYEFQO
    27.  5VTKPI NUARCVJ  TGSWGUVIGV5GTXNGV2CVJ  NUARCVJ  NUARCVJUWDUVTKPI NUARCVJKPFGZ1H $CPPGT#FUA2CTCOLUR  5VTKPI NUAZON  CRRNKECVKQPIGV4GCN2CVJ NUARCVJ $CPPGT#FUZON  5VTKPI NUAZUN  CRRNKECVKQPIGV4GCN2CVJ NUARCVJ $CPPGT#FUA2CTCOZUN  &QEWOGPV$WKNFGT(CEVQT[ HCEVQT[  &QEWOGPV$WKNFGT(CEVQT[PGY+PUVCPEG  HCEVQT[UGV8CNKFCVKPI HCNUG  &QEWOGPV$WKNFGT DWKNFGT  HCEVQT[PGY&QEWOGPV$WKNFGT  &QEWOGPV FQE  DWKNFGTRCTUG PGY (KNG NUAZON  0QFG.KUV PQFGU  FQEIGV'NGOGPVU$[6CI0COG $#00'4#&  KPV KPV0QFG.GPIVJ  PQFGUIGV.GPIVJ  KPV KPV4CPFQO   KPV /CVJTCPFQO
    28. KPV0QFG.GPIVJ  5VTGCO5QWTEG ZON  PGY 5VTGCO5QWTEG PGY (KNG NUAZON  5VTGCO5QWTEG ZUN  PGY 5VTGCO5QWTEG PGY (KNG NUAZUN  5VTGCO4GUWNV TGUWNV  PGY 5VTGCO4GUWNV QWV  6TCPUHQTOGT(CEVQT[ V(CEVQT[  6TCPUHQTOGT(CEVQT[PGY+PUVCPEG  6TCPUHQTOGT VTCPUHQTOGT  V(CEVQT[PGY6TCPUHQTOGT ZUN  VTCPUHQTOGTUGV2CTCOGVGT %JQQUG  PGY +PVGIGT KPV4CPFQO  VTCPUHQTOGTVTCPUHQTO ZON TGUWNV  Na nowej stronie JSP dodaliśmy dwa pakiety. Pierwszy dodany pakiet LCXCZZON RCTUGTU
    29. daje nam dostęp do implementacji JAXP DOM i pozwala na utworzenie w pamięci drzewiastej struktury dokumentu XML za pomocą klas &QEWOGPV$WKNFGT
    30. 10 Część II ♦ Integracja JSP i XML-a i &QEWOGPV. Kolejny pakiet to QTIYEFQO
    31. . Za pomocą tego pakietu mamy dostęp do definicji DOM W3C. Dzięki temu mo emy utworzyć zbiór wybranych węzłów, u ywając obiektu 0QFGU.KUV. Następnie tworzymy egzemplarz obiektu &QEWOGPV$WKNFGT(CEVQT[. Po utworzeniu obiekt ten zostanie wykorzystany do utworzenia obiektu &QEWOGPV, za pocą którego przetwo- rzymy plik XML. Popatrz na linię: HCEVQT[UGV8CNKFCVKPI HCNUG  Ta linia jest wa na, poniewa określa, czy prawidłowość strukturalna pliku XML jest sprawdzana podczas ładowania, czy te nie. Poniewa ten plik nie ma DTD albo schematu, wyłączamy sprawdzanie dokumentu. Krótko mówiąc, sprawdzanie prawidłowości struktury oznacza, e porównujemy strukturę dokumentu XML z definicją tej struktury. Je eli się zgadzają, dokument jest poprawny pod względem strukturalnym. Po załadowaniu pliku XML do obiektu &QEWOGPV jesteśmy gotowi do obliczenia, ile danych o bannerach znajduje się w pliku XML: 0QFG.KUV PQFGU  FQEIGV'NGOGPVU$[6CI0COG $#00'4#&  KPV KPV0QFG.GPIVJ  PQFGUIGV.GPIVJ  Patrząc na plik XML pokazany na wydruku 4.1, widzimy, e ka dy element $#00'4#& zawiera informację o jednym bannerze. Tworzymy 0QFG.KUV i wybieramy tylko ele- menty o nazwie $#00'4#&. 0QFG.KUV zawiera teraz pojedynczy węzeł dla ka dego ban- nera. U ycie IGV.GPIVJ na tej liście zwraca całkowitą liczbę bannerów. W tej chwili chcielibyśmy wspomnieć, że liczenie elementów-dzieci jest złym pomy- słem przy przetwarzaniu wielkich ilości danych. Działa to dobrze dla używanych przez nas dokumentów XML, ponieważ są one małe. Jednak podczas pracy z obszernymi dokumentami XML załadowanie całego dokumentu do pamięci jedynie w celu poli- czenia elementów zakończyłoby się ogromnym spadkiem wydajności przetwarzania. Teraz mo emy u yć metody TCPFQO oraz liczby bannerów jako czynnika skalującego w celu otrzymania liczby losowej: KPV KPV4CPFQO   KPV /CVJTCPFQO
    32. KPV0QFG.GPIVJ  Następnie ustawiany jest parametr w arkuszu stylów: VTCPUHQTOGTUGV2CTCOGVGT %JQQUG  PGY +PVGIGT KPV4CPFQO  Ustawiamy parametr o nazwie %JQQUG w arkuszu stylów XSL o wartości równej otrzy- manej liczbie losowej. To ta liczba określi, który banner ma być wyświetlony. To jest dopiero początek. Za pomocą podobnych technik moglibyśmy określić, które dane u ytkownik ogląda, wykorzystując login u ytkownika. Mo na te przekazywać parametry w celu zmiany sposobu formatowania raportu przez arkusz stylów XSL albo dynamicznej zmiany kolejności sortowania. Później, kiedy wkroczymy do królestwa tworzenia dokumentów XML opartych na danych pobieranych z bazy danych, nauczysz się, jak implementować te opcje.
    33. Rozdział 4. ♦ Szybkie wprowadzenie do JSP i XML 11 Na rysunku 4.2 pokazano dane wyjściowe utworzone przez JSP. Są one oczywiście losowe, więc nie zobaczysz tej samej strony przy ka dym wykonaniu kodu JSP. Rysunek 4.2. Losowo wybrany banner Przesyłanie przekształcenia do pliku JSP Czasami przetwarzanie plików XML i XSL jest nadmiarowe, poniewa te same dane wyjściowe są tworzone wielokrotnie. Przykładem tego jest biuletyn. Załó my, e jest strona WWW, która wyświetla biuletyn. Zawartość tego biuletynu, znajdująca się w pliku XML, zmienia się raz w tygodniu, ale przez resztę czasu pozostaje ona niezmieniona. W tym przypadku byłoby marnotrawieniem mocy przetwarzania przekształcanie doku- mentu XML za pomocą arkusza stylów XSL za ka dym razem, kiedy u ytkownik za ąda strony. Zamiast tego powinniśmy przesłać wyniki przekształcenia do innego pliku JSP i nakazać u ytkownikowi pobranie uprzednio przetworzonej strony. W ten sposób mo emy utworzyć przekształcenie, które będzie wykorzystywane tylko przy zmianie źródłowego pliku XML przez wywołanie strony przetwarzającej. Popatrzmy teraz na stronę JSP, która przetwarza pliki XML i XSL i umieszcza wyniki na innej stronie JSP. Strona przetwarzająca nazywa się CreateNewsLetter.jsp, a wyniki są umieszczane na NewsLetter.jsp. Ten przykład jest luźno oparty na biuletynie JSPBuzz, który jest opublikowany na witrynie WWW JSP Insider. Schemat przetwarzania jest pokazany na rysunku 4.3. Rysunek 4.3. Tworzenie nowego pliku z danych wyjściowych Kroki pokazane na rysunku 4.3 są następujące: 1. CreateNewsLetter.jsp wczytuje dokument XSL. 2. CreateNewsLetter.jsp wczytuje dokument XML. 3. XML i XSL są przekształcane do postaci wynikowej. 4. Wynik przekształcenia jest umieszczany w NewsLetter.jsp. Kod tworzy biuletyn ze źródła danych XML i arkusza stylów XSL. Biuletyn zawiera artykuły i łącza na temat Javy i XML-a. Umieścimy wyniki przetwarzania JSP w innym pliku JSP, tak więc przekształcanie nie będzie wielokrotnie wywoływane i niepotrzebnie wykonywane. Dzięki temu łącza na stronie WWW mogą wskazywać plik wyjściowy zamiast pliku przetwarzającego.
    34. 12 Część II ♦ Integracja JSP i XML-a Zaczniemy od nowego pliku XML znajdującego się na wydruku 4.6. Ten plik XML zawiera informacje o nagłówku i zawartości biuletynu. Zapisz ten plik jako webapps/ xmlbook/chapter4/NewsLetter.xml. Wydruk 4.6. NewsLetter.xml; dane dla przykładu biuletynu !ZON XGTUKQP  GPEQFKPI +51 ! PGYUNGVVGT XQNWOG ++ KUUWG  JGCFGT VKVNG 2T[M CFQY[ DKWNGV[PVKVNG FGUETKRVKQP &GOQPUVTCELC RTGU CPKC Y[L EKC RTGMUVC EGPKC :/.:5. FQ RNKMW ,52FGUETKRVKQP FCVG FCVG JGCFGT CTVKENG RQUKVKQP  CWVJQT &GPPKU / 5QUPQUMK CWVJQT VKVNG :/. Y ,CXC  /QFGNG FQMWOGPVW Eú è  9[FCLPQ èVKVNG FGUETKRVKQP 0KGDúFPC NGMVWTC FNC MC FGIQ MVQ W [YC ,CXC K :/. ,GUV VQ CTÎYPQ RTGINæF DKG æE[EJ RCTUGTÎY :/. LCM K RQTÎYPCPKG Y[PKMÎY Y[FCLPQ EK YKGVP[ CTV[MW FGUETKRVKQP NKPM JVVRYYYKDOEQOFGXGNQRGTYQTMUZONNKDTCT[ ZKPLCXCKPFGZJVONNKPM FCVG 9TGUKG FCVG CTVKENG CTVKENG RQUKVKQP  CWVJQT /CTUJCNN .CODCWVJQT VKVNG )GPGTCELC F[PCOKEPGIQ :/. C RQOQEæ VGEJPQNQIKK ,CXC5GTXGT 2CIGU VKVNG FGUETKRVKQP &QDT[ CTV[MW QRKUWLæE[ Y[MQT[UVCPKG ,52 FQ VYQTGPKC F[PCOKEPGL CYCTVQ EK W [EKGO :/. FGUETKRVKQP NKPM JVVRYYYKDOEQOFGXGNQRGTYQTMUNKDTCT[LF[PZONJVONNKPM FCVG )TWFKG FCVG CTVKENG NKPMU RQUKVKQP  VKVNG 9KVT[PC 6QOECVVKVNG NKPM JVVRLCMCTVCCRCEJGQTIVQOECVKPFGZJVONNKPM NKPMU NKPMU RQUKVKQP  VKVNG 9KVT[PC 9% :/.VKVNG NKPM JVVRYYYYQTI:/.NKPM NKPMU NKPMU RQUKVKQP  VKVNG 2QFTúEPKM ,CXCVKVNG NKPM JVVRLCXCUWPEQOFQEUDQQMUVWVQTKCNNKPM NKPMU PGYUNGVVGT Następnie mamy arkusz stylów XSL. Ten plik, pokazany na wydruku 4.7, powinien zostać zapisany jako webapps/xmlbook/chapter4/NewsLetter.xsl. Wydruk 4.7. NewsLetter.xsl; arkusz stylów biuletynu !ZON XGTUKQP  GPEQFKPI +51 ! ZUNUV[NGUJGGV XGTUKQP  ZONPUZUN JVVRYYYYQTI:5.6TCPUHQTO ZUNQWVRWV OGVJQF JVON 
    35. Rozdział 4. ♦ Szybkie wprowadzenie do JSP i XML 13 ZUNVGORNCVG OCVEJ  JVON JGCF VKVNG 2T[M CFQY[ DKWNGV[PVKVNG JGCF DQF[ DIEQNQT '%(%'# EGPVGT HQPV UKG RV D ZUNXCNWGQH UGNGEV PGYUNGVVGTJGCFGTVKVNG  DT 4QM ZUNXCNWGQH UGNGEV PGYUNGVVGT"XQNWOG   ZUNXCNWGQH UGNGEV PGYUNGVVGT"KUUWG  DT ZUNXCNWGQH UGNGEV PGYUNGVVGTJGCFGTFCVG  DT ZUNXCNWGQH UGNGEV PGYUNGVVGTJGCFGTFGUETKRVKQP  D HQPV EGPVGT VCDNG DQTFGT  YKFVJ  VT VF DIEQNQT '%# D HQPV EQNQT  5RKU VTG EKHQPV D VF VT VT VF DT C JTGH CTVKENG +PVGTGUWLæEG CTV[MW [C WN ZUNHQTGCEJ UGNGEV PGYUNGVVGTCTVKENG NK C JTGH CTVKENG]"RQUKVKQP_ ZUNXCNWGQH UGNGEV VKVNG  C NK ZUNHQTGCEJ WN VF VT VT VF C JTGH CTVKENG 7 [VGEPG æECC WN ZUNHQTGCEJ UGNGEV PGYUNGVVGTNKPMU NK C JTGH NKPMU]"RQUKVKQP_ ZUNXCNWGQH UGNGEV VKVNG  C NK ZUNHQTGCEJ WN VF VT VCDNG VCDNG YKFVJ  VT VF DIEQNQT '%# C PCOG CTVKENG HQPV EQNQT  D +PVGTGUWLæEG CTV[MW [D HQPV C VF VT VCDNG ZUNCRRN[VGORNCVGU UGNGEV PGYUNGVVGTCTVKENG  VCDNG YKFVJ  VT VF DIEQNQT '%# C PCOG NKPMU HQPV EQNQT  D 7 [VGEPG æECD HQPV C VF VT VCDNG ZUNCRRN[VGORNCVGU UGNGEV PGYUNGVVGTNKPMU  DQF[ JVON ZUNVGORNCVG ZUNVGORNCVG OCVEJ PGYUNGVVGTCTVKENG VCDNG UV[NG DQTFGTUV[NGITQQXGDQTFGTYKFVJRZ YKFVJ 
    36. 14 Część II ♦ Integracja JSP i XML-a VT VF VCDNG DQTFGT  YKFVJ  VT VF EQNURCP  C JTGH ]NKPM_ PCOG CTVKENG]"RQUKVKQP_ ZUNXCNWGQH UGNGEV VKVNG  C VF VT VT VF YKFVJ  ZUNXCNWGQH UGNGEV CWVJQT  VF VF ZUNXCNWGQH UGNGEV FCVG  VF VT VT VF EQNURCP  ZUNXCNWGQH UGNGEV FGUETKRVKQP  VF VT VCDNG VF VT VCDNG DT ZUNVGORNCVG ZUNVGORNCVG OCVEJ PGYUNGVVGTNKPMU VCDNG DQTFGT  YKFVJ  VT VF C JTGH ]NKPM_ PCOG NKPM]"RQUKVKQP_ ZUNXCNWGQH UGNGEV VKVNG  C VF VT VCDNG ZUNVGORNCVG ZUNUV[NGUJGGV Więcej o szablonach XSL W tym arkuszu stylów u ywane są głównie elementy omówione w rozdziale 2., „Wpro- wadzenie do XML-a i XSL-a”. Znajduje się w nim jednak kilka nowych rzeczy, które musimy omówić. Pierwszą z nich jest u ycie szablonów. W rozdziale 2. wprowadziliśmy definicję szablonów. Przypominamy, e szablony udostępniają metody, za pomocą których dopasowujemy i pobieramy dane z dokumentu XML. Atrybut OCVEJ znacznika VGORNCVG określa, które części dokumentu XML zostaną dopasowane przez element sza- blonu. Oto przykład: ZUNVGORNCVG OCVEJ  Ten znacznik szablonu, znajdujący się na początku wydruku 4.7, wybiera element główny dokumentu XML przez u ycie  . Cały dokument XML jest przetwarzany przez ten szablon. Jednak szablony mogą być tak zdefiniowane, e formatują albo przekształcają tylko wybraną część dokumentu XML. Zauwa , e instrukcja XPath jest u ywana w atry- bucie szablonu OCVEJ w celu określenia, która część dokumentu XML zostanie wybrana do szablonu. Oznacza to, e mo emy być tutaj bardziej dokładni lub przeciwnie — ogólni, w zale ności od tego na ile wyra enia XPath pozwalają nam na wybranie, które ele- menty XML zostaną dopasowane do szablonu.
    37. Rozdział 4. ♦ Szybkie wprowadzenie do JSP i XML 15 W arkuszu stylów z wydruku 4.7 utworzyliśmy trzy szablony. Pierwszy, który został omówiony wcześniej, wybiera cały dokument XML. Pozostałe dwa formatują tylko elementy dzieci CTVKENG i NKPMU elementu głównego. Te szablony są zdefiniowane na końcu wydruku. Szablon artykułu wygląda następująco: ZUNVGORNCVG OCVEJ PGYUNGVVGTNKPMU VCDNG DQTFGT  YKFVJ  VT VF C JTGH ]NKPM_ PCOG NKPM]"RQUKVKQP_ ZUNXCNWGQH UGNGEV VKVNG  C VF VT VCDNG ZUNVGORNCVG Zauwa , e atrybut UGNGEV znacznika szablonu wybiera tylko te elementy NKPMU, które są dziećmi elementu głównego PGYUNGVVGT. Szablony są bardzo przydatne podczas orga- nizacji du ych arkuszy stylów. U ywanie ró nych szablonów do formatowania okre- ślonych elementów bardziej ułatwia wyszukiwanie i szybką aktualizację albo zmianę formatowania ni przeszukiwanie pojedynczego wielkiego szablonu. Jeżeli nie ma żadnych szablonów, które dopasowują części dokumentu XML, niedo- pasowane części dokumentu będą wysyłane na wyjście jako dane tekstowe bez znakowania. Dzieje się tak, ponieważ szablon domyślny dla elementów odrzuca znaczniki i wysyła na wyjście tekst. Na przykład wyobraź sobie arkusz stylów z wy- druku 4.7 bez pierwszego szablonu, który dopasowuje element główny. Jeżeli chciał- byś zobaczyć efekt, to po uruchomieniu strony JSP (dalej w rozdziale) usuń pierw- szy szablon i zobacz, co się wydarzy. Pierwszą częścią danych wyjściowych dokumentu XML będą dane tekstowe z ele- mentów niedopasowanych w jakichkolwiek szablonach. W tym przykładzie jest to element JGCFGT i jego dzieci (ten tekst jest pierwszym, poniewa przetwarzanie wyko- nywane jest od początku w kolejności źródłowego pliku XML, kiedy nie ma adnych szablonów, które dopasowują element główny). Następnie elementy NKPMU i CTVKENG, które dopasowują pozostałe szablony, są odpowiednio formatowane. Na końcu popatrzmy na kolejny nowy znacznik związany z szablonem: ZUNCRRN[VGORNCVGU UGNGEV PGYUNGVVGTCTVKENG  Ten element pozwala na wskazanie w określonym punkcie wewnątrz innego szablonu, który szablon ma zostać zastosowany do sformatowania elementów wskazywanych przez wartość atrybutu UGNGEV tego znacznika. W tym przypadku zostanie wywołany szablon, który formatuje dzieci CTVKENG elementu głównego PGYUNGVVGT. Na wydruku 4.6 są one u ywane do wysyłania na wyjście wyniku wywoływanego szablonu we wła- ściwym miejscu. Więcej o dostępie do danych elementu XML Musimy teraz odejść od szablonów, aby omówić kolejną nową składnię, która jest u y- wana w kodzie pokazanym na wydruku 4.7. Załó my, e tworzona jest strona HTML
    38. 16 Część II ♦ Integracja JSP i XML-a przez przekształcenie XML/XSL. Jak mo emy wybrać wartości tekstowe XML ze znacz- nika, aby umieścić je wewnątrz atrybutu HTML JTGH? Mo emy u yć znacznika XCNWGQH, czy nie? Utworzylibyśmy coś wyglądającego w ten sposób: C JTGH XCNWGQH UGNGEV GNGOGPVPCOG  Czy widzisz jakiś błąd w tej linii? Ta linia nie jest poprawna, poniewa znaczniki XML nie są właściwie zagnie d one, albo dokładniej, znacznik jest otwierany wewnątrz innego znacznika. Potrzebujemy sposobu na obejście tego problemu. Okazuje się, e istnieje skrócona notacja, która u ywa nawiasów klamrowych w celu określenia węzłów, które muszą zostać wybrane. Ta notacja jest u ywana w arkuszu stylów z wydruku 4.7 i wy- gląda następująco: VF JTGH ]NKPM_ PCOG NKPM]"RQUKVKQP_ Skrót jest u ywany dwa razy w powy szym fragmencie kodu. Wartość atrybutu JTGH znacznika zakotwiczenia staje się danymi tekstowymi aktualnie wybranego elementu NKPM z dokumentu XML. Nazwa znacznika zakotwiczenia jest kombinacją ciągu NKPM i warto- ści atrybutu RQUKVKQP znajdującego się w dokumencie XML. Czy nie jest to sprytne? Kiedy ju rozumiemy budowę plików XML i XSL, przejdźmy do strony JSP. Ta strona jest bardzo podobna do tej pokazanej na wydrukach 4.3 i 4.5. Jedyną ró nica jest, e zamiast umieszczania wyniku przekształcenia w buforze wyjściowym przez obiekt 5VTGCO4GUWNV, mamy umieścić je w innym pliku JSP. Na wydruku 4.8 pokazano kod źródłowy dla pliku JSP, który przekształci XML za po- mocą arkusza stylów XSL. Ró nice między tym i wydrukiem 4.3 są zaznaczone drukiem wytłuszczonym. Zapisz ten plik jako webapps/xmlbook/chapter4/CreateNewsLetter.jsp. Wydruk 4.8. CreateNewsLetter.jsp; przesyłanie wyjścia do pliku  " RCIG KORQTV LCXCZZONVTCPUHQTO
    39.  LCXCZZONVTCPUHQTOUVTGCO
    40.  LCXCKQ
    41.  5VTKPI NUARCVJ  TGSWGUVIGV5GTXNGV2CVJ  NUARCVJ  NUARCVJUWDUVTKPI NUARCVJKPFGZ1H %TGCVG0GYU.GVVGTLUR  5VTKPI NUA,524GUWNV  CRRNKECVKQPIGV4GCN2CVJ NUARCVJ 0GYU.GVVGTLUR  5VTKPI NUAZON  CRRNKECVKQPIGV4GCN2CVJ NUARCVJ 0GYU.GVVGTZON  5VTKPI NUAZUN  CRRNKECVKQPIGV4GCN2CVJ NUARCVJ 0GYU.GVVGTZUN  (KNG9TKVGT NAYTKVGAHKNG  PGY (KNG9TKVGT NUA,524GUWNV  5VTGCO5QWTEG ZON  PGY 5VTGCO5QWTEG PGY (KNG NUAZON  5VTGCO5QWTEG ZUN  PGY 5VTGCO5QWTEG PGY (KNG NUAZUN  5VTGCO4GUWNV TGUWNV  PGY 5VTGCO4GUWNV NAYTKVGAHKNG  6TCPUHQTOGT(CEVQT[ VHCEVQT[  6TCPUHQTOGT(CEVQT[PGY+PUVCPEG 
    42. Rozdział 4. ♦ Szybkie wprowadzenie do JSP i XML 17 6TCPUHQTOGT VTCPUHQTOGT  VHCEVQT[PGY6TCPUHQTOGT ZUN  VTCPUHQTOGTVTCPUHQTO ZON TGUWNV  NAYTKVGAHKNGENQUG  LURHQTYCTF RCIG 0GYU.GVVGTLUR  Ten plik zaczyna się tak samo jak pozostałe JSP utworzone w tym rozdziale. Pobieramy ście kę dostępu do samego pliku JSP i następnie u ywamy tej ście ki do utworzenia ciągu określającego, gdzie umieszczone są pliki XML, XSL i wynikowa strona JSP. Przyj- mujemy, e wszystkie pliki będą umieszczone w tym samym katalogu. Ró nicą tym razem jest, e tworzymy dodatkowy ciąg dla pliku wynikowego JSP: 5VTKPI NUA,524GUWNV  CRRNKECVKQPIGV4GCN2CVJ NUARCVJ 0GYU.GVVGTLUR  Następnie tworzymy obiekt (KNG9TKVGT, który zostanie wykorzystany do zapisu pliku znakowego, mianowicie naszego pliku wynikowego o nazwie NewsLetter.jsp: (KNG9TKVGT NAYTKVGAHKNG  PGY (KNG9TKVGT NUA,524GUWNV  Dalej obiekty 5VTGCO5QWTEG są ponownie u ywane do przechowywania XML i XSL. Obiekt 6TCPUHQTOGT(CEVQT[ jest u ywany do utworzenia transformatora, który zastosuje arkusz stylów do pliku XML i umieści wynik w obiekcie 5VTGCO4GUWNV, który wysyła dane wyjściowe do pliku JSP. Po zakończeniu przekształcenia musimy zamknąć wynikowy plik JSP: NAYTKVGAHKNGENQUG  Na końcu wykonamy przekierowanie strony, abyśmy mogli zobaczyć wyniki. U ycie następującego elementu akcji JSP przekieruje serwer do innego pliku, który zostanie prze- słany do przeglądarki WWW: LURHQTYCTF RCIG 0GYUNGVVGTLUR  Zwykle, aby oglądać nasz biuletyn, będziemy u ywać pliku JSP o nazwie NewsLet- ter.jsp. Ten plik nie wykonuje adnych przekształceń, jest to raczej wynik przekształ- cenia. Po uruchomieniu pliku CreateNewsLetter.jsp popatrz na źródło NewsLetter.jsp. Jest to zwykły plik HTML, który zawiera wyniki przekształcenia i wygląda w prze- glądarce tak, jak na rysunku 4.4. Teraz mo esz zapytać, dlaczego tworzymy końcowe wyjście w postaci strony JSP, chocia zawiera ona tylko kod HTML? Zwykle potrzebne będzie inne przetwarzanie, które zdarza się na docelowej stronie JSP. Na przykład w biuletynie JSPBuzz, gdzie wykonywany jest podobny proces, końcowa strona wyjścia dołącza specjalne pliki JSP nagłówka i stopki, aby obsłu yć standardowe nagłówki i stopki naszej witryny. Zaletą takiego systemu jest to, e biuletyn wykonuje tylko przetwarzanie, które musi się zdarzyć przy ka dym wywołaniu, a rzeczywiste przekształcenie XML/XSL zdarza się tylko raz na dwa tygodnie, w momencie publikacji biuletynu.
    43. 18 Część II ♦ Integracja JSP i XML-a Rysunek 4.4. Wynik uruchomienia CreateNewsLetter.jsp Dużo XML-a i XSL-a, niewiele JSP Przedstawimy teraz szersze spojrzenie na zagadnienia, które właśnie omówiliśmy. Mo esz zastanawiać się, dlaczego tyle czasu zajmujemy się tym, co dzieje się wewnątrz XML i XSL. Faktycznie część omawiająca JSP w tym rozdziale wydaje się dość nie- wielka. Faktem jest, e mo na spojrzeć na technologię JSP jak na klej, który utrzy- muje wszystko razem. Typowa strona JSP/XML wymaga tylko trochę kodu JSP, aby utrzymać wszystko razem, ale wymaga du o XML-a i XSL-a w celu wygenerowania wyników. Tak więc omó- wienie XML-a i XSL-a jest tak wa ne jak JSP, poniewa w tych przykładach XML i XSL rzeczywiście wykonują większość pracy, która musi zostać zrobiona. Prawdziwa tajemnica projektu JSP le y w wiedzy, jak połączyć razem wiele elementów, zanim zostaną one przesłane do klienta. Kod JSP w większości aplikacji JSP jest faktycznie najmniejszą częścią całego kodu. Większość zadań na jakiejkolwiek stronie JSP jest rozdzielana na inne procesy, takie jak baza danych, przekształcenia XSLT, JavaBeans, usługi WWW i inne procesy zewnętrzne. Strony JSP są u ywane właśnie w celu połączenia wszystkiego razem. Faktem jest, e JSP stanowi najprostszą część w zbiorze tych zagadnień. Pierwszym du ym krokiem w kierunku stania się wielkim programistą JSP jest zrozumienie, e twoje umiejętności zale ą bardziej od wiedzy o wszystkich wspólnie wykorzystywanych technologiach i umiejętności ich połączenia w celu utworzenia danych wyjściowych dla klienta. Mo na powiedzieć, e najlepsze strony JSP to takie, które zawierają jak najmniej kodu JSP i mają jak największą modularność.
    44. Rozdział 4. ♦ Szybkie wprowadzenie do JSP i XML 19 JSP i XML: Przegląd Gdzie teraz jesteśmy? Wcześniej w tym rozdziale omawialiśmy JAXP i JSP. JAXP umo liwia nam łatwy dostęp do dokumentów XML i zastosowanie arkuszy XSL do plików XML. JAXP umo liwia te sterowane zdarzeniami przetwarzania XML. Jednak musimy zacząć od omówienia po kolei warstw przetwarzania, które było wykonywane w przykładach. Najpierw mamy XML, który jest językiem u ywanym do tworzenia dokumentów. Te dokumenty są połączeniem danych i znakowania u ywanego do opisywania przecho- wywanych danych. Następnie strony JSP są u ywane jako szablon do wykonywania skryptów w celu uruchomienia kodu po stronie serwera. Problemem jest, e strona JSP i dokument XML nie znajdują się w tym samym miejscu o tym samym czasie. W kodzie wygląda to tak, jak gdyby wszystko znajdowało się w jednym miejscu. Jednak e JSP jest procesem wykonywanym w pamięci, podczas gdy plik XML jest przechowywany w innej lokalizacji. Oznacza to, e JSP nigdy bezpośrednio nie u ywa pliku XML. Musimy utworzyć repre- zentację danych XML, do której kod ma dostęp. Reprezentacja dokumentu jest logiczną konstrukcją dokumentu XML, która znajduje się w pamięci. Mamy kilka mo liwości odnośnie rodzajów reprezentacji, których mo emy u ywać, ale ostatecznie wszystkie są oparte na pewnym modelu reprezentacji danych. JAXP jest wspaniały, poniewa pozwala nam łatwo przekształcać plik XML za po- mocą XSLT. We wszystkich naszych wcześniejszych przykładach główny wysiłek był ukierunkowany na obsługę przekształceń XSLT na pliku XML. Jednak co mo emy zrobić, kiedy potrzebujemy zmodyfikować plik XML? Albo co wydarzy się, kiedy chce- my utworzyć wyjście przez u ycie kodu Javy zamiast przekształcenia XSLT? W tych przypadkach potrzebujemy zajrzeć pod powierzchnię JAXP. W jednym z przykładów kod otrzymał kilka określonych danych z pliku XML i następ- nie dołączył je do dokumentu XSL. Jednak kod nie objaśniał, co zdarzało się za kuli- sami dostępu do danych. W tym przypadku wykorzystywaliśmy bardziej bezpośrednio inne API w celu badania plików XML. To prowadzi nas do następnego odkrycia: kiedy zagłębiamy się dalej, znajdujemy wiele API, których mo emy u ywać w celu wyko- nania ró nych działań na plikach XML. Mo esz zastanawiać się, czy jest to rzeczywi- ście potrzebne, aby znać wszystkie API. Powinniśmy znać tylko najwa niejsze API, z których ka de umo liwia rozwiązanie innego problemu. Oznacza to, e powinniśmy omówić podstawowe API, które mo emy wykorzystać. API XML i XSL w Javie W tym dziale omawiamy API Javy, których jeszcze nie przedstawialiśmy. W później- szych rozdziałach u yjemy kilku z tych API, aby ułatwić ycie u ytkownikom XML-a.
    45. 20 Część II ♦ Integracja JSP i XML-a DOM (obiektowy model dokumentu XML) DOM (ang. Document Object Model — obiektowy model dokumentu) będzie omó- wiony szczegółowo w rozdziale 5., „U ywanie DOM”. DOM przedstawia standardową reprezentację W3C dokumentu XML. Zaletą DOM jest fakt, e jest standardem i te same metody DOM, które działają w kodzie Javy, będą działać w przeglądarce WWW u ywającej JavaScriptu, albo w aplikacji napisanej w języku C. DOM jest szeroko znany we wspólnocie u ytkowników. Największym problemem DOM jest to, e tworzy on wielkie reprezentacje dokumen- tów XML w pamięci. Czyni to DOM wolnym i często niepraktycznym podczas obsługi wielkich dokumentów XML, poniewa cały dokument XML musi zostać zanalizowany przez DOM przed rozpoczęciem przetwarzania. Problem ten był siłą napędową stwo- rzenia wielu innych API XML, poniewa istnieje du e zapotrzebowanie na obsługę większych dokumentów. Najpopularniejszym parserem Java DOM jest Xerces. Kolejny często u ywany parser DOM to Crimson. Jednak e Xerces 2.0 jest uwa any za substytut parsera Crimson. Jak wspomniano wcześniej, Xerces 1.4.3 daje najlepszą podstawę do u ycia go jako parsera DOM w tej ksią ce. Jest tak z powodu faktu, e Tomcat 4.0 u ywa Xercesa w wersji 1.4.3. Xerces 2.0 jest wcią w fazie w rozwoju. Witryna główna specyfikacji DOM to http://www.w3.org/DOM/. SAX (parser XML) SAX (ang. Simple API for XML — proste API dla XML) jest narzędziem do sterowa- nego zdarzeniami przetwarzania XML. SAX jest szeroko u ywany i będzie szczegó- łowo omówiony w rozdziale 6., „Programowanie SAX”. Krótko mówiąc, SAX umo liwia programistom przetwarzanie dokumentu XML poprzez definiowanie zdarzeń (ang. events). Zdarzenie jest wywołaniem zwrotnym od parsera SAX, kiedy napotykane są pewne warunki podczas sekwencyjnego odczytu doku- mentu XML przez parser SAX. U ytkownicy mogą podjąć dowolne działanie podczas wywołania zwrotnego, od czytania danych z pliku XML do działania na danych. Jest to ostatecznie decyzja programisty, czy tworzyć wywołania zwrotne. Od programisty zale y te określenie, jakie działanie podjąć przy otrzymaniu wywołania zwrotnego od SAX. SAX szybko staje się API ni szego poziomu. Oznacza to, e chocia wielu programistów u ywa SAX, dzieje się to pośrednio przez inne narzędzia albo API, takie jak JAXP. U ywanie SAX bezpośrednio wymaga du o pracy, ale jest szybkie i skuteczne. Wiele innych API u ywa SAX jako szybki sposób na wczytanie pliku XML. Fak- tycznie wiele narzędzi XML u ywa SAX jako domyślnego parsera XML ze względu na szybkość jego działania. Jednak powinieneś zawsze sprawdzić dokumentację u y- wanego przez Ciebie narzędzia, aby być pewnym, jaki jest domyślny parser, gdy mo e się to ró nić w zale ności od narzędzia. Witrynę główną SAX mo na znaleźć pod adresem http://www.saxproject.org/.
    46. Rozdział 4. ♦ Szybkie wprowadzenie do JSP i XML 21 JDOM (reprezentacja dokumentu XML) JDOM to metoda tworzenia reprezentacji Javy dokumentu XML. JDOM obejmuje kilka klas, które pozwalają na u ycie SAX albo DOM do przeczytania danych XML do jego własnej reprezentacji Javy. JDOM obsługuje wiele często u y- wanych opcji, które obsługuje DOM. W przeciwieństwie do wielu innych API omó- wionych w tym dziale, które u ywają interfejsów Javy do zdefiniowania reprezentacji Javy, JDOM u ywa konkretnych klas w celu zdefiniowania reprezentacji Javy. To podej- ście czyni JDOM łatwiejszym do bezpośredniego u ycia ni SAX albo DOM. Jego wadą jest ograniczona elastyczność w implementacji. Dodaje to JDOM innego smaku ni większość innych API. Jednym z efektów jest to, e nie zobaczysz obiektów-fabryk wewnątrz JDOM. JDOM wykorzystuje sporo z API Javy %QNNGEVKQP, a szczególnie interfejsów Javy .KUV i /CR, w celu zdefiniowania reprezentacji. Oznacza to, e programista mo e u ywać standardowych struktur Javy w celu posługiwania się reprezentacją JDOM. JDOM nie umo liwia przetwarzania XML; zamiast tego trzeba u yć SAX albo wczytać reprezentację DOM. JDOM udostępnia kilka klas, które ułatwiają u ycie SAX albo DOM jako źródła danych. JDOM jest wymieniony jako JSR-102 na witrynie Java Community Process. Projekt JDOM mo na znaleźć na witrynie http://www.jdom.org/. dom4j (reprezentacja dokumentu XML) dom4j to projekt o jawnym kodzie źródłowym, który zawiera zbiór API Javy u ywa- nych do manipulacji plikami XML, XSLT i XPath. To API jest podobne do JDOM w tym sensie, e tworzy opartą na Javie reprezentację dokumentu XML. Jednak ró ni się te u yciem interfejsów Javy. U ywanie interfej- sów ma swoje zalety (elastyczny i rozszerzalny projekt) i wady (trzeba poznać kilka dodatkowych warstw). To API pozwala na u ycie obiektów Javy %QNNGEVKQP, które upraszczają obsługę struktury XML. Z dom4j łatwo jest u ywać standardu DOM i mieć jednocześnie dostęp do wygodnej w u yciu reprezentacji dokumentu w Javie. Ponadto dom4j mo na łatwo zintegrować z JAXP, tak jak SAX i DOM. Nadzwyczaj przyjemną cechą dom4j jest fakt, e za- wiera oparty na zdarzeniach model przetwarzania dokumentów XML. To pozwala parserowi dom4j na obsługę wielkich plików XML w częściach, a nie jako pojedyn- czych dokumentów. Oznacza to, e cały dokument XML nie musi znajdować się w pa- mięci (du y plus kiedy ma się do czynienia z obszernym plikiem XML). U yjemy tej cechy w rozdziale 14., „Tworzenie usługi WWW”. Projekt dom4j mo na znaleźć na witrynie http://dom4j.org/.
    47. 22 Część II ♦ Integracja JSP i XML-a JAXB (parser i reprezentacja dokumentu XML) JAXB (ang. Java Architecture for XML Binding — architektura JAVA dla łączenia XML) jest u ywany w celu automatyzacji odwzorowania pomiędzy dokumentami XML i Javą. Unikalnym podejściem JAXB jest u ycie schematu XML (obecnie DTD, a w przy- szłych wersjach schematu XML) do stworzenia zoptymalizowanej klasy Javy w celu wykonywania przetwarzania reprezentacji dokumentu XML. To pozwala JAXB na automatyczne u ycie tych dostosowanych klas Javy do przetwarzania dokumentu XML szybciej ni SAX, udostępniając jednocześnie reprezentację struktury danych dokumentu XML, która jest podobna do DOM. Jego wadą jest fakt, e wynikowa reprezentacja dokumentu XML jest funkcjonalna tylko względem schematu XML, do którego została wygenerowana. JAXB u ywa języka wiązań, aby pozwolić programiście na optymaliza- cję wynikowej reprezentacji dokumentu XML względem schematu i potrzeb projektu. JAXB jest rozwiązaniem, które działa najlepiej, kiedy potrzebna jest reprezentacja dokumentu wymagająca szybkiego sprawdzania prawidłowości struktury zawartości, a dokument XML ma stały format. W czasie pisania tej ksią ki był to wcią nowy projekt. Jednak najprawdopodobniej jego wynikiem będzie jedno ze standardowych API do obsługi dokumentów XML. Projekt JAXB mo na znaleźć pod adresem http://java.sun.com/xml/jaxb/. JAXB jest wymieniony jako JSR-031 na witrynie Java Community Process. Podsumowanie Ten rozdział dał ci pierwszy posmak wspólnego wykorzystania XML-a i JSP. JAXP czyni łatwym połączenie plików XML i arkuszy stylów XSL w celu tworzenia nowych stron. Jednak XSLT jest tylko częścią większego obrazu w u ywaniu XML-a i JAXP. Pod- czas badania co jeszcze mo na zrobić szybko, zobaczymy, e dostępnych jest wiele API. Ka de API udostępnia unikalne mo liwości, zalety oraz wady. Chocia mogli- byśmy omówić zalety ka dego z nich na papierze, to podczas kodowania odkryjemy zalety ró nych narzędzi. W następnych rozdziałach nauczysz się szczegółów, jak pro- gramowo badać, modyfikować i wykonywać operacje na dokumencie XML. Wykorzystując JAXP, odkryliśmy kilka zadziwiających faktów dotyczących JSP. Pierw- szym faktem jest, e tajemnica wykorzystania JSP le y raczej w połączeniu ró nych technologii, ani eli w samym u ywaniu JSP. Drugim jest, e siła projektu JSP le y w jego modularności, a JSP jest w rzeczywistości tylko klejem albo szablonem do łączenia modułów.
    SlideShare Zeitgeist 2009

    + Wydawnictwo HelionWydawnictwo Helion Nominate

    custom

    99 views, 0 favs, 0 embeds more stats

    Tworzenie aplikacji i usług WWW za pomocą JSP i X more

    More info about this document

    © All Rights Reserved

    Go to text version

    • Total Views 99
      • 99 on SlideShare
      • 0 from embeds
    • Comments 0
    • Favorites 0
    • Downloads 0
    Most viewed embeds

    more

    All embeds

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?

    Categories