You are on page 1of 31

XML.

Tworzenie stron WWW


z wykorzystaniem XML,
CSS, XHTML oraz XSLT.
Niebieski podrcznik
Autor: Rob Huddleston
Tumaczenie: Andrzej Grayski
ISBN: 978-83-246-1738-8
Tytu oryginau: XML: Your visual blueprint
for building expertwebsites with XML, CSS,
XHTML, and XSLT (Visual Blueprint)
Format: 170230, stron: 320
Odpowiedzi na wszystkie Twoje pytania dotyczce XML w jednym miejscu!
Do czego potrzebuj formatu XML?
Jak zapewni poprawno plikom XML?
Jak przetworzy plik XML do formatu XHTML?
XML znaczy tyle, co rozszerzalny jzyk znacznikw. Prawdopodobnie sowo
rozszerzalny w tym skrcie jest najwaniejsze. Oznacza ono, e jako uytkownik
moesz zdefiniowa tyle znacznikw, ile tylko jest Ci potrzebnych w danym przypadku.
XML jest uniwersalnym jzykiem formalnym, za pomoc ktrego mona reprezentowa
dane w usystematyzowany, strukturalny sposb. Niezaleno od platformy jest
niewtpliwie t cech, ktra pozwolia mu na zdobycie ogromnej popularnoci sta si
on wrcz swego rodzaju standardem. W dodatku jzyk ten pozwala na tworzenie stron
internetowych przy uyciu XHTML, czyli przedstawienie HTML w postaci XML. Mao?
Dziki zastosowaniu XSLT moesz take przeksztaci dowolny dokument XML do
postaci XHTML!
Dziki ksice XML. Tworzenie stron WWW z wykorzystaniem XML, CSS, XHTML oraz
XSLT. Niebieski podrcznik poznasz podstawy XML i sposb przetwarzania plikw
XML za pomoc jzyka XSLT oraz dowiesz si, jak wybra dobry edytor, pozwalajcy
na wygodn prac z dokumentami. W kolejnych rozdziaach zdobdziesz wiedz na
temat sposobw wykorzystania atrybutw i przestrzeni nazw oraz stworzysz swj
pierwszy dokument XML. Ponadto nauczysz si definiowa struktur dokumentu za
pomoc schematw i zobaczysz, jak atwo mona ocenia poprawno dokumentw
XML. Autor ksiki zaprezentuje Ci rwnie technik generowania dokumentw XML
na podstawie istniejcych danych, midzy innymi w programach Access i Excel, oraz
technik przeksztacania plikw XML do formatu XHTML za pomoc jzyka XSLT.
Jeeli interesuje Ci format XML i formaty pokrewne, trzymasz w rku ksik, ktrej
poszukiwania zajy Ci tak duo czasu!
Wykorzystaj wszystkie moliwoci XML w swoich projektach!

Spis treci
Jak korzysta z ksiki......................................................... x
Rozdzia 1. Z
 aczynamy ..................................................... 2
Wprowadzenie do jzyka XML............................................................................................................ 2
Wprowadzenie do jzyka XSLT........................................................................................................... 3
Wprowadzenie do jzyka XHTML..................................................................................................... 4
Wprowadzenie do CSS............................................................................................................................ 5
Dokument XML w przegldarce WWW........................................................................................... 6
Wprowadzenie do anatomii dokumentu XML................................................................................. 8
Wybr dobrego edytora............................................................................................................................ 9

Rozdzia 2. Tworzenie dokumentw XML .............................. 10


Tworzymy pierwszy dokument XML..............................................................................................10
Dane i elementy potomne w dokumentach XML..........................................................................12
Atrybuty......................................................................................................................................................14
Encje i CDATA......................................................................................................................................... 16
Przestrzenie nazw.................................................................................................................................... 18

Rozdzia 3. D
 efiniowanie struktury dokumentw XML
za pomoc schematw........................................ 20
Wprowadzenie do schematw..............................................................................................................20
Przestrzenie nazw schematw.............................................................................................................22
Elementy zoone.....................................................................................................................................24
Typy danych...............................................................................................................................................26
Atrybuty......................................................................................................................................................28
Elementy proste........................................................................................................................................30
Elementy mieszane..................................................................................................................................32
Ograniczenie wystpowania elementw...........................................................................................34
Kojarzenie dokumentu XML ze schematem..................................................................................36
Walidacja dokumentu.............................................................................................................................38
Wizualne tworzenie schematu za pomoc XMLSpy....................................................................40

iv

Rozdzia 4. Inne schematy walidacyjne...................................44


DTD.............................................................................................................................................................44
Tworzenie DTD.......................................................................................................................................46
Atrybuty......................................................................................................................................................48
Encje............................................................................................................................................................49
Encje parametryczne..............................................................................................................................50
RELAX NG...............................................................................................................................................52
XML-owa skadnia RELAX NG........................................................................................................54
Kompaktowa skadnia RELAX NG...................................................................................................56

Rozdzia 5. Generowanie dokumentw XML


na podstawie istniejcych danych..........................58
Generowanie dokumentw XML zprogramu Access 2003......................................................58
Generowanie dokumentw XML zprogramu Access 2007......................................................60
Generowanie dokumentw XML zprogramu Excel 2003.........................................................62
Generowanie dokumentw XML zprogramu Excel 2007.........................................................64

Rozdzia 6. Podstawy jzyka XHTML.....................................66


Wprowadzenie do XHTML-a.............................................................................................................66
Strona XHTML Transitional...............................................................................................................68
Tytu dokumentu......................................................................................................................................70
Nagwki.....................................................................................................................................................72
Tekst.............................................................................................................................................................74
Encje............................................................................................................................................................76
Hipercza..................................................................................................................................................78
Obrazy igrafika........................................................................................................................................80
Tabele...........................................................................................................................................................82
Listy.............................................................................................................................................................84

Rozdzia 7. T ransformowanie dokumentw XML


do postaci XHTML za pomoc jzyka XSLT..............86
Podstawy jzyka XSLT..........................................................................................................................86
Przestrze nazw XSLT..........................................................................................................................88
XPath...........................................................................................................................................................90
v

Spis treci
Specyfikowanie formatu wyjciowego...............................................................................................92
Szablony XSLT........................................................................................................................................94
Transformowanie wartoci elementw..............................................................................................96
Tekst otwarty wtransformacji..............................................................................................................98
Instrukcja apply-templates.............................................................................................................. 100
Ptle wdokumentach XSLT.............................................................................................................. 102
Sortowanie............................................................................................................................................... 104
Instrukcje warunkowe.......................................................................................................................... 106
Tworzenie nowych elementw.......................................................................................................... 108
Doczanie iimportowanie dokumentw.......................................................................................110
Zmienne iparametry............................................................................................................................112
Transformacja XSLT wykonywana przez przegldark WWW............................................114
Transformacja XSLT wykonywana przy uyciu edytora Altova XMLSpy........................116
Transformacja XSLT wykonywana wPHP..................................................................................118
Transformacja XSLT wykonywana wColdFusion.................................................................... 120
Transformacja XSLT wykonywana wASP.NET....................................................................... 122
Tworzenie dokumentw XSLT za pomoc Adobe Dreamweavera CS3............................. 124

Rozdzia 8. F ormatowanie stron WWW za pomoc


kaskadowych arkuszy stylw (CSS)..................... 126
Podstawy CSS........................................................................................................................................ 126
Zmiana czcionki.................................................................................................................................... 128
Kolorowanie tekstu................................................................................................................................130
To iobrazki.............................................................................................................................................132
Obrzee.....................................................................................................................................................134
Dopenienia imarginesy......................................................................................................................136
Pozycjonowanie elementw................................................................................................................138
Otaczanie elementu.............................................................................................................................. 140
Kombinacja otaczania, pozycjonowania imarginesw............................................................. 142
Stylizowanie grup elementw za porednictwem selektorw klas........................................ 144
Stylizowanie wybranych elementw za porednictwem selektorw identyfikacyjnych ..... 146
Selektory kontekstowe......................................................................................................................... 148
Stylizacja nagwkw.......................................................................................................................... 150
Stylizacja list.......................................................................................................................................... 152

vi

Stylizacja hiperczy............................................................................................................................ 154


Inne pseudoklasy ipseudoelementy................................................................................................ 156
Podzia treci dokumentu na sekcje................................................................................................ 158
Przewodnik po stylach..........................................................................................................................160
Drukowanie stron WWW....................................................................................................................162
Strony WWW wurzdzeniach mobilnych.....................................................................................164

Rozdzia 9. Z HTML-a do XHTML-a......................................166


HTML Tidy............................................................................................................................................166
Konwersja HTML-a na XHTML za pomoc Dreamweavera.................................................168
Usuwanie znacznikw prezentacyjnych za pomoc Dreamweavera..................................... 170
Usuwanie tabel za pomoc Dreamweavera................................................................................... 172
Alternatywny tekst dla obrazkw.................................................................................................... 174

Rozdzia 10. Projektowanie


i budowanie serwisu WWW..............................176
Struktura folderw serwisu WWW................................................................................................. 176
Nawigacja po serwisie......................................................................................................................... 178
Strona gwna (indeksowa).................................................................................................................180
Strona-wizytwka..................................................................................................................................182
Konwersja pliku-wizytwki do postaci XML..............................................................................184
Kolekcja ulubionych filmw...............................................................................................................188
Konwersja kolekcji filmw do postaci dokumentu XHTML..................................................190
Ikona serwisu...........................................................................................................................................194
Reklamy na stronach WWW..............................................................................................................196

Rozdzia 11. Publikowanie witryn WWW..............................198


Hosting......................................................................................................................................................198
Pozyskiwanie wasnej domeny......................................................................................................... 200
Publikowanie serwisu przez FTP.................................................................................................... 202
Publikowanie serwisu przy uyciu Dreamweavera.................................................................... 204
Publikowanie serwisu przy uyciu SmartFTP............................................................................ 206
Twoja witryna awyszukiwarki......................................................................................................... 208

vii

Spis treci
Rozdzia 12. Testowanie i debugowanie............................... 210
Walidacja dokumentu XHTML....................................................................................................... 210
Firebug...................................................................................................................................................... 212
Walidacja arkuszy CSS....................................................................................................................... 214
Weryfikacja dostpnoci strony.........................................................................................................216
Testowanie hiperczy...........................................................................................................................218
Najczstsze bdy wdokumentach XML..................................................................................... 220
Najczstsze bdy wdokumentach XHTML.............................................................................. 222
Najczstsze bdy warkuszach CSS.............................................................................................. 224
Najczstsze bdy XSLT.................................................................................................................... 226
Bdy wynikajce zniezgodnoci przegldarek.......................................................................... 227
Problemy z uytecznoci strony..................................................................................................... 228

Rozdzia 13. I ntegrowanie serwisu WWW


zinnymi serwisami........................................ 230
RSS............................................................................................................................................................ 230
Kanay RSS............................................................................................................................................ 232
Poka innym swoje zdjcia za pomoc serwisu Flickr.............................................................. 234
Wideoklipy YouTube na stronach WWW..................................................................................... 238
Smak.owi.te hipercza........................................................................................................................ 240
Mapy Google na stronach WWW................................................................................................... 242
Szukaj zGoogle..................................................................................................................................... 244

viii

Dodatek A: XHTML lista referencyjna..............................246


Dodatek B: CSS lista referencyjna................................... 260
Dodatek C: XSD lista referencyjna...................................264
Dodatek D: XSLT lista referencyjna..................................272
Dodatek E: XPath lista referencyjna................................ 280
Skorowidz.......................................................................284

ix

Wprowadzenie do schematw

ak wiadomo, twrca dokumentu XML ma bardzo du


swobod pod wzgldem definiowania elementw. Aby
jednak tworzony dokument by zrozumiay dla innych
ludzi idla parserw, konieczne staje si dostarczenie informacji na temat jego struktury, akonkretnie informacji
otym, jakie elementy bd wdokumencie uywane, wjakiej kolejnoci powinny si pojawia, ktre znich musz
by obowizkowe uyte i(ewentualnie) jakie atrybuty posiada moe (lub musi) kady ztych elementw.

Definicja schematu W3C


XML ipokrewne mu technologie opracowany zosta
przez World Wide Web Consortium, w skrcie W3C. Dostrzegajc konieczno dostarczenia metody definiowania
XML-a, konsorcjum to opracowao jzyk o nazwie XML
Schema Language, ktry sta si standardem definiowania
poprawnych dokumentw XML. Jzyk ten, sam oparty
na XML-u, to jzyk zarwno skomplikowany, jak i bardzo
funkcjonalny.
Schemat dokumentu XML jest jego planem; samo sowo
schemat wywodzi si zjzyka greckiego ioznacza wanie
ksztat lub plan. Niekiedy schematy dokumentw XML
okrelane s mianem ich gramatyki.

XML Data Reduced Schema firmy Microsoft


Konsorcjum W3C zzasady dziaa do wolno, wobec koniecznoci zbierania materiaw iopinii od programistw zcaego
wiata, dyskutowania pojawiajcych si problemw iwypracowywania rekomendacji (ktre znowu musz by szeroko
dyskutowane). Pod koniec lat 90. ubiegego wieku Microsoft
przygotowywa si do wypuszczenia serii produktw wykorzystujcych XML iwzwizku ztym potrzebowa narzdzia
do definiowania schematw. Poniewa standard W3C nie by
jeszcze gotowy, Microsoft opracowa wasny standard wtym
wzgldzie, niestety jak si ostatecznie okazao cakowicie odmienny od W3C Schema. Microsoft (sam wchodzcy
w skad W3C) zgodzi si wic cakowicie zarzuci wasny
standard po ukazaniu si W3C Schema, itak si te faktycznie
stao. Poniewa jednak w zarzucony standard by dostpny
publicznie, mona natkn si na schematy definiowane na
jego podstawie; wtakim przypadku warto rozway przepisanie schematu do postaci zgodnej zW3C Schema, bowiem
ewentualne przysze wsparcie dla standardu Microsoftu stoi
pod znakiem zapytania.

20

Schemat schematw
No dobrze, ale sama koncepcja schematu XML wyraona zostaa przez
W3C wpostaci dokumentu XML, co przypomina bdne koo wrodzaju: Co byo pierwsze: kura czy jajko?. Jak bowiem zdefiniowa schemat dokumentu, ktrego treci jest wanie definicja schematu?
Odpowied kryje si pod postaci gwnego (master) dokumentu nazywanego schematem schematw, opracowanego przez W3C istanowicego punkt wyjcia do definiowania jakichkolwiek schematw.
Definiujc wic schemat wodrnieniu od zwykego dokumentu XML moemy wykorzystywa jedynie znaczniki zdefiniowane
wschemacie schematw

Co jest definiowane wramach schematu?


Mimo i wielu pocztkujcych twrcw skonnych jest traktowa poszczeglne dokumenty XML jako niezalene caoci,
to czsto zachodzi potrzeba stworzenia szeregu dokumentw rnych, co prawda, ale opartych na tej samej strukturze.
Koronnym przykadem takiej sytuacji jest tworzenie witryny
WWW, ktrej poszczeglne strony przechowuj dane wpostaci XML wielce prawdopodobnym jest, e na kadej ze
stron dane te podporzdkowane s pewnemu wsplnemu
schematowi.

Dokadniej rzecz biorc, wdefinicji schematu okrelone s nastpujce aspekty struktury dokumentu:

nazwa elementu nadrzdnego (root) isposb rnicowa

nia wielkoci liter wtej nazwie,

nazwy isposoby rnicowania wielkoci liter dla elementw zagniedonych bezporednio welemencie root,

nazwy isposoby rnicowania wielkoci liter dla elementw zagniedonych na niszych poziomach,

okrelenie, ktre elementy mog zawiera dane iwkt-

okrelenie, ktre elementy musz wystpi obowizkowo

wdokumencie, ktre s opcjonalne iktre mog wystpowa wielokrotnie wdokumencie,

okrelenie, ktre elemen ty mog posiada atrybuty, wraz


z blisz informacj o tyche atrybutach: rodzaju, obowizkowoci lub opcjonalnoci wystpienia, rodzaju reprezentowanej informacji,
kolejno, wjakiej poszczeglne elementy powinny pojawia si wdokumencie.

rych elementach mona zagnieda inne elementy,

dla elementw, ktre mog zawiera dane dozwolony


typ tych danych (na przykad tekst lub liczba),

Tworzenie schematw
Poniewa definicja schematu jest niczym innym jak dokumentem XML, mona j tworzy za pomoc tych samych
narzdzi, ktre su do tworzenia regularnych dokumentw XML. Jeeli jaka aplikacja posiada funkcj eksportu danych wformacie XML do wykorzystania winnych
aplikacjach prawdopodobnie udostpnia te funkcj
eksportu schematu dla tyche danych. Wiele zaawansowanych edytorw XML, jak XMLSpy, oferuje moliwo
automatycznego generowania definicji schematu na podstawie przykadowego pliku; istniej ponadto dedykowane
narzdzia do tworzenia schematw.

Publikowanie schematw
Niektre schematy przeznaczone s jedynie dla wskich,
specyficznych potrzeb, niektre jednak s na tyle uniwersalne, e prawdopodobne jest, i stan si podstaw masowego tworzenia dokumentw XML, i z tego wzgldu
warto je uczyni publicznie dostpnymi. Wiele popularnych
technologii, wtym RSS, miao wanie takie pocztki.

Co najpierw?
Logicznie rzecz biorc, wydaje si oczywiste, e nie sposb
stworzy dokumentu XML bez podstawowej wiedzy ojego
strukturze; wychodzi wic na to, e najpierw trzeba zdefiniowa schemat dokumentu. Wpraktyce jednak kwestia
ta rozstrzygana jest nieco mniej rygorystycznie: autorzy,
majc jedynie zarys koncepcji struktury, tworz na jego
podstawie zacztek przykadowego dokumentu, adopiero
potem przystpuj do regularnego definiowania schematu,
weryfikujc wten sposb uprzednio przyjte zaoenia.

Rozdzia 3. Definiowanie struktury dokumentw XML za pomoc schematw

Co jest definiowane wramach schematu? (kontynuacja)

Wykorzystywanie istniejcych schematw


Wiele organizacji ikorporacji opublikowao mnstwo standaryzowanych schematw XML dla swych gazi przemysu, warto wic poszuka gotowych rozwiza przed
podjciem decyzji o samodzielnym definiowaniu takiego
czy innego schematu. Mona w tym celu uy popularnych wyszukiwarek bd skontaktowa si bezporednio
zprzedstawicielem odpowiedniej firmy.

21

Przestrzenie nazw schematw

chemat jest dokumentem XML, ktrego struktur


okrela schemat schematw narzucajcy predefiniowany zestaw elementw. Aby jednak uatwi programistom rozszerzanie koncepcji schematu, owe predefiniowane elementy zanurzone zostay w swej wasnej
przestrzeni nazw, zatem musz by specyfikowane z wykorzystywaniem (konsekwentnym) prefiksu identyfikujcego t przestrze. Mimo i moe to wydawa si wielce
uciliwe, jest konieczne do tego, by standard XML by
tak elastyczny, jak to tylko jest moliwe. Wiele zaawansowanych edytorw XML uwalnia zreszt uytkownikw
(w duym stopniu) od tej uciliwoci, m.in. przez automatyczne dodawanie znacznikw zamykajcych opatrzonych waciwymi prefiksami.
Podobnie jak przestrzenie nazw w oglnoci, tak i przestrze nazw schematu definiowana jest w elemencie
nadrzdnym (root) dokumentu. W definicji tej koniecz-

ne jest odwoanie do oryginalnej definicji schematu


schematw znajdujcej si pod adresem http://www.
w3.org/2001/XMLSchema, przykadowy element nadrzdny mgby wic rozpoczyna si nastpujcym
znacznikiem:
<xs:schema xmlns:xs="http://www.w3.org/2001/
XMLSchema">

Zwrmy uwag na znany ju atrybut xmlns oraz fraz


:schema po definicji przedrostka, ktra oznacza, e przestrze nazw dotyczy wanie schematu; zdarza si, e pocztkujcy programici zapominaj o tych szczegach.
Zgodnie z wymogami schematu schematw nazwy elementw zapisywane s z uyciem mieszanej wielkoci
liter, a dokadniej nazwa rozpoczyna si ma liter, za
pocztek kadego jej sowa skadowego sygnalizowany
jest wielk liter. Dotyczy to zarwno nazw samych elementw, jak i nazw i wartoci atrybutw.

Wykorzystywanie przestrzeni nazw


1 Otwrz now stron w edytorze XML.

W edytorze XMLSpy kliknij w tym celu


przycisk New Document i wybierz
z wywietlonej listy pozycj XML
Document.

2 Dodaj prolog XML.


3 Dodaj element root schematu.
4 Utwrz odwoanie do przestrzeni nazw
identyfikowanej przez prefiks xs.
5 Dodaj znacznik zamykajcy element root.

22

Informacja o poprawnoci

(albo niepoprawnoci) dokumentu


pojawi si w obszarze walidacji.

7 Kliknij przycisk Check Validity w celu


sprawdzenia zgodnoci dokumentu ze
schematem.

Informacja o poprawnoci (albo

niepoprawnoci) dokumentu pojawi si


w obszarze walidacji.

8 Zapisz dokument w pliku z rozszerzeniem .xsd.

Rozdzia 3. Definiowanie struktury dokumentw XML za pomoc schematw

6 Kliknij przycisk Check Well-Formedness,


by sprawdzi poprawno skadniow
dokumentu.

Wskazwka
Technicznie rzecz biorc, prefiks przestrzeni nazw schematu moe mie dowoln posta, okrelon przez
atrybut xmlns, na przykad:
<myschema:schema xmlns:myschema ="http://www.w3.org/2001/XMLSchema">

Gdy jednak wemie si pod uwag fakt, e prefiks ten bdzie wykorzystywany w treci dokumentu do intensywnie, staje si oczywiste, i powinien on skada si z raczej niewielkiej liczby liter. W niniejszej ksice
konsekwentnie uywamy przedrostka xs, ktry sta si ju powszechnie przyjtym standardem w tej roli.
Konsorcjum World Wide Web realizuje swj serwis internetowy na bazie serwerw uniksowych. Jak wiadomo, UNIX, w odrnieniu od Windows, jest systemem wraliwym na wielko liter w nazwach plikw. Dla
przecitnego uytkownika Internetu fakt ten nie ma znaczenia o tyle, e pliki zawierajce dane powizane ze
stronami WWW opatrywane s zazwyczaj nazwami skadajcymi si wycznie z maych liter. Konsorcjum
W3C wyamuje si jednak z tej konwencji, stosujc rnicowanie wielkoci liter a skoro tak, to wszelkie
odwoania do nazw plikw musz by zgodne z faktycznymi nazwami tyche plikw take co do wielkoci liter,
w przeciwnym razie przeprowadzenie walidacji dokumentu opisujcego schemat okae si niemoliwe.

23

Elementy zoone

dokumencie XML mog wystpowa dwa typy


elementw. Elementy proste to takie, ktre zawieraj jedynie dane ipozbawione s atrybutw.
Elementy nie posiadajce tej wasnoci, wszczeglnoci
zagniedajce w sobie inne elementy i (lub) wykorzystujce atrybuty, to elementy zoone wtypowym dokumencie jest ich wicej ni elementw prostych.
W definicji schematu opis struktury elementu rozpoczyna
si od znacznika xs:element, wktrym specyfikuje si
nazw odnonego elementu. Opis struktury elementu zoonego jest natomiast okrelony (wdefinicji schematu) za
pomoc elementu xs:complexType. Jeeli docelowy element zagnieda bdzie wsobie inne elementy (co jest
prawd wprzypadku wszystkich niemal elementw root),
fakt ten odzwierciedla si wdefinicji schematu za pomoc elementu xs:sequence. Kady zzagniedonych elementw (docelowych) opisywany jest zkolei (wdefinicji
schematu) przez osobny element xs:element, zagniedony wewntrz elementu xs:sequence; opis ten sygnalizuje jednak tylko fakt zagniedania elementu potomnego, bez opisywania tego. Oto przykadowa definicja
elementu kolekcjaFilmow, zagniedajcego w sobie
element (lub sekwencj elementw) film:

<xs:element name="kolekcjaFilmow">
<xs:complexType>
<xs:sequence>
<xs:element name="film" />
</xs:sequence>
</xs:complexType>
</xs:element>

Alternatyw dla deklaracji <xs:sequence> jest deklaracja <xs:choice>, dajca moliwo wyboru uytego
elementu:
<xs:element name="kolekcjaFilmow">
<xs:complexType>
<xs:choice>
<xs:element name="film" />
<xs:element name="zapowiedz" />
</xs:choice>
</xs:complexType>
</xs:element>

Dodawanie elementw zoonych


1 Otwrz dokument schematu XML.
2 Dodaj znacznik otwierajcy <xs:element>.
3 Przypisz nazw do atrybutu name
elementu root.

4 Dodaj znacznik otwierajcy


<xs:complexType>.
5 Dodaj znacznik otwierajcy
<xs:sequence>.

24

8 Przypisz temu atrybutowi nazw elementu


potomnego.
9 Uczy znacznik <xs:element>
samozamykajcym.

7 Dodaj atrybut name elementu.

12

10

8
11

10 Dodaj znacznik zamykajcy element


<xs:sequence>.
11 Dodaj znacznik zamykajcy element
<xs:complexType>.
12 Dodaj znacznik zamykajcy element
<xs:element>.

13 Kliknij przycisk Check Well-Formedness,


by sprawdzi poprawno skadniow
dokumentu.

Informacja opoprawnoci (albo


niepoprawnoci) dokumentu pojawi si
wobszarze walidacji.

15

14 Kliknij przycisk Check Validity wcelu


sprawdzenia zgodnoci dokumentu ze
schematem.

14
13

Informacja opoprawnoci (albo

niepoprawnoci) dokumentu pojawi si


wobszarze walidacji.

Rozdzia 3. Definiowanie struktury dokumentw XML za pomoc schematw

6 Dodaj znacznik otwierajcy <xs:element>.

15 Zapisz dokument wpliku zrozszerzeniem .xsd.

Uwaga: Dokument powinien zosta zapisany


wpliku zrozszerzeniem .xsd, aby mg by
bezbdnie rozpoznawany jako schemat XML.

Zastosuj to
W ramach elementu <xs:sequence> moliwe jest okrelenie sekwencji nastpstwa elementw pod pojciem nastpstwa rozumiemy okrelone elementy wystpujce wokrelonej kolejnoci, na przykad:
<xs:element name="film">
<xs:complexType name="film">
<xs:sequence>
<xs:element name="tytul" />
<xs:element name="recenzja" />
</xs:sequence>
</xs:complexType>
</xs:element>

25

Typy danych

edn z podstawowych cech aplikacji bazodanowych (i wikszoci jzykw programowania) jest


definiowanie, rnicowanie i kontrolowanie typw danych specyfikujc pole bazy danych, zwizujemy znim zwykle dane odpowiedniego typu: tekst,
liczb cakowit, liczb dziesitn, dat itp. Wpodobny sposb schematy daj moliwo okrelania typw
danych wystpujcych w elementach XML. Dopuszczalnych jest wiele typw elementw, najczciej jednak wykorzystywane s: string dla zwykego tekstu,
int dla liczb cakowitych, decimal dla liczb zawierajcych cz uamkow iboolean dla logiki dwuwartociowej true/false.
Zgodno postaci danych elementu ze specyfikowanym
ich typem jest jednym z warunkw poprawnoci doku-

mentu XML parser zakwestionuje wszystkie przypadki, wktrych brak jest takiej zgodnoci.
Miejscem, wktrym definiuje si typ danych odnonego elementu, jest atrybut type znacznika <xs:element>
otwierajcego definicj tego elementu. Wprzypadku zagniedonej hierarchii elementw (zuyciem znacznikw
xs:choice lub xs:sequence) dotyczy to elementw na
najniszym poziomie zagniedenia. W przypadku elementu zoonego, ktry elementem zoonym jest jedynie zracji posiadania atrybutu, typ danych specyfikujemy za pomoc atrybutu type znacznika xs:extension.
Poniewa dopuszczalne typy danych predefiniowane
s w schemacie schematw, wszelkie wystpienia ich
identyfikatorw musz by poprzedzone prefiksem identyfikujcym przestrze nazw schematu.

Dodawanie typw danych


1 Otwrz dokument schematu XML.
2 Dodaj znacznik otwierajcy <xs:element>.
3 Dodaj znacznik otwierajcy
<xs:complexType>.
4 Dodaj znacznik otwierajcy
<xs:sequence> lub <xs:choice>.
5 Dodaj jeden lub kilka znacznikw
otwierajcych <xs:element>.

3
5

6 Dodaj do kadego ztych znacznikw atrybut


type.
7 Przypisz kademu ztych atrybutw stosown
warto.
8 Zamknij wszystkie elementy otwarte
wpunkcie 5.

8
7

26

Informacja opoprawnoci (albo

niepoprawnoci) dokumentu pojawi si


wobszarze walidacji.

10 Kliknij przycisk Check Validity wcelu


sprawdzenia zgodnoci dokumentu ze
schematem.

Informacja opoprawnoci (albo

niepoprawnoci) dokumentu pojawi si


wobszarze walidacji.

11

10

11 Kliknij przycisk Save. Dokument zostanie


zapisany.

Rozdzia 3. Definiowanie struktury dokumentw XML za pomoc schematw

9 Kliknij przycisk Check Well-Formedness,


by sprawdzi poprawno skadniow
dokumentu.

Wskazwka
Naley starannie upewni si, e istotnie wybrano waciwy typ danych dla elementu. Jednym znajczstszych
bdw jest kwalifikowanie jako typy numeryczne danych takich jak numer telefonu, kod pocztowy, numer NIP
itp. Owszem, dane te zawieraj cyfry, lecz cyfrom tym towarzysz dodatkowe znaki wrodzaju nawiasw, mylnikw itp., nieakceptowane wpolu numerycznym. Naley przyj zasad, i typy numeryczne rezerwujemy
wycznie dla danych podlegajcych obliczeniom matematycznym, takich jak cena czy ilo. Schemat schematw definiuje rozmaite odmiany typw numerycznych, umoliwiajcych reprezentowanie liczb cakowitych
idziesitnych, wraz zograniczeniem zakresu lub dugoci czci uamkowej (liczby cyfr dziesitnych).
W zwizku z powyszym naley regularnie przeprowadza walidacj dokumentw definiujcych schematy.
Wprzeciwiestwie do zwykych dokumentw XML, ktre co prawda mog, lecz wcale nie musz odwoywa si do schematw, kada definicja schematu powouje si zkoniecznoci na schemat schematw ijako
taka nieuchronnie podlega walidacji.
Wiele edytorw XML, m.in. Altova XMLSpy, oferuje wbudowane walidatory, ktre znaczco upraszczaj
ten proces.

27

Atrybuty

iele elementw posiada atrybuty, ktrych rol


jest dokadniejszy opis zawartoci. W schemacie atrybuty definiowane s wramach definicji elementu zoonego. Jeli w docelowy element
posiada jedynie dane, fakt ten odzwierciedlony zostaje przez deklaracj xs:simpleContent; element zagniedajcy inne elementy deklarowany jest jako
xs:complexContent. W obydwu przypadkach typ
atrybutu odnonego elementu deklarowany jest przez
atrybut base znacznika xs:extension, najczciej
jako xs:string (dla tekstw) lub xs:int (dla liczb cakowitych). Nazwa atrybutu definiowana jest (w schemacie) przez atrybut name elementu xs:attribute
zagniedonego wewntrz elementu xs:extension.
W elemencie xs:attribute mona take okreli, za
pomoc atrybutu use, sposb traktowania atrybutu:
required (obowizkowy), optional (nieobowizkowy) albo prohibited (niedozwolony).

Opisane zagniedanie definicji moe wydawa si do


przytaczajce, lecz staje si coraz bardziej zrozumiae
wmiar nabywania dowiadczenia wpracy ze schematami.
Czytajc opisan wyej definicj, mona wnaturalny sposb
wywnioskowa, e mamy do czynienia zelementem zoonym (complexType), oprostej zawartoci (simpleContent),
atyp jego danych rozszerzany jest (extension) przez atrybut owartoci okrelonego typu. Modsze od XML-a jzyki
suce do definiowania danych nie maj ju co prawda tak
rozgadanego charakteru, lecz jednoczenie brak im elastycznoci waciwej schematom XML.
Uycie elementu xs:extension jest konieczne, poniewa definicja elementw prostych (xs:simpleType)
nie pozwala na definiowanie typw danych. Istot
xs:extension jest rozszerzenie (extension) typu danych
na atrybut elementu, nie na sam element. To notabene jedna ztakich subtelnoci, czynicych prawdziwe zrozumienie schematw XML niezwykle trudnym.

Dodawanie atrybutw
1 Otwrz dokument schematu XML.
2 Dodaj znacznik otwierajcy <xs:element>.
3 Nadaj elementowi nazw, przypisujc j
do atrybutu name.
4 Dodaj znacznik otwierajcy
<xs:complexType>.

3
2

5 Dodaj znacznik otwierajcy


<xs:simpleContent>.
6 Dodaj znacznik otwierajcy
<xs:extension>.
7 Przypisz atrybutowi base ww. znacznika
odpowiedni typ danych.

6
7

28

9 Okrel nazw atrybutu docelowego.


10 Okrel obowizkowy charakter atrybutu
docelowego.
11 Uczy znacznik <xs:attribute>
samozamykajcym.
12 Zamknij element <xs:extension>.

13 Zamknij element <xs:simpleContent>.


14 Zamknij element <xs:complexType>.
15 Zamknij element <xs:element>.

15

13

10
11

12

14

16 Kliknij przycisk Check Well-Formedness,


by sprawdzi poprawno skadniow
dokumentu.

Informacja opoprawnoci (albo


niepoprawnoci) dokumentu pojawi si
wobszarze walidacji.

18

17
16

17 Kliknij przycisk Check Validity wcelu


sprawdzenia zgodnoci dokumentu ze
schematem.

Informacja opoprawnoci (albo

niepoprawnoci) dokumentu pojawi si


wobszarze walidacji.

Rozdzia 3. Definiowanie struktury dokumentw XML za pomoc schematw

8 Dodaj znacznik otwierajcy


<xs:attribute>.

18 Kliknij przycisk Save.

Dokument zostanie zapisany.

Zastosuj to
Moliwe jest nadanie globalnego charakteru definicjom atrybutw, na pocztku definicji schematu, iodwoywanie si do tyche definicji wcaym dokumencie. Robi si to za pomoc znacznika xs:attributeGroup:
<xs:attributeGroup name="fileattrs">
<xs:attribute name="path" type="xs:string" />
</xs:attributeGroup>
<xs:element name="filename">
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attributeGroup ref="fileattrs" />
</xs:extension>
</xs:simpleContent>
</xs:element>

29

Elementy proste

typowym dokumencie XML mona znale


przynajmniej kilka elementw prostych czyli takich, ktre nie zagniedaj wsobie innych
elementw inie zawieraj atrybutw, posiadajc co najwyej dane. Wschemacie element prosty deklarowany jest
za pomoc samozamykajcego znacznika xs:element:
<xs:element name="autorRecenzji"
type="xs:string" />

Jedynym wymaganym atrybutem tego znacznika jest


name, okrelajcy nazw elementu; niemal zawsze stosuje
si take atrybut type, ten bowiem okrela typ danych
posiadanych przez odnony element. Ponadto za pomoc

atrybutw minOccurs oraz maxOccurs mona okreli


dozwolon, odpowiednio: minimaln imaksymaln liczb wystpie elementu.
Z wyjtkiem przypadku, gdy elementy deklarowane s
wramach sekwencji xs:sequence, kolejno ich wystpowania wdokumencie jest dowolna, niezalena od kolejnoci ich deklarowania. Niektrzy programici zwykli
deklarowa (w schemacie) najpierw elementy zoone,
potem elementy proste, inni z kolei deklaruj elementy
w kolejnoci, jakiej oczekiwaliby w docelowym dokumencie. Wszystko to jest kwesti gustu, nie rodzc adnych konsekwencji pod adresem dokumentu docelowego.

Dodawanie elementw prostych


1 Otwrz dokument schematu XML.
2 Dodaj element zagniedony bezporednio
w<xs:schema>.

3 Przypisz atrybutowi name nazw


definiowanego elementu.

30

5 Kliknij przycisk Check Well-Formedness,


by sprawdzi poprawno skadniow
dokumentu.

Informacja opoprawnoci (albo


niepoprawnoci) dokumentu pojawi si
wobszarze walidacji.

6 Kliknij przycisk Check Validity wcelu


sprawdzenia zgodnoci dokumentu ze
schematem.

Informacja opoprawnoci (albo

niepoprawnoci) dokumentu pojawi si


wobszarze walidacji.

7 Kliknij przycisk Save.

Dokument zostanie zapisany.

Rozdzia 3. Definiowanie struktury dokumentw XML za pomoc schematw

4 Dodaj atrybut type iprzypisz mu


odpowiedni warto.

Wskazwka
Dodatkowe wymogi pod adresem deklarowanego elementu mona okreli za pomoc tzw. faset (ang. facets).
Schemat schematw oferuje osiem takich faset, spord ktrych najczciej uywane s te ograniczajce dugoci acuchw, definiujce zbiory wartoci domylnych iograniczajce zakres danych liczbowych. Wszystkie
one definiowane s pod postaci elementu xs:restrictions.
W szczeglnoci xs:minLength i xs:MaxLength mog by uyte do okrelenia minimalnej imaksymalnej
dugoci acucha, a za pomoc xs:enumeration specyfikuje si zestaw moliwych wartoci do wyboru.
Wreszcie, dopuszczalny zakres wartoci liczbowych okreli mona za pomoc faset xs:minInclusive,
xs:maxInclusive, xs:minExclusive ixs:maxExclusive.
Oto przykad uycia faset:
<xs:element name = "password">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:minLength value="8"

/>

<xs:maxLength value="16" />


</xs:restriction>
</xs:simpleType>
</xs:element>

31

Elementy mieszane

lementy zoone to elementy zagniedajce wsobie inne ele menty inie posiadajce danych. Jedno
nie wyklucza jednak drugiego: elementy zawierajce zarwno dane, jak i elementy potomne, nosz nazw
elementw mieszanych.
Rozpatrzmy przykadow recenzj filmu: cho moe
by ona zwykym tekstem, to rwnie dobrze moe mie
struktur bardziej skomplikowan, na przykad w celu
uwidocznienia cytowanego tytuu:

W powyszym przykadzie element recenzja zagnieda wsobie element potomny para, ktry zkolei zagnieda wsobie zarwno dwa elementy potomne, jak idane
wpostaci otartego tekstu. Element para powinien zatem
zosta zdefiniowany wschemacie jako element mieszany.
Definicja elementu mieszanego jest w istocie definicj
elementu zoonego, uywajc atrybutu mixed:
<xs:element name="para">
<xs:complexType mixed="true">

<recenzja>

<xs:choice>

<para>

<xs:element name="title" />

<tytul>Rozmowy kontrolowane</tytul>
to kontynuacja losw Ryszarda Ochdzkiego
znanego zkomedii

</xs:choice>
</xs:complexType>
</xs:element>

<tytul>Mi</tytul>.

W definicji takiej deklarowany jest zarwno wybr


(choice) innych elementw, jak i typ danych posiadanych przez element.

</para>
</recenzja>

Dodawanie elementw zoonych


1 Otwrz dokument schematu XML.
2 Dodaj znacznik otwierajcy <xs:element>.
3 Okrel nazw elementu.

4 Dodaj znacznik otwierajcy


<xs:complexType>.
5 Dodaj atrybut mixed="true".

32

7 Dodaj dwa lub wicej znacznikw


<xs:element> reprezentujcych elementy
potomne.
8 Zamknij element <xs:choice>.
9 Zamknij element <xs:complexType>.
10 Zamknij element <xs:element>.
7
6
10

11 Kliknij przycisk Check Well-Formedness,


by sprawdzi poprawno skadniow
dokumentu.

Informacja opoprawnoci (albo


niepoprawnoci) dokumentu pojawi si
wobszarze walidacji.
12 Kliknij przycisk Check Validity wcelu
sprawdzenia zgodnoci dokumentu ze
schematem.

13

12
11

Informacja opoprawnoci (albo

niepoprawnoci) dokumentu pojawi si


wobszarze walidacji.

Rozdzia 3. Definiowanie struktury dokumentw XML za pomoc schematw

6 Dodaj znacznik otwierajcy <xs:choice>.

13 Kliknij przycisk Save.

Dokument zostanie zapisany.

Wskazwka
Oprcz xs:choice dostpne s jeszcze dwie formy specyfikacji zagniedanych elementw: xs:sequence
ixs:all. Jak wiadomo, xs:choice specyfikuje list wzajemnie wykluczajcych si elementw, zktrych wystpi musi dokadnie jeden; xs:sequence specyfikuje list elementw, ktre wystpi musz wcile okrelonej kolejnoci; xs:all specyfikuje elementy, zktrych kady wystpi musi dokadnie raz, jednak kolejno
wystpienia poszczeglnych elementw jest dowolna. Jeli wykorzystywane jest xs:all, musi pojawi si na
pocztku dokumentu schematu inajczciej pojawia si wdefinicji elementu root.
Kady z trzech wymienionych selektorw moe, cho nie musi pojawi si w definicji elementu zoonego
(ifaktycznie czsto si pojawia), wszczeglnoci elementu root. Jedyn cech, ktra odrnia element mieszany od elementu zoonego, jest obecno atrybutu mixed wznaczniku xs:complexType. Wybr midzy
uyciem elementu zoonego auyciem elementu mieszanego jest zawsze kwesti konkretnego zastosowania
iosobistego upodobania programisty.

33

Ograniczenie wystpowania elementw

ymienione wczeniej selektory stwarzaj do


du elastyczno w zakresie uywania elementw potomnych, czsto jednak konieczne
jest okrelenie wymaga jeszcze bardziej rygorystycznych. Przykadowo, lista zawodnikw meczu piki nonej
skada si musi zdokadnie 11 elementw.
Schematy XML daj moliwo okrelenia zarwno
minimalnej, jak imaksymalnej liczby wystpie danego
elementu; w opisanym przypadku obydwie te wartoci,
specyfikowane przez atrybuty minOccurs i maxOccurs
znacznika xs:element, musz mie warto 11.
Przez przypisanie atrybutowi minOccurs wartoci 0
sprawiamy, e odnony element staje si opcjonalny,

czyli nie musi w ogle wystpowa. Zdjcie grnego


ograniczenia na liczb wystpowania elementu odbywa
si przez przypisanie atrybutowi maxOccurs wartoci
unbounded. Nadanie obydwu atrybutom tej samej wartoci oznacza danie wystpienia elementw w cile
okrelonej liczbie 11 w przytoczonym przykadzie
druyny pikarzy.
Domyln wartoci kadego z atrybutw minOccurs
imaxOccurs jest 1 gdy atrybuty te nie zostan jawnie
okrelone, odnony element wystpi musi dokadnie jeden raz. Poniewa znatury wymaganie takie narzucone
jest na element root, wspomniane atrybuty nie mog wystpi wjego definicji.

Definiowanie dopuszczalnej liczby wystpie elementw


1 Otwrz dokument schematu XML.
2 Dodaj nowy (lub wykorzystaj istniejcy)
znacznik otwierajcy <xs:element>.
2

3 Dodaj atrybut minOccurs.


4 Przypisz atrybutowi warto 0 oznaczajc, e
uycie elementu jest opcjonalne.
4

34

6 Przypisz atrybutowi warto "unbounded"


lub konkretn liczb.
6

7 Kliknij przycisk Check Well-Formedness,


by sprawdzi poprawno skadniow
dokumentu.

Informacja opoprawnoci
(albo niepoprawnoci) dokumentu
pojawi si wobszarze walidacji.

8
7

8 Kliknij przycisk Check Validity wcelu


sprawdzenia zgodnoci dokumentu ze
schematem.

Informacja opoprawnoci

(albo niepoprawnoci) dokumentu


pojawi si wobszarze walidacji.

Rozdzia 3. Definiowanie struktury dokumentw XML za pomoc schematw

5 Dodaj atrybut maxOccurs.

9 Zapisz dokument wpliku zrozszerzeniem .xsd.

Wskazwka
Staranne zaplanowanie jest kluczem do stworzenia waciwego schematu. Dokumenty XML wraliwe s na
wielko liter; chocia plik schematu posiada specyficzne rozszerzenie, jest dokumentem XML iwszelkie uyte wnim nazwy elementw, atrybutw itp. musz by tosame take co do wielkoci liter zodpowiednimi
nazwami wdokumencie docelowym. Ztego wzgldu niezwykle wan rzecz jest opracowanie spjnej metody rnicowania wielkoci liter (kapitalizacji) ikonsekwentne jej stosowanie zarwno wschemacie, jak
idokumentach na tym schemacie opartych. Alternatyw dla rnicowania wielkoci liter widentyfikatorach
wielosowowych jest uywanie mylnikw i znakw podkrelenia jeli si na to decydujemy, take to
powinnimy robi wsposb spjny.
Naley ponadto zwraca szczegln uwag na wartoci przypisywane atrybutom minOccurs i maxOccurs,
rozwaajc przypadki, kiedy to dopuszczalne jest wystpienie dokumentu ojeden raz wicej lub ojeden raz
mniej od typowej wartoci.
Co do rygoryzmu kontroli wynikajcej ze schematu: zbyt restrykcyjne schematy okazuj si na tyle krpujce
(dla twrcw docelowych dokumentw), e wpraktyce okaza si mog nieuyteczne; zdrugiej jednak strony
schemat powinien by na tyle restrykcyjny, by dawa jak najlepsz gwarancj kontroli poprawnoci danych.

35

Kojarzenie dokumentu XML ze schematem

by walidator mg przeprowadzi kontrol poprawnoci dokumentu wzgldem pewnego schematu, musi uzyska informacj olokalizacji tego
schematu. Z pojedynczym schematem moe by skojarzonych wiele dokumentw.
Informacji o lokalizacji schematu dostarcza atrybut
noNamespaceSchemaLocation w znaczniku otwierajcym element root. Bezporednie uycie tego atrybutu
jest jednak niedopuszczalne, bowiem wywodzi si on
z wasnej przestrzeni nazw, a konkretnie z przestrzeni
XMLSchemaInstance. Aby zatem poprawnie poczy
dokument zodpowiednim schematem, atrybut w naley

poprzedzi prefiksem identyfikujcym wspomnian przestrze zwykle uywa si wtym celu przedrostka xsi.
Sama cieka wskazujca pooenie schematu moe by
absolutn lub relatywn wzgldem pooenia samego
dokumentu, moe te mie posta URL-a wskazujcego zdalny zasb w sieci (absolutnego lub relatywnego).
Oto przykad poprawnego wskazania schematu, ktrego
plik znajduje si wtym samym katalogu co kontrolowany
dokument:
<myRoot xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xsi:NoNamespaceSchemaLocation="mySchema.xsd" >

Definiowanie skojarzenia dokumentu XML ze schematem


1 Otwrz dowolny dokument XML
bazujcy na schemacie.

2 Dodaj atrybut xmlns do elementu root.


3 Dodaj prefiks xsi.
4

4 Przypisz atrybutowi xmlns:xsi


warto
http://www.w3.org/2001/
XMLSchema-instance.

Uwaga: Zwr uwag na rnicowanie


wielkoci liter.

36

3
2

xsi:noNamespaceSchemaLocation.

Uwaga: Ponownie zwr uwag


na wielko liter.

6 Przypisz powyszemu atrybutowi ciek


do pliku .xsd zawierajcego dokument
schematu.

7 Kliknij przycisk Check Well-Formedness,


by sprawdzi poprawno skadniow
dokumentu.

Informacja opoprawnoci (albo


niepoprawnoci) dokumentu pojawi si
wobszarze walidacji.

8
7

8 Kliknij przycisk Check Validity wcelu


sprawdzenia zgodnoci dokumentu ze
schematem.

Informacja opoprawnoci (albo

niepoprawnoci) dokumentu pojawi si


wobszarze walidacji.

Rozdzia 3. Definiowanie struktury dokumentw XML za pomoc schematw

5 Dodaj atrybut

9 Zapisz dokument wpliku zrozszerzeniem .xsd.

Zastosuj to
Gdy dokument XML odwouje si do elementw pochodzcych z innej przestrzeni adresowej, odwoanie do schematu zwizanego z t przestrzeni powinno odbywa si za porednictwem atrybutu
xsi:schemaLocation, zamiast (lub wuzupenieniu do) atrybutu xsi:noNamespaceSchemaLocation, na
przykad tak:
<kolekcjaFilmow xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceLocation="movieListSchema.xsd"
xsi:SchemaLocation="http://www.someothersite.com/a-schema.xsd" >

37

Walidacja dokumentu

aley zwrci uwag na fakt, e o ile wszystkie


parsery domylnie kontroluj poprawno syntaktyczn (poprawne sformowanie) dokumentu,
niektre tylko przeprowadzaj jego walidacj, nawet jeli
wdokumencie jawnie podano odwoanie do schematu.
Rne parsery prezentuj przy tym nieco odmienne podejcie do samej walidacji. XMLSpy wykonuje t czynno
na danie (wwyniku kliknicia odpowiedniego przycisku), lecz wykonuje j take wczasie zapisywania dokumentu, wywietlajc stosowny komunikat ostrzegawczy
wprzypadku stwierdzenia bdu; mimo i komunikat ten
oferuje moliwo zapisania bdnego dokumentu, wskazane jest natychmiastowe poprawienie sygnalizowanych
bdw zamiast odkadania tej czynnoci na pniej.
Ani Internet Explorer, ani Firefox nie posiadaj wbudowanych walidatorw, te jednak dostpne s powszechnie

pod postaci rozmaitych rozszerze. Inne parsery, jak te


wbudowane waplikacje MS Office, generalnie pozwalaj
na prac z dowolnymi dokumentami XML, proponujc
pniej przeprowadzenie ich walidacji.
Mimo i parsery zwykle s odporne na bdy walidacji,
niepoprawne dokumenty mog okaza si kopotliwe
w przetwarzaniu, przykadowo ich transformacja z uyciem XSLT moe si zaamywa lub dawa nieoczekiwane wyniki. Jest wic niezwykle istotne konsekwentne przeprowadzanie walidacji (ipoprawianie napotkanych bdw
na bieco) kadorazowo przed uyciem dokumentu.
Rozmaite bywa take traktowanie samych bdw walidacji przez poszczeglne parsery niektre z nich
ograniczaj si do wywietlania komunikatw diagnostycznych, inne natomiast traktuj bdy jako krytyczne
iodmawiaj dalszego przetwarzania dokumentu.

Walidacja dokumentu

W edytorze XMLSpy
1 Jeli to konieczne, zadeklaruj przestrze nazw
XMLSchema-instance.

2 Jeli to konieczne, uyj atrybutu

xsi:noNamespaceSchemaLocation wcelu

odwoania si do schematu.
3 Kliknij przycisk Check Well-Formedness, by
sprawdzi poprawno skadniow dokumentu.

Informacja opoprawnoci (albo niepoprawnoci)


dokumentu pojawi si wobszarze walidacji.
4 Kliknij przycisk Check Validity wcelu sprawdzenia
zgodnoci dokumentu ze schematem.

Informacja opoprawnoci (albo

niepoprawnoci) dokumentu pojawi si


wobszarze walidacji.

W Internet Explorerze
1 Pobierz izainstaluj Internet Explorer Tools for
Validating XML and Viewing XSLT Output ze
strony www.microsoft.com/downloads/details.
aspx?FamilyId=D23C1D2C-1571-4D61-BDA8ADF9F6849DF9&displaylang=en.

2 Otwrz dokument XML zawierajcy odwoanie do


schematu.
3 Kliknij dokument prawym przyciskiem myszy.
4 Z menu kontekstowego wybierz opcj
Validate XML.

Wywietlony zostanie komunikat potwierdzajcy


poprawno (albo niepoprawno) dokumentu.

38

1 Uruchom Firefox, wejd na stron


https://addons.mozilla.org/en-US/firefox/
addon/2897 izainstaluj XML Developer Toolbar.
Zaakceptuj komunikat informujcy oponownym
uruchomieniu Firefoksa.

2
3

2 Na pasku XML Developer kliknij opcj Validation.


3 Z wywietlonego menu kontekstowego wybierz
opcj Validation.

Uruchomiony zostanie XSD Validator firmy


DecisionSoft.

4 Kliknij przycisk Przegldaj obok pola XML Schema.


5 Wska plik zawierajcy definicj schematu.
6 Kliknij przycisk Przegldaj obok pola XML instance.
4

Rozdzia 3. Definiowanie struktury dokumentw XML za pomoc schematw

Walidacja dokumentu wFirefoksie

7 Wska plik zawierajcy weryfikowany dokument.


8 Kliknij przycisk Validate.

Po zakoczeniu walidacji kliknij opcj Click here,


aby zobaczy wyniki.

Zastosuj to
Dostpnych jest wiele narzdzi walidacyjnych dla
Internet Explorera i Firefoksa, a take dla innych
przegldarek, jak Safari czy Opera. Wikszo znich
ogranicza jednak sw funkcjonalno do weryfikacji
dokumentu pod ktem zgodnoci z W3C Schema
lub DTD. Walidacja pod ktem zgodnoci z innymi
schematami, jak RELAX NG, oferowana jest jedynie
przez wybrane narzdzia.
SourceForge.net, witryna stworzona wcelu udostpniania oprogramowania open-source, oferuje wiele
walidatorw XML, atake wiele edytorw iparserw,

napisanych w rnych jzykach i przeznaczonych do


wielu rnych celw. Mimo i dostpne jest wtej kolekcji take oprogramowanie komercyjne, wikszo
produktw dostpna jest za darmo. Sama witryna posiada wbudowan wyszukiwark, oferujc zaawansowane funkcje, m.in. system rankingu oceniajcy stopie
zgodnoci wyszukanych pozycji pod ktem kryterium
wyszukiwania. Niektre produkty oferowane przez
SourceForge.net mog by kopotliwe winstalowaniu
ikonfigurowaniu wwczas pomocne moe okaza
si bardzo aktywne forum uytkownikw.

39

Wizualne tworzenie schematu


za pomoc XMLSpy

MLSpy jest wysoce funkcjonaln aplikacj pozwalajc radykalnie zredukowa czas potrzebny na tworzenie dokumentw XML, arkuszy stylw XSL i schematw. Gdy zaaduje si do programu
plik schematu, program automatycznie uruchamia widok
Design View umoliwiajcy budowanie schematu w sposb wizualny, podczas gdy XMLSpy automatycznie tworzy kod tego schematu. Ta i inne funkcje tego rodzaju
to zasadniczy powd, dla ktrego XMLSpy cieszy si takim powodzeniem wrd programistw uywajcych go
wcodziennej pracy.
Widok Design View moe by wywietlany wdwch trybach: Schema Overview iContent Model View. Wpierwszym
z nich podzielony jest na sekcje w grnej poowie
okna widnieje lista wszystkich elementw definiowanych
w schemacie, u dou natomiast widoczne s wszystkie
atrybuty wybranego elementu i zwizane z nim ograni-

czenia. Grupa paneli po prawej stronie ekranu umoliwia


przegldanie szczegw elementw schematu, wraz
zzastosowanymi do tych elementw fasetami.
Design View posiada jeszcze szereg innych opcji upraszczajcych proces tworzenia schematw, midzy innymi
zmian kolejnoci elementw za pomoc operacji przecignij iupu oraz kopiowanie iwklejanie elementw
za pomoc menu kontekstowego, co daje moliwo atwego kopiowania iprzenoszenia elementw midzy rnymi dokumentami schematw.
W trybie Content Model View widoczny jest prosty diagram ukazujcy zalenoci midzy elementami definiowanymi wschemacie, co znacznie uatwia analiz zoonych schematw. Diagram ten umoliwia zarwno atwe
nawigowanie po elementach, jak i wizualne edytowanie
zalenoci midzy nimi.

Wizualne tworzenie schematu za pomoc XMLSpy


1 W edytorze XMLSpy wybierz opcj File/New.
Wywietlone zostanie okno dialogowe Create
New Document.

2 Z listy obsugiwanych typw plikw wybierz


xsd XML Schema.
3 Kliknij przycisk OK.
2

Utworzony zostanie nowy dokument


schematu.
4 Zastp tekst

ENTER_NAME_OF_ROOT_ELEMENT_HERE

wybran przez Ciebie nazw elementu root.


5 Kliknij ikon Content Model View.

40

6 Kliknij ww. okno prawym przyciskiem myszy.

7 Z menu kontekstowego wybierz opcj


Add Child.

Rozdzia 3. Definiowanie struktury dokumentw XML za pomoc schematw

Wywietlone zostanie okno dialogowe


Content Model View.

8 Z kolejnego menu kontekstowego wybierz


opcj Sequence.

Pojawi si kompozytor sekwencji.


9 Kliknij wywietlone okno prawym przyciskiem
myszy.

10

10 Z menu kontekstowego wybierz opcj


Add Child.

11

11 Kliknij opcj Element.

Zostanie utworzony nowy element.

12 Wprowad nazw dla elementu potomnego.


13 Kliknij element prawym przyciskiem myszy.

15
13

14 Wybierz opcj Unbounded.

Widok zostanie zaktualizowany,

wskazujc, e liczba wystpie elementu


jest nieograniczona.

12

15 Kliknij ikon Show Globals.

Wywietlony zostanie widok Schema Design.


14

Wskazwka
Uytkownicy XMLSpy zatwoci spostrzeg, e edytor ten dodaje do schematu elementy xs:annotation
i xs:documentation. Elementy te nie s przetwarzane przez parser wprocesie walidacji, lecz umoliwiaj
umieszczanie opisowych notatek dotyczcych schematu bezporednio wtyme schemacie.
Uycie wspomnianych elementw jest bezpieczniejsze ni umieszczanie komentarzy, te ostatnie bowiem bywaj usuwane ze schematw przez niektre parsery. Elementom takie usuwanie nie grozi, aprzy okazji powstaje mechanizm umoliwiajcy automatyczne generowanie dokumentacji.
Kady niemal element schematu moe posiada element xs:annotation jako element potomny, ten zkolei
moe zagnieda element xs:documentation. Tekst wramach tego elementu jako jego dane powinien wsposb czytelny dla czowieka adekwatnie opisywa odnony element, wraz ztakimi szczegami jak
atrybuty (obowizkowe iopcjonalne), typ danych iinformacj opowtarzalnoci.

cdn.
41

Wizualne tworzenie schematu


za pomoc XMLSpy (cig dalszy)
Widok Schema Overview umoliwia wybr globalnie zdefiniowanych elementw i ich atrybutw z prostej listy.
Program wywietla atrybuty i ograniczenia wybranego
elementu wpomocniczym oknie poniej listy, uatwiajc
definiowanie typw danych, narzucanie ogranicze oraz
nadawanie atrybutom wartoci staych lub domylnych.
Wtabeli widocznej wgrnej sekcji ekranu mona watwy sposb wstawia, docza iusuwa elementy globalne oraz typy zoone. Wybierajc element lub typ, mona
zmienia jego atrybuty woknie pomocniczym.
W trybie Content Model view moliwe jest take edytowanie (w oknie pomocniczym) waciwoci wybranych
elementw; chocia w danej chwili dostpny do takiej
edycji jest tylko pojedynczy element, to jednak bardzo
atwo mona si przemieszcza midzy poszczeglnymi
elementami, jak rwnie przenosi ikopiowa ich waciwoci przy uyciu schowka.

Definiowanie typu zoonego, obarczonego ograniczeniami, jeeli odbywa si bezporednio wkodzie rdowym,
jest o tyle utrudnione, e bardzo atwo mona pomyli
si wdefiniowaniu owych ogranicze. Wizualny edytor
XMLSpy znacznie uatwia to zadanie, przez wizualizacj zastosowanych ogranicze i propozycje dodawania
kolejnych.
Sposb wywietlania schematu jest wysoce konfigurowalny: uytkownik ma moliwo okrelenia, ktre zparametrw bd wywietlane te, ktrych na pewno nie
uyje, mona zatwoci ukry.
Caoci dopeniaj funkcje importowania definicji z innych przestrzeni nazw, globalnego redefiniowania komponentw schematu, generowanie schematw na podstawie DTD lub innych schematw oraz generowanie
relacyjnych baz danych.

Wizualne tworzenie schematu za pomoc XMLSpy (cig dalszy)


16 W wywietlanym dialogu Design View
kliknij ikon Append.
17 Kliknij opcj Element. Zostanie utworzony
nowy element.

19

16

18

18 Wpisz nazw elementu potomnego, ktry


utworzye wpunkcie 12.
19 Kliknij ikon towarzyszc nowemu
elementowi.

Wywietlony zostanie widok Content Model


View.
20 Kliknij prawym przyciskiem myszy wywietlone
okno.

21 24

20

25
22

21 Wybierz opcj Add Child.


22 Wybierz opcj Sequence.

Pojawi si kompozytor sekwencji.

23 Kliknij prawym przyciskiem myszy wywietlone


okno.
24 Wybierz opcj Add Child.
25 Wybierz opcj Element wcelu dodania
nowego elementu.
26 Wprowad nazw dla utworzonego elementu
potomnego.

26

27 Kliknij element prawym przyciskiem myszy.


28 Wybierz opcj Unbounded.

27
28

42

29 W oknie pomocniczym Details entry


kliknij opcj type iwybierz zlisty pozycj
xs:string.

32

31

30 Kliknij prawym przyciskiem myszy okno


kompozytora sekwencji.

30

31 Wybierz opcj Add Child.


33

32 Kliknij opcj Element.

29

Zostanie utworzony nowy element.


33 Wprowad nazw dla utworzonego elementu
potomnego.

34 Kliknij zakadk Text.

Zostanie wywietlony tekstowy widok


schematu.

Rozdzia 3. Definiowanie struktury dokumentw XML za pomoc schematw

Widok zostanie zaktualizowany, wskazujc, e


liczba wystpie elementu jest nieograniczona.

34

Wskazwka
Elementy xs:annotation ixs:documentation, automatycznie dodawane przez XMLSpy, nie tylko uatwiaj posugiwanie si schematami, lecz take wykorzystywane s do generowania szczegowej dokumentacji na
temat tych schematw. Dokumentacja taka zawsze jest przydatna jako taka, jednak szczeglnie wartociowa
okazuje si wprzypadku publikowania schematw do uytku oglnego.
Oferowany przez XMLSpy automatyczny generator dokumentacji, uruchamiany za porednictwem prostego
okna dialogowego, umoliwia szczegowe okrelenie listy elementw (globalnych ilokalnych) oraz ich grup,
typw danych (prostych izoonych) oraz atrybutw, na temat ktrych utworzony zostanie szczegowy opis
wyjaniajcy sposoby uywania ich wtworzonym dokumencie docelowym. Dla kadej pozycji zada mona
wygenerowania diagramu graficznego, podobnego do tego wywietlanego w widoku Content View, a take
doczenia zwizanego zdan pozycj fragmentu kodu rdowego. Dokumentacja moe by generowana zarwno wformacie HTML, jak iwformacie obsugiwanym przez Microsoft Word.

43

You might also like