Professional Documents
Culture Documents
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 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
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
vi
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
viii
ix
Wprowadzenie do schematw
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
Dokadniej rzecz biorc, wdefinicji schematu okrelone s nastpujce aspekty struktury dokumentu:
nazwy isposoby rnicowania wielkoci liter dla elementw zagniedonych bezporednio welemencie root,
nazwy isposoby rnicowania wielkoci liter dla elementw zagniedonych na niszych poziomach,
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.
21
22
Informacja o poprawnoci
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
<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>
24
12
10
8
11
15
14
13
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
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.
3
5
8
7
26
11
10
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
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
6
7
28
15
13
10
11
12
14
18
17
16
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
30
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"
/>
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>
<tytul>Rozmowy kontrolowane</tytul>
to kontynuacja losw Ryszarda Ochdzkiego
znanego zkomedii
</xs:choice>
</xs:complexType>
</xs:element>
<tytul>Mi</tytul>.
</para>
</recenzja>
32
13
12
11
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
34
Informacja opoprawnoci
(albo niepoprawnoci) dokumentu
pojawi si wobszarze walidacji.
8
7
Informacja opoprawnoci
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
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" >
36
3
2
xsi:noNamespaceSchemaLocation.
8
7
5 Dodaj atrybut
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
Walidacja dokumentu
W edytorze XMLSpy
1 Jeli to konieczne, zadeklaruj przestrze nazw
XMLSchema-instance.
xsi:noNamespaceSchemaLocation wcelu
odwoania si do schematu.
3 Kliknij przycisk Check Well-Formedness, by
sprawdzi poprawno skadniow dokumentu.
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.
38
2
3
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,
39
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-
ENTER_NAME_OF_ROOT_ELEMENT_HERE
40
10
11
15
13
12
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
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.
19
16
18
21 24
20
25
22
26
27
28
42
32
31
30
29
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