01.pdf
(
482 KB
)
Pobierz
1
Wprowadzenie
XML. W ci
ą
gu ostatnich dwóch lat chyba ka
Ŝ
dy programista w którym
ś
momencie poczuł ciarki
na plecach zwi
ą
zane z tym skrótem. Ciarki na plecach, cho
ć
z ró
Ŝ
nych powodów: konieczno
ść
wyuczenia si
ę
kolejnego skrótu, ekscytacja now
ą
technologi
ą
, zagubienie. I, co ciekawe, ka
Ŝ
da
z tych reakcji na XML jest uzasadniona. Tak, trzeba zapami
ę
ta
ć
nowy skrót, a tak
Ŝ
e skróty jemu
towarzysz
ą
ce: XSL, XSLT, PI, DTD, XHTML i inne. Tak, XML oferuje nowe mo
Ŝ
liwo
ś
ci: to, co
Java wniosła w przeno
ś
no
ść
kodu, XML ma wnie
ść
w przeno
ś
no
ść
danych. W ostatnich mie-
si
ą
cach Sun promuje nawet to rozwi
ą
zanie nast
ę
puj
ą
cym sloganem: „Java + XML = przeno
ś
ny
kod + przeno
ś
ne dane”. I wreszcie — tak, XML powoduje pewne zagubienie. Spróbujemy przybli-
Ŝ
y
ć
i rozgry
źć
XML — b
ę
dziemy omawia
ć
go tylko na tyle ogólnie i abstrakcyjnie,
Ŝ
eby nie po-
pa
ść
w bezu
Ŝ
yteczno
ść
, i tylko na tyle szczegółowo,
Ŝ
eby nie tworzy
ć
kolejnej suchej specyfikacji.
To ksi
ąŜ
ka dla programisty Javy, który chce pozna
ć
i nauczy
ć
si
ę
korzysta
ć
z narz
ę
dzi operuj
ą
cych
na tej technologii.
Przed programist
ą
współczesnej aplikacji WWW stoi wiele problemów, których dziesi
ęć
lat temu
nie było nawet w prognozach. Pojawiła si
ę
konieczno
ść
uruchamiania szybkich i bezawaryjnych
systemów rozproszonych na przestrzeni tysi
ę
cy kilometrów, konieczno
ść
pobierania danych z sys-
temów heterogenicznych, baz danych, usług katalogowych i aplikacji bez utraty cho
ć
by jednej
cyfry po przecinku. Aplikacje musz
ą
porozumiewa
ć
si
ę
nie tylko z innymi komponentami danej
firmy, ale tak
Ŝ
e z innymi systemami biznesowymi — cz
ę
sto znajduj
ą
cymi si
ę
w innych firmach
i zbudowanymi w oparciu o inne technologie. Klienty to ju
Ŝ
nie tylko klienty uproszczone (ang.
thin client
), ale całe przegl
ą
darki WWW obsługuj
ą
ce HTML, telefony komórkowe z obsług
ą
pro-
tokołu aplikacji bezprzewodowych (WAP) czy asystenty osobiste („organizery”) obsługuj
ą
ce
zupełnie inne j
ę
zyki znaczników. Oreganizacja danych i ich przetwarzanie — oto podstawowe za-
dania współczesnych aplikacji.
XML pozwala programi
ś
cie sprosta
ć
wszystkim tym wyzwaniom. Programi
ś
ci Javy maj
ą
za
ś
je-
szcze do dyspozycji arsenał interfejsów umo
Ŝ
liwiaj
ą
cych korzystanie z XML-a i jego towarzyszy
bez konieczno
ś
ci opuszczania zintegrowanego
ś
rodowiska programistycznego Javy (
Integrated
Development Environment
— IDE). Je
ś
li to wszystko wydaje si
ę
zbyt pi
ę
kne, by było prawdziwe
— warto czyta
ć
dalej. Poznamy zalety i wady interfejsów API Javy słu
Ŝą
cych do przeprowadzania
operacji na XML-u, a tak
Ŝ
e korzy
ś
ci płyn
ą
ce z zastosowania najnowszych specyfikacji XML-a.
Cały czas b
ę
dziemy przyjmowa
ć
punkt widzenia programisty. Ta ksi
ąŜ
ka nie mówi o tym,
dlacze-
go
powinno si
ę
korzysta
ć
z XML-a, ale
jak
to robi
ć
. Je
ś
li w specyfikacji znajd
ą
si
ę
elementy
niezbyt przydatne, to powiemy, dlaczego tak jest, i przejdziemy dalej; je
ś
li jakie
ś
zagadnienie jest
szczególnie godne uwagi, po
ś
wi
ę
cimy mu wi
ę
cej czasu. B
ę
dziemy traktowa
ć
XML jako narz
ę
-
dzie, a nie jako slogan reklamowy czy kolejn
ą
„zabawk
ę
”. Pami
ę
taj
ą
c o tym, spróbujmy odpo-
wiedzie
ć
na pytanie, czym jest XML.
CotojestXML?
XML to
Extensible Markup Language
, czyli rozszerzalny j
ę
zyk znaczników. Podobnie jak jego
przodek, SGML, XML jest metaj
ę
zykiem słu
Ŝą
cym do definiowania innych j
ę
zyków. Jest jednak
o wiele prostszy i bardziej praktyczny ni
Ŝ
SGML. XML to j
ę
zyk znaczników, w którym nie spre-
cyzowano ani zestawu znaczników, ani gramatyki j
ę
zyka.
Zestaw znaczników
(ang.
tag set
) w j
ę
zyku
znaczników okre
ś
la, jakie znaczniki maj
ą
znaczenie dla parsera j
ę
zyka. Na przykład, w HTML-u
mo
Ŝ
na u
Ŝ
ywa
ć
znaczników ze
ś
ci
ś
le okre
ś
lonego zestawu. Mo
Ŝ
emy wstawi
ć
znacznik
<TABLE>
,
ale nie mo
Ŝ
emy u
Ŝ
y
ć
<KRZESLO>
(angielskie słowo
table
oznacza nie tylko
tabel
ę
, ale tak
Ŝ
e
stół
). Pierwszy ze znaczników ma dla aplikacji wykorzystuj
ą
cej dane HTML specyficzne znacze-
nie, a drugi nie — wi
ę
kszo
ść
przegl
ą
darek po prostu go zignoruje, ale niektóre mog
ą
zachowa
ć
si
ę
nieprzewidywalnie. Wszystko to dlatego,
Ŝ
e kiedy definiowano standard HTML, okre
ś
lono w nim
konkretny zestaw znaczników. W ka
Ŝ
dej kolejnej wersji HTML-a dodawane s
ą
nowe znaczniki.
Je
ś
li jednak znacznik nie jest zdefiniowany, to przetwarzanie dokumentu zawieraj
ą
cego taki
znacznik mo
Ŝ
e spowodowa
ć
bł
ą
d.
Gramatyka
j
ę
zyka definiuje poprawne u
Ŝ
ycie jego znaczników.
I znów we
ź
my HTML jako przykład. Do znacznika
<TABLE>
mo
Ŝ
na doda
ć
szereg atrybutów,
okre
ś
laj
ą
cych szeroko
ść
tabeli, kolor tła, wyrównanie itd. Nie mo
Ŝ
emy jednak wstawi
ć
np. atry-
butu
TYPE
, bo nie pozwala na to wła
ś
nie gramatyka j
ę
zyka.
XML nie definiuje ani znaczników, ani gramatyki. Ma wi
ę
c nieograniczone mo
Ŝ
liwo
ś
ci rozbudo-
wy, jest rozszerzalny — i st
ą
d jego nazwa. Je
ś
li postanowimy korzysta
ć
ze znacznika
<TABLE>
,
a potem jeszcze w danych obj
ę
tych tym znacznikiem zagnie
ź
dzi
ć
kilka znaczników
<KRZESLO>
,
to bez trudno
ś
ci mo
Ŝ
emy to zrobi
ć
. Je
ś
li chcieliby
ś
my zdefiniowa
ć
atrybut okre
ś
laj
ą
cy typ krzesła,
np.
TYPE
, te
Ŝ
mamy tak
ą
mo
Ŝ
liwo
ść
. Mo
Ŝ
emy nawet wstawia
ć
znaczniki o nazwach takich jak
imiona naszych dzieci! Mo
Ŝ
liwo
ś
ci te zostały przedstawione w przykładzie 1.1.
Przykład1.1.PrzykładowyplikXML
<?xml version="1.0" encoding="ISO-8859-2"?>
<pokoj-jadalny>
<table typ="okragly" drewno="klon">
<producent>Drewnosklep S.A.</producent>
</table>
<krzeslo drewno="klon">
<ilosc>2</ilosc>
<jakosc>doskonała</jakosc>
<poduszka zawarta="true">
<kolor>niebieski</kolor>
</poduszka>
</krzeslo>
<krzeslo drewno="dab">
<ilosc>3</ilosc>
<jakosc>średnia</jakosc>
</krzeslo>
</pokoj-jadalny>
Je
ś
li Czytelnik nigdy nie widział pliku XML, a miał do czynienia tylko z HTML-em lub innymi
j
ę
zykami znaczników, to przykład mo
Ŝ
e si
ę
wydawa
ć
do
ść
osobliwy. To dlatego,
Ŝ
e znaczniki i gra-
matyka opisuj
ą
ca dane zostały w cało
ś
ci zmy
ś
lone.
ś
adna strona WWW ani specyfikacja nie
definiuje znaczników
<table>
,
<krzeslo>
czy
poduszka
(ale mogłoby tak by
ć
— w podo-
bny sposób specyfikacja XHTML definiuje znaczniki HTML wewn
ą
trz XML-a). Tu wła
ś
nie drze-
mie siła XML-a — umo
Ŝ
liwia on definiowanie zawarto
ś
ci danych na ró
Ŝ
ne sposoby i wymaga
jedynie zgodno
ś
ci z ogóln
ą
struktur
ą
j
ę
zyka. W dalszej cz
ęś
ci ksi
ąŜ
ki s
ą
przedstawione ró
Ŝ
nego
rodzaju ograniczenia, ale na razie wystarczy pami
ę
ta
ć
,
Ŝ
e XML został stworzony po to, by zapew-
ni
ć
elastyczno
ść
formatowania danych.
Ta elastyczno
ść
jest jedn
ą
z najwi
ę
kszych zalet XML-a, a jednocze
ś
nie jedn
ą
z jego najwi
ę
kszych
wad. Dokumenty XML mo
Ŝ
na przetwarza
ć
na tak wiele ró
Ŝ
nych sposobów i w tak wielu ró
Ŝ
nych
celach,
Ŝ
e powstała bardzo du
Ŝ
a liczba zwi
ą
zanych z XML-em standardów opisuj
ą
cych tłumaczenie
formatów danych i same formaty. Te dodatkowe skróty i ich nieustanne pojawianie si
ę
„w oko-
licach” XML-a cz
ę
sto powoduje bł
ę
dne rozumienie idei tego standardu. Kiedy kto
ś
mówi „XML”,
to jest niemal pewne,
Ŝ
e nie ma na my
ś
li samego j
ę
zyka XML, tylko jedno z towarzysz
ą
cych mu
narz
ę
dzi. Niejednokrotnie zajmowa
ć
si
ę
b
ę
dziemy wła
ś
nie tymi narz
ę
dziami; trzeba jednak pami
ę
-
ta
ć
,
Ŝ
e najcz
ęś
ciej „XML” nie oznacza samego j
ę
zyka, lecz „XML i towarzysz
ą
ce mu wspaniałe
metody manipulowania danymi”. Skoro to rozró
Ŝ
nienie mamy ju
Ŝ
za sob
ą
, mo
Ŝ
emy przej
ść
do
rozszyfrowania najbardziej popularnych skrótów zwi
ą
zanych z XML-em. Skróty te s
ą
niezwykle
istotne dla całej ksi
ąŜ
ki, a wi
ę
c warto zostawi
ć
w tym miejscu zakładk
ę
, aby móc w ka
Ŝ
dej chwili
zajrze
ć
na te strony. Poni
Ŝ
sze opisy powinny przybli
Ŝ
y
ć
Czytelnikowi wzajemne zwi
ą
zki mi
ę
dzy
narz
ę
dziami zwi
ą
zanymi z XML-em oraz wyja
ś
ni
ć
, czym jest XML. Nie b
ę
dziemy tutaj omawia
ć
mechanizmów publikacyjnych, aplikacji i narz
ę
dzi dla XML-a, bo s
ą
one przedstawione w dalszej
cz
ęś
ci ksi
ąŜ
ki. Poni
Ŝ
ej Czytelnik znajdzie informacje jedynie o specyfikacjach i zaleceniach.
Wi
ę
kszo
ść
z nich powstała z inicjatywy W3C (
World Wide Web Consortium
). Organizacja ta
zajmuje si
ę
definiowaniem standardów XML i spełnia rol
ę
podstawowej bazy informacji o tym
standardzie — podobnie jak firma Sun jest podstawowym
ź
ródłem informacji o Javie i zwi
ą
zanych
z ni
ą
interfejsach API. Wi
ę
cej informacji o W3C mo
Ŝ
na znale
źć
pod adresem
http://www.w3.org
.
XML
XML to oczywi
ś
cie punkt wyj
ś
cia wszystkich tych trzy- i czteroliterowych skrótów. Definiuje sam
j
ę
zyk i okre
ś
la struktur
ę
metadanych. XML sam w sobie ma niewielk
ą
warto
ść
— to tylko struk-
tura. Ale rozmaite technologie bazuj
ą
ce na tej strukturze daj
ą
programistom i administratorom
zawarto
ś
ci niespotykan
ą
do tej pory elastyczno
ść
w zarz
ą
dzaniu i przesyłaniu danych. XML ma
ju
Ŝ
status uko
ń
czonego zalecenia W3C, co oznacza,
Ŝ
e nic si
ę
nie zmieni a
Ŝ
do opublikowania
nowej wersji standardu. Pełna specyfikacja XML 1.0 znajduje si
ę
pod adresem
http://www.w3.org/
TR/REC-xml/
. Specyfikacja ta jest trudn
ą
lektur
ą
nawet dla programistów dobrze znaj
ą
cych XML,
wi
ę
c polecałbym raczej zapoznanie si
ę
z jej doskonał
ą
wersj
ą
opatrzon
ą
komentarzami, dost
ę
pn
ą
pod adresem
http://www.xml.com
.
Temat ten b
ę
dzie w dalszych rozdziałach omawiany szczegółowo, wi
ę
c teraz wystarczy pami
ę
ta
ć
o dwóch podstawowych koncepcjach koniecznych do zrozumienia istoty dokumentu XML. Pierwsza
mówi,
Ŝ
e dokument XML, aby był w jakikolwiek sposób przydatny i mógł zosta
ć
przetworzony,
musi by
ć
poprawnie uformowany
. Poprawnie uformowany dokument to taki, w którym ka
Ŝ
demu
znacznikowi otwieraj
ą
cemu odpowiada znacznik zamykaj
ą
cy, w którym znaczniki nie s
ą
zagnie
Ŝ
-
d
Ŝ
one niezgodnie z regułami oraz którego składnia jest zgodna ze specyfikacj
ą
. Ale zaraz — czy
Ŝ
nie powiedzieli
ś
my wcze
ś
niej,
Ŝ
e XML nie posiada
Ŝ
adnych reguł składniowych? Niezupełnie.
Powiedzieli
ś
my,
Ŝ
e nie ma reguł
gramatycznych
. Dany dokument mo
Ŝ
e definiowa
ć
własne znacz-
niki i atrybuty, ale wci
ąŜ
musi by
ć
zgodny z regułami ogólnymi. Reguły te wykorzystywane s
ą
nast
ę
pnie przez aplikacje i parsery znaj
ą
ce XML w celu odczytania danych z dokumentu i wy-
konania na nich pewnych czynno
ś
ci — np. znalezienia ceny krzesła czy utworzenia z danych
dokumentu PDF. Zagadnienie to jest dokładniej omówione w rozdziale 2.,
Pisanie w XML-u
.
Druga istotna koncepcja zwi
ą
zana z dokumentami XML mówi,
Ŝ
e mog
ą
one — ale nie musz
ą
— by
ć
poprawne
. Poprawny dokument to taki, który spełnia wymagania odpowiadaj
ą
cej mu definicji
typu dokumentu DTD (o niej za chwil
ę
). Mówi
ą
c krótko, DTD definiuje gramatyk
ę
i zestaw znacz-
ników na potrzeby okre
ś
lonego formatowania XML. Je
ś
li w dokumencie okre
ś
lono konkretn
ą
de-
finicj
ę
DTD i je
ś
li jest on zgodny z t
ą
definicj
ą
, to dokument taki okre
ś
la si
ę
jako poprawny.
Dokumenty XML mog
ą
zosta
ć
tak
Ŝ
e zaw
ęŜ
one w ramach schematu — jest to nowy sposób narzu-
cania formatu XML, który wyprze DTD. Dokument mo
Ŝ
e by
ć
wi
ę
c tak
Ŝ
e
zgodny ze schematem
.
W dalszej cz
ęś
ci ksi
ąŜ
ki zajmiemy si
ę
dokładniej przedstawionymi wy
Ŝ
ej zagadnieniami. Najpierw
jednak musimy pozna
ć
kilka skrótów i specyfikacji u
Ŝ
ywanych wewn
ą
trz dokumentu XML.
PI
PI to
instrukcja przetwarzania
(ang.
processing instruction
) w dokumencie XML. Instrukcja prze-
twarzania nakazuje aplikacji wykonanie okre
ś
lonego zadania. Instrukcje PI, cho
ć
zajmuj
ą
niewiele
miejsca w specyfikacji XML, s
ą
na tyle wa
Ŝ
ne,
Ŝ
e znalazły si
ę
w
ś
ród omawianych akronimów.
PI wyró
Ŝ
nia si
ę
spo
ś
ród innych danych w dokumencie XML tym,
Ŝ
e oznacza polecenie przekazy-
wane parserowi XML lub innemu programowi korzystaj
ą
cemu z dokumentu. W naszym przykła-
dowym dokumencie 1.1 pierwszy wiersz, wskazuj
ą
cy wersj
ę
standardu XML, stanowi instrukcj
ę
przetwarzania. Informuje parsery, z której wersji standardu b
ę
dziemy korzysta
ć
. Instrukcje prze-
twarzania maj
ą
posta
ć
<?cel instrukcje?>
. Wszystkie instrukcje PI, w których jako cel
okre
ś
lono
XML,
nale
Ŝą
do standardowego zestawu instrukcji okre
ś
lonego w ramach XML-a i po-
winny by
ć
rozpoznawane przez parsery. Nazywa si
ę
je cz
ę
sto
instrukcjami XML
. Ale instrukcje PI
mog
ą
tak
Ŝ
e zawiera
ć
informacje, które maj
ą
zosta
ć
wykorzystane przez aplikacje przechwytuj
ą
ce
czynno
ś
ci parsera; w takim przypadku jako cel instrukcji przetwarzania mo
Ŝ
na okre
ś
li
ć
słowo klu-
czowe odpowiadaj
ą
ce danej aplikacji (np. „cocoon”).
Instrukcje przetwarzania nabieraj
ą
du
Ŝ
ego znaczenia, gdy dane XML wykorzystywane s
ą
w apli-
kacjach znaj
ą
cych ten standard. Rozwa
Ŝ
my aplikacj
ę
, która przetwarza nasz przykładowy plik
XML, a nast
ę
pnie tworzy reklam
ę
mebli opart
ą
na produktach wymienionych w dokumencie.
Instrukcja przetwarzania mo
Ŝ
e poinformowa
ć
aplikacj
ę
,
Ŝ
e dany mebel jest na li
ś
cie „zapotrzebo-
wania” i
Ŝ
e ma zosta
ć
przekazany do innej aplikacji, np. takiej, która wysyła zamówienia — zatem
taki mebel ma nie pojawia
ć
si
ę
w reklamie. Parser XML rozpozna instrukcje PI odwołuj
ą
ce si
ę
do
celów zewn
ę
trznych i przeka
Ŝ
e je w niezmienionej postaci zewn
ę
trznym aplikacjom.
DTD
DTD to
document type definition
, czyli definicja typu dokumentu. DTD narzuca szereg ogranicze
ń
na dokument (lub grup
ę
dokumentów) XML. Definicja DTD sama w sobie nie jest specyfikacj
ą
,
ale została zdefiniowana jako cz
ęść
specyfikacji XML. Deklaracja typu dokumentu wewn
ą
trz do-
kumentu XML mo
Ŝ
e sama zawiera
ć
ograniczenia odno
ś
nie znaczników, ale mo
Ŝ
e tak
Ŝ
e odwoły-
wa
ć
si
ę
do zewn
ę
trznego dokumentu opisuj
ą
cego takie ograniczenia. Definicj
ą
typu dokumentu
jest suma tych dwóch powy
Ŝ
szych zestawów ogranicze
ń
. DTD definiuje sposób, w jaki ma by
ć
skonstruowany dokument XML. Ponownie spójrzmy na przykład 1.1. Cho
ć
stworzyli
ś
my grup
ę
własnych znaczników, to dokument taki jest bezu
Ŝ
yteczny dla innej aplikacji, a nawet dla innego
u
Ŝ
ytkownika, który nie potrafi zinterpretowa
ć
naszych znaczników. Powstaj
ą
w
ą
tpliwo
ś
ci — czy
znacznik
<ilosc>
mówi nam, ile krzeseł jest na stanie? Czy atrybut
drewno
mo
Ŝ
e zosta
ć
u
Ŝ
yty
w znaczniku
<krzeslo>
? Je
ś
li dokument ma zosta
ć
poprawnie przetworzony przez parser, na te
wszystkie pytania trzeba znale
źć
odpowiedzi. Dokument uwa
Ŝ
a si
ę
za poprawny, je
ś
li jest zgodny
z ograniczeniami narzucanymi przez DTD odno
ś
nie formatowania danych XML. Jest to szcze-
gólnie istotne, gdy zamierzamy przenosi
ć
dane pomi
ę
dzy aplikacjami — wymaga to uzgodnienia
formatu i składni, aby dwa ró
Ŝ
ne systemy mogły si
ę
porozumie
ć
.
Jak ju
Ŝ
wcze
ś
niej wspomniano, definicja DTD definiuje ograniczenia, mówi
ą
c inaczej — zaw
ęŜ
a
konkretny dokument lub zestaw dokumentów XML. Programista lub autor zawarto
ś
ci tworzy tak
Ŝ
e
definicj
ę
DTD w postaci dodatkowego dokumentu, do którego odwołuje si
ę
z plików XML; mo
Ŝ
e
tak
Ŝ
e zawrze
ć
j
ą
w samym pliku XML — w ka
Ŝ
dym razie definicja nie ingeruje w
Ŝ
aden sposób w do-
kument XML. Tak naprawd
ę
to wła
ś
nie DTD przyczynia si
ę
do przeno
ś
no
ś
ci danych XML. Mo
Ŝ
e
ona na przykład okre
ś
la
ć
,
Ŝ
e jedynymi poprawnymi warto
ś
ciami atrybutu
drewno
s
ą
„klon”, „sosna”,
„d
ą
b” i „maho
ń
”. Dzi
ę
ki temu parser potrafi okre
ś
li
ć
, czy zawarto
ść
dokumentu jest do przyj
ę
cia,
i zapobiec ewentualnym bł
ę
dom formatowania danych. Definicja DTD okre
ś
la tak
Ŝ
e kolejno
ść
za-
gnie
Ŝ
d
Ŝ
ania znaczników. Mo
Ŝ
e na przykład stanowi
ć
,
Ŝ
e znacznik
<poduszka>
ma prawo by
ć
zagnie
Ŝ
d
Ŝ
any jedynie w znacznikach
<krzeslo>
. Dzi
ę
ki temu inna aplikacja, która otrzymuje nasz
przykładowy plik XML, wie, jak przetworzy
ć
i przeszukiwa
ć
otrzymane dane. Definicja DTD nie tylko
przyczynia si
ę
do wysokiej elastyczno
ś
ci formatowania danych w XML-u, ale tak
Ŝ
e umo
Ŝ
liwia
przetwarzanie i sprawdzanie poprawno
ś
ci danych w dowolnym systemie potrafi
ą
cym odnale
źć
t
ę
definicj
ę
.
Przestrzeńnazw
Przestrze
ń
nazw to jedno z niewielu poj
ęć
zwi
ą
zanych z XML-em, dla których nie wymy
ś
lono
akronimu. Nie ma takiej potrzeby — w tym przypadku nazwa dobrze odpowiada funkcji tego elementu.
Przestrze
ń
nazw
(ang.
namespace
) to odwzorowanie pomi
ę
dzy
przedrostkiem
elementu a identyfikato-
rem URI. Odwzorowanie to umo
Ŝ
liwia zapobie
Ŝ
enie kolizjom przestrzeni nazw oraz okre
ś
lenie struktur
danych, które pozwalaj
ą
parserom zapobiec takim kolizjom. Przeanalizujmy przykład kolizji przestrze-
ni nazw. Załó
Ŝ
my,
Ŝ
e w dokumencie pomi
ę
dzy znacznikami
<krzeslo>
i
</krzeslo>
znajduje
si
ę
znacznik
<cena>
. Ale w ramach definicji krzesła jest te
Ŝ
znacznik
<poduszka>
, który przecie
Ŝ
tak
Ŝ
e mo
Ŝ
e posiada
ć
własny znacznik
<cena>
. Zauwa
Ŝ
my równie
Ŝ
,
Ŝ
e dokument mo
Ŝ
e odwoływa
ć
si
ę
do innego dokumentu XML w celu pobrania informacji o prawach autorskich. W obu dokumentach
powinny pojawi
ć
si
ę
znaczniki
<data>
lub np.
<firma>
, ale jak rozpozna
ć
, który znacznik
odwołuje si
ę
do czego? Taka dwuznaczno
ść
to problem dla parsera XML. Czy znacznik
<cena>
ma
by
ć
interpretowany w ró
Ŝ
ny sposób zale
Ŝ
nie od tego, w którym elemencie jest zagnie
Ŝ
d
Ŝ
ony? Czy
mo
Ŝ
e autor zawarto
ś
ci pomyłkowo u
Ŝ
ył go w dwóch kontekstach? Bez informacji o przestrzeni nazw
nie jest mo
Ŝ
liwe okre
ś
lenie, czy był to bł
ą
d w konstrukcji dokumentu XML, a je
ś
li było to działanie
celowe — jak rozporz
ą
dzi
ć
danymi koliduj
ą
cych znaczników.
Zalecenie opisuj
ą
ce przestrzenie nazw w XML-u definiuje mechanizm do kwalifikowania nazw.
Mechanizm ten wykonuje swoje zadanie z u
Ŝ
yciem identyfikatora URI, ale tego na razie nie mu-
simy wiedzie
ć
. Poprawne stosowanie znaczników w rodzaju opisywanego
<cena>
nie wymaga
wpisywania niezbyt m
ą
drych nazw w rodzaju
<cena-krzesla>
czy
<cena-poduszki>
.
Zamiast tego przestrze
ń
nazw tworzona jest z wykorzystaniem przedrostka w postaci elementu
XML — a wi
ę
c na przykład:
<krzeslo:cena>
czy
<poduszka:cena>
. Parser XML umie
potem rozró
Ŝ
ni
ć
te przestrzenie i wcale nie trzeba tworzy
ć
nowych nazw. Przestrzenie nazw s
ą
najcz
ęś
ciej u
Ŝ
ywane w dokumentach XML, ale pojawiaj
ą
si
ę
tak
Ŝ
e w schematach i arkuszach sty-
Plik z chomika:
chomik_wuko
Inne pliki z tego folderu:
01.pdf
(482 KB)
02.pdf
(140 KB)
03.pdf
(292 KB)
04.pdf
(250 KB)
05.pdf
(170 KB)
Inne foldery tego chomika:
21. Wiek
Access 2000 - Księga Eksperta
ASP.NET
Bezpieczeństwo w Windows 2000 - Czarna Księga
C++ Dla Każdego
Zgłoś jeśli
naruszono regulamin