SlideShare a Scribd company logo
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
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
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
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
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
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
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
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.
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ś
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.
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.
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
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
LCXCZZONVTCPUHQTOUVTGCO
LCXCKQ
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
, 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
, 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
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
, 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.
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.
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
LCXCZZONVTCPUHQTOUVTGCO
LCXCKQ
LCXCZZONRCTUGTU
QTIYEFQO
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[PGYQEWOGPV$WKNFGT

           QEWOGPV FQE  DWKNFGTRCTUG
PGY (KNG
NUAZON

           0QFG.KUV PQFGU  FQEIGV'NGOGPVU$[6CI0COG
 $#00'4# 
           KPV KPV0QFG.GPIVJ  PQFGUIGV.GPIVJ


           KPV KPV4CPFQO   
 
KPV 
/CVJTCPFQO
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
daje nam dostęp do implementacji JAXP DOM i pozwala na utworzenie
        w pamięci drzewiastej struktury dokumentu XML za pomocą klas QEWOGPV$WKNFGT

More Related Content

PDF
JavaScript. Projekty
PDF
PHP i MySQL. Dynamiczne strony WWW. Szybki start
PDF
AJAX w mgnieniu oka
PDF
Serwisy internetowe. Programowanie
PDF
PHP, Microsoft IIS i SQL Server. Projektowanie i programowanie baz danych
PDF
Ajax. Niezbędnik projektanta dynamicznych aplikacji
PDF
100 sposobów na Access
PDF
MySQL. Podstawy
JavaScript. Projekty
PHP i MySQL. Dynamiczne strony WWW. Szybki start
AJAX w mgnieniu oka
Serwisy internetowe. Programowanie
PHP, Microsoft IIS i SQL Server. Projektowanie i programowanie baz danych
Ajax. Niezbędnik projektanta dynamicznych aplikacji
100 sposobów na Access
MySQL. Podstawy

What's hot (20)

PDF
Tworzenie stron WWW w praktyce. Wydanie II
PDF
mod_rewrite. Podręcznik administratora
PDF
XSLT dla każdego
PDF
HTML i XHTML dla każdego
PDF
PHP i MySQL. Dynamiczne strony WWW. Szybki start. Wydanie II
PDF
PHP i MySQL. Tworzenie stron WWW. Wydanie drugie. Vademecum profesjonalisty
PDF
Java. Usługi WWW. Vademecum profesjonalisty
PDF
PHP i MySQL. Witryna WWW oparta na bazie danych. Wydanie III
PDF
Ajax. Wzorce i najlepsze rozwiązania
PDF
PHP, MySQL i Apache dla każdego. Wydanie II
PDF
Tworzenie stron WWW. Kurs
PDF
Java. Rozmówki
PDF
Praktyczny kurs SQL
PDF
SQL w mgnieniu oka
PDF
Ajax, JavaScript i PHP. Intensywny trening
PDF
JavaScript. Zaawansowane programowanie
PDF
Delphi 7 i bazy danych
PDF
Ajax. Biblia
PDF
Internet. Ilustrowany przewodnik
PDF
Pajączek 5 NxG. Ćwiczenia praktyczne
Tworzenie stron WWW w praktyce. Wydanie II
mod_rewrite. Podręcznik administratora
XSLT dla każdego
HTML i XHTML dla każdego
PHP i MySQL. Dynamiczne strony WWW. Szybki start. Wydanie II
PHP i MySQL. Tworzenie stron WWW. Wydanie drugie. Vademecum profesjonalisty
Java. Usługi WWW. Vademecum profesjonalisty
PHP i MySQL. Witryna WWW oparta na bazie danych. Wydanie III
Ajax. Wzorce i najlepsze rozwiązania
PHP, MySQL i Apache dla każdego. Wydanie II
Tworzenie stron WWW. Kurs
Java. Rozmówki
Praktyczny kurs SQL
SQL w mgnieniu oka
Ajax, JavaScript i PHP. Intensywny trening
JavaScript. Zaawansowane programowanie
Delphi 7 i bazy danych
Ajax. Biblia
Internet. Ilustrowany przewodnik
Pajączek 5 NxG. Ćwiczenia praktyczne
Ad

Viewers also liked (17)

PDF
Tworzenie cyfrowego wideo
PDF
PHP. Programowanie w systemie Windows. Vademecum profesjonalisty
PDF
Access 2002. Tworzenie baz danych
PDF
MS Windows 2000 od środka
PDF
W sercu PC - według Petera Nortona
PDF
Algorytmy w C
PDF
RS 232C - praktyczne programowanie. Od Pascala i C++ do Delphi i Buildera. Wy...
PDF
Apache 2.0 dla zaawansowanych
PDF
Programowanie obiektowe w Visual Basic .NET dla każdego
PDF
Po prostu Flash MX
PDF
Prowadzenie list dystrybucyjnych
PDF
Asembler dla procesorów Intel. Vademecum profesjonalisty
PDF
AutoCAD 2002 i 2004. Tworzenie makr w VBA
PDF
Po prostu własny serwer internetowy
PDF
Flash MX. Vademecum profesjonalisty
PDF
Bazy danych i MySQL. Od podstaw
PDF
Excel w biurze i nie tylko
Tworzenie cyfrowego wideo
PHP. Programowanie w systemie Windows. Vademecum profesjonalisty
Access 2002. Tworzenie baz danych
MS Windows 2000 od środka
W sercu PC - według Petera Nortona
Algorytmy w C
RS 232C - praktyczne programowanie. Od Pascala i C++ do Delphi i Buildera. Wy...
Apache 2.0 dla zaawansowanych
Programowanie obiektowe w Visual Basic .NET dla każdego
Po prostu Flash MX
Prowadzenie list dystrybucyjnych
Asembler dla procesorów Intel. Vademecum profesjonalisty
AutoCAD 2002 i 2004. Tworzenie makr w VBA
Po prostu własny serwer internetowy
Flash MX. Vademecum profesjonalisty
Bazy danych i MySQL. Od podstaw
Excel w biurze i nie tylko
Ad

Similar to JSP i XML (20)

PDF
Projektowanie baz danych XML. Vademecum profesjonalisty
PDF
Java. Techniki zaawansowane. Wydanie VIII
PDF
Zwiększ szybkość! Optymalizacja serwisów internetowych
PDF
Oracle Database 10g. Nowe możliwości
PDF
JavaScript dla każdego
PDF
Java w komercyjnych usługach sieciowych. Księga eksperta
PDF
Po prostu HTML 4. Wydanie III
PDF
J2EE. Vademecum profesjonalisty. Wydanie II
PDF
Po prostu JavaScript i Ajax. Wydanie VI
PDF
JavaScript i DHTML. Receptury
PDF
Hack Proofing XML. Edycja polska
PDF
SQL. Szybki start
PDF
Linux w sieci
PDF
Flash i PHP5. Podstawy
PDF
Excel 2003. Programowanie. Zapiski programisty
PDF
Po prostu PHP. Techniki zaawansowane
PDF
PHP, MySQL i Apache dla każdego. Wydanie III
PDF
CSS i Ajax. Strony WWW zgodne ze standardami sieciowymi W3C
PDF
MySQL. Szybki start
PDF
Sieci komputerowe. Kompendium
Projektowanie baz danych XML. Vademecum profesjonalisty
Java. Techniki zaawansowane. Wydanie VIII
Zwiększ szybkość! Optymalizacja serwisów internetowych
Oracle Database 10g. Nowe możliwości
JavaScript dla każdego
Java w komercyjnych usługach sieciowych. Księga eksperta
Po prostu HTML 4. Wydanie III
J2EE. Vademecum profesjonalisty. Wydanie II
Po prostu JavaScript i Ajax. Wydanie VI
JavaScript i DHTML. Receptury
Hack Proofing XML. Edycja polska
SQL. Szybki start
Linux w sieci
Flash i PHP5. Podstawy
Excel 2003. Programowanie. Zapiski programisty
Po prostu PHP. Techniki zaawansowane
PHP, MySQL i Apache dla każdego. Wydanie III
CSS i Ajax. Strony WWW zgodne ze standardami sieciowymi W3C
MySQL. Szybki start
Sieci komputerowe. Kompendium

More from Wydawnictwo Helion (20)

PDF
Tworzenie filmów w Windows XP. Projekty
PDF
Blog, więcej niż internetowy pamiętnik
PDF
Access w biurze i nie tylko
PDF
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczne
PDF
E-wizerunek. Internet jako narzędzie kreowania image'u w biznesie
PDF
Microsoft Visual C++ 2008. Tworzenie aplikacji dla Windows
PDF
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie II
PDF
Makrofotografia. Magia szczegółu
PDF
Windows PowerShell. Podstawy
PDF
Java. Efektywne programowanie. Wydanie II
PDF
JavaScript. Pierwsze starcie
PDF
PowerPoint 2007 PL. Seria praktyk
PDF
Excel 2007 PL. Seria praktyk
PDF
Access 2007 PL. Seria praktyk
PDF
Word 2007 PL. Seria praktyk
PDF
Serwisy społecznościowe. Budowa, administracja i moderacja
PDF
AutoCAD 2008 i 2008 PL
PDF
Bazy danych. Pierwsze starcie
PDF
Inventor. Pierwsze kroki
PDF
Serwer SQL 2008. Administracja i programowanie
Tworzenie filmów w Windows XP. Projekty
Blog, więcej niż internetowy pamiętnik
Access w biurze i nie tylko
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczne
E-wizerunek. Internet jako narzędzie kreowania image'u w biznesie
Microsoft Visual C++ 2008. Tworzenie aplikacji dla Windows
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie II
Makrofotografia. Magia szczegółu
Windows PowerShell. Podstawy
Java. Efektywne programowanie. Wydanie II
JavaScript. Pierwsze starcie
PowerPoint 2007 PL. Seria praktyk
Excel 2007 PL. Seria praktyk
Access 2007 PL. Seria praktyk
Word 2007 PL. Seria praktyk
Serwisy społecznościowe. Budowa, administracja i moderacja
AutoCAD 2008 i 2008 PL
Bazy danych. Pierwsze starcie
Inventor. Pierwsze kroki
Serwer SQL 2008. Administracja i programowanie

JSP i XML

  • 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
  • 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
  • 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[PGYQEWOGPV$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 PGYUNGVVGTXQNWOG ZUNXCNWGQH UGNGEV PGYUNGVVGTKUUWG 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
  • 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.