Cyfroteka.pl

klikaj i czytaj online

Cyfro
Czytomierz
00655 009104 10440491 na godz. na dobę w sumie
XML. Ćwiczenia praktyczne - książka
XML. Ćwiczenia praktyczne - książka
Autor: Liczba stron: 160
Wydawca: Helion Język publikacji: polski
ISBN: 83-7197-549-X Data wydania:
Lektor:
Kategoria: ebooki >> komputery i informatyka >> webmasterstwo >> xml i xslt - programowanie
Porównaj ceny (książka, ebook, audiobook).

Książka jest przeznaczona dla ludzi, którzy zaczynają poznawać język XML lub też dla tych, którym ćwiczenia praktyczne są potrzebne do lepszego zrozumienia zagadnienia. W języku tym można dokładnie opisać strukturę dokumentów, co ułatwia ich odczytywanie i indeksowanie. Niestety, składnia i struktura XML-a nie jest tak prosta jak HTML-a, więc nie każdy będzie chciał go używać - najlepiej określają to słowa: XML jest to język dla niewielu, którzy mogą zrobić bardzo wiele.

Język ten świetnie nadaje się do tworzenia stron o niebanalnym wyglądzie, gdyż dla każdej etykiety można stworzyć swój własny arkusz stylów. Obecnie tworzona jest specyfikacja XML-FO, która umożliwi formatowanie dokumentów w przeglądarce z poziomu XML-a.

Firmy Microsoft oraz Netscape - najwięksi producenci przeglądarek internetowych - już dawno zainteresowały się językiem XML, co gwarantuje jego dalszy rozwój i poszerzanie możliwości jego zastosowań.

Wszystkim ambitnym twórcom stron internetowych autor życzy miłej lektury.

Znajdź podobne książki Ostatnio czytane w tej kategorii

Darmowy fragment publikacji:

IDZ DO IDZ DO PRZYK£ADOWY ROZDZIA£ PRZYK£ADOWY ROZDZIA£ SPIS TRE(cid:140)CI SPIS TRE(cid:140)CI KATALOG KSI¥flEK KATALOG KSI¥flEK KATALOG ONLINE KATALOG ONLINE ZAM(cid:211)W DRUKOWANY KATALOG ZAM(cid:211)W DRUKOWANY KATALOG TW(cid:211)J KOSZYK TW(cid:211)J KOSZYK DODAJ DO KOSZYKA DODAJ DO KOSZYKA CENNIK I INFORMACJE CENNIK I INFORMACJE ZAM(cid:211)W INFORMACJE ZAM(cid:211)W INFORMACJE O NOWO(cid:140)CIACH O NOWO(cid:140)CIACH ZAM(cid:211)W CENNIK ZAM(cid:211)W CENNIK CZYTELNIA CZYTELNIA FRAGMENTY KSI¥flEK ONLINE FRAGMENTY KSI¥flEK ONLINE XML. ˘wiczenia praktyczne Autor: Wojciech Romowicz ISBN: 83-7197-549-X Format: B5, stron: 160 XML jest jŒzykiem znacznikowym i pochodzi z tej samej rodziny jŒzyk(cid:243)w co HTML, jednak¿e nie ma w nim okre(cid:156)lonych na sta‡e znacznik(cid:243)w. Tworzymy je sami podczas definiowania dokumentu. Wszystkie atrybuty r(cid:243)wnie¿ s„ definiowane w ciele dokumentu. Si‡a XML-a tkwi w jego uniwersalno(cid:156)ci i mo¿liwo(cid:156)ci szerokiego zastosowania. Tworzenie gramatyki nowych aplikacji jest spraw„ trudn„ i wymaga od ich tw(cid:243)rc(cid:243)w dobrej znajomo(cid:156)ci tematu, natomiast wykorzystywanie ju¿ gotowych aplikacji jest spraw„ o wiele prostsz„. Przyk‡adem takich rozwi„zaæ s„ jŒzyki WML (Wireless Markup Langu-age -- jŒzyk do obs‡ugi dobrze znanego protoko‡u WAP), VML (Vector Markup Langu-age -- jŒzyk, w kt(cid:243)rym zapisana jest grafika w pakiecie Office firmy Microsoft) czy te¿ MathML (specjalizowany jŒzyk przeznaczony dla matematyk(cid:243)w). W(cid:160) dodatkach znajd„ paæstwo opis MathML-a, jako uk‡on dla moich koleg(cid:243)w po fachu. Na razie przedstawiŒ jedynie rysunek, aby zaostrzy(cid:230) ich apetyt. JŒzyk ten umo¿liwia wprowadzanie symboli matematycznych i wzor(cid:243)w jak zwyk‡ego tekstu. Wydawnictwo Helion ul. Chopina 6 44-100 Gliwice tel. (32)230-98-63 e-mail: helion@helion.pl Rozdział 1. Wprowadzenie .................................................................................................................................. 7 Czym jest XML? ...................................................X...................................................X........... .....7 Historia języka...................................................X...................................................X.......... ........10 Warsztat pracy ...................................................X...................................................X........... .......10 Rozdział 2. Dokument XML................................................................................................................................ 13 Nagłówek dokumentu...................................................X...................................................X.......15 Element główny dokumentu...................................................X................................................16 Elementy potomne...................................................X...................................................X......... ...17 Podsumowanie...................................................X...................................................X............. .....22 Rozdział 3. DTD .......................................................................................................................................................23 Tworzenie wewnętrznych i zewnętrznych DTD ...................................................X.................24 Deklarowanie elementów ...................................................X................................................25 Określanie ilości wystąpień elementu ...................................................X.............................27 Atrybuty ...................................................X...................................................X................. Encje i notacje DTD ...................................................X...................................................X.....33 Uwagi końcowe ...................................................X...................................................X............36 .......30 Rozdział 4. XML Schema ................................................................................................................................... 39 Typy elementów używanych w schematach ...................................................X.......................41 Definiowanie elementów ...................................................X.................................................42 Parametry elementów ...................................................X...................................................X...45 Restrykcje ...................................................X...................................................X............... ......46 Wyliczenia ...................................................X...................................................X............... .........47 Listy ...................................................X...................................................X.................... ..............47 Rozszerzenia typów ...................................................X...................................................X......49 Grupy ...................................................X...................................................X.................... ............50 Podstawianie grup...................................................X...................................................X........ .51 Tworzenie atrybutów ...................................................X...................................................X....52 Przestrzenie nazw ....................................X...................................................X....................... .....55 Zaawansowane techniki używane w schematach...................................................X................59 Klucze w schematach ...................................................X...................................................X...... .60 C:AndrzejPDFXML. Ćwiczenia praktyczne!SPIS_TRESCIj.doc 3 4 XML. Ćwiczenia praktyczne Rozdział 5. XPath — odwoływanie się do węzłów w drzewie XML ............................................ 63 Określanie bezwzględne i względne węzła ...................................................X.........................63 Wybieranie atrybutów ..................................X...................................................X...................... .65 Wybieranie węzła w zależności od kolejności ...................................................X....................65 Funkcje używane w wybieraniu węzłów...................................................X.............................68 Uwagi końcowe ...................................................X...................................................X............ ....72 Rozdział 6. Style — XSL...................................................................................................................................... 73 Budowa pliku z przekształceniami ...................................................X......................................75 Budowanie innych szablonów ...................................................X.............................................79 Inne techniki XSLT ...................................................X...................................................X....... ...87 Importowanie i załączanie innych arkuszy...................................................X..........................95 Dodatkowe funkcje...................................................X...................................................X........ ...96 Rozdział 7. XLink, Xbase i XPointer............................................................................................................. 99 Linki proste...................................................X...................................................X............. ........100 Łącza rozszerzone....................................X...................................................X....................... ...101 Zasoby lokalne...................................................X...................................................X........... .101 Zasoby zdalne ...................................................X...................................................X............ .102 Łuki...................................................X...................................................X..................... Baza łączy ...................................................X...................................................X............... Dołączanie części pliku (XPointer) ...................................................X...............................104 ............103 ....104 Proste wyrażenia punktowe ...................................................X...............................................105 Określenie ścieżki bazowej (XBase) ...................................................X.................................107 Podsumowanie...................................................X...................................................X............. ...108 Rozdział 8. XML Spy ........................................................................................................................................... 109 Rozpoczęcie pracy...................................................X...................................................X........ ..109 Podsumowanie...................................................X...................................................X............. ...116 Dodatek A Predefiniowane typy proste XML Schema.....................................................................117 Dodatek B XSLT — instrukcje..................................................................................................................... 119 Dodatek C MathML.............................................................................................................................................123 Deklarowanie MathML w dokumencie HTML ...................................................X................124 Instrukcje podstawowe ...................................................X...................................................X...124 .......125 ......125 ......125 .....126 ...126 ......127 ...127 mi ...................................................X...................................................X..................... mn ...................................................X...................................................X..................... mo ...................................................X...................................................X..................... mtext ...................................................X...................................................X.................. mspace ...................................................X...................................................X................. ms ...................................................X...................................................X..................... mglyph ...................................................X...................................................X................. Konstrukcja wyrażeń matematycznych w MathML...................................................X..........127 mrow ...................................................X...................................................X................... mfrac ..............................................X...................................................X....................... msqrt oraz mroot ...................................................X...................................................X128 mstyle ...................................................X...................................................X................. ...127 .....128 ....129 4 C:AndrzejPDFXML. Ćwiczenia praktyczne!SPIS_TRESCI.doc Spis treści 5 ....130 merror ...................................................X...................................................X................. mpadded ...................................................X...................................................X................ .130 mphantom ...................................................X...................................................X...............131 ..132 mfenced ...................................................X...................................................X................ menclose ...................................................X...................................................X............... ..132 Indeksy ...................................................X...................................................X.................. .........133 ....133 msub ...................................................X...................................................X................... ....133 msup ...................................................X...................................................X................... ..134 msubsup ...................................................X...................................................X................ ...135 munder ...................................................X...................................................X................. mover ...................................................X...................................................X.................. ....135 munderover ...........................................X...................................................X.....................135 mmultiscripts ...................................................X...................................................X..........136 Macierze i tabele...................................................X...................................................X........ mlabeledtr ...................................................X...................................................X............. .....137 ..139 Wybrane encje ...................................................X...................................................X............ ....141 Edytory MathML...................................................X...................................................X........... .143 Przykład początkowy z rozdziału 1 ...................................................X...................................143 Dodatek D Kody źródłowe.............................................................................................................................. 147 Sąsiedzi...................................................X...................................................X................. ..........147 Ssaki ...................................................X...................................................X.................... ...........151 Igrzyska Olimpijskie ...................................................X...................................................X..... .152 C:AndrzejPDFXML. Ćwiczenia praktyczne!SPIS_TRESCIj.doc 5 Schemat, podobnie jak DTD ma za zadanie opisać postać dokumentu XML-a, czyli elementy oraz ich zawartość, atrybuty. Dlaczego więc stworzono ten drugi mechanizm, skoro DTD robi to samo? Faktycznie DTD jest schematepm dokumentu, ale go dokładnie nie opisuje. Czytając poprzedni rozdział zauważyłeś pewnie, że dane mogą być tylko ro- dzaju tekstowego lub binarnego. Nie ma nigdzie mowy o tym, aby dane mogły być licz- bami czy też datami. Taką możliwość otrzymasz po zastosowaniu XML-a Schema. Innym faktem przemawiającym za schematami (od tej pory schemat kojarz z opisem w XML-u Schema), jest ich składnia. Składnia schematów jest identyczna ze składnią występującą w dokumentach XML-a. Kolejną zaletą schematów jest możliwość tworzenia elemen- tów zgodnie z ich kontekstem (porównaj z uwagami końcowymi na temat DTD). Jedy- nymi konstrukcjami, których nie możesz zdefiniować za pomocą schematu są encje. Twórcy schematów w grupie dyskusyjnej poświęconej XML-owi Schema twierdzą, że te konstrukcje zaśmiecają składnię. Jedynym sposobem utworzenia encji jest przemiesza- nie DTD, w których definiujemy tylko encje ze schematami, gdzie zawarta jest reszta definicji dokumentu. Przykład znajdziesz w tym rozdziaple. Schematy umieszcza się w plikach z rozszerzeniem xsd, którego struktura powinna wy- glądać następująco: :/6732 /2-3.21 $(cid:25) 7.7-/+277.884 ;;; ; 361  #-/+   7.7-/+ Jeżeli korzystasz z nowej rekomendacji (uwaga — nie wszystkie wersje oprogramowania mogą korzystać z tej przestrzeni nazw, na przykład tak zachowuje się XML Spy w wersji 4.0), rozszerzenie może mieć inną postać: :/6732 /2-3.21 $(cid:25) 7.7-/+277.884 ;;; ; 361  #-/+  7.7-/+ 40 XML. Ćwiczenia praktyczne Przestrzeń nazw wskazuje na to, że wszystkie elementy zaczynające się od xsd: będą traktowane jako definicje pochodzące z danego adresu, tutaj z rekomendacji zatwier- dzonej przez organizację World Wide Web Consortium. Jak widzisz, całość definicji schematu spinamy klamrą 7.7-/+    7.7-/+. Teraz wystarczy przypisać plik ze schematem do elementu głównego w dokpumencie XML: 167+47/63 +783#.2/ 277884 ;;; ; 361  #-/+(cid:30)278+2-/ 723+/74+-/#-/+3-+8323/+4/74+. 7. lub 167+47/63 +783#.2/ 277884 ;;; ; 361  #-/+(cid:30)278+2-/ 723+/74+-/#-/+3-+8323/+4/74+. 7. Powyższy przykład przedstawia schemat prosty, to znaczy taki, który nie korzysta lub nie definiuje własnej przestrzeni nazw; wskazuje na to deklaracja xsi:noNameSpaceSchema Location. O przestrzeniach nazw dowiesz się w dalszej części tej książki. Schematy zapi- sywane są w plikach o rozszerzeniu xsd, tutaj widzimy przykład deklaracji pliku Olim- piady.xsd. Rozpoczniemy naukę od elementów dokumentujących schemat, czyli po prostu komenta- rzy do samego opisu. Aby zdefiniować taką notatkę należpy skorzystać z konstrukcji: Listing 4.1. :/6732 /2-3.21 $(cid:25) 7.7-/+277.884 ;;; ; 361  #-/+ ///2836/0+9859+0/. 7.+2238+832 7.+44203 $/27-/+8/78---+4+-4+.  7.+44203 7..3-9/28+832 /02-+.39/283;46/-3;9--.+2/3/.+78+- 347-  7..3-9/28+832  7.+2238+832 Rozpoczynamy znacznikiem 7.+2238+832, wewnątrz którego mogą się znajdować dwa znaczniki. Pierwszy z nich, 7.+44203, powinien zawierać informację na temat aplikacji języka XML, do której należy dany schemat, a drugi — informacje o schemacie. Instruując w ten sposób innych, ułatwiamy im życie, a i nam po pewnym czasie te in- formacje mogą się przydać. Ćwiczenie 4.1. Zadeklaruj początek szablonu dla pliku sąsiedzi.xml (patrz dodatek D). Rozdział 4.  XML Schema 41 Przed przystąpieniem do deklaracji elementów musisz poznać ich typy. W schematach rozróżniamy dwa typy elementów proste i złożone. Typ prosty określa element, którego zawartością jest tylko tekst. Natomiast typ złożony, jak sama nazwa wskazuje, skompo- nowany może być z innych elementów i tekstu. Element prosty w DTD można było opisać tylko tak, by zawierał dane w postaci  $, natomiast schematy pozwalają dokładnie określić zawartość takiego elementu. Mamy tu możliwość nadania zawartości jednego z typów predefiniowanych (zob. dodatek A) lub stworzenie własnego typu prostego. Typy złożone, jak i proste, można nazywać i stosować w dowolnym miejscu schematu, mogą one również pozostać anonimowe, czyli bez nazwy. Typy anonimowe mogą być używane tylko w elemencie, w którym jest jego definicpja. Przykład definicji typu prostego, nazwanego, który bazuje na predefiniowanym stylu 7.78621: Listing 4.2. 7.74/$4/2+/4o/ 7.6/786-832,+7/7.78621 7.4+88/62:+9/3,/8  7.4+88/62:+9/4 - 2   7.6/786-832  7.74/$4/ Typ złożony, anonimowy: Listing 4.3. 7.///282+/.7-42++--96792,392./. 7.-34/$4//.0+7/ 7.7/59/2-/ 7.///282+/4o/+--967     7.///28   7.7/59/2-/  7.-34/$4/  7.///28 42 XML. Ćwiczenia praktyczne W XML-u Schema nie istnieje w zasadzie pojęcie elementu głównego. W zasadzie, to znaczy przy definiowaniu ten element sam się pojawi. Mamy tutaj za to podział na de- klaracje lokalne i globalne elementów. Deklaracja globalna występuje wtedy, gdy opis elementu występuje na zewnątrz innych deklaracji, musi ona być jedynie zamknięta w klamrze 7.7-/+  7.7-/+. Pamiętamy, że wszystkie deklaracje w DTD były globalne. Deklaracja lokalna elementu polega na umieszczeniu jej wewnątrz dekla- racji innego elementu, tzw. rodzica. Lokalne elementy z tą samą nazwą mogą zawierać różną zawartość w zależności od kontekstu, w którym były użyte. Globalne deklaracje natomiast umożliwiają jednokrotne utworzenie elementu powtarzającego się i korzystanie z niego w dowolnym miejscu schematu. Przykład poniższy przedstawia definicje dwu elementów globalnych:igrzyskaOlimpijskie oraz wynik, a także jednego elementu lokalnego: dyscyplina. Listing 4.4. :/6732 /2-3.21 $(cid:25) 7.7-/+277.884 ;;; ; 361  #-/+7 ///2836/0+9859+0/. 7.///282+/167+47/ 7.-34/$4/ 7.7/59/2-/ 7.///282+/.7-42+   7.///28  7.7/59/2-/  7.-34/$4/  7.///28 7.///282+/;284/7.78621  7.7-/+ Po deklaracji elementu musimy natychmiast podać deklarację zawartości elementu, tutaj 7.-34/$4/, wskazującą na typ złożony. Natomiast dla elementów końcowych, takich jak ;2, wystarczy zadeklarować jedynie typ zawartości jako wartość parametru 84/. Kolejnym zadaniem, jakie czeka na nas po utworzeniu zawartości złożonej, jest wskazanie struktury. Mamy do wyboru trzy możliwości: 1. 7.7/59/2-/ — sekwencja elementów znana z DTD, 2. 7.-3-/ — lista wyboru, również poznana przy okazji omawianipa DTD, 3. 7.+ — elementy, które zadeklarowane takim znacznikiem, pmogą występować w dowolnej kolejności w elemencie rodzica. Ćwiczenie 4.2. Na podstawie podanego pliku ze schematem, utwórz poprawnie walidowany dokument XML-a. Wytłuszczonym drukiem zapisane są atrybuty, które mówią nam o ilości wystą- pień elementu w dokumencie. We wszystkich przypadkach wartość ta jest nieograniczona. Rozdział 4.  XML Schema Listing 4.5. 43 :/6732 /2-3.21 $(cid:25) 7.7-/+277.884 ;;; ; 361  #-/+ ///2836/0+9859+0/. 7.///282+/ 7.-34/$4/ 7.7/59/2-/ 7.///282+/1+892/+--96792,392./. 7.-34/$4/ 7.-3-/ 7.///282+/373,2+--96792,392./.84/7.78621  7.///282+/78+.3+--96792,392./. 7.-34/$4/ 7.7/59/2-/ 7.///282+/373,2+--96792,392./.84/7.28/1/6   7.7/59/2-/  7.-34/$4/  7.///28  7.-3-/  7.-34/$4/  7.///28  7.7/59/2-/  7.-34/$4/  7.///28  7.7-/+ Ćwiczenie 4.3. Odpowiedz, dlaczego ten dokument XML-a będzie niewłaściwie walidowany, popraw błędy. Listing 4.6. :/6732 /2-3.21 $(cid:25) 277884 ;;; ; 361  #-/+(cid:25)278+2-/ 723+/74+-/#-/+3-+832 6316+/7#4 +4/7863.+ 7. 1+892/ 373,2//8+ 373,2 78+.3 373,29-3 373,2 373,2 373,2  78+.3  1+892/   Kolejną metodą, jakiej się przyjrzymy z bliska, jest definiowanie elementu globalnego i przypisanie go do wewnętrznej deklaracji. Najpierw musimy taki element zadeklarować, na przykład tak: 7.///282+/;284/7.78621   7.7-/+ Tak zdefiniowany element możemy teraz używać w dowolnym miejscu schematu, do- dając odpowiedni odnośnik (referencję). 44 Listing 4.7. XML. Ćwiczenia praktyczne 7.///282+/o383 7.-34/$4/ 7.7/59/2-/ 7.///286/0;2   7.7/59/2-/  7.-34/$4/  7.///28 7.///282+/76/,63 7.-34/$4/ 7.7/59/2-/ 7.///286/0;2   7.7/59/2-/  7.-34/$4/  7.///28 7.///282+/,6 7.-34/$4/ 7.7/59/2-/ 7.///286/0;2   7.7/59/2-/  7.-34/$4/  7.///28 Natomiast, jeżeli utworzysz typ danych (złożony lub prosty) jako globalny, to musisz po- dać przy deklaracji elementu atrybut type z nazwą typu. Deklaracja przykładowego wła- snego typu prostego i sposób jego zastosowania wyglądają następująco: Listing 4.8. 7.///282+/ #84/4/7/  (cid:25)(cid:25)/+6+-+849(cid:25)(cid:25) 7.74/$4/2+/4/7/,+7/7.78621 7.6/786-832 7.4+88/62:+9/.    7.6/786-832  7.74/$4/ Zauważ, że typ podstawowy możemy tworzyć na podstawie typu predefiniowanego — atrybutu ,+7/. Istnieje również możliwość tworzenia restrykcji, czyli dostosowania typu do własnych potrzeb za pomocą wyrażeń regularnych 7.4+88/62. Nie ma sensu opi- sywać tutaj wszystkich wyrażeń regularnych, pełną ich listę znajdziesz pod adresem: http://www.w3.org/TR/2000/WD-xmlschema-2-20000922/#regexs. Możesz również po- brać narzędzie do tworzenia własnych wyrażeń regularnych pod adresem: http://www. xfront.com/regexGenLicense.html. Powiem tylko tyle, że nasz typ składa się z 10 cyfr i jest utworzony na bazie typu tekstowego. Ćwiczenie 4.4. Utwórz kilka typów własnych za pomocą wyrażeń regularnych, które mogą się przydać w innych dokumentach. Na przykład numer telefonu, kod zpocztowy czy też numer NIP. Rozdział 4.  XML Schema 45 Dla elementu możemy wyspecyfikować cały szereg parametrów, które definiują jego wygląd jeszcze dokładniej. Atrybuty te podawane są za obowiązkowym parametrem 2+/, definiującym nazwę elementu. Zacznijmy od parametrów określających możliwą ilość wystąpień elementu:   2--967 — określa minimalną liczbę wystąpień elementu w sekcjip; wartością może być tutaj liczba całkowita nieujemna. Jeżeli podamy wpartość zero, to ten element staje się elementem opcjonalnym, natomiast podanie pjakiejkolwiek liczby dodatniej powoduje, że ten element staje się wymagany w danej spekcji. Pominięcie tego argumentu ustawia wartość atrybutu na liczbę 1. +--967 — określa maksymalną liczbę wystąpień elementu w sekcjpi; wartością może być tutaj liczba całkowita nieujemna lub napis punbounded. Napis ten informuje o tym, że element może wystąpić nieograniczoną ilość rpazy. Wartość tego elementu nie może być mniejsza niż wartość parametru 2--967, natomiast podanie wartości 0 oznacza zakaz stosowania tego elementu. Opuszczenie tpego argumentu przy jednoczesnym zadeklarowaniu poprzedniego atrybutu, pustawia go na wartość podaną dla 2--967. Jeżeli nie wyspecyfikujemy żadnego z tych argumentów, przyjmowana jest wartość domyślna, czyli 2--967  oraz +--967 ; jednokrotne wystąpienie elementu jest wymagane. Poniższy przykład definiuje element płeć, który może wystąpić jedno- razowo lub dwukrotnie. 7.///282+/4o/2--967 +--967 Parametry, które definiują sposób występowania oraz wartości domyślne, wiążą się z poprzednimi parametrami w następujący sposób: jeżeli podamy wartość 2--967 , to wtedy ten parametr jest wymagany (patrz predykat  !   w DTD). Wartość zero wskazuje na element opcjonalny (predykat  ). Pozostały jeszcze dwa typy omó- wione przy okazji DTD — wartość w DTD jest równoważny deklaracji para- metru 0/.wartość, natomiast samą wartość domyślną deklarujemy w XML-u Shema za pomocą parametru ./0+98wartość. 7.///282+/ 0/.    7.///282+/4o/2--967+--967./0+98 Dla elementów z zawartością złożoną można również dodać parametr o nazwie mixed, wskazujący na element mieszany (tekst i inne elementpy). Wartości 1 oraz true oznaczają zawartość mieszaną, natomiast 0 lub false zawartość zwykłą, bez dodatkowego tekstu. Ćwiczenie 4.5. Przyjrzyj się elementom zdefiniowanym w pliku sąsiedzi.xml i maksymalną ilość głów- nych miast w danym państwie określ jako 6. To samo zrzób dla elementów glowne_rzeki. 46 XML. Ćwiczenia praktyczne Oprócz przedstawionych poprzednio prostych elementów, mamy możliwość wprowa- dzania restrykcji, list i unii. Restrykcje, jak sama nazwa wskazuje, umożliwiają dalsze dopasowanie wartości elementu tak, by pasowała ona do wprowadzonych danych. Kon- struując restrykcje należy pamiętać, że zależą one od predefiniowanych typów wartości. Inne restrykcje dotyczą typu string, a inne wartości numerycznych. Struktura takiej sekcji wygląda następująco: 7.6/786-832,+7/7.28 (cid:25)(cid:25) /786-/(cid:25)(cid:25)  7.6/786-832 Konstrukcja ta ma swoje miejsce po deklaracji typu zawartości. Oto podstawowe re- strykcje, jakie możemy określić (tabela 4.1). Tabela 4.1. Podstawowe restrykcje Restrykcja Opis 7.2-97:/:+9/   7.+-97:/:+9/   7.22-97:/:+9/   7.+2-97:/:+9/   7.838+187:+9/  7.06+-832187:+9/  7.;8/#4+-/:+9/-3+47/  7./218:+9/   Wartość powinna być większa niż wartość wskazana. Dotyczy typów numerycznych, dat. Wartość powinna być mniejsza niż wartość wskazana. Dotyczy typów numerycznych, dat. Wartość powinna być większa lub równa wartości wskawzanej Dotyczy typów numerycznych, dat. Wartość powinna być mniejsza lub równa wartości wskwazanej. Dotyczy typów numerycznych, dat. Całkowita liczba cyfr występujących w elemencie; liczowne są również cyfry w wartości ułamkowej. Dotyczy typów numerycznych. Liczba miejsc dziesiętnych. Dotyczy typów numerycznwych, ułamkowych. Białe znaki. Wartość collapse oznacza zwinięcie wszystkich sekwencji spacji do jednej. Wartość preserve zachowuje wszystkie białe znaki, natomiast wartość replace oznacza zastąpienie wszystkich tabulatorów, znaków line feed i powrotu karetki pojedynczą spacją. Dotyczy wszystkich typów.w Długość wpisywanego tekstu. Uwaga: każdy element powiniwen zawierać tekst dokładnie takiej długości, Dotyczy typwów tekstowych. 7.2/218:+9/  7.+/218:+9/   Minimalny rozmiar tekstu. Dotyczy typów tekstowych.w Maksymalna długość tekstu. Dotyczy typów tekstowych. Ćwiczenie 4.6. Dla elementów obszar oraz ludność w pliku sąsiedzi.xml określ minimalną wartość jako 1. Rozdział 4.  XML Schema Ćwiczenie 4.7. 47 Utwórz element kwota i określ, że powinien on zawierać dwa miejsca po przecinku oraz element Pesel i określ, że ma on zawierać dokładnie 11 cyfr. Oprócz wymienionych w tabeli deklaracji, można stosować wyliczenia (ang. enumeration) w celu pokazania wartości dopuszczalnych. Oto krótki przykład, który pozwoli Ci od razu zrozumieć jego zasadę: Listing 4.9. 7.///282+/$6/6+-++--96792,392./. 7.74/$4/ 7.6/786-832,+7/7.78621 7./29/6+832:+9/ 3+  7./29/6+832:+9//-  7./29/6+832:+9/ 97   7.6/786-832  7.74/$4/  7.///28 W restrykcjach można również zawrzeć deklarację wzorca (ang. pattern) poznanego trochę wcześniej. Ćwiczenie 4.8. Utwórz element będący wyliczeniem województw. Kolejną konstrukcją dostępną dla schematów są listy wartości, które tworzą typ złożony z kilku typów prostych. Na przykład w elemencie urodzinyDzieci mają się znaleźć daty urodzin wszystkich dzieci danej osoby. Popatrzmy jakp wygląda deklaracja takiej listy: Listing 4.10. 7.///282+/963.2/-84/7.78621 7.74/$4/ 7.788/$4/7..+8/ 7.74/$4/ 7.6/786-832,+7/7.4378:/28/1/6 7.+/218:+9/   48 XML. Ćwiczenia praktyczne 7.2/218:+9/    7.6/786-832  7.74/$4/  7.78  7.74/$4/  7.///28 Przeciętnym ludziom powinno wystarczyć 20 miejsc na wpisanie daty urodzin swoich dzieci. Kolejne wpisy oddzielamy spacjami i muszą one być datami. W dokumencie XML-a prawidłowo będą walidowane takie oto elementy: 963.2/- (cid:25) (cid:25)  (cid:25) (cid:25)  963.2/- 963.2/- (cid:25) (cid:25)  963.2/- 963.2/- 963.2/- Ćwiczenie 4.9. Zdefiniuj typ listowy, w którym wpisuje się wszystkiez państwa graniczące z danym krajem. Jeżeli trzeba będzie użyć nazw wieloczłonowych, takiwch jak Wielka Brytania czy Republika Południowej Afryki, należy wówczas zamiast spacji wpiswać znak podkreślenia. Unie pozwalają definiować typy proste, które mogą zawierać różnego rodzaju zawar- tość, na przykład, jeżeli chcemy zapisać rozmiar czcionki za pomocą liczb od 6 – 72 lub zastosować napisy small, normal lub large, to musimy skorzystać z następującej unii. Listing 4.11. 7.74/$4/ 7.9232 7.74/$4/ 7.6/786-832,+7/7.4378:/28/1/6 7.22-97:/:+9/  7.+2-97:/:+9/   7.6/786-832  7.74/$4/ 7.74/$4/ 7.6/786-832,+7/7.$ 7./29/6+832:+9/7+  7./29/6+832:+9/236+  7./29/6+832:+9/+61/   7.6/786-832  7.74/$4/  7.9232  7.74/$4/ Teraz następujący fragment dokumentu XML-a będzie poprpawnie interpretowany: 0328#/7+ 0328#/  0328#/  0328#/  0328#/+61/ 0328#/ Rozdział 4.  XML Schema Ćwiczenie 4.10. 49 Zadeklaruj unię dla elementu, który będzie zawierał datę lub tekst „nieznana”. Taki typ można wykorzystać we wszystkich elementach, które do tej pory były zwykłymi datami. Konstrukcje dotyczące typów złożonych pozwalają na rozbudowywanie typów według własnych potrzeb, możemy na przykład rozszerzyć definicję istniejącego typu za pomocą konstrukcji /8/2732. Zobaczmy w jaki sposób zadeklarować takie rozszerzepnie: Listing 4.12. 7.-34/$4/2+/4+q78;3 7.7/59/2-/ 7.///282+/783-+84/7.78621  7.///282+/3,7+684/7.4378:/28/1/6  7.///282+/9.2384/7.4378:/28/1/6   7.7/59/2-/  7.-34/$4/ 7.-34/$4/2+/4+q78;+)203 7.-34/328/28 7./8/2732,+7/4+q78;3 7.7/59/2-/ 7.///282+/13;2/)+78+84/7.78621+--967   7.///282+/13;2/)6/84/7.78621+--967    7.7/59/2-/  7./8/2732  7.-34/328/28  7.-34/$4/ Poszerzamy definicję typu państwo dodając do niego nowe elementy: glowne_miasta oraz glowne_rzeki. Zauważ również, że poszerzany typ musi mieć złożoną zawartość 7.-34/328/28, składającą się z bazowego typu oraz wyspecyfikowanych struktur. Popatrz teraz, w jaki sposób odwołać się do tego typu: Listing 4.13. :/6732 /2-3.21 $(cid:25) 7.7-/+277.884 ;;; ; 361  #-/+ ///2836/0+9859+0/. 7.///282+/;+8 7.-34/$4/ 7.7/59/2-/ 7.///282+/4+q78;+ 7.-34/$4/ 7.7/59/2-/ 7.///282+/4+q78;384/4+q78;+)203   7.7/59/2-/  7.-34/$4/ 50 XML. Ćwiczenia praktyczne  7.///28  7.7/59/2-/  7.-34/$4/  7.///28 Kolejną konstrukcją, którą możemy zadeklarować jest grupa powtarzających się wielo- krotnie w schemacie elementów. Umożliwia nam to jednorazowe utworzenie takiej grupy i wielokrotne jej wykorzystanie. Definicja grupy cechy_fizyczne będzie się odnosić za- równo do elementu głównego świat, jak i do elementów potomnych kontynent i państwo. 7.163942+/-/-)0-2/ 7.7/59/2-/ 7.///282+/43;/6-2+84/7.4378:/28/1/6  7.///282+/9.2384/7.4378:/28/1/6   7.7/59/2-/  7.16394 Musimy odpowiednio odwołać się do grupy przy definiowapniu struktur złożonych: Listing 4.14. Listing 4.15. 7.///282+/;+8 7.-34/$4/ 7.7/59/2-/ 7.163946/0-/-)0-2/  7.///282+/3282/28+--967 7.-34/$4/ 7.7/59/2-/ 7.163946/0-/-)0-2/  7.-34/$4/2+/4+q78;3 7.7/59/2-/ 7.///282+/783-+84/7.78621  7.163946/0-/-)0-2/   7.7/59/2-/  7.-34/$4/ Poprawnie walidowany dokument teraz może wyglądać nasptępująco: Listing 4.16. :/6732 /2-3.21 $(cid:25) (cid:25)(cid:25)/.8/.;8#4: $,/8+,9.9 O884 ;;; 774 -3P, O46:+8/P(cid:25)(cid:25) Rozdział 4.  XML Schema 51 ;+8277884 ;;; ; 361  #-/+(cid:25)278+2-/ 723+/74+-/#-/+3-+832 6316+/783:+#4 #98/+4/7;+8 7. 43;/6-2+  43;/6-2+ 9.23  9.23 3282/28 43;/6-2+ 43;/6-2+ 9.23 9.23 4+q78;+ 4+q78;3 783-+ +67+;+ 783-+ 43;/6-2+   43;/6-2+ 9.23  9.23 13;2/)+78++83;-/ 13;2/)+78+ 13;2/)+78+nT.  13;2/)+78+ 13;2/)+78+ 32+q 13;2/)+78+ 13;2/)+78+ 63-o+; 13;2/)+78+ 13;2/)+78+6+T; 13;2/)+78+ 13;2/)+78+#-/-2 13;2/)+78+ 13;2/)6/ 7o+ 13;2/)6/ 13;2/)6/.6+ 13;2/)6/ 13;2/)6/ +68+ 13;2/)6/  4+q78;3  4+q78;+  3282/28  ;+8 Ćwiczenie 4.11. Utwórz grupę elementów dla opisu człowieka. Powinny tam się znaleźć pozycje takie jak: wzrost, waga, kolor włosów itd. Ciekawym rozwiązaniem jest możliwość podstawiania grup. W ten sposób możemy na przykład wyspecyfikować kilka wersji językowych. Możemy również zdefiniować grupę ze zlokalizowanymi ustawieniami i wykorzystać odpowiedni schemat w zależności na przykład od jakiegoś atrybutu. Przypuśćmy, że mamy dokument, w którym chcemy wpi- sywać środki lokomocji w Polsce i w krajach anglojęzycznych. Dla ułatwienia: polskie środki lokomocji będzie się wpisywało za pomocą polsko brzmiących znaczników. Nato- miast użytkownicy zagraniczni będą mogli skorzystać z wersji angielskiej. Do tej pory musiałbyś tworzyć dwa typy dokumentów, teraz możesz spkorzystać z podstawiania grup. Listing 4.17. 7.7-/+277.884 ;;; ; 361  #-/+ ///2836/0+9859+0/. 7.///282+/43-184/7.78621  7.///282+/86+284/7.7862179,7889832639443-1  7.-34/$4/2+/333-+ 7.7/59/2-/+--96792,392./. 52 XML. Ćwiczenia praktyczne 7.///286/043-1   7.7/59/2-/  7.-34/$4/ 7.///282+/392+-+84/333-+  7.///282+/86+274368+83279,78898326394392+-+   7.7-/+ Dokument XML w polskiej wersji językowej będzie poprawnie walidowany według tego schematu. Również poniższy przykład w wersji angielskiej nie będzie sprawiał trudności. Listing 4.18. (cid:25)(cid:25)  # #(cid:25)(cid:25) :/6732 /2-3.21 $(cid:25) 392+-+277884 ;;; ; 361  #-/+(cid:25)278+2-/ 723+/74+-/#-/+3-+8323/+4/73363-+ 7. 43-1+83;-/(cid:25)#-/-2 43-1  392+-+ (cid:25)(cid:25)  ##(cid:25)(cid:25) :/6732 /2-3.21 $(cid:25) 86+274368+832277884 ;;; ; 361  #-/+(cid:25)278+2-/ 723+/74+-/#-/+3-+8323/+4/7333-+ 7. 86+232.32(cid:25)+2-/78/6 86+2  86+274368+832 Przedstawione tutaj konstrukcje świadczą o wielu zaletach języka XML Schema, za pomocą którego można dokładnie określić kształt elementów, można je grupować, two- rzyć własne typy zawartości albo nawet tworzyć różne wersje językowe dokumentów. Do tej pory jednak nie poznaliśmy konstrukcji zajmujących się tworzeniem atrybutów dla elementów. To zagadnienie zostanie omówione po kolpejnym ćwiczeniu. Ćwiczenie 4.12. Napisz schemat do dokumentu XML-a opisującego zbiór twoich kaset Video, płyt CD lub książek. Pola, których użyjesz, są dowolne, pamiętaj jednak o dokładnym określeniu zawartości elementów. Wszystkie typy znajdziesz w dodatku A. Tam, gdzie to będzie po- trzebne, określ odpowiednie restrykcje dla wartościz elementów. Po zapoznaniu się z konstrukcjami dotyczącymi elementów zajmiemy się deklarowa- niem atrybutów. Przy omawianiu DTD zauważyłeś zapewne, jak ważną rolę pełnią one w językach wywodzących się z XML-a, dlatego w specyfikacji XML-a Schema nie mogło ich zabraknąć. Atrybuty można deklarować jako pojedyncze, wstawiając je do klamry elementu, dla którego chcemy, aby należały, lub też jako samodzielne grupy przypisywane, w zależności od potrzeb, do odpowiednich elementów. Każdy element musi być typu zło- żonego, nawet jeżeli element ten zawiera tylko tekstp lub jest elementem pustym. Rozdział 4.  XML Schema 53 Definiowanie atrybutu lokalnego odbywa się za pomocą znacznika 7.+886,98/, wewnątrz którego podajemy dwie informacje: nazwę atrybuptu (name) oraz jego typ (type). Listing 4.19. 7.///282+/167+47/.2+;+ 7.-34/$4/   7.+886,98/2+/+78384/7.78621  7.+886,98/2+/6384/7.7.1/+6     7.-34/$4/  7.///28 Dodatkowo dla atrybutu możemy określić informacje o jego sposobie występowania (parametr 97/), wartościach domyślnych (parametr ./0+98) oraz możemy zadeklarować atrybut jako stały (parametr ./0+98). Listing 4.20. 7.+886,98/2+/092-+84/7.7862197/6/596/../0+98++ 9/6+  7.+886,98/2+/./023;+2+)46/84/7.7862197/34832+ ./0+989/6  7.+886,98/2+/ 0/.    7.+886,98/2+/497/463,8/.  7.+886,98/2+/ 97/463,8/.  7.+886,98/2+/497/463,8/.  Parametr use może przyjmować trzy wartości: 6/596/. — wtedy ten atrybut jest wy- magany i nie można go pominąć podczas pisania elementu; 34832+ — atrybut jest opcjonalny oraz 463,8/. — nie można użyć atrybutu o tej nazwie. W przykładzie zadeklarowano, że tylko jedna nazwa argumentu PI jest poprawna i nadano temu atry- butowi wartość stałą. Natomiast jeżeli zestaw argumentów będzie potrzebny dla wielu elementów, wygodniej go zdefiniować jako grupę, a następnie za pomocą odnośnika wskazać go w konkret- nych elementach złożonych. Zdefiniujmy grupę atrybutów dla wstawianych obrazków; elementy zawierające takie informacje mogą występować w różnych miejscach doku- mentu i pod różnymi nazwami, ale argumenty będą miały tpakie same. Listing 4.21. 7.+886,98/63942+/+86,98,6+3; 7.+886,98/2+/2+;+ 984/7.+2 97/6/596/.  7.+886,98/2+/+8/62+8;2$/7884/7.7862197/34832+  7.+886,98/2+/;73384/7.28/1/697/34832+  7.+886,98/2+/7/63384/7.28/1/697/34832+   7.+886,98/6394 Odwołania w elementach wyglądają następująco: 54 Listing 4.22. XML. Ćwiczenia praktyczne   7.///282+/.4-/+;3.2+ 7.-34/$4/ 7.+886,98/63946/0+86,98,6+3;   7.-34/$4/  7.///28   7.///282+/.4-/+78+ 7.-34/$4/ 7.+886,98/63946/0+86,98,6+3;   7.-34/$4/  7.///28   Ćwiczenie 4.13. Dodaj atrybuty do elementów z poprzedniego ćwiczenia. Zastanów się, gdzie używać atrybutów, a gdzie oprzeć się na kolejnym elemencie. Ćwiczenie 4.14. Zadeklaruj grupę atrybutów, w której znajdą się 63-2#8+878-2, 2+;+ +q78;+, oraz 3,7+6 167 47-. Nazwij ją państwaInfo. Pierwszy z atrybutów powi- nien być rokiem, drugi tekstem, a trzeci liczbą całkowzitą nieujemną. Listing 4.23. 7.+886,98/63942+/4+q78;+203 7.+886,98/2+/63-2#8+878-284/7.1/+697/6/596/.  7.+886,98/2+/2+;+ +q78;+84/7.7862197/6/596/.  7.+886,98/2+/3,7+684/7.4378:/28/1/697/6/596/.   7.+886,98/6394 Ćwiczenie 4.15. Utwórz schemat dla elementu państwo z zawartością złożoną, następnie dołącz do tego elementu grupę atrybutów zdefiniowanych powyżej oraz dodaj dodatkowe elementy po- tomne o nazwach główne_miasta oraz główne_rzeki. Elementy potomne są typu prostego, występują wielokrotnie i zawierają tekst. Listing 4.24. 7.///282+/4+q78;3 7.-34/$4/ 7.7/59/2-/ 7.///282+/1oT;2/)+78+84/7.78621+--96792,392./.  7.///282+/1oT;2/)6/84/7.78621+--96792,392./.   7.7/59/2-/ 7.+886,98/63946/04+q78;+203   7.-34/$4/  7.///28 Rozdział 4.  XML Schema 55 Do tej pory traktowaliśmy nazwy elementów tak, jakby nie miały one prawa się powtó- rzyć. Co się jednak stanie gdy pobierzemy z Internetu inny schemat, w którym wystę- puje nazwa elementu deklarowana przez nas w innym schemacie? Tu właśnie stajemy przed problemem: jak połączyć ze sobą dwa schematy, w których występuje ta sama nazwa elementu mającego różne zadania i strukturę w obu schematach. W celu jedno- znacznej identyfikacji elementu stosuje się dodatkowy prefiks, który będzie kojarzył konkretny element ze schematem. Na przykład element konkurencja ze schematu igrzy- skaOlimpijskie.xsd może wystąpić gdzie indziej. Można by mu było nadać prefiks olim- piada, ale nie jest to zbyt oryginalny pomysł, gdyż równie łatwo może wpaść na niego ktoś inny. Dlatego w praktyce stosuje się jako nazwy prefiksów adresy URL naszej do- meny. W ten sposób zapewniamy niepowtarzalność i niezmienność nazw. Dodatkowy prefiks elementu nazywa się właśnie przestrzenią nazw. Jej zastosowanie pozwala spać spokojnie twórcom języków bazujących na XML-u. Trzeba jeszcze powiedzieć, że rzadko się zdarza, aby elementy wewnętrzne, czyli lokalne, potrzebowały kwalifikowa- nia przez przestrzeń nazw, gdyż wystarczy, aby ich rodzic znajdował się w odpowied- niej przestrzeni. Jednak mimo to przedstawię taką konstrukcję i powiem, kiedy ona jest potrzebna. Problem zapewnienia jednoznaczności przestrzeni nazw w obrębie jednej domeny roz- wiązuje się za pomocą dodania do adresu URL naszej domeny dodatkowych informacji oddzielonych ukośnikami „/”. Można to zrobić, gdyż ten powstały adres URL nie musi, a nawet nie powinien wskazywać konkretnego dokumentu w naszych zasobach siecio- wych. Dlatego poniższy przykład nazwy przestrzeni jespt jak najbardziej prawidłowy: 884 ;;; 3+.3/2+ 4  7-/+8 33;- 34+. Deklaracje w dokumentach XML-a można podzielić na domyślne przestrzenie nazw oraz przestrzenie nazw dla poszczególnych elementów. Domyślna przestrzeń nazw jest definiowana w elemencie głównym lub tym, dla którego jego potomkowie mają się znaleźć w tej przestrzeni. Przestrzeń definiuje się dodając parametr xmlns (XML Name- Space), po którym wpisujemy jej nazwę. Zobacz przykłady: Listing 4.25. (cid:25)(cid:25)/+6+-+46/786/22+;.+///2891oT;2/13(cid:25)(cid:25) 167+47/ 27884 ;;; 3+.3/2+ 4  33;- 34+. 6  .7-42+2+;+/+8/8+  167+47/ (cid:25)(cid:25)/+6+-+46/786/22+;.+4383+///2891oT;2/13(cid:25)7(cid:25) T~;+8 4+q78;+27884 ;;; 3+.3/2+ 4  33;- 6+/ 6   4+q78;+  T~;+8 56 XML. Ćwiczenia praktyczne Można również zadeklarować przestrzeń nazw dla konkretnego elementu bez wpływania na elementy potomne. W tym celu musimy jeszcze do deklaracji elementu dołożyć spe- cjalny przedrostek, który będzie kojarzony z tym elementem. Przedrostek ten musimy również użyć przed nazwą elementu. Przedrostek od nazwy elementu i deklaracji xmlns oddzielamy znakiem dwukropka. Listing 4.26. (cid:25)(cid:25)/+6+-+46/786/22+;.+4383+///2891oT;2/13(cid:25)7(cid:25) T~;+8 4+q78;+27884 ;;; 3+.3/2+ 4  33;- 6+/  4+q78;32+;+ 37+ 783-+ +67+;+ 783-+ 3,7+6   3,7+6 9.23  9.23 ;3.6/27;3.884 ;;; 3+.3/2+ 4  33;6- ;3.  ;3.6/+ 7o+ ;3.6/+  ;3.6/  4+q78;3  4+q78;+  T~;+8 Wszystkie inne elementy, które nie są oznakowane przedrostkiem wody należą do do- myślnej przestrzeni nazw. Widzisz zatem, że w dokumencie elementy mogą należeć do wielu przestrzeni i jest to zachowanie jak najbardzpiej prawidłowe. Atrybutów nie trzeba przypisywać do żadnej przestrzweni nazw, gdyż są one nierozerwalnie związane z elementami. Teraz przyjrzymy się sposobowi deklaracji elementów w przestrzeniach nazw. Aby okre- ślić przestrzeń nazw, należy zamiast parametru 723+/74+-/#-/+3-+832 podać parametr 8+61/8+/74+-/ z nazwą przestrzeni. Listing 4.27. :/6732 /2-3.21 $(cid:25) 7.7-/+8+61/8+/74+-/884 ;;; 3+.3/2+ 4  33;-6 86  277.884 ;;; ; 361  #-/+ 7.///282+/86+274368.3; 7.-34/$4/ 7.7/59/2-/ 7.///282+/-4 +6T;    7.7/59/2-/  7.-34/$4/  7.///28 7.///282+/86+274368367 7.-34/$4/ 7.7/59/2-/ 7.///282+/78+8    7.7/59/2-/  7.-34/$4/  7.///28  7.7-/+ Rozdział 4.  XML Schema 57 W tym przykładzie tylko elementy definiowane globalnie będą przypisane do przestrzeni nazw, natomiast jeżeli chcemy przypisać tę przestrzeń do wszystkich elementów, musimy dopisać jeszcze parametr ///2836/0+9859+0/.. Listing 4.28. :/6732 /2-3.21 $(cid:25) 7.7-/+8+61/8+/74+-/884 ;;; 3+.3/2+ 4  33;- 86  ///2836/0+9859+0/. 277.884 ;;; ; 361  #-/+ 7.///282+/86+274368.3; 7.-34/$4/ 7.7/59/2-/ 7.///282+/-- +63;    7.7/59/2-/  7.-34/$4/  7.///28 7.///282+/86+274368367 7.-34/$4/ 7.7/59/2-/ 7.///282+/78+8    7.7/59/2-/  7.-34/$4/  7.///28  7.7-/+ Jeżeli chcemy, aby jakiś element przy poprzedniej deklaracji nie należał do domyślnej przestrzeni nazw, należy ustawić dla niego parametr p036 na wartość 9259+0/.. Listing 4.29. :/6732 /2-3.21 $(cid:25) 7.7-/+8+61/8+/74+-/884 ;;; 3+.3/2+ 4  33;- 86  ///2836/0+9859+0/. 277.884 ;;; ; 361  #-/+ 7.///282+/86+274368.3; 7.-34/$4/ 7.7/59/2-/ 7.///282+/-4 +6T;    7.7/59/2-/  7.-34/$4/  7.///28 7.///282+/86+274368367 7.-34/$4/ 7.7/59/2-/ 7.///282+/78+80369259+0/.    7.7/59/2-/  7.-34/$4/  7.///28  7.7-/+ 58 XML. Ćwiczenia praktyczne Warto również wspomnieć, że jedną przestrzeń nazw już poznałeś, nie wiedząc o tym. Jest to przestrzeń z przedrostkiem xsd. Definiuje ona sam schemat. Zauważ, że wszystkie deklaracje w schemacie są opisywane właśnie takim przedrostkiem. Zmieniając trochę definicję nagłówka schematu, możemy go zadeklarować jako domyślny i nie używać przedrostka. Listing 4.30. :/6732 /2-3.21 $(cid:25) 7-/+8+61/8+/74+-/884 ;;; 3+.3/2+ 4  33;- 86 7 ///2836/0+9859+0/. 27884 ;;; ; 361  #-/+ ///282+/86+274368.3; -34/$4/ 7/59/2-/ ///282+/-4 +6T;    7/59/2-/  -34/$4/  ///28  7-/+ Jeżeli chcemy nadać przestrzeni nazw nagłówek, to musimy to również zadeklarować w schemacie za pomocą konstrukcji: Listing 4.31. :/6732 /2-3.21 $(cid:25) 7-/+8+61/8+/74+-/884 ;;; 3+.3/2+ 4  33;- 86 7 2786884 ;;; 3+.3/2+ 4  33;- 86 6  27884 ;;; ; 361  #-/+ Nazw elementów w schemacie nie trzeba wówczas poprzedzać przedrostkiem, gdyż wskazuje na to parametr 8+61/8+/74+-/. Natomiast przedrostek jest wymagany przy wartościach atrybutów wywoływanych parametrem 6/0 oraz przy deklarowaniu typu — parametr 84/. Listing 4.32. :/6732 /2-3.21 $(cid:25) 7-/+8+61/8+/74+-/884 ;;; 3+.3/2+ 4  33;7- 86  2786884 ;;; 3+.3/2+ 4  33;- 86 6  27884 ;;; ; 361  #-/+ ///282+/86+274368.3; -34/$4/ 7/59/2-/ ///282+/-4 +6T;84/86+983    7/59/2-/  -34/$4/  ///28  7-/+ Rozdział 4.  XML Schema 59 Natomiast w dokumencie XML-a konieczne jest deklarowanie przedrostka, tak jak to po- kazano wcześniej. Jeszcze jedna sprawa pozostała nie omówiona, jak zadeklarować w dokumencie XML-a przypisanie przestrzeni nazw do schematu. Do tej pory omawialiśmy schematy, które nie miały przestrzeni nazw, więc używaliśmy parametru 723+/74+-/#-/+3-+832, obecnie musimy zastąpić go parametrem 77-/+3-+832. Popatrz jak zmodyfikować postać nagłówka pliku XML: Listing 4.33. :/6732 /2-3.21 $(cid:25) 3167+47/63 +783#.2/ 277884 ;;; ; 361  #-/+(cid:30)278+2-/77-/+3-+832 884 ;;; 3+.3/2+ 4  33;- 34+. 884 ;;; 3+.3/2+ 4  4+. 7. Parametr 7-/+3-+832 ma specjalną formę: 77-/+3-+8322+;+ 6/786/2 )49)7.. Ćwiczenie 4.16. Utwórz przestrzeń nazw z prefiksem sąsiad. Będzie ona służyła do opisywania elemen- tów z pliku sąsiedzi.xml (dodatek D). Następnie zbuduj całość schematu i odpowiednio zmodyfikuj plik sąsiedzi.xml, tak by obsługiwał nowo zdefiniowaną przezstrzeń nazw. Ćwiczenie 4.17. Utwórz przestrzeń nazw z prefiksem Igrzyska. Będzie ona służyła do opisywania elemen- tów z plików dotyczących Olimpiad ery nowożytnej (plik Sydney2000.xml — dodatek D). Następnie zbuduj całość schematu i odpowiednio zmodyfikuj plik Sydney2000.xml, tak by obsługiwał nowo zdefiniowaną przestrzeń nazw. Schemat może być plikiem bardzo dużym, dlatego warto go podzielić na kilka mniej- szych fragmentów, tak by łatwiej nam było go później edytować. Korzystanie z możli- wości dzielenia plików schematu daje nam deklaracja 7.2-9./. Jako wartość para- metru 7-/+3-+832 podajemy położenie pliku z wybranym fragmentem. 60 Listing 4.34. XML. Ćwiczenia praktyczne :/6732 /2-3.21 $(cid:25) 7.7-/+8+61/8+/74+-/884 ;;; 3+.3/2+ 4  733;- 86  ///2836/0+9859+0/. 277.884 ;;; ; 361  #-/+ 7.2-9./7-/+3-+832884 ;;; 3+.3/2+ 4  86 +.3; 7.  7.2-9./7-/+3-+832884 ;;; 3+.3/2+ 4  86 367 7.   7.7-/+ Import umożliwia pobranie z innych przestrzeni nazw elementów globalnych i zastoso- wanie ich w schemacie importującym. Poniżej znajdziespz przykład takiej konstrukcji. Listing 4.35. :/6732 /2-3.21 $(cid:25) 7.7-/+8+61/8+/74+-/884 ;;; 3+.3/2+ 4  33;- 6+/  ///2836/0+9859+0/. 277.884 ;;; ; 361  #-/+ 27;3.884 ;;; 3+.3/2+ 4  33;- ;3. 6  7.43682+/74+-/884 ;;; 3+.3/2+ 4  363;- ;3.  77-/+3-+832884 ;;; 3+.3/2+ 4  336;- ;3. 884 ;;; 3+.3/2+ 4  ;3. 7.  7.///282+/6/  7.7-/+ Importowanie i załączanie pomaga w pracy z dużymi plikami schematów, a także po- maga w rozjaśnieniu składni takiego schematu. Wprawdzie omówienie kluczy i wartości unikatowych powinno się znaleźć wcześniej, ale ze względu na to, że ogólnodostępne walidatory nie do końca poprawnie interpretują te konstrukcje, umieszczam ich omówienie w części dotyczącej zaawansowanych za- gadnień. Założenia są takie: deklarujemy wartość unikatową, aby zapewnić, że żadna wartość elementu nie może się powtórzyć. Posługujemy się pw tym celu konstrukcją: Listing 4.36. :/6732 /2-3.21 $(cid:25) 7.7-/+277.884 ;;; ; 361  #-/+ 8+61/8+/74+-/884 ;;; 7+ 3671 27884 ;;; 7+ 361 277884 ;;; 7+ 361 ///2836/0+9859+0/. Rozdział 4.  XML Schema 61 7.///282+/741+62+ 7.-34/$4/ 7.7/59/2-/ 7.///282+/7+++--96792,392./. 7.-34/$4/ 7.7/59/2-/ 7.///282+/$89o84/7.78621  7.///282+/983684/7.78621  7.///282+/+8+84/7.78621  7.///282+/#84/7.78621  7.///282+/ .+;-+84/7.78621   7.7/59/2-/  7.-34/$4/  7.///28  7.7/59/2-/  7.-34/$4/ 7.9259/2+/92+83;# 7.7//-8364+877++  7.0/.4+87#   7.9259/  7.///28  7.7-/+ Tak jak powiedziałem, deklaracja samej konstrukcji jest poprawna i w specyfikacji opi- sano ją jako mającą gwarantować niepowtarzalność argumentów. Na przykład XML Spy traktuje taki dokument jako poprawny, a nie powinien, ponieważ numery ISBN się po- wtarzają. Jest to wersja programu XML Spy 4.0 Beta 2 i może w wersji końcowej zostaną wprowadzone te elementy do standardu. Rysunek 4.1. Poprawnie interpretowany dokument Podobnie ma się sprawa z kluczami i ich odnośnikami. Klucz jest rozszerzeniem wartości unikatowej. Oprócz tego, że element taki musi być niepowtarzalny, wymaga się rów- nież, aby jego zawartość nie była łańcuchem pustym (argument 2+,/ musi być ustawiony na false) oraz musi on wystąpić (4+6+/86+--967 musi być większy od zera). Znaczenie klucza jest bardzo podobne do określenia klucza dla tabeli w bazie danych. Oto zmiany, jakie należy wprowadzić w powyższym przypkładzie, by zadeklarować klucz: 62 Listing 4.37. XML. Ćwiczenia praktyczne 7.///282+/#2+,/ 2--967   (cid:25)(cid:25)++787/-9259/(cid:25)(cid:25) 7./2+/9-# 7.7//-8364+877++  7.0/.4+87#   7.9259/ Więcej o wybieraniu elementów za pomocą selektorów i pól dowiemy się w następnym rozdziale poświęconym specyfikacji XPath. Należy tutaj jedynie nadmienić, że wybie- ramy element Ksiazka, a z niego pole ISBN, które ma być kluczem w dokumencpie.
Pobierz darmowy fragment (pdf)

Gdzie kupić całą publikację:

XML. Ćwiczenia praktyczne
Autor:

Opinie na temat publikacji:


Inne popularne pozycje z tej kategorii:


Czytaj również:


Prowadzisz stronę lub blog? Wstaw link do fragmentu tej książki i współpracuj z Cyfroteką: