You are on page 1of 36

IDZ DO

PRZYKADOWY ROZDZIA
SPIS TRECI

KATALOG KSIEK
KATALOG ONLINE
ZAMW DRUKOWANY KATALOG

TWJ KOSZYK
DODAJ DO KOSZYKA

CENNIK I INFORMACJE
ZAMW INFORMACJE
O NOWOCIACH
ZAMW CENNIK

CZYTELNIA
FRAGMENTY KSIEK ONLINE

Wydawnictwo Helion
ul. Chopina 6
44-100 Gliwice
tel. (32)230-98-63
e-mail: helion@helion.pl

XML

Kompendium programisty
Autor: Fabio Arciniegas
Tumaczenie: Tomasz mijewski
ISBN: 83-7197-573-2
Tytu oryginau: XML Developer
Format: B5, stron: 589
Zawiera CD-ROM
Ksika ta pomoe Ci przy tworzeniu wydajnych aplikacji XML oraz przygotowywaniu
elastycznych struktur dokumentw. Przedstawiono tu wiele technologii XML
m.in. XML bezprzewodowe (WAP, VoiceXML i inne), a take wiele przykadw oraz jzyk
i powizane z nim technologie. Ksika jest przeznaczona dla redniozaawansowanych
i zaawansowanych twrcw publikacji sieciowych. Mona z niej nauczy si, jak
wykorzysta XML do publikacji w Sieci i do wymiany danych; mona pozna
nowopowstajce standardy, w tym schematy XML, XSLT, XPath, XLink i wiele innych.
Tworzenie elastycznej struktury dokumentw XML.
Dodawanie informacji rdowych do dokumentw XML.
Zrealizowanie relacji w bazie danych XML.
Okrelenie sposobu odczytywania dokumentu XML.
Wysoka jako rozwiza.
Zasady uycia si XML.

"
"
"
"
"
"

Na doczonej do ksiki pycie CD znajduje si przykadowy kod, edytory XML


i parsery, ktre umoliwiaj zaoszczdzenie wielu godzin pracy. Takiego poczenia
specjalistycznej wiedzy z praktycznymi poradami dla projektantw i programistw nie
znajdziesz w adnej innej ksice.

O Autorze................................................................................................ 15
Wstp..................................................................................................... 17

Cz I Struktura, skadnia i uycie XML ............................... 21


Rozdzia 1. Podstawy XML....................................................................... 23
Wprowadzenie...................................................................................................................... 23
Mity na temat znacznikw ................................................................................................... 23
Czym s znaczniki? ........................................................................................................ 24
Definicja XML ..................................................................................................................... 29
Definicja cisa ............................................................................................................... 29
Definicja z punktu widzenia Sieci.................................................................................. 29
Definicja z punktu widzenia danych .............................................................................. 30
Album rodzinny XML.......................................................................................................... 30
Skadnia i najwaniejsze cechy XML .................................................................................. 30
Wprowadzenie ................................................................................................................ 30
XML szczegy ......................................................................................................... 33
Przykadowy dokument XML.............................................................................................. 46
Podsumowanie ..................................................................................................................... 46

Rozdzia 2. DTD: Charakterystyka i techniki ............................................. 47


Wprowadzenie...................................................................................................................... 47
Wprowadzenie do DTD ....................................................................................................... 47
DTD a dokumenty .......................................................................................................... 47
Deklarowanie elementw ............................................................................................... 48
Deklarowanie atrybutw ................................................................................................ 50
Deklarowanie encji......................................................................................................... 53
Wicej szczegw na temat DTD....................................................................................... 55
Deklaracje typu elementu ............................................................................................... 55
Deklaracje list atrybutw................................................................................................ 59
Wicej o encjach .................................................................................................................. 67
Rodzaje encji .................................................................................................................. 67
Zewntrzne encje oglne................................................................................................ 67

XML. Kompendium programisty

Wewntrzne encje oglne............................................................................................... 68


Encje nieparsowane ........................................................................................................ 68
Przydatny zestaw encji parametrycznych ............................................................................ 69
Sekcje warunkowe.......................................................................................................... 71
Wewntrzny i zewntrzny podzbir DTD...................................................................... 71
Podsumowanie ..................................................................................................................... 72

Rozdzia 3. Przestrzenie nazw. Wprowadzenie do przetwarzania XML......... 73


Wprowadzenie...................................................................................................................... 73
Przestrzenie nazw................................................................................................................. 73
Definicja i przykad ........................................................................................................ 73
Przykad .......................................................................................................................... 75
Deklaracja przestrzeni nazw........................................................................................... 76
Nazwy kwalifikowane .................................................................................................... 77
Struktura szczegy ................................................................................................... 78
Typowe nieporozumienia ............................................................................................... 80
Modele przetwarzania .......................................................................................................... 82
Paradygmaty ................................................................................................................... 82
Moliwoci parserw...................................................................................................... 83
Podsumowanie ..................................................................................................................... 84

Cz II Parsowanie i programowe przetwarzanie XML ........... 85


Rozdzia 4. SAX i SAX2 (wersje 1.0 i 2.0) ................................................ 87
Do czego su SAX i SAX2? ............................................................................................. 87
Uycie SAX 1.0/SAX2 ........................................................................................................ 88
Prosty program SAX ............................................................................................................ 88
Definiowanie procedur obsugi zdarze......................................................................... 89
Zgaszanie procedur obsugi zdarze parserowi, pocztek analizy XML...................... 90
Struktura SAX2 .................................................................................................................... 90
Interfejsy SAX................................................................................................................ 91
Zaawansowane zagadnienia zwizane z SAX2 ................................................................. 104
Filtry ............................................................................................................................. 104
Adaptery ....................................................................................................................... 105
Typowe bdy w programach korzystajcych z SAX........................................................ 106
Niespjne procedury obsugi zdarze .......................................................................... 106
Naduywanie DefaultHandler ...................................................................................... 106
Bezporednie modyfikowanie stanu danych (mimo zapotrzebowania na histori) ..... 107
Podsumowanie ................................................................................................................... 108

Rozdzia 5. Zaawansowane techniki programowania w SAX i SAX2......... 109


Wprowadzenie.................................................................................................................... 109
Kilka sw o szablonach............................................................................................... 109
Wzorzec Builder w aplikacjach SAX2 .............................................................................. 110
Uycie........................................................................................................................... 110
Przykad ........................................................................................................................ 110
Budowa szablonu.......................................................................................................... 113
Przykad ........................................................................................................................ 114
Konsekwencje uycia szablonu Builder....................................................................... 119

Spis treci

Szablon Command w aplikacjach SAX2 ........................................................................... 119


Uycie........................................................................................................................... 119
Przykad ........................................................................................................................ 119
Budowa szablonu.......................................................................................................... 121
Przykad ........................................................................................................................ 122
Konsekwencje uycia szablonu Command .................................................................. 125
Sztafeta wywoa ............................................................................................................... 125
Zastosowanie ................................................................................................................ 125
Przykad ........................................................................................................................ 126
Budowa......................................................................................................................... 127
Przykad ........................................................................................................................ 129
Konsekwencje uycia sztafety wywoa...................................................................... 130
Podsumowanie ................................................................................................................... 130

Rozdzia 6. Obiektowy model dokumentu Level 2 (DOM2)....................... 131


Wprowadzenie.................................................................................................................... 131
Historia DOM ............................................................................................................... 132
Czym jest DOM............................................................................................................ 133
Maa aplikacja DOM.......................................................................................................... 135
Problem......................................................................................................................... 135
Rozwizanie ................................................................................................................. 136
Budowa DOM .................................................................................................................... 138
Przewodnik po DOM.................................................................................................... 138
Gwne interfejsy DOM ............................................................................................... 139
Bardziej zoony przykad............................................................................................ 143
Podsumowanie ................................................................................................................... 148

Rozdzia 7. Zaawansowane techniki DOM2 ............................................ 149


Wprowadzenie.................................................................................................................... 149
Aplikacje DOM2 wykorzystujce szablon Visitor ............................................................ 149
Uycie szablonu Visitor ............................................................................................... 150
Przykad ........................................................................................................................ 150
Struktura ....................................................................................................................... 156
Przykad ........................................................................................................................ 157
Konsekwencje zastosowania szablonu Visitor............................................................. 158
Aplikacje DOM2 wykorzystujce szablon Iterator............................................................ 159
Uycie szablonu Iterator............................................................................................... 159
Przykad ........................................................................................................................ 159
Budowa szablonu Iterator............................................................................................. 163
Przykad ........................................................................................................................ 164
Konsekwencje zastosowania szablonu Iterator ............................................................ 166
Aplikacje DOM2 wykorzystujce szablon Mediator......................................................... 166
Uycie........................................................................................................................... 167
Przykad ........................................................................................................................ 167
Struktura ....................................................................................................................... 170
Przykad ........................................................................................................................ 170
Konsekwencje zastosowania szablonu Mediator ......................................................... 172
Podsumowanie ................................................................................................................... 173

XML. Kompendium programisty

Cz III Technologie pomocnicze XML................................ 175


Rozdzia 8. XPath jzyk cieek XML................................................. 177
Wprowadzenie.................................................................................................................... 177
XPath teoria empiryczna ............................................................................................... 177
Uwagi wstpne ............................................................................................................. 177
Podstawy XPath............................................................................................................ 178
Narzdzia XPath................................................................................................................. 187
Tester cieek XPath .................................................................................................... 188
Rozszerzenia XPath w Emacs ...................................................................................... 189
Biblioteki ...................................................................................................................... 189
Programowe uycie XPath................................................................................................. 190
Kilka szczegw dotyczcych XPath ............................................................................... 191
cieki lokalizacji......................................................................................................... 191
Etapy............................................................................................................................. 191
Osie............................................................................................................................... 191
Zapis skrcony.............................................................................................................. 192
Podsumowanie ................................................................................................................... 192

Rozdzia 9. XPointer .............................................................................. 193


Wprowadzenie.................................................................................................................... 193
Podstawy XPointer............................................................................................................. 193
Zadania XPointer i zwizane z nim pojcia ................................................................. 194
Model i jzyk XPointer ...................................................................................................... 195
Krtko o ciekach logicznych..................................................................................... 195
Postaci przyjmowane przez XPointer........................................................................... 195
Cytowanie w XPointer ....................................................................................................... 197
Cytowanie w URI XPointer.......................................................................................... 197
Cytowanie XML w XPointer........................................................................................ 198
Cytowanie XPointer ..................................................................................................... 199
Rozszerzenia XPath w XPointer ........................................................................................ 199
Nowe zadania XPointer w XPath ................................................................................. 199
Nowe funkcje w XPath................................................................................................. 201
Dodatki do XPath podsumowanie........................................................................... 203
Narzdzia XPointer ............................................................................................................ 203
Podsumowanie ................................................................................................................... 204

Rozdzia 10. XLink................................................................................. 205


Wprowadzenie.................................................................................................................... 205
Powizania midzy danymi XML ................................................................................ 205
Elementy XLink ................................................................................................................. 207
XLink rozszerzone i proste na przykadach....................................................................... 208
Przykadowa struktura .................................................................................................. 209
Znaczniki XLink........................................................................................................... 216
cza rozszerzone ........................................................................................................ 217
cza proste.................................................................................................................. 220
Prezentacja czy XLink............................................................................................... 221
Podsumowanie: atrybuty globalne XLink i zasady ich uycia .................................... 222

Spis treci

Przykad czy XLink nie zwizanych z prezentacj......................................................... 223


O grafach ...................................................................................................................... 224
Uycie XLink przy opisywaniu w XML grafw skierowanych .................................. 224
Modelowanie grafw w Javie....................................................................................... 226
Tworzenie grafw Javy na bazie grafw XML............................................................ 227
Podsumowanie ................................................................................................................... 227

Rozdzia 11. XSLT: przeksztacanie XML ................................................ 229


Wprowadzenie.................................................................................................................... 229
Oglne wiadomoci o XSLT.............................................................................................. 229
Podstawy....................................................................................................................... 229
Proste przeksztacenie XSLT ....................................................................................... 230
Dodatkowe wiadomoci o przeksztaceniach .................................................................... 233
Dziaanie na wzach.................................................................................................... 233
Wizualizacja sposobu przeksztacania ......................................................................... 234
Procesory XSLT................................................................................................................. 235
Instalacja i wywoanie Xalan........................................................................................ 236
Instalacja i wywoanie XT............................................................................................ 236
Wszystko o jzyku XSLT .................................................................................................. 237
Dane rdowe.............................................................................................................. 237
Wstawianie nowych elementw i atrybutw................................................................ 238
Wstawianie tekstu......................................................................................................... 241
Wstawianie generowanego tekstu ................................................................................ 242
Kopiowanie................................................................................................................... 243
Numerowanie ............................................................................................................... 243
Wyraenia warunkowe ................................................................................................. 245
Ptle .............................................................................................................................. 247
Sortowanie .................................................................................................................... 247
Zmienne ........................................................................................................................ 250
Reguy nazwane............................................................................................................ 251
Przekazywanie reguom parametrw ........................................................................... 252
Podsumowanie ................................................................................................................... 254

Rozdzia 12. XSLT: zaawansowane techniki i ich zastosowanie ............... 255


Wprowadzenie.................................................................................................................... 255
Od struktury do prezentacji: wymagania funkcjonalne ..................................................... 255
Wymagania................................................................................................................... 256
Modelowanie informacji .............................................................................................. 256
Przeksztacanie w XHTML .......................................................................................... 259
Uwagi o przeksztacaniu na format PDF...................................................................... 264
Graficzna posta danych: generacja SVG.......................................................................... 264
Dane prezentowane graficznie ..................................................................................... 265
Modelowanie informacji .............................................................................................. 265
Pokazywanie danych w postaci SVG ........................................................................... 267
Przeksztacanie danych statystycznych w obrazki SVG .............................................. 269
Wielokrotne uycie arkuszy stylw ................................................................................... 271
Dwie drogi do tego samego celu .................................................................................. 272

XML. Kompendium programisty

Rozszerzanie XSLT ........................................................................................................... 272


Kiedy rozszerza XSLT ............................................................................................... 272
Rozwizania bez rekursji.............................................................................................. 273
Implementacja instrukcji times .................................................................................... 273
O innych rodzajach rozszerze..................................................................................... 276
Inne rozszerzenia .......................................................................................................... 276
Krtki przewodnik po XSLT ............................................................................................. 276
Podsumowanie ................................................................................................................... 280

Rozdzia 13. XML Schema ..................................................................... 281


Wprowadzenie.................................................................................................................... 281
XML Schema krtkie wprowadzenie ........................................................................... 281
Typy.............................................................................................................................. 282
Fazy .............................................................................................................................. 287
Typy anonimowe .......................................................................................................... 292
Modele zawartoci........................................................................................................ 293
Wielokrotne uycie elementw i atrybutw: grupy nazwane ...................................... 295
Adnotacje...................................................................................................................... 295
Podsumowanie ................................................................................................................... 296

Rozdzia 14. Zaawansowane techniki modelowania danych


w XML Schema.................................................................. 297
Wprowadzenie.................................................................................................................... 297
Zaawansowane zagadnienia zwizane z XML Schema..................................................... 297
Wyprowadzanie nowych typw i inne relacje midzy typami .................................... 298
Niepowtarzalno ......................................................................................................... 306
Modularyzacja i wielokrotne uycie ............................................................................ 307
Porwnanie XML Schema z DTD (Rick Jelliffe).............................................................. 308
Podsumowanie ................................................................................................................... 310

Cz IV Najwaniejsze aplikacje XML ................................. 313


Rozdzia 15. XML bezprzewodowe: WAP, VoiceXML i inne ...................... 315
Wprowadzenie.................................................................................................................... 315
WAP ................................................................................................................................... 316
Zasady dziaania WAP ................................................................................................. 316
Model WAP.................................................................................................................. 317
Struktura WAP ............................................................................................................. 318
WAE ............................................................................................................................. 318
WML .................................................................................................................................. 319
rodowisko tworzenia WAP ........................................................................................ 320
Uycie WML ................................................................................................................ 321
Wszystko o WML......................................................................................................... 322
Architektura .................................................................................................................. 332
WMLScript......................................................................................................................... 336
Struktura WMLScript................................................................................................... 336
VoiceXML.................................................................................................................... 343
Podsumowanie ................................................................................................................... 344

Spis treci

Rozdzia 16. XML i bazy danych ............................................................. 345


Wprowadzenie.................................................................................................................... 345
Bazy danych a XML .......................................................................................................... 345
Typy dokumentw........................................................................................................ 346
Stopie powizania....................................................................................................... 348
Specjalne klasy dla poszczeglnych sownikw XML...................................................... 349
API rozdzielajcy baz danych .......................................................................................... 352
Narzdzia warstwy poredniej ........................................................................................... 356
Szablony a odwzorowanie............................................................................................ 357
xml-dbms ...................................................................................................................... 358
Podsumowanie: kompletny przykad ........................................................................... 360
Przeksztacanie metadanych............................................................................................... 364
System zarzdzania treci................................................................................................. 364
Serwery XML jako bazy danych ....................................................................................... 365
Lista dostpnych produktw .............................................................................................. 368
Podsumowanie ................................................................................................................... 369

Rozdzia 17. XML midzy serwerami: XML-RPC i B2B ............................. 371


Wprowadzenie.................................................................................................................... 371
XML-RPC .......................................................................................................................... 371
Podstawy zdalnego wywoywania procedur ...................................................................... 372
Posta wywoania ......................................................................................................... 373
Posta odpowiedzi ........................................................................................................ 373
Postaci informacji o bdzie ......................................................................................... 374
Testowanie serwisw XML-RPC................................................................................. 375
Zalety i wady XML-RPC ............................................................................................. 376
Praktyczne wprowadzenie do programowania XML-RPC .......................................... 378
Szczegy specyfikacji XML-RPC .............................................................................. 381
Aplikacje B2B tworzone przy uyciu XML-RPC porwnanie cen DVD .................... 386
Architektura .................................................................................................................. 387
Serwis DVDTitles ........................................................................................................ 388
Serwer DVDTitles ........................................................................................................ 390
Klient DVDTitle ........................................................................................................... 391
Serwis DVDPrices........................................................................................................ 392
Podsumowanie ................................................................................................................... 395

Cz V Obszerne omwienie poszczeglnych przykadw..... 397


Rozdzia 18. XML a wygld: CSS2, XHTML, SVG i SMIL .......................... 399
Wprowadzenie.................................................................................................................... 399
XML i CSS......................................................................................................................... 399
Praktyczne wprowadzenie do pracy z CSS i XML ...................................................... 400
Skadnia i dostpne mechanizmy ................................................................................. 406
Model ramek prezentacji w CSS .................................................................................. 414
Kompletny przykad ..................................................................................................... 415
Podsumowanie ................................................................................................................... 420
Zestawienie waciwoci .............................................................................................. 421

10

XML. Kompendium programisty

Rozdzia 19. Aplikacja przeznaczona do usuwania bdw ....................... 429


Wprowadzenie.................................................................................................................... 429
Wymagania......................................................................................................................... 430
Wymagania wzgldem XMLBugTrack (wygenerowane przez req2txt.xsl)................ 430
Wymagania wobec XMLBugTrack (wygenerowane przez req2xhtml.xsl) ................ 432
Wymagania wobec XMLBugTrack (oryginalny XML) .............................................. 432
Analiza i projekt ................................................................................................................. 435
Struktura aplikacji ........................................................................................................ 435
Projekt........................................................................................................................... 436
Implementacja .............................................................................................................. 440
Poczenie bazy danych i XML, przetwarzanie XSLT ................................................ 441
Podsumowanie ................................................................................................................... 455

Rozdzia 20. Aplikacja przeznaczona do zarzdzania informacjami ........... 457


Wprowadzenie.................................................................................................................... 457
Na czym polega zarzdzanie informacjami ....................................................................... 458
Wymagania......................................................................................................................... 458
Budowa systemu........................................................................................................... 462
Wykorzystanie DTD .......................................................................................................... 463
DTD komentarzy .......................................................................................................... 463
Sownik......................................................................................................................... 470
Edytor dokumentw z notatkami ....................................................................................... 473
Wykorzystanie SMIL/HTML przy tworzeniu prezentacji................................................. 475
Rzut oka na wyniki....................................................................................................... 475
Podsumowanie ................................................................................................................... 482

Dodatki............................................................................... 483
Dodatek A Skadnia XML....................................................................... 485
Elementy i atrybuty ............................................................................................................ 485
Deklaracje DTD ................................................................................................................. 486
Odwoania do encji ............................................................................................................ 486

Dodatek B Specyfikacja XML 1.0 .......................................................... 487


Rozszerzalny Jzyk Znacznikw (XML) 1.0 (wydanie drugie) ........................................ 487
Rekomendacja W3C z 6 padziernika 2000r. .............................................................. 487
Streszczenie .................................................................................................................. 488
Status tego dokumentu ................................................................................................. 488
1. Wprowadzenie................................................................................................................ 489
1.1. Historia dokumentu i jego zadania........................................................................ 489
1.2. Terminologia ......................................................................................................... 490
2. Dokumenty ..................................................................................................................... 491
2.1. Poprawne skadniowo dokumenty XML............................................................... 491
2.2. Znaki...................................................................................................................... 492
2.3. Typowe konstrukcje skadniowe ........................................................................... 492
2.4. Dane znakowe i znaczniki ..................................................................................... 494
2.5. Komentarze............................................................................................................ 495

Spis treci

11

2.6. Instrukcje przetwarzania........................................................................................ 495


2.7. Sekcje CDATA...................................................................................................... 495
2.8. Prolog i deklaracja typu dokumentu...................................................................... 496
2.9. Deklaracja samodzielnoci dokumentu ................................................................. 499
2.10. Jak traktowa biae znaki?................................................................................... 500
2.11. Obsuga koca wiersza ........................................................................................ 501
2.12. Okrelanie jzyka ................................................................................................ 501
3. Struktury logiczne .......................................................................................................... 502
3.1. Znaczniki pocztkowe, kocowe i znaczniki elementw pustych........................ 503
3.2. Deklaracje typu elementu ...................................................................................... 504
3.3. Deklaracje list atrybutw....................................................................................... 506
3.4. Sekcje warunkowe................................................................................................. 511
4. Struktury fizyczne .......................................................................................................... 512
4.1. Znaki i encje .......................................................................................................... 512
4.3. Encje parsowane.................................................................................................... 516
4.4. Sposb traktowania encji i odwoa przez procesor XML ................................... 518
4.5. Konstrukcja tekstu podstawienia encji wewntrznej ............................................ 520
4.6. Encje predefiniowane ............................................................................................ 521
4.7. Deklaracje notacji.................................................................................................. 521
4.8. Encja dokumentu ................................................................................................... 522
5. Zgodno ........................................................................................................................ 522
5.1. Procesory z walidacj i bez walidacji.................................................................... 522
5.2. Uycie procesorw XML ...................................................................................... 523
6. Wybr notacji................................................................................................................. 523
A. Bibliografia.................................................................................................................... 525
A.1. Dokumenty normatywne ...................................................................................... 525
A.2. Inne publikacje ..................................................................................................... 526
B. Klasy znakw ................................................................................................................ 529
C. XML a SGML (nienormatywne)................................................................................... 531
D. Rozwijanie odwoa do encji i znakw (nienormatywne)............................................ 531
E. Deterministyczne modele zawartoci (nienormatywne) ............................................... 533
F. Autodetekcja kodowania znakw (nienormatywne) ..................................................... 533
F.1. Detekcja w przypadku braku informacji zewntrznych........................................ 534
F.2. Priorytety przyjte wobec istnienia zewntrznych informacji o kodowaniu ........ 535
G. Grupa robocza XML w W3C (nienormatywne) ........................................................... 536
H. Skad grupy W3C XML Core (nienormatywne)........................................................... 536
I. Uwagi o przygotowaniu specyfikacji (nienormatywne)................................................. 537

Dodatek C Najwaniejsze DTD przeznaczone do prezentacji .................... 539


WML .................................................................................................................................. 539
XHTML (wersja cisa)...................................................................................................... 545
SMIL .................................................................................................................................. 562

Dodatek D Krtki przewodnik po UML .................................................... 567


Diagram klas ...................................................................................................................... 567
Diagramy przypadkw uycia............................................................................................ 568

12

XML. Kompendium programisty

Dodatek E Najwaniejsze przykady wyspecjalizowanych DTD.................. 571


Wprowadzenie.................................................................................................................... 571
Wymagania funkcjonalne................................................................................................... 571
Encje pomocnicze .............................................................................................................. 573
DTD komentarzy (wersja prosta) ................................................................................. 575

Skorowidz ............................................................................................. 577

Rozdzia 16.

Wprowadzenie
Tworzenie duych witryn sieciowych oraz innych aplikacji zaley od moliwoci
przechowywania, wyszukiwania i pobierania duych iloci danych. Mimo e dokumenty XML s elastyczne i nios w sobie duo treci, to z uwagi na wydajno wymagan przy przechowywaniu duych iloci danych, nie mog rwna si z tradycyjnymi bazami danych, jak np. Oracle czy PostgreSQL.
W tym rozdziale przyjrzymy si, jak wygldaj zwizki midzy XML a bazami danych z punktu widzenia twrcy systemw. Szczeglnie bd nas interesoway praktyczne ich zastosowania. Nie bdziemy zajmowa si podstawowymi konstrukcjami
baz danych, zakadamy znajomo samego XML i zagadnie omawianych w rozdziaach 4. i 6. (szczeglnie interfejsu SAX).
Rozdzia ten podzielony zosta na kilka czci: w pierwszej omawiamy podstawowe
zagadnienia oglne, zwizane z bazami danych i XML oraz sposb ich zapisania
w piciu rnych zastosowaniach. Nastpnie dokadnie objanimy poszczeglne zastosowania oraz pokaemy przykady ich implementacji. Dodatkowo pokaemy zestawienia najlepszych bibliotek i produktw, podzielone wedug kategorii.

Bazy danych a XML


XML jest szczeglnie przydatny przy przenoszeniu danych i opisywaniu ich semantyki. Dziki niemu otrzymujemy metod przejrzystego zapisania danych i metadanych w hierarchicznym dokumencie, atwo bdzie nam takie dokumenty przenosi.
Z kolei bazy danych s uyteczne wtedy, kiedy trzeba przechowywa due iloci danych w wydajny sposb.

Cz IV Najwaniejsze aplikacje XML

346

Podczas tworzenia duych aplikacji sieciowych XML (przykad w rozdziale 19.) lub
jakichkolwiek innych aplikacji, w ktrych mamy do czynienia z du iloci danych,
przechowywanie tych danych bezporednio, w postaci dokumentw XML staje si
coraz mniej opacalne. W takich sytuacjach konieczne staje si powizanie dwch
technologii: XML i klasycznych baz danych.
Poczenie to moe przybiera rne postaci, w zalenoci od obsugiwanych dokumentw, zada stawianych przed aplikacj i od tego, jak intensywne bdzie przeksztacanie danych z dokumentw XML w tabele (obiekty baz danych) i odwrotnie.

Typy dokumentw
Z punktu widzenia trwaoci danych, rozrnia si XML opisujcy dokumenty i XML
opisujcy dane.
XML opisujcy dane ma sztywne struktury, ktre s standardowymi, powtarzalnymi
obiektami, skadajcymi si z atrybutw. W tego typu dokumentach dane typu 
wystpuj zwykle jedynie jako elementy-licie, rzadko zdarza si te zawarto mieszana.
Poniszy kod stanowi przykad XML opisujcego dane (kolekcja pyt kompaktowych).
Inne przykady to dokumenty wysyki i pliki konfiguracyjne.


  !""#!!$!
  !
$%$&'(
)) 
  *%'! +%, - $
  .$%$&'
! !/0123405532
$%$&'(
)) 
 6  & 
).$%$&'
 $%
$7& 8 !
9):7 &;!. $%
$
) !& $<   .) !& $
 //5. 
&$+=  & 6  & 
).&$+= 
&$+=  & 2.&$+= 
.!
! !/200340140230
$%$&'(
)) 
  
3& )) 

.$%$&'
 $%
$> ,$+ . $%
$
) !& $> ,$+ .) !& $
 /?@. 
&$+=  & & ) !

.&$+= 
.!
33$&$ AB%C =
$+ !
*%D)'%$33
.  !

W przypadku XML opisujcego dokumenty, gdy prezentowane w nich dane maj by


przede wszystkim czytelne, struktura jest bardziej swobodna, czsto pojawia si zawarto mieszana. Tak jest w przypadku wikszoci witryn sieciowych, listw i innych dokumentw zakodowanych w XML. Poniszy urywek artykuu (zakodowany
za pomoc DTD Docbook) naley do takiego wanie typu dokumentw:

Rozdzia 16. XML i bazy danych

347

 $ E<763.. ) $. < F0.GH


G6 ,B I !&$ 
G6B&$%) 
G6
J6!( K52.@.@0(5(2,)J
G6
$$&
! ,$
G6) $L) +!* ! M7 
G6B
$ $""#B
$ $
G6+D$""#+D$
G6 $ ""# $ 
G6+D%""#+D%
G6D +""#D +
G6 ,  
""#-

 %
N
 $ 
 $D! 
$ $M7  BO .$ $
$ $L) +!* ! M7 .$ $
&$D 

& 8  -
8.
& 
,
$ PB .,
$ 
.&$D 
339B
$ $:33
. $D! 
9 $ :
9+D$:
9+D%:
9D +:
9 ,  
:
. $ 

Oto jeden z plikw z danymi, abstract.xml:


) $ ! $ 3) $
!  , 
$ $"$ 
** .$ $
.!  , 
$ $"$ 
** .$ $
D)$  !# 36 $ !&$ 
$ $L) +!* ! QR$(
 -= - !%$ M#7!S .$ $
) 
G + $D  - *D ,, % !* %M#7.
B%'  * + %D$) +
*D  *$T   ) + O TK
)D

M7 .)D


.) 
33$&$ T-!
*%33

W tej chwili rnica midzy XML opisujcym dane a sucym do zapisu dokumentw bdzie miaa dla nas kapitalne znaczenie, gdy wie si z ni zasadnicze pytanie: czy interesuj nas dane zapisane w XML, czy sam XML?
W przypadku dokumentw interesuj nas raczej same dokumenty: budowa dokumentu, zawarte w nim komentarze, uycie encji i tak dalej wszystko, co dotyczy
opisywanego problemu.

Cz IV Najwaniejsze aplikacje XML

348

W przypadku XML opisujcego dane interesuj nas gwnie (lub wycznie) dane
znajdujce si w dokumencie. To, czy dokument skada si z piciu zewntrznych encji, czy te jest zapisany w caoci zapisany w jednym pliku, nie ma znaczenia1. Tak
samo nie maj znaczenia komentarze, wcicia, a czasem nawet kolejno elementw
(kolejno akapitw w licie jest bardzo wana, natomiast kolejno pozycji faktury
nie ma ju takiego znaczenia).
W wikszoci aplikacji zwizanych z bazami danych XML traktuje si jako rdo
danych, za kluczowe aspekty to: wydajne przetwarzanie duych iloci dokadnych
danych (przykadami mog by spis towarw w hurtowni, zbir danych geograficznych i tak dalej). Dlatego w tym rozdziale powicimy duo uwagi narzdziom i technikom potrzebnym do przekazywania danych midzy XML a bazami danych.

Stopie powizania
Natkniemy si te na problem z okreleniem, ile aplikacja wie o bazie danych, czyli
na ile jest z ni powizana. Tak naprawd jest to pytanie o to, na ile warstwa aplikacji
odpowiada warstwie bazy danych moe by to zwizek od bardzo cisego a po
cakowit niezaleno.
Z bardzo cisym zwizkiem mamy do czynienia wtedy, gdy klasy specjalizowane
znaj struktur bazy danych, potrafi ustanawia poczenia i tworzy zapytania oraz
generowa kod XML na podstawie wynikw.
Kiedy zwizek ten jest bardzo luny, aplikacja nie wie nic o rnych sposobach zapisu danych i po prostu wywoujc odpowiednie funkcje API serwera XML, otrzymuje
dokument XML.
W przypadku powizania poredniego stopnia, do poczenia tradycyjnej bazy danych
(zwykle relacyjnej, jak PostreSQL czy MS SQL) z dokumentami XML uywa si oprogramowania poredniego.
Z analogiczn warstw oprogramowania poredniego mamy do czynienia, jeli uywany jest parser, pobierajcy tabele i generujcy zdarzenia SAX. Parser taki (bdcy
te pewnego rodzaju oprogramowaniem porednim) umieszczony jest midzy aplikacj a baz danych i tworzy w ten sposb interfejs do bazy relacyjno-obiektowej.
Jeli uwzgldnimy wspomniane dwa czynniki, otrzymamy diagram taki, jak na rysunku 16.1.
Wybranie odpowiedniej technologii z powyszego diagramu zaley od trzeciego czynnika, o ktrym wspomniano na pocztku tego rozdziau: wymaga wobec aplikacji.
Omwione w nastpnych punktach przykady i teoria zilustruj zastosowanie omawianych zasad w praktyce i poka, jak podejmowa decyzj o doborze technologii
waciwej dla danego projektu.
1

Stoi to w jawnej sprzecznoci z XML opisujcym dokumenty, w ktrym podzia na encje jest
podstawowym mechanizmem modularyzacji i moliwoci wielokrotnego uycia.

Rozdzia 16. XML i bazy danych

349

Rysunek 16.1.
Diagram,
przedstawiajcy
sposoby powizania
XML i baz danych

Specjalne klasy
dla poszczeglnych sownikw XML
Pierwszym, najprostszym sposobem tworzenia dokumentu XML na podstawie bazy
danych jest jawne zapisanie logiki dla konkretnego sownika XML w specjalizowanej
klasie. Klasa taka jest cile powizana z baz danych i XML. Mimo e takie rozwizanie bardzo poprawia wydajno, to jest ono ograniczone i trudne do rozszerzania
i utrzymania.
Niezalenie od wspomnianych ogranicze, takie domowe rozwizanie jest czasem
przydatne. Poniszy kod to implementacja specjalizowanej klasy, pobierajcej z tabeli
zbir rekordw dotyczcych filmw:
) $
R $ :
) $
R  # - :
) $
R"$$ $:
) $
R;
&$"$:
) $&$  ) $ 
:
) $&$  ) $ 
:
) $ P 6 )&$"$ :
)&B 

&
$ B2M#7U
)&B 
$$  ! V"$ -HN -WU
 ,V - -$DWU
"%
$ &$) $ VEA% (
&
$ B2M#7 L'O + O W:
"%
$ $V3W:
X
 $   &:
"$$ $
$$ &:

350

Cz IV Najwaniejsze aplikacje XML


;
&$"$
 &:
 ) $ 
%< + ) $ 
VW:
$ %
U
%< !V +P 6 )&$"$ V -HNWW:


, GV%<-$ ) $%V!  WW:


   # - -$ $ V
%<-$ ) $%VE;7WK
%<-$ ) $%V&
 WK
%<-$ ) $%V)

+ !WW:

$$  $"$$ $VW:


$$&$Y& %V"7ZP;#[
%<-$ ) $%V$BWW:
 $M#7 & $V
W:
X
$DV -

G $P & !)$  ,W


U
"%
$ &$) $ VG * * 
$ + W:
"%
$ $V3W:
X
$DV
R"Y7)$ 
RW
U
"%
$ &$) $ VG ) + !' 
\) 'T* 
*B*T! %DV"Y7W[
RW:
"%
$ $V3W:
X
$DV -)$ W
U
"%
$ &$) $ VG ) + !' 
\) 'T* 
*B*T! %D[W:
"%
$ $V3W:
X
X
.. *$B   + 
T! "E M#7
)&B 
$$  ! $M#7 & $V;
&$"$
W
$D +

R"Y7)$ K
 6)$
U
"%
$ &$) $ V
]]W:
"%
$ &$) $ V33 +%-  + %
 ) !
$+ B*%! %D#  
33W:
"%
$ &$) $ V  
W:
.. - * 
$ &$& \$B K
$ &$& $*
$'
..* ! +  
$'
+D V
 $VWW
U
"%
$ &$) $ V!! !^[

-$6 $VF6W[^W:
"%
$ &$) $ V 
!$^[

-$$V;
!W$ "$ -VW[^W:
"%
$ &$) $ V$ $[

-$"$ -VF $W[.$ $W:
"%
$ &$) $ V$- [

-$"$ -V- W[.$- W:
"%
$ &$) $ V$- %[

-$"$ -V$- %W[.$- %W:

Rozdzia 16. XML i bazy danych


"%
$ &$) $ V
$&! [

-$"$ -V"$&! W[.
$&! W:
"%
$ &$) $ V.!!W:
X
"%
$ &$) $ V.  
W:
X
X

Jeli tabela zawiera dane takie, jak na rysunku 16.2, a plik waciwoci ma posta:
_ +'O + O &
$ B2M#7
E;7!B( !B(

&
 
)

+ !
$B#  

!  
& !B !B`!B!B 

Rysunek 16.2.
Tabela Movies

To wygenerowany zostanie nastpujcy dokument:




33 +%-  + % ) !
$+ B*%! %D#  
33
  

!! !^^
 
!$^/@@33^
$ $G B*) * *+ T* .$ $
$- aT!*K&+ !* K*
$S K  * 
*.$- 
$- % $.$- %

$&! L<.
$&! 
.!!
!! !^2^
 
!$^//@33^
$ $;&
D .$ $
$- # ' OCL%-  ;+ &.$- 
$- %> ! .$- %

$&! L<.
$&! 
.!!
!! !^0^
 
!$^//@33^
$ $<%C` D #  D.$ $
$- D 'OB%C O %G $ &A A
*.$- 
$- %> ! .$- %

$&! L<.
$&! 
.!!
.  


351

Cz IV Najwaniejsze aplikacje XML

352

API rozdzielajcy baz! danych


Kiedy zmniejszymy stopie powizania oprogramowania z danymi, natkniemy si na
ciekawe rozwizanie: parsery, ktre pobieraj dowolne tabele2 jako dane wejciowe,
a jako dane wyjciowe generuj standardowe zdarzenia SAX lub DOM. Z punktu widzenia reszty aplikacji, nie ma rnicy midzy takim parserem a zwykym parserem
XML. Cae przetwarzanie bazy danych zostaje oddzielone w klasie parsera, za aplikacja moe zaj si jedynie przetwarzaniem procedur obsugi, potrzebnych do obsugi zdarze SAX (rysunek 16.3).
Rysunek 16.3.
API SAX
do baz danych

Poniszy kod to klasa 


, implementujca interfejs parsera SAX:
) $ -
Z:
) $ -
D)
7 $ 6):
) $ -
D)
8$$ B&$7
$6):
) $ -6 $- :
) $
R;
&$"$:
) $
R;
&$"$#$$:
) $
R"Y7)$ :
) $ 6)$ :
) $&$ 7 :
) $&$ F$ :

)&B 

<
  ) $


2

W tym rozdziale czciej bdziemy mwi o tabelach i relacjach ni o obiektach. Przyczyna tego
jest prosta: w przypadku baz danych model relacyjny jest stosowany znacznie czciej ni model
obiektowy. Jednak te same zasady dziaania i te same rozwizania mona bez trudnoci zastosowa
w przypadku obiektowych baz danych.

Rozdzia 16. XML i bazy danych

353

U

$$ Q ! <

!,&$D !  +Q ! <
VW:
 $ $%;
  $ $%Q ! 
!,&$D ! :
Q ! !$!Q ! 
!,&$D ! :
 & $Q ! ! & $Q ! 
!,&$D ! :
 Q !  Q ! 
!,&$D ! :

Najpierw musz by zaimplementowane wszystkie metody interfejsu parsera:


)&B  !
$ $ $%;
 V $ $%;
 D ! WU
 $ $%Q ! D ! :
X
)&B  !
$ & $Q ! V & $Q ! D ! WU
! & $Q ! D ! :
X
)&B  !
$ Q ! V Q ! D ! WU
 Q ! D ! :
X
)&B  !
$Q ! VQ ! D ! WU
!$!Q ! D ! :
X
)&B  !)
V6 )&$" & 
& W
$D +
"8M)$ K6)$
U
$D + +"8M)$ V` ! +O +<

&
 $ *%C B $$%)&;
&$"$W:
X
)&B  !)
V"$ -
%
$6!W
$D +
"8M)$ K6)$
U
$D + +"8M)$ V` ! +O +<

&
 $ *%C B $$%)&;
&$"$W:
X
)&B  !
$7 V7  W
$D +
"8M)$
U
..+$+
  * ) $ + &
$+ b  %D
.. !
$*- ! %*"8M2K-  + %
$+%T$
$D + +"8M)$ VE
$+    
 
T B
'&- + W:
X

Zaimplementowane s ju zatem wszystkie metody obowizkowe i moemy zaj si


podstawow czci przykadu: metod 
, umoliwiajc generowanie zdarze
SAX na podstawie zbioru wynikowego.3
3

Klas t mona bardzo atwo zmodyfikowa tak, aby mc pobiera inne obiekty danych, jak np.
poczenie czy zapytanie.

Cz IV Najwaniejsze aplikacje XML

354

Nasza metoda 
otrzymuje cztery parametry.


 obiekt

, na podstawie ktrego generowany bdzie

kod XML.
 
nazwa znacznika uywanego jako element gwny.
 
kademu wierszowi danych odpowiada element
o nazwie 
(jego podelementy s polami w wierszu). W tym

parametrze poda naley nazw elementu zawierajcego wiersz danych.


 
 wektor ten zawiera indeksy kolumn, ktre musz przyj posta

atrybutw. Jeli nie zostanie w tym wektorze umieszczony indeks kolumny,


dane tej kolumny bd wstawiane jako elementy.
..ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
..#$ !%
)%, * !<

..ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
)&B  !)
V;
&$"$
K"$ - $GK
"$ - +-GKF$  W
$D +
"8M)$ K"Y7)$
U
8$$ B&$7
$)$%87 +8$$ B&$7
$6)VW:
;
&$"$#$$!
-$#$$VW:
 $ 
!-$ &  & $VW:
! & $Q ! 
$ $ & $VW:
! & $Q ! 
$ $ $V $GK)$%87W:
+D V
 $VWW
U
8$$ B&$7
$6)$$
 +8$$ B&$7
$6)VW:
..) B  *)  +
*T & \*)
%+ T $ %B&$
, V $ :  
*VW: [[W
U
 $ VV6 $- W  $8$V WW $F&VW:
"$ -$G!-$ & 7BV W:
"$ -$F&
-$"$ -V W:
$$
!!8$$ B&$V$GK88K$F&W:
X
! & $Q ! 
$ $ $V +-GK$$
W:
..) B  * & %K$= &
*TB%C )
%+ *)  T
..) ! $=+
, V $ :  
: [[W
U
 ,V  $
V +6 $- V WWW
U
"$ -G!-$ & 7BV W:
"$ - $ $
-$"$ -V W:
 ,V $ $ &W
B :
D HN $ $8 $ $$ D 8 %VW:
! & $Q ! 
$ $ $VGK)$%87W:

Rozdzia 16. XML i bazy danych

355

! & $Q ! D $


V $ $8KK
 $ $8 -$DW:
! & $Q !  ! $VGW:
X
X
! & $Q !  ! $V +-GW:
X
! & $Q !  ! $V $GW:
! & $Q !  ! & $VW:
X
X

Poniszy program testowy nakazuje parserowi odczytanie tej samej tabeli, co w poprzednim przykadzie. Tym razem jednak logika struktury XML nie jest ju zakodowana na stae, zadanie to zlecane jest parserowi SAX, przy ktrym mona zarejestrowa
dowolne procedury obsugi zdarze4 tak, jakby czytanie odbywao si z pliku XML:
) $
R $ :
) $
R  # - :
) $
R"$$ $:
) $
R;
&$"$:
) $&$  ) $ 
:
) $&$ F$ :
) $ P 6 )&$"$ :
)&B 


$"8M86U
)&B 
$$  ! V"$ -HN -WU
 ,V - -$DWU
"%
$ &$) $ VEA% (&
$ B2M#7
 L'O + O W:
"%
$ $V3W:
X
 $   &:
"$$ $
$$ &:
;
&$"$
 &:
 ) $ 
%< + ) $ 
VW:
$ %
U
%< !V +P 6 )&$"$ V -HNWW:


, GV%<-$ ) $%V!  WW:


   # - -$ $ V
%<-$ ) $%VE;7WK
%<-$ ) $%V&
 WK
%<-$ ) $%V)

+ !WW:

$$  $"$$ $VW:


$$&$Y& %V"7ZP;#[
%<-$ ) $%V$BWW:

W programie testowym uyto klasy "8M $Q ! (aby wypisa zdarzenia otrzymywane tak,
jakby zostay one odczytane z dokumentu XML). Klasa ta bya omwiona w rozdziaach 4. i 5.,
jej kod znajduje si na doczonej do ksiki pycie.

Cz IV Najwaniejsze aplikacje XML

356

Poniewa nasza procedura 


 zwraca otrzymane zdarzenia w postaci
XML, po wywoaniu:
(]!B]"8M8) 
$"8M86) ) $ 
) )

otrzymamy nastpujcy dokument XML:


  

!!F6"$&! L<
F $
G B*) * *+ T* .F $
- 
aT!*K&+ !* K*
$S K  * 
*.- 
$- %
 $.$- %
;
!
/@@33((.;
!
.!!
!!F62"$&! L<
F $
;&
D .F $
- 
# ' OCL%-  ;+ &.- 
$- %
> ! .$- %
;
!
//@33((.;
!
.!!
!!F60"$&! L<
F $
<%C` D #  D.F $
- 
D 'OB%C O %G $ &A A
*.- 
$- %
> ! .$- %
;
!
//@33((.;
!
.!!
.  


Uycie API SAX jest zdecydowanie wygodniejsze od tworzenia klas specjalizowanych. Logika samej aplikacja jest oddzielona od tworzenia kodu XML, dziki czemu
otrzymujemy konstrukcj, ktrej mona uy do wielu baz danych.
Pokazane tutaj rozwizanie jest uniwersalne, ale ma te powane ograniczenia m.in.
brak moliwoci przejcia od XML do bazy danych (nie wspominajc ju o tym, e
ograniczamy si na razie do jednej tabeli). W nastpnym punkcie pokaemy pene rozwizanie z oddzielon warstw poredni, ktra pozwoli nam takich problemw unikn.

Narz!dzia warstwy po$redniej


Implementacja penego API, przeksztacajcego XML w baz danych (i odwrotnie)
przyjmuje posta oprogramowania warstwy poredniej, ktre jest dostpne jako open
source i jako produkt komercyjny.

Rozdzia 16. XML i bazy danych

357

Jeli oprogramowanie to jest dostarczane wraz z komercyjn baz danych, jest ono
reklamowane jako cz samej bazy. Baza ta z kolei reklamowana jest jako baza danych, obsugujca XML (XML-enabled).
Istnieje te szereg niekomercyjnych, niezalenych pakietw, zawierajcych API wykorzystywany do przekazywania danych midzy dokumentami XML a relacyjnymi
bazami danych (zwykle przez ODBC lub JDBC). W tym punkcie pokaemy zasady
rzdzce wikszoci rozwiza komercyjnych i darmowych, a take pokaemy praktyczn implementacj oprogramowania open source o nazwie xm-dbms, autorstwa
Ronalda Bourreta.

Szablony a odwzorowanie
Kiedy stajemy przed koniecznoci pobrania informacji XML z bazy danych, oprogramowanie porednie oglnego zastosowania moe dziaa dwojako:
 moe umoliwia wczanie instrukcji SQL do szablonw XML;
 moe udostpnia jawne odwzorowanie midzy polami bazy danych

a elementami XML.
W pierwszym wypadku dane wejciowe systemu byyby dokumentem XML, zawierajcym pewne elementy, ktre byyby przez owo oprogramowanie porednie przeksztacane na kod XML, ktry z kolei odpowiadajcy wynikom zapytania. Na przykad, poniszy dokument definiuje zapytanie do bazy danych w elemencie

:


)
  
 )
)
)+ %D ! !A& - . )


$ 
$%"7 K )

P;#"$%#&*%* 
LQ;$%)!A& -
.
$
.)
  

Kiedy dokument ten zostanie przetworzony przez oprogramowanie porednie, element



 zostanie zastpiony danymi i uzyskamy:


)
  
 )
)
)+ %D ! !A& - . )


$%
$%$&'`&)3&).$%$&'
 )
 *  %$%!A& -  ) $ ) =BD
D )3D )
. )

.
$%

$%
$%$&'7 R& !P& .$%$&'
 )
#&*%$ * -   B\B D B

. )

.
$%
.)
  

Cz IV Najwaniejsze aplikacje XML

358

W przypadku wyboru drugiej moliwoci odwzorowania, danymi wejciowymi systemu s:


1. Odwzorowanie okrelajce, w jaki sposb elementy i atrybuty s zapisywane

w bazie danych.
2. Dokument XML lub dane z bazy danych.

Wynikiem generowanym przez oprogramowanie porednie s dane w bazie danych


lub dane wejciowe zapisane jako XML.
Oprogramowanie oparte na szablonach przeksztaca tylko dane z bazy na XML. Poza
tym, rozwizania oparte na odwzorowaniach s atwiej dostpne i lepiej udokumentowane. W pokazanym dalej przykadzie oprogramowania poredniego skoncentrujemy si wanie na API opartym na odwzorowaniach.

xml-dbms
Autorem pakietu xml-dbms jest Ronald Bourret, on te si tym pakietem opiekuje.
Jest to doskonay przykad opartego na odwzorowaniach API, ktre suy do przeksztacania danych XML w tabele i odwrotnie. Model xml-dbms oparty jest na jzyku
odwzorowa, pozwalajcym na jednoznaczne przeksztacanie danych (na dwa sposoby). Tworzenie typowej aplikacji xml-dbms mona zapisa w postaci trzech punktw:
1. Utworzenie obiektu odwzorowania na podstawie dokumentu odwzorowania.
2. Przekazanie obiektu odwzorowania obiektowi  lub .
3. Odebranie i przetwarzanie wynikw przeksztacenia.

W nastpnych punktach przeksztacimy ten krtki schemat na konkretny kod.

Dokumenty odwzorowa
Dokument odwzorowania to dokument XML zgodny z DTD xml-dbms Map5. Dokumenty odwzorowa zawieraj opis sposobu przeksztacania, majcego miejsce midzy
konstrukcjami bazodanowymi (jak tabele i kolumny) a XML (elementami i atrybutami). Pierwszym i najbardziej typowym sposobem odwzorowywania jest odwzorowanie typw elementw na tabele.
Zanim pokaemy takie odwzorowanie, trzeba wspomnie, e jzyk odwzorowa xmldbms opiera si na zaoeniu, e w XML trzeba najpierw zamodelowa jako klasy
i atrybuty, a dopiero potem mona przeksztaca ten model na konstrukcje bazodanowe. Na szczcie obie te czynnoci wykonuje si w dokumencie odwzorowania:


#)
 $%)G S - , * .
 

B
BG# 
.
5

W innych rodzajach oprogramowania poredniego stosowane s inne jzyki odwzorowa.

Rozdzia 16. XML i bazy danych

359

. 

B
 !+* + +'O + O 
) + T*  !+* + 

.

#)

Istnieje ju zatem relacja midzy typem elementu zoonego a tabel, wic mona powiza atrybuty i elementy proste dokumentu z kolumnami tabeli:
 ) $%#)
8$$ B&$G"*  OC.
  & 
 & G"* 

.  & 
. ) $%#)
 ) $%#)
8$$ B&$G'&- OC.
  & 
 & G&-

.  & 
. ) $%#)
 ) $%#)
8$$ B&$G 
.
  & 
 & GG*+# 

.  & 
. ) $%#)

Inn moliwoci jzyka xml-dbms jest odwzorowywanie relacji midzyklasowych


(czyli modelowanie kluczy wicych tabele) na hierarchi elementw:
;$!

>%6   $B)6
 $%)G)
# 
.
 ! !$>%S  $G 
 & G)6.
. ! !$>%
P  - >%
 &  *
.
.P  - >%
.;$!

Pokazane tutaj trzy konstrukcje wyczerpuj zakres jzyka potrzebny przy wikszoci
zastosowa. Peny opis wszystkich opcji jzyka odwzorowa xml-dbms znajduje si
w DTD tego jzyka i w dokumentacji pakietu.

Tworzenie obiektu mapy


W programie Javy dokument odwzorowania musi zosta przeksztacony w obiekt
odwzorowania. Dokonuje si tego za pomoc specjalnych klas Javy, map factory.
Klasy te mog tworzy obiekty odwzorowa na podstawie dokumentw jzyka xmldbms lub na podstawie DTD (tworzenie odwzorowania na podstawie DTD omwimy
w punkcie Przeksztacanie metadanych).
Poniszy fragment kodu pokazuje tworzenie obiektu  na podstawie pliku odwzorowania:

360

Cz IV Najwaniejsze aplikacje XML


..!+* + 'T*%! & $*B*T! %DK*$
..
$ &$ ),$ % $ *%&!  ! &- 
,$ % +#)P$ % #) & $V K)
 W:
..+ *  B $& !+* +  ) !
$+ - )
),$ % $#)V +6 )&$" & V
 +P ;! V- )WWW:

Przekazywanie odwzorowania do dbsmToDOM i pobieranie danych


Tworzenie danych w postaci XML na podstawie bazy lub odwrotnie, czsto wykorzystywane jest w tylko jednym wierszu. Poniszy kod to przeksztacanie bazy danych
w XML; w penym przykadzie pokaemy te dziaanie w kierunku odwrotnym.
..E$+ *  +-  B $&<#" #
!B
 # +<#" #V)K +P  VWW:
..&$+ *  +- &* ) B  *+ T* %D* ! %D
%U +6 $- V20WX:
! !B
 # $  & $V"
K%W:

Podsumowanie: kompletny przykad


Sprawdzilimy ju, jak pobra dane XML z bazy (vide klasy specjalizowane i API
SAX do baz danych). W tym przykadzie wstawimy dane z XML do bazy danych za
pomoc klasy  pakietu xml-dbms.
Najpierw przyjrzyjmy si dokumentowi, jaki chcemy przetwarza:


  

!! !^^
 
!$^/@@33^
$ $G B*) * *+ T* .$ $
$- aT!*K&+ !* K*
$S K  * 
*.$- 
$- % $.$- %

$&! L<.
$&! 
.!!
!! !^2^
 
!$^//@33^
$ $;&
D .$ $
$- # ' OCL%-  ;+ &.$- 
$- %> ! .$- %

$&! L<.
$&! 
.!!
!! !^0^
 
!$^//@33^
$ $<%C` D #  D.$ $
$- D 'OB%C O %G $ &A A
*.$- 
$- %> ! .$- %

$&! L<.
$&! 
.!!
.  


Rozdzia 16. XML i bazy danych

361

Oto plik dvd.map, zawierajcy reguy przeksztacania danych:



^^
M#7 <#"""#!B
!$!
M#7 <#"F

)$

.)$

#)



#)
 $%)G  
.
 

B
BG!!.
. 

B
 ) $%#)
8$$ B&$G !.
  & 
 & G!! !.
.  & 
. ) $%#)
 ) $%#)
8$$ B&$G 
$.
  & 
 & G 
.
.  & 
. ) $%#)
 ) $%#)
 $%)G$ $.
  & 
 & G$ $.
.  & 
. ) $%#)
 ) $%#)
 $%)G$- .
  & 
 & G$- .
.  & 
. ) $%#)
 ) $%#)
 $%)G$- %.
  & 
 & G$- %.
.  & 
. ) $%#)
 ) $%#)
 $%)G
$&! .
  & 
 & G
$&! .
.  & 
. ) $%#)
.

#)
.#)

.M#7 <#"

Nadszed ju czas na wykorzystanie programu PutDVDs.java, w ktrym w celu wstawienia danych z XML do bazy uyjemy oprogramowania warstwy poredniej xml-dbms:

362

Cz IV Najwaniejsze aplikacje XML


) $!$&! 
$!$ $ !B
<#" #:
) $!$&! 
$!$ $ !B
# <#":
) $!$&! 
$!$ $ !B
#):
) $!$&! 
$!$ $ !B
D)
>%S  $ 6):
) $!$&! 
$!$ $ !B
),$ 
#)P$ % #) &3
 $:
..  \$) *
$' ) $%V -  -)DW
)&B 

&$F
U
)&B 
$$  ! V"$ -HN -W$D +

R"Y7)$
U
 $   &K 2 &:
#)):
 & $! :
# <#"!  <#":
>%S  $ 6)%S  $  &:
"$ -)P   -HN:
"$ -P   -HN:
$ %
U
 ,V - -$D2WU
"%
$ &$) $ VEA% (&$F

 !+* + ) M#7W:


"%
$ $V3W:
X


, GV
& !B !B`!B!B  W:
.. !'T* ! B*%! %D
   # - -$ $ V!B( !B(
W:
 2  # - -$ $ V!B( !B(
W:
..E$+ *    *-  $ &*%
%S  $  +>%S  $ 6)V W:
%S  $  $  *VW:
..E$+ *  B $& !+* +b  $+  ! & $&M#7
) $#)V)P  K 2W:
!  )  & $VP  W:
..E$+ *  +-  B $&# <#"
.. ) *
*$' ! %D
!  <#" +# <#"V)K%S  $ K
 +GY #2VWW:
!  <#"
$  & $V! W:
X
$DV)$ W
U
"%
$ &$) $ VW:
X
, %
U
 ,V  &W 
VW:

Rozdzia 16. XML i bazy danych

363

 ,V 2 &W 2


VW:
X
X

$$ #) $#)V"$ -)P  K $  W
$D +
)$
U
#)P$ % #) & $,$ %:
.. $ +),$ % ! $$D#)
,$ % +#)P$ % #) & $V K-$"8M
 VWW:
 $& ,$ % $#)V +
6 )&$" & V-$P E;7V)P  WWW:
X

$$ "$ --$P E;7V"$ -, GW
U
P , :
,  +P V, GW:
 $& , (...[, -$8B
&$$DVW:
X

$$ 
 -$"8M
 VW
U
..EL8S8> !
)%, * %!)
 M 

 $&  +"8M


 VW:
X

$$  & $ )  & $V"$ -P  W
$D +
)$
U
#
 )
 :
..E &D   )
  &
$+   =A %D ) 
)
  +#
 VW:
)
 
$P$& VD$$)(.. -.
.,$& 
. 
)
K
$ &W:
..8  *) &+O +- 
)
 )
V +6 )&$" & V-$P E;7VP  WWW:
..c+ = ! *+#
 $& )
 -$ & $VW:
X
X

Wynikiem uruchomienia tego programu z parametrami dvd.map i dvd.xml jest wypenienie tabeli treci dokumentu XML, zgodnie ze specyfikacjami w pliku odwzorowa. Bardziej zoone przykady uycia xml-dbms znajduj si w dokumentacji tego
pakietu (szczeglnie wart uwagi jest przykad transfer.java, w ktrym zaprezentowano zaawansowane zastosowanie wszystkich omwionych tutaj technik).

Cz IV Najwaniejsze aplikacje XML

364

Przeksztacanie metadanych
Z poprzedniego punktu, dotyczcego oprogramowania poredniego jasno wynika, e
w wikszoci wypadkw do poczenia XML z baz danych potrzebne jest odwzorowanie danej DTD na struktur bazy danych.
Oczywicie, w tej sytuacji pojawia si nastpujce pytanie: jak okreli struktur bazy
danych na podstawie DTD? Poniej zestawiono kroki, jakie naley podj w celu zrealizowania tego zadania6:
1. Dla kadego typu elementu zawierajcego elementy lub tre mieszan,

naley utworzy tabel i kolumn klucza gwnego.


2. Dla kadego elementu o zawartoci mieszanej naley utworzy odrbn tabel

na dane znakowe, powizan z tabel nadrzdn za pomoc klucza gwnego


pierwszej tabeli.
3. Dla kadego jednowartociowego atrybutu danego elementu i dla kadego

pojedynczo wystpujcego elementu potomnego, zawierajcego jedynie dane


znakowe, naley utworzy kolumn. Jeli element lub atrybut jest opcjonalny,
naley zdefiniowa kolumn jako mogc mie warto pust.
4. Dla kadego wielowartociowego atrybutu i dla kadego powtarzajcego si

elementu potomnego naley utworzy odrbn tabel przeznaczon na te


wartoci, a nastpnie poczy t tabel z tabel nadrzdn za porednictwem
klucza gwnego.
5. Dla kadego elementu potomnego, zawierajcego elementy lub tre

mieszan, naley powiza tabel elementu rodzica z tabel elementu


dziecka za pomoc klucza gwnego.
Z kolei, aby wygenerowa DTD na podstawie bazy danych, trzeba po kolei:
1. Dla kadej tabeli utworzy element.
2. Dla kadej kolumny z tabeli utworzy atrybut lub element potomny,
zawierajcy jedynie dane .
3. Dla kadej relacji klucz gwny/obcy w tabeli z kluczem gwnym, naley

utworzy element potomny.

System zarzdzania tre$ci


Objanilimy ju niemal wszystkie rozwizania z diagramu 16.1. W tym punkcie omwimy rozwizanie ukierunkowane na obsug dokumentw: Systemy Zarzdzania
6

W przypadku implementacji automatycznej, kroki te mog w pewnych szczegach rni si,


w zalenoci od rda. Podana tutaj lista zostaa przepisana z doskonaego artykuu Rolanda Bourreta
XML i bazy danych.

Rozdzia 16. XML i bazy danych

365

Treci (CMS, Content Management System). W nastpnym punkcie z kolei omwimy rozwizanie ukierunkowane na dane, serwery XML.
CMS to szereg produktw, sucych do tworzenia, edytowania i zarzdzania rnymi wersjami duej liczby dokumentw. Podstawowymi zadaniami CMS s:
1. Udostpnienie uytkownikowi sprawnego i prostego interfejsu, sucego

do obsugi grup dokumentw oraz


2. Moliwo skalowania rozwizania (w przypadku zwikszania si liczby

obsugiwanych dokumentw).
CMS zwykle s ukierunkowane przede wszystkim na dostp do nich przez interfejs
uytkownika, mimo e niektre z nich maj te API. Sposb traktowania treci w bardzo duej mierze zaley od producenta7, charakterystyczne jest pooenie najwikszego nacisku na obsug dokumentu.
Z uwagi na opisane cechy CMS nie bdziemy tutaj omawia tych systemw; ograniczymy si do przedstawienia na kocu rozdziau produktw, ktre mona zakwalifikowa jako XML CMS.
Naley jeszcze wspomnie, e pole w diagramie 16.1, odpowiadajce tworzonym lokalnie systemom zarzdzania treci, jest puste, poniewa tworzenie wasnymi siami
rozwiza tak duych jak CMS jest strat czasu i zasobw.

Serwery XML jako bazy danych


Serwery XML to kompletne platformy aplikacji, ktre dostarczaj i odbieraj dane
w formacie XML jako podstawowym formacie wymiany danych. Zawieraj API, suce do bezporedniego przeksztacania danych XML, ktre mona je sklasyfikowa
jako najbardziej zwarte rozwizanie przeznaczone do obsugi XML8.
Mimo e trudno tu o zarysowanie wyranych granic, serwery XML rni si od CMS
dwoma zasadniczymi cechami:
 Serwery XML obsuguj przede wszystkim dane. XML uywany jest z uwagi

na swoj przenono i rozszerzalno, ale podstawowym jego problemem


jest obsuga danych.
 Serwery XML nie s zorientowane na obsug uytkownika. Mimo e

niektre z nich zawieraj interfejs uytkownika, to gwnym ich zadaniem


jest tworzenie aplikacji i udostpnianie odpowiednich API.
7

Moe to si zmieni po pojawianiu si produktw takich, jak IM firmy Interleaf, ktry zwiksza
zgodno ze standardami XML.
Nie znaczy to oczywicie, e jest to najlepsze rozwizanie dla wszystkich baz danych XML.
Dowiadczenie pokazuje nawet, e w przypadku projektw redniej wielkoci lepiej skorzysta
z oprogramowania warstwy poredniej.

Cz IV Najwaniejsze aplikacje XML

366

Interfejsy oferowane przez serwery XML s bardzo rne, wic najlepiej po prostu
zaj si API konkretnego serwera. Aby jednak przedstawi przynajmniej podstawowe zasady uycia serwerw XML, pokazano przykad kodu API serwera dbxml9:
) $ !B  BZ:
) $ !B  B!$B
Z:
) $ !B B$Z:
) $ - -
G -Z:
) $ - -
G -G - $$-Z:
) $ - -;<8Z:
) $&$  ) $ 
:
)&B 

86)U
)&B 
$$  ! V"$ -HN -
WU
$ %U
 ) $ 
 B , - + ) $ 
VW:
.ZL
*  B
 +
& *+ *- L) *%)!&
Z *%
$ *  , -&  ) $ %
Z! %O  -T+%-C*  %
Z.
 B , -)&$V - -;<8;<6 $  $K//?W:
 B , -)&$V - -;<8;<6 $ Q
$K D
$W:
..&$+ *    *;<
;< B;< $V +"$ -HNK B , -W:
..) B  -'=+ -  $
$& *+ $+
 - -;<8B$ B;,
 B 
 $  ,  
VG"  W:
G - $$ ;,G - $$Q)   +V B;,W:
.. *+ \ B$;,  +G G )  $  +G )  $V8)) $ KW:
G )  $)$DHNU X:
8)) $ ))8)) $ Q)   +V ;, 
V)$DWW:
"%
$ &$) $ V8)) $ G[))-$GVWW:
..& &D   ) *%'!=+

$ $
V))W:
"$ - !
 $ & $V))W:
 $  & $V))K !W:
X$DV)$ WU
"%
$ &$) $ V;;;([W:
) $"$ V"%
$ &$W:
X
X
.ZZ
ZL% * B*! %D  D*B =+ 
 + *
Z.
9

Aby uatwi polskiemu czytelnikowi lektur, w ksice przetumaczone zostay komentarze.


Na doczonej do ksiki pycie znajduje si oczywicie wersja oryginalna przyp. tum.

Rozdzia 16. XML i bazy danych


)&B 
$$  !
$ $
V8)) $ ))W$D +
)$ U
..) B  
$%B*! %D
"$ -HN!$B

))
$$B

VW:
 $ :
+D V !$B

 -$DWU
"%
$ &$) $ V!$B

H N[(W:
..) B  +
*%
$ D*B =+! B*%
$B
!$B
))-$$B
V!$B

H NW:
"$ -HN $
!$B

$ $
VW:
 $:
+D V $
 -$DWU
"%
$ &$) $ V]$[ $
HNW:
[[:
X
 [[:
X
X
.ZZ
Z+
$+  !    +- ! & $&
Z.
)&B 
$$ "$ -
 $ & $V8)) $ ))W$D +
)$ U
..! & $M#7&
B%C) ) + %
'! +
"$ -! & $
]]] $
$Q .$
$:
..
$! %O +'T*B*\! %D$
$**B  

 $  ))-$$B


V$
$W-$ $ V 
W:
..;<8+%-KB%! & $B%'  !!<&,,
  !!<&,, B&, +  !!<&,, VK! & $-$<%$
VWW:
"$ - ! 
 $ & $VB&,W:
"%
$ &$) $ V & $6([ !W:
 $&  !:
X
.ZZ
Z) B   +%! &*)
 - ! & $&
Z.
)&B 
$$  ! $  & $V8)) $ ))K"$ - !W
$D +
)$ U
..
$! %O +'T*B*\! %D$
$**B  

 $  ))-$$B


V$
$W-$ $ V 
W:
"%
$ &$) $ V !W:
  !!<&,, B&,,  -$ & $V !W:
..! M#7
T*)
%+ +B&,, B&,
"%
$ &$) $ V +"$ -VB&,, B&,WW:
X
X

367

Cz IV Najwaniejsze aplikacje XML

368

Lista dost!pnych produktw


Omawianie technik czenia baz danych i XML zakoczymy przedstawieniem listy
dostpnych na rynku produktw.
Tabele 16.1 i 16.2 stanowi krtki indeks, pozwalajcy zorientowa si, jakie produkty s dostpne na rynku.
Tabela 16.1. Oprogramowanie porednie
4ODS

FourThought

http://opentechnology.org/4Suite/

ASP2XML

Stonebroom

http://www.stonebroom.com/asp2xml.htm

Beanstalk

Transparency

http://www.transparency.com

Castor

exolab.org

http://castor.exolab.org/index.html

DatabaseDom

IBM

http://www.alphaworks.ibm.com/tech/databasedom

DataCraft

IBM

http://www.alphaworks.ibm.com/formula/datacraft

DB2XML

Volker Turau

http://www.informatik.fh-wiesbaden.de/~turau

DBIx::XML_RDB

Matt Sergeant

http://theory.uwinnipeg.ca/CPAN/

InterAccess

XML Software
Corporation

http://www.xmlsoft.com.au/iaccess.html

Net.Data

IBM

http://www-4.ibm.com/software/data/net.data/

ODBC2XML

Intelligent Systems
Research

http://members.xoom.com/gvaughan/odbc2xml.htm

XML-DB Link

Rogue Wave Software

http://www.roguewave.com/

XML-DBMS

Ronald Bourret

http://www.rpbourret.com/xmldbms/index.htm

XML Junction

Data Junction, Inc.

http://www.xmljunction.net

XLE

IBM

http://www.alphaworks.ibm.com/tech/xle

Tabela 16.2. Serwery XML i CMS


Astoria

Chrystal Software

http://www.chrystal.com/products/astoria/astoria.htm

BladeRunner

Interleaf

http://www.xmlecontent.com/products/brintro.htm

Bluestone
XML-Server

Bluestone

http://www.bluestone.com/

Cocoon

Apache.org

http://xml.apache.org/cocoon/sql.html

DataChannel Server

DataChannel

http://www.datachannel.com/

Documentum

Documentum, Inc.

http://www.documentum.com/

Dynabase

Inso

http://www.ebt.com/dynabase/

Epic

Arbortext

http://www.arbortext.com/Products/Epic/epic.html

Excelon

eXcelon Corp.

http://www.exceloncorp.com/products/excelon.html

Frontier

UserLand Software

http://frontier.userland.com

GroveMinder

TechnoTeacher

http://www.techno.com/

Rozdzia 16. XML i bazy danych

369

Tabela 16.2. Serwery XML i CMS (cig dalszy)


Hynet Directive

Hynet Technologies

http://www.hynet.com/Products/main.html

Information

Interleaf Manager

http://www.xmlecontent.com/products/im.htm

Lasso

Blue World
Communications

http://www.blueworld.com/blueworld/products/

LivePage Enterprise

Janna Systems

http://www.janna.com

POET Suite

POET

http://www.poet.com/products/cms/cms.html

Rhythmyx

Percussion Software

http://www.percussion.com/

SigmaLink

STEP

http://www.step.de/sigmalink.htm

SIM

Progressive
Information
Technologies

http://www.simdb.com

Tamino

Software AG

http://www.softwareag.com/tamino/

Target 2000

Magnus

http://www.target2000.com/main.html

WSDOM
XML-Portal

Radian Systems

http://www.radsys.com/products/portal.htm

XML Portal Server


(XPS)

Sequoia Software
Corp.

http://www.sequoiasw.com/xps/index.asp

XMLBase

eidon

http://www.eidon-products.com/sgmlxmlbase.htm

Podsumowanie
W tym rozdziale omwilimy rne sposoby integrowania XML i baz danych; podzielilimy je wedug poziomu powizania oprogramowania z baz danych i danymi XML.
Omwilimy cz teoretyczn i praktyczn wielu rozwiza, od specjalizowanych
klas, obsugujcych konkretne sowniki XML, przez API SAX do baz danych i oprogramowanie porednie, po serwery XML.
Omwione w tym rozdziale pomysy i klasy bd uywane w nastpnych rozdziaach
jako elementy bardziej zoonych aplikacji.

You might also like