Cyfroteka.pl

klikaj i czytaj online

Cyfro
Czytomierz
00362 008076 11063696 na godz. na dobę w sumie
XML. Szybki start. Wydanie II - książka
XML. Szybki start. Wydanie II - książka
Autor: Liczba stron: 296
Wydawca: Helion Język publikacji: polski
ISBN: 978-83-246-8237-9 Data wydania:
Lektor:
Kategoria: ebooki >> komputery i informatyka >> webmasterstwo >> xml i xslt - programowanie
Porównaj ceny (książka, ebook, audiobook).

Przewodnik po świecie XML!

XML to uniwersalny tekstowy format prezentacji danych. Jasne zasady tworzenia dokumentów XML oraz prostota ich wykorzystania sprawiły, że stał się standardem wymiany danych. Format XML można zastosować na setki sposobów: serializacja obiektów czy komunikacja z webserwisami to najprostsze z nich. Żeby stworzyć swój pierwszy dokument XML, nie potrzebujesz żadnych specjalistycznych narzędzi. Wystarczy notatnik, ta książka i możesz poznawać świat formatu XML!

W trakcie lektury zapoznasz się z zasadami tworzenia dokumentów XML. Nauczysz się zagnieżdżać elementy, dodawać atrybuty, stosować puste elementy oraz komentować tworzony dokument. W kolejnych rozdziałach poznasz prawdziwą potęgę formatu XML - transformacje za pomocą XSLT. Dzięki nim będziesz w stanie przekształcić dokument źródłowy w dowolnie skonstruowany dokument docelowy. Ponadto przekonasz się, do czego mogą być przydatne dokumenty DTD, które opisują format pliku XML. Na koniec będziesz miał okazję poznać najnowsze zalecenia W3C w zakresie XML oraz wiele praktycznych zastosowań tego formatu. Ta książka jest kompendium wiedzy na temat najistotniejszych zagadnień związanych z formatem XML. Warto mieć ją zawsze pod ręką!

Dzięki tej książce:

Wykorzystaj możliwości formatu XML!

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

Darmowy fragment publikacji:

Tytuł oryginału: XML Visual QuickStart Guide (2nd Edition) Tłumaczenie: Lech Lachowski ISBN: 978-83-246-8237-9 Authorized translation from the English language edition, entitled: XML: VISUAL QUICKSTART GUIDE, Second Edition; ISBN 0321559673; by Kevin Howard Goldberg; published by Pearson Education, Inc, publishing as Peachpit Press. Copyright © 2009 by Kevin Howard Goldberg and Elizabeth Castro. All rights reserved. No part of this book may be reproduced or transmitted in any form or by any means, electronic or mechanical including photocopying, recording or by any information storage retrieval system, without permission from Pearson Education, Inc. Polish language edition published by HELION S.A., Copyright © 2014. Wszelkie prawa zastrzeżone. Nieautoryzowane rozpowszechnianie całości lub fragmentu niniejszej publikacji w jakiejkolwiek postaci jest zabronione. Wykonywanie kopii metodą kserograficzną, fotograficzną, a także kopiowanie książki na nośniku filmowym, magnetycznym lub innym powoduje naruszenie praw autorskich niniejszej publikacji. Wszystkie znaki występujące w tekście są zastrzeżonymi znakami firmowymi bądź towarowymi ich właścicieli. Autor oraz Wydawnictwo HELION dołożyli wszelkich starań, by zawarte w tej książce informacje były kompletne i rzetelne. Nie biorą jednak żadnej odpowiedzialności ani za ich wykorzystanie, ani za związane z tym ewentualne naruszenie praw patentowych lub autorskich. Autor oraz Wydawnictwo HELION nie ponoszą również żadnej odpowiedzialności za ewentualne szkody wynikłe z wykorzystania informacji zawartych w książce. Wydawnictwo HELION ul. Kościuszki 1c, 44-100 GLIWICE tel. 32 231 22 19, 32 230 98 63 e-mail: helion@helion.pl WWW: http://helion.pl (księgarnia internetowa, katalog książek) Drogi Czytelniku! Jeżeli chcesz ocenić tę książkę, zajrzyj pod adres http://helion.pl/user/opinie/xmlss2 Możesz tam wpisać swoje uwagi, spostrzeżenia, recenzję. Pliki z przykładami omawianymi w książce można znaleźć pod adresem: ftp://ftp.helion.pl/przyklady/xmlss2.zip Printed in Poland. • Kup książkę • Poleć książkę • Oceń książkę • Księgarnia internetowa • Lubię to! » Nasza społeczność Spis tre(cid:258)ci Spis tre(cid:286)ci Wprowadzenie 11 Cz(cid:246)(cid:264)(cid:232) I Rozdzia(cid:228) 1. Cz(cid:246)(cid:264)(cid:232) II Rozdzia(cid:228) 2. 19 XML Pisanie dokumentów XML 21 Przyk(cid:239)adowy dokument XML .............................................................................................22 Zasady pisania dokumentów XML ......................................................................................23 Elementy, atrybuty i warto(cid:258)ci .............................................................................................24 Jak zacz(cid:200)(cid:202) ..............................................................................................................................25 Tworzenie elementu g(cid:239)ównego ...........................................................................................26 Pisanie elementów-dzieci ....................................................................................................27 Zagnie(cid:285)d(cid:285)anie elementów ...................................................................................................28 Dodawanie atrybutów ..........................................................................................................29 Stosowanie pustych elementów ..........................................................................................30 Pisanie komentarzy ..............................................................................................................31 Encje predefiniowane — pi(cid:218)(cid:202) znaków specjalnych ...........................................................32 Wy(cid:258)wietlanie elementów w postaci tekstu .........................................................................33 35 XSL XSLT 37 Przekszta(cid:239)canie dokumentów XML za pomoc(cid:200) XSLT .......................................................38 Inicjowanie arkusza stylów XSLT .......................................................................................40 Tworzenie szablonu g(cid:239)ównego ............................................................................................41 Uzyskiwanie pliku wyj(cid:258)ciowego HTML .............................................................................42 Wy(cid:258)wietlanie warto(cid:258)ci .........................................................................................................44 Zap(cid:218)tlanie w(cid:218)z(cid:239)ów ................................................................................................................46 Warunkowe przetwarzanie w(cid:218)z(cid:239)ów ....................................................................................48 Dodawanie wyborów warunkowych ...................................................................................49 Sortowanie w(cid:218)z(cid:239)ów przed przetworzeniem ........................................................................50 Generowanie atrybutów wyj(cid:258)ciowych ................................................................................51 Tworzenie i stosowanie szablonów .....................................................................................52 S p i s t r e (cid:258) c i 5 Kup książkęPoleć książkę Spis tre(cid:258)ci Rozdzia(cid:228) 3. Wzorce i wyra(cid:285)enia XPath 55 Lokalizowanie w(cid:218)z(cid:239)ów .........................................................................................................56 Ustalanie bie(cid:285)(cid:200)cego w(cid:218)z(cid:239)a ...................................................................................................58 Odwo(cid:239)ywanie si(cid:218) do w(cid:218)z(cid:239)a bie(cid:285)(cid:200)cego .................................................................................59 Wybieranie dzieci danego w(cid:218)z(cid:239)a .........................................................................................60 Wybieranie rodzica lub rodze(cid:241)stwa danego w(cid:218)z(cid:239)a ............................................................61 Wybieranie atrybutów w(cid:218)z(cid:239)a ...............................................................................................62 Warunkowe wybieranie w(cid:218)z(cid:239)ów .........................................................................................63 Tworzenie bezwzgl(cid:218)dnych (cid:258)cie(cid:285)ek lokalizacji ....................................................................64 Wybieranie wszystkich potomków ......................................................................................65 Rozdzia(cid:228) 4. i c (cid:258) e r t s i p S Rozdzia(cid:228) 5. Funkcje XPath 67 Porównywanie dwóch warto(cid:258)ci ...........................................................................................68 Testowanie pozycji ...............................................................................................................69 Mno(cid:285)enie, dzielenie, dodawanie i odejmowanie ...............................................................70 Liczenie w(cid:218)z(cid:239)ów ...................................................................................................................71 Formatowanie liczb ..............................................................................................................72 Zaokr(cid:200)glanie liczb ................................................................................................................73 Wyodr(cid:218)bnianie podci(cid:200)gów ..................................................................................................74 Zmienianie wielko(cid:258)ci znaków w ci(cid:200)gu .............................................................................75 Sumowanie warto(cid:258)ci .............................................................................................................76 Wi(cid:218)cej funkcji j(cid:218)zyka XPath ................................................................................................77 XSL-FO 79 Dwie cz(cid:218)(cid:258)ci dokumentu XSL-FO .......................................................................................80 Tworzenie dokumentu XSL-FO ..........................................................................................81 Tworzenie i stylizowanie bloków zawarto(cid:258)ci strony ...........................................................82 Dodawanie obrazków ...........................................................................................................83 Definiowanie szablonu strony .............................................................................................84 Tworzenie nag(cid:239)ówka szablonu strony .................................................................................85 Tworzenie dokumentów XSL-FO za pomoc(cid:200) XSLT .........................................................86 Wstawianie podzia(cid:239)ów stron ................................................................................................87 Wy(cid:258)wietlanie zawarto(cid:258)ci strony w kolumnach ...................................................................88 Dodawanie szablonu nowej strony ......................................................................................89 Cz(cid:246)(cid:264)(cid:232) III DTD Rozdzia(cid:228) 6. 91 Tworzenie dokumentów DTD 93 Praca z dokumentami DTD .................................................................................................94 Definiowanie elementu zawieraj(cid:200)cego tekst ......................................................................95 Definiowanie pustego elementu .........................................................................................96 Definiowanie elementu, który zawiera element-dziecko ..................................................97 Definiowanie elementu, który zawiera kilka elementów-dzieci .......................................98 Definiowanie liczby wyst(cid:200)pie(cid:241) ............................................................................................99 6 Kup książkęPoleć książkę Spis tre(cid:258)ci Rozdzia(cid:228) 7. Definiowanie wyborów ......................................................................................................100 Definiowanie elementu, który ma dowoln(cid:200) zawarto(cid:258)(cid:202) ....................................................101 Kilka s(cid:239)ów o atrybutach ......................................................................................................102 Definiowanie atrybutów ....................................................................................................103 Definiowanie warto(cid:258)ci domy(cid:258)lnych ..................................................................................104 Definiowanie atrybutów z wyborami ...................................................................................105 Definiowanie atrybutów z warto(cid:258)ciami unikatowymi ......................................................106 Odwo(cid:239)ywanie si(cid:218) do atrybutów z warto(cid:258)ciami unikatowymi ...........................................107 Ograniczanie atrybutów do poprawnych nazw XML ......................................................108 Encje i notacje w dokumentach DTD 109 Tworzenie encji ogólnej .....................................................................................................110 Korzystanie z encji ogólnych .............................................................................................111 Tworzenie zewn(cid:218)trznej encji ogólnej ....................................................................................112 Korzystanie z zewn(cid:218)trznych encji ogólnych .....................................................................113 Tworzenie encji dla zawarto(cid:258)ci nieparsowanej ................................................................114 Wstawianie zawarto(cid:258)ci nieparsowanej ..............................................................................116 Tworzenie i wykorzystywanie encji parametrycznych .................................................118 Tworzenie zewn(cid:218)trznej encji parametrycznej ..................................................................119 Rozdzia(cid:228) 8. Walidacja i u(cid:285)ywanie DTD 121 Tworzenie zewn(cid:218)trznego dokumentu DTD .....................................................................122 Deklarowanie zewn(cid:218)trznego DTD ...................................................................................123 Deklarowanie i tworzenie wewn(cid:218)trznego DTD ..............................................................124 Walidacja dokumentów XML wzgl(cid:218)dem DTD ...............................................................125 Nazywanie publicznego zewn(cid:218)trznego DTD ...................................................................126 Deklarowanie publicznego zewn(cid:218)trznego DTD ..............................................................127 Wady i zalety DTD ............................................................................................................128 S p i s t r e (cid:258) c i Cz(cid:246)(cid:264)(cid:232) IV XML Schema Rozdzia(cid:228) 9. 129 Podstawy XML Schema 131 Praca z XML Schema .........................................................................................................132 Rozpoczynanie prostego dokumentu XML Schema ........................................................134 Wi(cid:200)zanie XML Schema z dokumentem XML .................................................................135 Dodawanie adnotacji do schematów ....................................................................................136 Rozdzia(cid:228) 10. Definiowanie typów prostych 137 Definiowanie elementu jako typu prostego ......................................................................138 U(cid:285)ywanie typów daty i czasu .............................................................................................140 U(cid:285)ywanie typów liczbowych .............................................................................................142 Predefiniowanie zawarto(cid:258)ci elementu ..............................................................................143 Wywodzenie niestandardowych typów prostych .............................................................144 Wywodzenie nazwanych typów niestandardowych .........................................................145 7 Kup książkęPoleć książkę i c (cid:258) e r t s i p S Spis tre(cid:258)ci Okre(cid:258)lanie zakresu dopuszczalnych warto(cid:258)ci ...................................................................146 Okre(cid:258)lanie zbioru dopuszczalnych warto(cid:258)ci .....................................................................148 Ograniczanie d(cid:239)ugo(cid:258)ci elementu .......................................................................................149 Okre(cid:258)lanie wzorca dla elementu .......................................................................................150 Ustawianie limitu cyfr w liczbie ........................................................................................152 Wywodzenie typu listy .......................................................................................................153 Wywodzenie typu (cid:239)(cid:200)czonego .............................................................................................154 Rozdzia(cid:228) 11. Definiowanie typów z(cid:239)o(cid:285)onych 155 Podstawy typów z(cid:239)o(cid:285)onych ................................................................................................156 Wywodzenie anonimowych typów z(cid:239)o(cid:285)onych ..................................................................158 Wywodzenie nazwanych typów z(cid:239)o(cid:285)onych .......................................................................159 Definiowanie typów z(cid:239)o(cid:285)onych, które zawieraj(cid:200) elementy-dzieci ..................................160 Ustalanie okre(cid:258)lonej sekwencji dla wyst(cid:218)powania elementów-dzieci ............................161 Dopuszczanie, aby elementy-dzieci pojawia(cid:239)y si(cid:218) w dowolnej kolejno(cid:258)ci ........................162 Tworzenie zbioru wyborów ...............................................................................................163 Definiowanie elementów zawieraj(cid:200)cych wy(cid:239)(cid:200)cznie tekst ................................................164 Definiowanie pustych elementów .....................................................................................165 Definiowanie elementów z zawarto(cid:258)ci(cid:200) mieszan(cid:200) ...........................................................166 Wywodzenie typów z(cid:239)o(cid:285)onych z innych istniej(cid:200)cych typów z(cid:239)o(cid:285)onych ......................167 Odwo(cid:239)ywanie si(cid:218) do elementów zdefiniowanych globalnie ............................................168 Kontrolowanie liczby wyst(cid:200)pie(cid:241) .......................................................................................169 Definiowanie nazwanych grup modelowych ....................................................................170 Odwo(cid:239)ywanie si(cid:218) do nazwanej grupy modelowej ............................................................171 Definiowanie atrybutów ....................................................................................................172 Wymaganie atrybutu ..........................................................................................................173 Predefiniowanie zawarto(cid:258)ci atrybutu ................................................................................174 Definiowanie grup atrybutów ...........................................................................................175 Odwo(cid:239)ywanie si(cid:218) do grup atrybutów ...................................................................................176 Lokalne i globalne definicje ...............................................................................................177 Cz(cid:246)(cid:264)(cid:232) V Przestrzenie nazw Rozdzia(cid:228) 12. Przestrzenie nazw XML 179 181 Projektowanie nazwy przestrzeni nazw ............................................................................182 Deklarowanie domy(cid:258)lnej przestrzeni nazw ......................................................................183 Deklarowanie prefiksu nazwy przestrzeni nazw ..............................................................184 Oznaczanie elementów prefiksem przestrzeni nazw .......................................................185 W jaki sposób przestrzenie nazw wp(cid:239)ywaj(cid:200) na atrybuty ..................................................186 Rozdzia(cid:228) 13. U(cid:285)ywanie przestrzeni nazw XML 187 Wype(cid:239)nianie przestrzeni nazw XML ................................................................................188 Dokumenty XML Schema, dokumenty XML oraz przestrzenie nazw ...........................189 Odwo(cid:239)ywanie si(cid:218) do komponentów XML Schema w przestrzeniach nazw ......................190 8 Kup książkęPoleć książkę Spis tre(cid:258)ci Przestrzenie nazw i walidacja dokumentów XML ...........................................................191 Dodawanie wszystkich elementów zdefiniowanych lokalnie ..........................................192 Dodawanie poszczególnych elementów zdefiniowanych lokalnie .....................................193 Definicje XML Schema w kilku plikach ...........................................................................194 Dokumenty XML Schema z kilkoma przestrzeniami nazw ............................................195 Schemat schematów jako ustawienie domy(cid:258)lne ...............................................................196 Przestrzenie nazw i dokumenty DTD ..................................................................................197 XSLT i przestrzenie nazw ..................................................................................................198 Cz(cid:246)(cid:264)(cid:232) VI Najnowsze rekomendacje W3C Rozdzia(cid:228) 14. XSLT 2.0 199 201 Rozszerzanie XSLT ............................................................................................................202 Tworzenie uproszczonego arkusza stylów ........................................................................203 Generowanie dokumentów wynikowych XHTML ..........................................................204 Generowanie wielu dokumentów wynikowych ................................................................205 Tworzenie funkcji definiowanych przez u(cid:285)ytkownika .....................................................206 Wywo(cid:239)ywanie funkcji definiowanych przez u(cid:285)ytkownika ...............................................207 Grupowanie danych wynikowych na podstawie wspólnych warto(cid:258)ci .............................208 Walidacja plików wynikowych XSLT ...............................................................................209 Rozdzia(cid:228) 15. XPath 2.0 211 XPath 1.0 i XPath 2.0 .........................................................................................................212 U(cid:258)rednianie warto(cid:258)ci w sekwencji ....................................................................................214 Wyznaczanie warto(cid:258)ci minimalnej lub maksymalnej .......................................................215 Formatowanie ci(cid:200)gów znaków ...........................................................................................216 Testowanie warunków .......................................................................................................217 Kwantyfikacja warunku ......................................................................................................218 Usuwanie zduplikowanych pozycji ...................................................................................219 Zap(cid:218)tlanie sekwencji ..........................................................................................................220 U(cid:285)ywanie bie(cid:285)(cid:200)cej daty i czasu .........................................................................................221 Pisanie komentarzy ............................................................................................................222 Przetwarzanie danych wej(cid:258)ciowych typu nie-XML .........................................................223 Rozdzia(cid:228) 16. XQuery 1.0 225 XQuery 1.0 a XSLT 2.0 ......................................................................................................226 Redagowanie dokumentu XQuery ....................................................................................227 Identyfikowanie dokumentu (cid:283)ród(cid:239)owego XML ...............................................................228 U(cid:285)ywanie wyra(cid:285)e(cid:241) (cid:258)cie(cid:285)kowych .......................................................................................229 Pisanie wyra(cid:285)e(cid:241) FLWOR ..................................................................................................230 Testowanie za pomoc(cid:200) wyra(cid:285)e(cid:241) warunkowych ................................................................232 (cid:146)(cid:200)czenie dwóch powi(cid:200)zanych (cid:283)róde(cid:239) danych ...................................................................233 Tworzenie i wywo(cid:239)ywanie funkcji definiowanych przez u(cid:285)ytkownika ...........................234 XQuery i bazy danych ........................................................................................................235 9 S p i s t r e (cid:258) c i Kup książkęPoleć książkę Spis tre(cid:258)ci Cz(cid:246)(cid:264)(cid:232) VII XML w praktyce Rozdzia(cid:228) 17. Ajax, RSS, SOAP i inne zastosowania j(cid:218)zyka XML 237 239 Podstawy technologii Ajax .................................................................................................240 Przyk(cid:239)ady zastosowania techniki Ajax ............................................................................242 Podstawy RSS .....................................................................................................................245 Schematy RSS ....................................................................................................................246 Rozszerzanie RSS ...............................................................................................................247 SOAP i us(cid:239)ugi internetowe ................................................................................................249 Schemat komunikatu SOAP ..............................................................................................250 WSDL .................................................................................................................................251 Podstawy KML ...................................................................................................................253 Prosty plik KML .................................................................................................................254 ODF i OOXML ..................................................................................................................255 eBook, ePub itp. .................................................................................................................257 Narz(cid:218)dzia dla XML-a w praktyce .....................................................................................259 Dodatki 261 Narz(cid:218)dzia XML 263 Edytory XML .....................................................................................................................264 Dodatkowe edytory XML ..................................................................................................266 Narz(cid:218)dzia i zasoby XML ....................................................................................................267 Zestawy znaków i encje 269 Okre(cid:258)lanie sposobu kodowania znaków ............................................................................270 U(cid:285)ywanie numerycznych odwo(cid:239)a(cid:241) znakowych ................................................................271 Korzystanie z referencji encji ............................................................................................272 Znaki Unicode ....................................................................................................................273 Skorowidz 275 Dodatek A Dodatek B i c (cid:258) e r t s i p S 10 Kup książkęPoleć książkę Tworzenie dokumentów DTD 6 Rozdzia(cid:225) 6. Tworzenie dokumentów DTD [RS1] W cz(cid:218)(cid:258)ci I tej ksi(cid:200)(cid:285)ki zapozna(cid:239)e(cid:258) si(cid:218) z bazow(cid:200) gramatyk(cid:200) XML-a, która okre(cid:258)la regu(cid:239)y pisania dokumentów XML. W cz(cid:218)(cid:258)ci II nauczy(cid:239)e(cid:258) si(cid:218) przekszta(cid:239)ca(cid:202) dokumenty XML do innej postaci, któr(cid:200) w naszym przypadku by(cid:239)y pliki HTML. Z kolei w cz(cid:218)(cid:258)ci III dowiesz si(cid:218), jak zdefiniowa(cid:202) niestandardowy j(cid:218)zyk znaczników w XML-u. Aby zdefiniowa(cid:202) taki j(cid:218)zyk, musisz najpierw okre(cid:258)li(cid:202) jego elementy oraz ich atrybuty, a tak(cid:285)e zadeklarowa(cid:202), które s(cid:200) wymagane, a które nie. Takie informacje zwane s(cid:200) schematem (ang. schema). Historyk móg(cid:239)by na przyk(cid:239)ad utworzy(cid:202) j(cid:218)zyk Cs(cid:258)ML, (fikcyjny) j(cid:218)zyk znaczników cudów staro(cid:285)ytnego (cid:258)wiata, b(cid:218)d(cid:200)cy systemem katalogowania danych dotycz(cid:200)cych cudów staro(cid:285)ytno(cid:258)ci. Cs(cid:258)ML móg(cid:239)by zawiera(cid:202) takie elementy jak cud, nazwa, rok_wybudowania oraz dzieje. Schematy, chocia(cid:285) nie s(cid:200) wymagane, s(cid:200) niezwykle istotne dla zachowania spójno(cid:258)ci dokumentów XML. W rzeczywisto(cid:258)ci mo(cid:285)esz porówna(cid:202) dowolny dokument XML z odpowiadaj(cid:200)cym mu schematem, aby zweryfikowa(cid:202), czy jest on zgodny z regu(cid:239)ami zdefiniowanymi w tym schemacie (patrz rozdzia(cid:239) 8.). Je(cid:258)li taki dokument XML zostanie uznany za poprawny, oznacza to, (cid:285)e jego dane maj(cid:200) w(cid:239)a(cid:258)ciw(cid:200) form(cid:218) — tak(cid:200), jaka zosta(cid:239)a okre(cid:258)lona w schemacie. Istniej(cid:200) dwa zasadnicze systemy pisania schematów: DTD oraz XML Schema. DTD, czyli definicja typu dokumentu (ang. Document Type Definition), jest starszym ale szeroko stosowanym systemem ze specyficzn(cid:200) i ograniczon(cid:200) sk(cid:239)adni(cid:200). Kolejne trzy rozdzia(cid:239)y po(cid:258)wi(cid:218)cone s(cid:200) pisaniu schematów w stylu DTD. Drugi podstawowy system, XML Schema, zosta(cid:239) opisany szczegó(cid:239)owo w cz(cid:218)(cid:258)ci IV tej ksi(cid:200)(cid:285)ki. Z ró(cid:285)nych powodów mo(cid:285)esz preferowa(cid:202) jeden lub drugi system (patrz podrozdzia(cid:239) „Wady i zalety DTD” w rozdziale 8.). T w o r z e n i e d o k u m e n t ó w D T D 93 Kup książkęPoleć książkę Rysunek 6.1. Oto jeden z pierwszych dokumentów XML, które napotka(cid:239)e(cid:258) w tej ksi(cid:200)(cid:285)ce. Sk(cid:239)ada si(cid:218) z czterech elementów: elementu g(cid:239)ównego o nazwie cud oraz trzech elementów-dzieci (nazwa, lokalizacja i wysokosc) Rysunek 6.2. Ten fragment kodu DTD definiuje struktur(cid:218) dokumentu XML pokazanego na rysunku 6.1. Mo(cid:285)na go odczyta(cid:202) nast(cid:218)puj(cid:200)co. Element cud zawiera trzy elementy-dzieci: nazwa, lokalizacja i wysokosc. Wszystkie s(cid:200) elementami typu PCDATA. PCDATA zosta(cid:239)o omówione szczegó(cid:239)owo w podrozdziale „Definiowanie elementu zawieraj(cid:200)cego tekst”. Teraz powiem tylko, (cid:285)e PCDATA to po prostu tekst Rozdzia(cid:239) 6. Praca z dokumentami DTD DTD, czyli definicja typu dokumentu (ang. Document Type Definition), jest zbiorem regu(cid:239), które definiuj(cid:200) niestandardowy j(cid:218)zyk znaczników w XML-u. DTD w swej istocie po prostu identyfikuje elementy i ich atrybuty. Je(cid:258)li dokument XML nie stosuje si(cid:218) do regu(cid:239) zdefiniowanych przez DTD, nie jest uznawany za poprawny dla tego konkretnego j(cid:218)zyka niestandardowego. Za pomoc(cid:200) takiego testu walidacji mo(cid:285)esz szybko rozpozna(cid:202), czy dany dokument XML przestrzega zasad, które zdefiniowa(cid:239)e(cid:258) dla swojego j(cid:218)zyka, czy te(cid:285) nie. Jak ju(cid:285) wspomniano, XML wykorzystuje te same bloki sk(cid:239)adowe co HTML: elementy, atrybuty oraz warto(cid:258)ci. Elementy s(cid:200) fundamentalnymi jednostkami dokumentu XML (rysunek 6.1). Mog(cid:200) one przyjmowa(cid:202) warto(cid:258)ci, posiada(cid:202) atrybuty oraz zawiera(cid:202) inne elementy. Schemat DTD dla danego j(cid:218)zyka znaczników niestandardowych b(cid:218)dzie definiowa(cid:239) list(cid:218) elementów oraz wszelkich elementów-dzieci, które ka(cid:285)dy element mo(cid:285)e mie(cid:202) (rysunek 6.2). B(cid:218)dzie te(cid:285) definiowa(cid:239) wszelkie atrybuty, które ka(cid:285)dy element mo(cid:285)e posiada(cid:202), oraz b(cid:218)dzie definiowa(cid:239), czy te elementy i atrybuty s(cid:200) opcjonalne czy wymagane. W ten sposób DTD definiuje prawid(cid:239)ow(cid:200) struktur(cid:218) j(cid:218)zyka znaczników niestandardowych, a zatem równie(cid:285) dowolny poprawny dokument XML, który jest cz(cid:218)(cid:258)ci(cid:200) tego j(cid:218)zyka. DTD jest dokumentem wy(cid:239)(cid:200)cznie tekstowym i zwyczajowo jest zapisywany z rozszerzeniem .dtd. Nie jest on dokumentem XML i dlatego nie rozpoczyna si(cid:218) od standardowej deklaracji XML. Wskazówki (cid:23) Zastosowanie dokumentów DTD jest doskona(cid:239)ym sposobem zapewnienia spójno(cid:258)ci danych XML udost(cid:218)pnianych ró(cid:285)nym osobom i firmom. Przed u(cid:285)yciem dokumentów XML otrzymywanych od innych osób mo(cid:285)esz wykorzystywa(cid:202) DTD do sprawdzania, czy dokumenty te maj(cid:200) w(cid:239)a(cid:258)ciwy format. (cid:23) Do sprawdzenia zgodno(cid:258)ci dokumentu XML z danym dokumentem DTD b(cid:218)dziesz potrzebowa(cid:239) edytora XML lub jakiego(cid:258) procesora DTD. Szczegó(cid:239)owe informacje na temat tych dwóch typów narz(cid:218)dzi znajdziesz w dodatku A. 94 D T D i m a t n e m u k o d z a c a r P Kup książkęPoleć książkę Tworzenie dokumentów DTD Definiowanie elementu zawieraj(cid:200)cego tekst Aby zdefiniowa(cid:202) w DTD struktur(cid:218) w(cid:239)asnego j(cid:218)zyka znaczników niestandardowych, powiniene(cid:258) zdefiniowa(cid:202) struktur(cid:218) i zawarto(cid:258)(cid:202) elementów, które posiada(cid:239)by poprawny dokument XML. Wiele elementów w Twoim dokumencie XML b(cid:218)dzie zawiera(cid:202) po prostu tekst (rysunek 6.3). O ile element adres mo(cid:285)e zawiera(cid:202) elementy potomne, takie jak ulica, miasto, wojewodztwo i kod_pocztowy, to ju(cid:285) te elementy prawdopodobnie b(cid:218)d(cid:200) zawiera(cid:202) jedynie tekst. Aby zdefiniowa(cid:202) element, który zawiera wy(cid:239)(cid:200)cznie tekst: 1. Wpisz !ELEMENT znacznik, gdzie znacznik jest nazw(cid:200) elementu, który chcesz zdefiniowa(cid:202). 2. Nast(cid:218)pnie wpisz (#PCDATA) (pami(cid:218)taj o nawiasach!). To okre(cid:258)la, (cid:285)e dany element ma dopuszcza(cid:202) jedynie zawarto(cid:258)(cid:202) tekstow(cid:200). 3. Wpisz , aby zako(cid:241)czy(cid:202) definicj(cid:218) elementu (rysunek 6.4). Wskazówka (cid:23) Skrótowiec PCDATA (ang. parsed character data) oznacza parsowane dane znakowe i odnosi si(cid:218) do warto(cid:258)ci tekstowej elementu. Te dane znakowe b(cid:218)d(cid:200) parsowane lub analizowane przez procesor XML. (cid:23) Tekst (zwany równie(cid:285) ci(cid:200)giem znaków) mo(cid:285)e by(cid:202) dowoln(cid:200) seri(cid:200) liter, liczb i symboli, np. „Halo”, „Privet Dr. 4” lub „99811”. (cid:23) Element, który zosta(cid:239) zdefiniowany tak, aby zawiera(cid:202) PCDATA, nie mo(cid:285)e zawiera(cid:202) (cid:285)adnego innego elementu. (cid:23) W j(cid:218)zyku XML wielko(cid:258)(cid:202) liter ma znaczenie. S(cid:239)owo !ELEMENT ma by(cid:202) zapisywane dok(cid:239)adnie w taki w(cid:239)a(cid:258)nie sposób. Zapis !Element po prostu nie jest poprawny. Nie zapominaj tak(cid:285)e o wykrzykniku. Dla elementu mo(cid:285)esz zastosowa(cid:202) nazw(cid:218) o zapisie mieszanym (ma(cid:239)e i wielkie litery), o ile zawsze b(cid:218)dziesz odwo(cid:239)ywa(cid:239) si(cid:218) do niego dok(cid:239)adnie w ten sam sposób. Wiele aplikacji XML stosuje ma(cid:239)e litery. Dzi(cid:218)ki temu nie musisz po(cid:258)wi(cid:218)ca(cid:202) dodatkowego czasu na zapami(cid:218)tywanie, jakiej wielko(cid:258)ci znaków powiniene(cid:258) u(cid:285)y(cid:202) w ka(cid:285)dym z przypadków. 95 D e f i n i o w a n i e e l e m e n t u z a w i e r a j (cid:200) c e g o t e k s t Rysunek 6.3. Zwró(cid:202) uwag(cid:218), (cid:285)e w tej uproszczonej wersji dokumentu g(cid:239)ównego XML wi(cid:218)kszo(cid:258)(cid:202) elementów zawiera tekst. (Niektóre z nich zawieraj(cid:200) równie(cid:285) atrybuty, które zosta(cid:239)y omówione w podrozdziale „Na temat atrybutów”). Elementy-dzieci elementu historia równie(cid:285) zawieraj(cid:200) tekst, przy czym sam element historia tekstu nie zawiera. Elementy zawieraj(cid:200)ce elementy-dzieci zosta(cid:239)y omówione w podrozdziale „Definiowanie elementu, który zawiera element-dziecko” Rysunek 6.4. Prawie ka(cid:285)dy dokument DTD b(cid:218)dzie zawiera(cid:239) elementy, które zosta(cid:239)y zdefiniowane jako PCDATA. W tym fragmencie kodu DTD pokaza(cid:239)em wszystkie elementy z rysunku 6.3, które zosta(cid:239)y zdefiniowane jako elementy zawieraj(cid:200)ce tekst Kup książkęPoleć książkę Rysunek 6.5. W tym fragmencie kodu XML elementy obrazek_glowny i zrodlo s(cid:200) elementami pustymi. Nie ma znaczenia, czy wykorzystuj(cid:200) one pojedynczy znacznik otwieraj(cid:200)cy/zamykaj(cid:200)cy, czy osobne znaczniki otwieraj(cid:200)ce i zamykaj(cid:200)ce. I tak oba s(cid:200) elementami pustymi Rysunek 6.6. Oto fragment DTD definiuj(cid:200)cy elementy z rysunku 6.5. Definiowanie ich atrybutów zosta(cid:239)o omówione w podrozdziale „Na temat atrybutów” Rozdzia(cid:239) 6. Definiowanie pustego elementu Poza elementami zawieraj(cid:200)cymi tekst, dokumenty DTD musz(cid:200) mie(cid:202) równie(cid:285) mo(cid:285)liwo(cid:258)(cid:202) definiowania pustych elementów. Jak wspomniano w rozdziale 1., pusty element nie ma (cid:285)adnej w(cid:239)asnej zawarto(cid:258)ci. Zamiast tego wykorzystuje on atrybuty s(cid:239)u(cid:285)(cid:200)ce do przechowywania danych (rysunek 6.5). Aby zdefiniowa(cid:202) pusty element: 1. Wpisz !ELEMENT znacznik, gdzie znacznik jest nazw(cid:200) elementu, który chcesz zdefiniowa(cid:202). 2. Nast(cid:218)pnie wpisz EMPTY, aby wskaza(cid:202), (cid:285)e dany element nie b(cid:218)dzie posiada(cid:239) w(cid:239)asnej zawarto(cid:258)ci tekstowej. 3. Wreszcie wpisz , aby zako(cid:241)czy(cid:202) definicj(cid:218) elementu (rysunek 6.6). Wskazówki (cid:23) Zwró(cid:202) uwag(cid:218), (cid:285)e wpisuj(cid:200)c EMPTY, nie u(cid:285)ywasz nawiasów, tak jak jest to wymagane przy (#PCDATA). (cid:23) Jak ju(cid:285) wspomniano, puste elementy b(cid:218)d(cid:200) posiada(cid:239)y atrybuty, które zosta(cid:239)y omówione w podrozdziale „Na temat atrybutów”. u t n e m e l e o g e t s u p e i n a w o i n i f e D 96 Kup książkęPoleć książkę Tworzenie dokumentów DTD Definiowanie elementu, który zawiera element-dziecko Teraz, kiedy rozumiesz ju(cid:285), jak definiuje si(cid:218) podstawowe elementy XML w DTD, powiniene(cid:258) nauczy(cid:202) si(cid:218) definiowania elementów-rodziców, czyli elementów zawieraj(cid:200)cych inne elementy (rysunek 6.7). Aby zdefiniowa(cid:202) element, który ma zawiera(cid:202) element-dziecko: 1. Wpisz !ELEMENT znacznik, gdzie znacznik jest nazw(cid:200) elementu, który chcesz zdefiniowa(cid:202). 2. Nast(cid:218)pnie wpisz (dziecko), gdzie dziecko jest nazw(cid:200) elementu, który b(cid:218)dzie zawarty w elemencie definiowanym. 3. Wreszcie wpisz , aby zako(cid:241)czy(cid:202) definicj(cid:218) elementu (rysunek 6.8). Wskazówki (cid:23) Znacznik, który zosta(cid:239) zdefiniowany tak, aby zawiera(cid:202) jeden inny element, nie mo(cid:285)e zawiera(cid:202) niczego innego poza tym elementem. Nie mo(cid:285)e on zawiera(cid:202) innych dodatkowych elementów ani tekstu. (cid:23) Element-dziecko mo(cid:285)e by(cid:202) opcjonalny lub pojawia(cid:202) si(cid:218) wielokrotnie. Wi(cid:218)cej informacji na ten temat znajdziesz w podrozdziale „Definiowanie liczby wyst(cid:200)pie(cid:241)”. (cid:23) Mo(cid:285)esz tak(cid:285)e kontrolowa(cid:202) kolejno(cid:258)(cid:202), w jakiej elementy powinny pojawia(cid:202) si(cid:218) w dokumencie XML (patrz podrozdzia(cid:239) „Definiowanie elementu, który zawiera kilka elementów-dzieci”). (cid:23) Je(cid:258)li zdefiniujesz, (cid:285)e dany element zawiera element-dziecko, to dany element musi zawiera(cid:202) wskazany element-dziecko w ka(cid:285)dym wyst(cid:200)pieniu w dokumencie XML. Je(cid:285)eli tak nie b(cid:218)dzie, dokument XML nie zostanie uznany za poprawny. D e f i n i o w a n i e e l e m e n t u 97 Rysunek 6.7. W tej uproszczonej wersji dokumentu g(cid:239)ównego XML element cuda_starozytnosci zawiera pojedynczy element-dziecko o nazwie cud Rysunek 6.8. Ta definicja DTD okre(cid:258)la, (cid:285)e element cuda_starozytnosci mo(cid:285)e zawiera(cid:202) pojedynczy element-dziecko o nazwie cud, tak jak pokazano na rysunku 6.7. Uwaga! Zawarto(cid:258)(cid:202) elementu cud zale(cid:285)y tylko od jego definicji (a przynajmniej nie wp(cid:239)ywa na ni(cid:200) definicja elementu cuda_staro(cid:285)ytno(cid:258)ci) Kup książkęPoleć książkę Rozdzia(cid:239) 6. Definiowanie elementu, który zawiera kilka elementów-dzieci Cz(cid:218)sto dokument XML zawiera sekwencj(cid:218) elementów-dzieci (rysunek 6.9). W DTD mo(cid:285)esz zdefiniowa(cid:202) sekwencj(cid:218) elementów-dzieci, które musz(cid:200) by(cid:202) zawarte w danym elemencie-rodzicu. Taka sekwencja definiuje równie(cid:285) kolejno(cid:258)(cid:202), w jakiej dane elementy-dzieci maj(cid:200) si(cid:218) pojawi(cid:202). Aby zdefiniowa(cid:202) element zawieraj(cid:200)cy elementy-dzieci: 1. Wpisz !ELEMENT znacznik, gdzie znacznik jest nazw(cid:200) elementu, który chcesz zdefiniowa(cid:202). 2. Nast(cid:218)pnie wpisz (dziecko1, gdzie dziecko1 jest pierwszym elementem, który powinien pojawi(cid:202) si(cid:218) w danym elemencie-rodzicu. 3. Dalej wpisz dziecko2, gdzie dziecko2 jest kolejnym elementem, który powinien pojawi(cid:202) si(cid:218) w danym elemencie-rodzicu. Elementy-dzieci oddzielaj przecinkiem i spacj(cid:200). 4. Powtarzaj punkt 3. dla wszystkich elementów, które powinny pojawi(cid:202) si(cid:218) w elemencie-rodzicu. 5. Nast(cid:218)pnie wpisz ), aby zako(cid:241)czy(cid:202) sekwencj(cid:218). 6. Wpisz , aby zako(cid:241)czy(cid:202) definicj(cid:218) elementu (rysunek 6.10). Wskazówki (cid:23) Najbardziej istotn(cid:200) rzecz(cid:200) w sekwencji jest przecinek. Jest to znak rozdzielaj(cid:200)cy elementy (lub grupy elementów) w sekwencji. (cid:23) Nie mo(cid:285)esz u(cid:285)ywa(cid:202) (#PCDATA) w (cid:285)adnej cz(cid:218)(cid:258)ci sekwencji. Sekwencja musi zawiera(cid:202) jedynie elementy. (cid:23) Elementy zawarte w sekwencji mog(cid:200) oczywi(cid:258)cie zawiera(cid:202) w(cid:239)asne elementy-dzieci. Element historia zdefiniowany na rysunku 6.10 zawiera faktycznie cztery indywidualne elementy-dzieci (co wida(cid:202) na rysunku 6.12). 98 u t n e m e l e e i n a w o i n i f e D Rysunek 6.9. Element cud posiada wiele elementów-dzieci. Zwró(cid:202) uwag(cid:218), (cid:285)e spora cz(cid:218)(cid:258)(cid:202) z tych elementów posiada atrybuty, które zosta(cid:239)y omówione szczegó(cid:239)owo w podrozdziale „Na temat atrybutów” Rysunek 6.10. Ta definicja DTD, wykorzystywana do walidacji dokumentu XML z rysunku 6.9, mówi, (cid:285)e element cud musi zawiera(cid:202) ka(cid:285)dy z wymienionych elementów w danej kolejno(cid:258)ci. Nie mo(cid:285)e te(cid:285) zawiera(cid:202) niczego innego Kup książkęPoleć książkę Rysunek 6.11. Znaki specjalne (zwane równie(cid:285) kwantyfikatorami) sprawiaj(cid:200), (cid:285)e dana definicja jest znacznie bardziej elastyczna. Teraz element cuda_starozytnosci musi zawiera(cid:202) co najmniej jeden (lub dowolnie wi(cid:218)cej) element cud. Ponadto element cud musi zawiera(cid:202) co najmniej jeden (lub dowolnie wi(cid:218)cej) element nazwa, a elementów zrodlo mo(cid:285)e by(cid:202) dowolna liczba (mo(cid:285)e ich te(cid:285) nie by(cid:202) w ogóle). Elementy lokalizacja, wysokosc, historia oraz obrazek_glowny musz(cid:200) pojawi(cid:202) si(cid:218) dok(cid:239)adnie raz (co jest ustawieniem domy(cid:258)lnym) Rysunek 6.12. Ta definicja elementu historia mówi, (cid:285)e element ten musi zawiera(cid:202) dok(cid:239)adnie jeden element rok_wybudowania i dok(cid:239)adnie jeden element dzieje. Elementy rok_zniszczenia i sposob_zniszczenia mog(cid:200) by(cid:202) pomini(cid:218)te (lub mog(cid:200) pojawi(cid:202) si(cid:218) co najwy(cid:285)ej raz) Tworzenie dokumentów DTD Definiowanie liczby wyst(cid:200)pie(cid:241) Jak dot(cid:200)d element-rodzic móg(cid:239) zawiera(cid:202) tylko jedn(cid:200) instancj(cid:218) ka(cid:285)dego ze swoich elementów-dzieci. Jednak DTD dopuszcza wi(cid:218)cej ni(cid:285) tylko jedn(cid:200) instancj(cid:218) elementu-dziecka w dokumencie XML. W DTD istniej(cid:200) trzy specjalne symbole, które mog(cid:200) by(cid:202) wykorzystane do zdefiniowania liczby wyst(cid:200)pie(cid:241) elementu-dziecka w elemencie-rodzicu (rysunki 6.11 i 6.12). Aby zdefiniowa(cid:202) liczb(cid:218) wyst(cid:200)pie(cid:241): 1. W definicji elementu, w cz(cid:218)(cid:258)ci dotycz(cid:200)cej zawarto(cid:258)ci, wpisz nazw(cid:218) elementu-dziecka. 2. Nast(cid:218)pnie wpisz *, aby wskaza(cid:202), (cid:285)e dany element-dziecko mo(cid:285)e pojawia(cid:202) si(cid:218) w definiowanym elemencie-rodzicu tyle razy, ile to konieczne lub nie pojawia(cid:202) si(cid:218) w ogóle (zero lub kilka razy). Mo(cid:285)esz te(cid:285) wpisa(cid:202) +, aby wskaza(cid:202), (cid:285)e dany element-dziecko musi pojawi(cid:202) si(cid:218) w definiowanym elemencie-rodzicu dowoln(cid:200) liczb(cid:218) razy, ale co najmniej raz (jeden lub kilka razy). Mo(cid:285)esz równie(cid:285) wpisa(cid:202) ?, aby wskaza(cid:202), (cid:285)e dany element-dziecko mo(cid:285)e pojawi(cid:202) si(cid:218) w definiowanym elemencie-rodzicu nie wi(cid:218)cej ni(cid:285) raz lub w ogóle (zero lub jeden raz). Wskazówki (cid:23) Powtórzmy: * oznacza zero lub kilka razy; + oznacza jeden lub kilka razy; ? oznacza zero lub tylko raz. (cid:23) Nale(cid:285)y pami(cid:218)ta(cid:202), (cid:285)e element bez kwantyfikatora musi pojawi(cid:202) si(cid:218) dok(cid:239)adnie jeden raz. (cid:23) Kwantyfikatorów mo(cid:285)esz równie(cid:285) u(cid:285)ywa(cid:202) do zdefiniowania liczby wyst(cid:200)pie(cid:241) dla sekwencji (patrz podrozdzia(cid:239) „Definiowanie elementu, który zawiera kilka elementów-dzieci”). (cid:23) Nie istnieje (cid:285)aden specjalny sposób definiowania konkretnej liczby wyst(cid:218)powania elementu (np. trzy wyst(cid:200)pienia). Jedyny (i do(cid:258)(cid:202) obszerny) sposób to napisanie: (element, element, element). 99 D e f i n i o w a n i e l i c z b y w y s t (cid:200) p i e (cid:241) Kup książkęPoleć książkę Rozdzia(cid:239) 6. Definiowanie wyborów Czasem chcemy, (cid:285)eby element XML zawiera(cid:239) jedn(cid:200) rzecz lub drug(cid:200) — do wyboru (rysunek 6.13). Aby zdefiniowa(cid:202) wybory dla zawarto(cid:258)ci elementu: 1. Wpisz !ELEMENT znacznik, gdzie znacznik jest nazw(cid:200) elementu, który chcesz zdefiniowa(cid:202). 2. Nast(cid:218)pnie wpisz (dziecko1, gdzie dziecko1 jest pierwszym elementem-dzieckiem, który mo(cid:285)e si(cid:218) pojawi(cid:202). 3. Nast(cid:218)pnie wpisz |, aby wskaza(cid:202), (cid:285)e je(cid:258)li pojawi si(cid:218) pierwszy element-dziecko, element zdefiniowany jako alternatywny ju(cid:285) si(cid:218) pojawi(cid:202) nie mo(cid:285)e (i odwrotnie). 4. Dalej wpisz dziecko2, gdzie dziecko2, jest drugim elementem, który mo(cid:285)e si(cid:218) pojawi(cid:202). 5. Powtórz czynno(cid:258)ci z punktów 3. – 4. dla ka(cid:285)dego dodatkowego wyboru. 6. Wpisz ), aby zako(cid:241)czy(cid:202) list(cid:218) wyborów. 7. Wpisz , aby zako(cid:241)czy(cid:202) definicj(cid:218) elementu (rysunek 6.14). Wskazówki (cid:23) Mo(cid:285)esz doda(cid:202) kwantyfikator * po punkcie 6. powy(cid:285)szej procedury, aby element móg(cid:239) mie(cid:202) dowoln(cid:200) liczb(cid:218) dowolnych wyborów (patrz podrozdzia(cid:239) „Definiowanie liczby wyst(cid:200)pie(cid:241)”). (cid:23) Kiedy kwantyfikator * zostanie zastosowany do listy wyborów, oznacza to, (cid:285)e dany element mo(cid:285)e zawiera(cid:202) dowoln(cid:200) liczb(cid:218) indywidualnych wyborów w dowolnej kolejno(cid:258)ci. W efekcie powoduje to utworzenie nieuporz(cid:200)dkowanej listy wyborów. (cid:23) W niektórych przypadkach mo(cid:285)esz chcie(cid:202), aby element posiada(cid:239) zarówno zawarto(cid:258)(cid:202), jak i elementy-dzieci. Nazywa si(cid:218) to zawarto(cid:258)ci(cid:200) mieszan(cid:200) (ang. mixed content) i zosta(cid:239)o przedstawione na rysunku 6.13. W takiej sytuacji musisz doda(cid:202) kwantyfikator * w sposób opisany w powy(cid:285)szych wskazówkach. Uwaga! Takiego rozwi(cid:200)zania nie u(cid:285)ywa si(cid:218) zbyt cz(cid:218)sto podczas pisania w(cid:239)asnego j(cid:218)zyka niestandardowych znaczników. Korzysta si(cid:218) z tego raczej w trakcie pisania dokumentu DTD, aby móg(cid:239) on obs(cid:239)ugiwa(cid:202) wiele dokumentów XML pochodz(cid:200)cych z ró(cid:285)nych (cid:283)róde(cid:239). 100 w ó r o b y w e i n a w o i n i f e D Rysunek 6.13. Wyobra(cid:283) sobie, (cid:285)e informacje o cudach staro(cid:285)ytno(cid:258)ci pochodz(cid:200) z trzech ró(cid:285)nych (cid:283)róde(cid:239), a ka(cid:285)de (cid:283)ród(cid:239)o ma inn(cid:200) struktur(cid:218) elementu cud Rysunek 6.14. To DTD wykorzystuje wybory, (cid:285)eby obs(cid:239)u(cid:285)y(cid:202) ró(cid:285)ne struktury elementu cud pokazane na rysunku 6.13. Definicja ta deklaruje, (cid:285)e element cud mo(cid:285)e mie(cid:202) zero lub wi(cid:218)cej wyst(cid:200)pie(cid:241) b(cid:218)d(cid:200)cych typami PCDATA elementów nazwa, lokalizacja, kraj lub miasto Rysunek 6.15. Oto kolejny sposób na napisanie logiki DTD z rysunku 6.12. Tutaj DTD definiuje element historia w taki sposób, (cid:285)e mo(cid:285)e on zawiera(cid:202) albo elementy rok_wybudowania, rok_zniszczenia, sposob_zniszczenia i dzieje, albo jedynie elementy rok_wybudowania i dzieje Kup książkęPoleć książkę Tworzenie dokumentów DTD Definiowanie elementu, który ma dowoln(cid:200) zawarto(cid:258)(cid:202) Chocia(cid:285) DTD nie jest idealne do tworzenia uporz(cid:200)dkowanego zestawu regu(cid:239), to w takim dokumencie mo(cid:285)esz zdefiniowa(cid:202) element, który ma dowoln(cid:200) zawarto(cid:258)(cid:202). Oznacza to, (cid:285)e element ten mo(cid:285)e zawiera(cid:202) dowoln(cid:200) kombinacj(cid:218) elementów i tekstu. Podobnie jak w przypadku zawarto(cid:258)ci mieszanej, jest to przydatne przy tworzeniu DTD, które ma obs(cid:239)ugiwa(cid:202) dokumenty XML pochodz(cid:200)ce z ró(cid:285)nych (cid:283)róde(cid:239). Dla niemo(cid:285)liwej do przewidzenia struktury elementów mo(cid:285)e to by(cid:202) jedyny sposób na zdefiniowanie elementów, które znasz i dopuszczasz (rysunek 6.16). Aby zdefiniowa(cid:202) element, który mo(cid:285)e mie(cid:202) dowoln(cid:200) zawarto(cid:258)(cid:202): 1. Wpisz !ELEMENT znacznik, gdzie znacznik jest nazw(cid:200) elementu, który chcesz zdefiniowa(cid:202). 2. Nast(cid:218)pnie wpisz ANY, aby dany element móg(cid:239) zawiera(cid:202) dowoln(cid:200) kombinacj(cid:218) elementów i parsowanych danych znakowych. 3. Wpisz , aby zako(cid:241)czy(cid:202) definicj(cid:218) elementu (rysunek 6.17). Wskazówki (cid:23) Korzystaj(cid:200)c z instrukcji ANY, powiniene(cid:258) zachowa(cid:202) zdrowy rozs(cid:200)dek. Celem dokumentu DTD jest zdefiniowanie regu(cid:239) dotycz(cid:200)cych tego, co mog(cid:200), a czego nie mog(cid:200) zawiera(cid:202) elementy. Je(cid:258)li chcesz dopu(cid:258)ci(cid:202), aby ka(cid:285)dy element mia(cid:239) dowoln(cid:200) zawarto(cid:258)(cid:202), mo(cid:285)esz równie dobrze w ogóle zrezygnowa(cid:202) z DTD. Dokumenty DTD nie s(cid:200) wymagane. Pomagaj(cid:200) po prostu zachowa(cid:202) spójno(cid:258)(cid:202) danych. (cid:23) Instrukcja ANY definiuje, (cid:285)e dany element mo(cid:285)e zawiera(cid:202) dowoln(cid:200) struktur(cid:218). Je(cid:258)li jednak element ten zawiera elementy-dzieci, te elementy wci(cid:200)(cid:285) musz(cid:200) by(cid:202) zdefiniowane w DTD. Innymi s(cid:239)owy — ANY nie pozwala, aby element zawiera(cid:239) elementy-dzieci, które nie zosta(cid:239)y zdefiniowane w DTD. Wszystkie elementy pojawiaj(cid:200)ce si(cid:218) w poprawnym dokumencie XML musz(cid:200) by(cid:202) i tak zdefiniowane. (cid:23) Ka(cid:285)dy element musi by(cid:202) zdefiniowany dok(cid:239)adnie raz (i tylko raz). Nawet je(cid:258)li jaki(cid:258) element mo(cid:285)e pojawia(cid:202) si(cid:218) w wielu ró(cid:285)nych miejscach poprawnego dokumentu XML, nadal musi by(cid:202) zdefiniowany tylko raz. 101 D e f i n i o w a n i e e l e m e n t u Rysunek 6.16. Tutaj do dokumentu XML z rysunku 6.13 doda(cid:239)em kolejny element cud (z nowego nieoczekiwanego (cid:283)ród(cid:239)a). Ten nowy element cud ma jeszcze inn(cid:200) struktur(cid:218). Zwró(cid:202) uwag(cid:218), (cid:285)e w tym nowym elemencie element lokalizacja nie zawiera (cid:285)adnych typów PCDATA. Jest on raczej elementem- rodzicem dla elementów kraj i miasto Rysunek 6.17. Zamiast do DTD z rysunku 6.14 dodawa(cid:202) definicj(cid:218) nowej struktury elementu lokalizacja, zdefiniowa(cid:239)em, aby ten element móg(cid:239) zawiera(cid:202) cokolwiek. Nie jest to tak czytelne jak zdefiniowanie konkretnej zawarto(cid:258)ci dla elementu lokalizacja, ale dzia(cid:239)a Kup książkęPoleć książkę Rysunek 6.18. Oba fragmenty kodu XML zawieraj(cid:200) t(cid:218) sam(cid:200) informacj(cid:218): pos(cid:200)g Zeusa w Olimpii zosta(cid:239) zniszczony w roku 426 w wyniku po(cid:285)aru. Ró(cid:285)nica polega na tym, jak te informacje zosta(cid:239)y zorganizowane. W pierwszym kodzie 426 jest warto(cid:258)ci(cid:200) atrybutu. W drugim kodzie zarówno 426, jak i po(cid:285)ar stanowi(cid:200) zawarto(cid:258)(cid:202) indywidualnych elementów Rozdzia(cid:239) 6. Kilka s(cid:239)ów o atrybutach Atrybuty s(cid:200) u(cid:285)yteczne przy dostarczaniu dodatkowych danych na temat elementu. Informacje umieszczone w atrybutach raczej opisuj(cid:200) zawarto(cid:258)(cid:202) dokumentu XML, a nie s(cid:200) sam(cid:200) zawarto(cid:258)ci(cid:200). Przyk(cid:239)adowo je(cid:258)li w dokumencie g(cid:239)ównym XML Cuda staro(cid:285)ytnego (cid:258)wiata element nazwa zawiera atrybut jezyk opisuj(cid:200)cy j(cid:218)zyk, w którym podana jest zawarto(cid:258)(cid:202) elementu nazwa, mo(cid:285)na by (cid:239)atwo zrestrukturyzowa(cid:202) dany dokument XML tak, aby ta sama informacja znajdowa(cid:239)a si(cid:218) w dwóch indywidualnych elementach-dzieciach. Element nazwa móg(cid:239)by zawiera(cid:202) dwa elementy: jezyk oraz nazwa_lokalna. Ka(cid:285)dy sposób jest dobry, ale zasadniczo najlepsze praktyki sugeruj(cid:200), (cid:285)e elementy lepiej nadaj(cid:200) si(cid:218) do przechowywania informacji, które maj(cid:200) by(cid:202) wy(cid:258)wietlane, a atrybuty lepiej sprawdzaj(cid:200) si(cid:218) do przechowywania informacji o informacjach. Istnieje ku temu kilka przes(cid:239)anek. Atrybuty nie mog(cid:200) opisywa(cid:202) relacji mi(cid:218)dzy danymi, tak jak robi(cid:200) to elementy-dzieci, warto(cid:258)ci atrybutów nie mog(cid:200) by(cid:202) w prosty sposób zweryfikowane przez DTD i wreszcie atrybuty nie mog(cid:200) zawiera(cid:202) kilku warto(cid:258)ci, podczas gdy elementy-dzieci maj(cid:200) tak(cid:200) mo(cid:285)liwo(cid:258)(cid:202). Atrybuty s(cid:200) oczywi(cid:258)cie cz(cid:218)sto wykorzystywane w pustych elementach, gdzie opisuj(cid:200) informacje na temat danego elementu. S(cid:200) one na przyk(cid:239)ad cz(cid:218)sto stosowane do przechowywania identyfikatorów, poniewa(cid:285) atrybuty nie s(cid:200) danymi, ale informacjami na temat tych danych (patrz podrozdzia(cid:239) „Definiowanie atrybutów z warto(cid:258)ciami unikatowymi”). Wskazówka (cid:23) Decyzja co do sposobu, w jaki zdecydujesz si(cid:218) opracowa(cid:202) swój j(cid:218)zyk XML, powinna by(cid:202) oparta na jego zastosowaniu. Je(cid:258)li nie zamierzasz zbyt wiele „robi(cid:202)” z konkretn(cid:200) porcj(cid:200) informacji, wtedy utworzenie jej w formie atrybutu jest w porz(cid:200)dku. Je(cid:258)li jednak zamierzasz korzysta(cid:202) z tej informacji w bardziej znacz(cid:200)cy sposób, wtedy lepszym rozwi(cid:200)zaniem jest umieszczenie jej w postaci zawarto(cid:258)ci elementu (rysunek 6.18). h c a t u b y r t a o w ó (cid:239) s a k l i K 102 Kup książkęPoleć książkę Rysunek 6.19. Ta definicja atrybutu mówi, (cid:285)e element wysokosc mo(cid:285)e zawiera(cid:202) opcjonalny atrybut jednostka (z uwagi na status #IMPLIED), który zawiera tekst (z uwagi na typ atrybutu CDATA) Rysunek 6.20. Zgodnie z definicj(cid:200) DTD z rysunku 6.19, wszystkie widoczne na rysunku fragmenty kodu XML s(cid:200) prawid(cid:239)owe, poniewa(cid:285) atrybut jednostka jest opcjonalny (#IMPLIED), a jego zawarto(cid:258)ci(cid:200) mo(cid:285)e by(cid:202) dowolna kombinacja znaków Rysunek 6.21. Ta wersja definicji mówi, (cid:285)e w elemencie wysokosc atrybut jednostka jest wymagany Rysunek 6.22. S(cid:200) to te same trzy przyk(cid:239)ady, które zosta(cid:239)y pokazane na rysunku 6.20. Jednak po przeprowadzeniu walidacji wzgl(cid:218)dem DTD z rysunku 6.21 tylko ostatnie dwa okazuj(cid:200) si(cid:218) poprawne. Pierwszy fragment kodu nie jest prawid(cid:239)owy, poniewa(cid:285) element wysokosc nie zawiera atrybutu jednostka Tworzenie dokumentów DTD Definiowanie atrybutów Atrybut nie mo(cid:285)e pojawi(cid:202) si(cid:218) w poprawnym pliku XML dopóty, dopóki nie zostanie zadeklarowany w DTD. Definicja atrybutu sk(cid:239)ada si(cid:218) z czterech cz(cid:218)(cid:258)ci: nazwy elementu, nazwy atrybutu, typu atrybutu oraz statusu opcjonalnego. Aby zdefiniowa(cid:202) atrybut: 1. Wpisz !ATTLIST znacznik, gdzie znacznik jest nazw(cid:200) elementu, w którym ma si(cid:218) pojawi(cid:202) dany atrybut. 2. Nast(cid:218)pnie wpisz nazwa_atrybutu, gdzie nazwa_atrybutu definiuje nazw(cid:218) danego atrybutu. 3. Dalej wpisz CDATA, aby wskaza(cid:202), (cid:285)e typem atrybutu jest tekst. W przeciwie(cid:241)stwie do danych typu (#PCDATA), CDATA, czyli dane znakowe, nie b(cid:218)d(cid:200) parsowane przez procesor. 4. Nast(cid:218)pnie dla opcjonalnego statusu wpisz #IMPLIED, aby wskaza(cid:202), (cid:285)e w razie potrzeby dany atrybut mo(cid:285)e by(cid:202) pomini(cid:218)ty (rysunek 6.19). Mo(cid:285)esz te(cid:285) wpisa(cid:202) #REQUIRED, aby wskaza(cid:202), (cid:285)e dany atrybut nie mo(cid:285)e by(cid:202) pomini(cid:218)ty i musi zawiera(cid:202) jak(cid:200)(cid:258) warto(cid:258)(cid:202) (rysunek 6.21). 5. Wreszcie wpisz , aby zako(cid:241)czy(cid:202) definicj(cid:218) atrybutu. Wskazówki (cid:23) Zwró(cid:202) uwag(cid:218), (cid:285)e we wszystkich cz(cid:218)(cid:258)ciach definicji atrybutu wa(cid:285)na jest wielko(cid:258)(cid:202) liter. Musisz je wpisywa(cid:202) w takiej samej formie, w jakiej poda(cid:239)em je w przyk(cid:239)adach. Wpisanie na przyk(cid:239)ad #Required nie ma w DTD (cid:285)adnego znaczenia. (cid:23) Mo(cid:285)esz zdefiniowa(cid:202) wszystkie atrybuty dla danego elementu w pojedynczej definicji atrybutu. Przed zako(cid:241)czeniem definicji atrybutu w punkcie 5. powy(cid:285)szej procedury powtarzaj czynno(cid:258)ci z punktów 2. – 4. dla ka(cid:285)dego atrybutu, który dany element powinien posiada(cid:202). Jest to najbardziej typowy sposób definiowania wielu atrybutów dla pojedynczego elementu. D e f i n i o w a n i e a t r y b u t ó w 103 Kup książkęPoleć książkę Rozdzia(cid:239) 6. Definiowanie warto(cid:258)ci domy(cid:258)lnych Zamiast wpisywania instrukcji #REQUIRED lub #IMPLIED w ramach opcjonalnego statusu atrybutu, mo(cid:285)esz zdefiniowa(cid:202), aby atrybut ten posiada(cid:239) warto(cid:258)ci domy(cid:258)lne. Aby zdefiniowa(cid:202) atrybut z w(cid:239)a(cid:258)ciwo(cid:258)ciami domy(cid:258)lnymi: 1. Wed(cid:239)ug punktów 1., 2. i 3. z procedury opisanej w podrozdziale „Definiowanie atrybutów” zdefiniuj nazw(cid:218) elementu, nazw(cid:218) atrybutu oraz typ atrybutu. 2. Nast(cid:218)pnie wpisz warto(cid:258)(cid:202)_domy(cid:258)lna (cudzys(cid:239)ów otwieraj(cid:200)cy i zamykaj(cid:200)cy jest wymagany), gdzie warto(cid:258)(cid:202)_domy(cid:258)lna b(cid:218)dzie warto(cid:258)ci(cid:200) tego atrybutu, je(cid:258)li (cid:285)adna inna warto(cid:258)(cid:202) nie zostanie zdefiniowana w dokumencie XML (rysunek 6.23). Mo(cid:285)esz te(cid:285) wpisa(cid:202) #FIXED warto(cid:258)(cid:202)_domy(cid:258)lna , gdzie warto(cid:258)(cid:202)_domy(cid:258)lna b(cid:218)dzie warto(cid:258)ci(cid:200) tego atrybutu, je(cid:258)li (cid:285)adna warto(cid:258)(cid:202) nie zostanie w wyra(cid:283)ny sposób zdefiniowana. Ponadto je(cid:258)li warto(cid:258)(cid:202) tego atrybutu zostanie zdefiniowana, to musi ona by(cid:202) równa warto(cid:258)ci domy(cid:258)lnej, aby dany dokument XML by(cid:239) poprawny (rysunek 6.25). 3. Wpisz , aby zako(cid:241)czy(cid:202) definicj(cid:218) atrybutu. Wskazówki (cid:23) Je(cid:258)li definiujesz atrybut z warto(cid:258)ci(cid:200) domy(cid:258)ln(cid:200), parser XML automatycznie doda t(cid:218) warto(cid:258)(cid:202) domy(cid:258)ln(cid:200), je(cid:285)eli atrybut nie zostanie ustawiony w danym dokumencie XML (rysunek 6.24). (cid:23) Je(cid:258)li definiujesz atrybut z instrukcj(cid:200) #FIXED warto(cid:258)(cid:202)_domy(cid:258)lna , warto(cid:258)(cid:202) atrybutu w dokumencie XML musi by(cid:202) ustawiona na warto(cid:258)(cid:202)_domy(cid:258)ln(cid:200), je(cid:285)eli jest w ogóle ustawiona. Je(cid:258)li atrybut nie jest ustawiony, parser automatycznie ustawi dla niego warto(cid:258)(cid:202) domy(cid:258)ln(cid:200) (rysunek 6.26). (cid:23) Nie mo(cid:285)esz (cid:239)(cid:200)czy(cid:202) warto(cid:258)ci domy(cid:258)lnej z instrukcj(cid:200) #REQUIRED lub #IMPLIED. W rzeczywisto(cid:258)ci, skoro warto(cid:258)(cid:202) domy(cid:258)lna jest ju(cid:285) zdefiniowana, status opcjonalny praktycznie nie ma sensu. h c y n l (cid:258) y m o d i c (cid:258) o t r a w e i n a w o i n i f e D 104 Rysunek 6.23. Tym razem dodaj(cid:218) domy(cid:258)ln(cid:200) warto(cid:258)(cid:202) metr dla atrybutu wysokosc Rysunek 6.25. Warto(cid:258)(cid:202) ustalona mo(cid:285)e by(cid:202) u(cid:285)yteczna, je(cid:258)li chcesz mie(cid:202) pewno(cid:258)(cid:202), (cid:285)e dany atrybut b(cid:218)dzie mia(cid:239) okre(cid:258)lon(cid:200) warto(cid:258)(cid:202), bez wzgl(cid:218)du na to, czy faktycznie pojawi si(cid:218) w danym dokumencie XML Rysunek 6.24. Wszystkie te fragmenty kodu XML s(cid:200) poprawne. Atrybut jednostka mo(cid:285)e posiada(cid:202) dowoln(cid:200) warto(cid:258)(cid:202), a nawet mo(cid:285)e zosta(cid:202) pomini(cid:218)ty. Je(cid:258)li — tak jak w trzecim kodzie — atrybut jednostka zostanie pomini(cid:218)ty, parser zachowa si(cid:218) tak, jakby ten atrybut by(cid:239) w rzeczywisto(cid:258)ci obecny, a jego warto(cid:258)ci(cid:200) by(cid:239)a stopa Rysunek 6.26. S(cid:200) to te same trzy przyk(cid:239)ady, które zosta(cid:239)y pokazane na rysunku 6.24. Jednak po przeprowadzeniu walidacji wzgl(cid:218)dem definicji DTD pokazanej na rysunku 6.25, (cid:258)rodkowy kod nie jest ju(cid:285) poprawny. Je(cid:258)li dany atrybut zostanie ustalony, musi posiada(cid:202) warto(cid:258)(cid:202) metr (a nie stopa czy inny ci(cid:200)g znaków). Zwró(cid:202) uwag(cid:218), (cid:285)e w przypadku trzeciego fragmentu kodu parser zachowuje si(cid:218) tak, jakby warto(cid:258)ci(cid:200) atrybutu jednostka faktycznie by(cid:239) metr Kup książkęPoleć książkę Rysunek 6.27. W tym przyk(cid:239)adzie chc(cid:218) dopu(cid:258)ci(cid:202) tylko dwie mo(cid:285)liwe warto(cid:258)ci dla atrybutu jednostka w elemencie wysokosc: metr lub centymetr. Lista wyborów umieszczona jest w nawiasach, a do rozdzielenia pozycji zastosowa(cid:239)em pionow(cid:200) kresk(cid:218). Zwró(cid:202) uwag(cid:218), (cid:285)e dany atrybut musi by(cid:202) ustalony (z powodu warto(cid:258)ci #REQUIRED) Rysunek 6.28. Spo(cid:258)ród tych trzech fragmentów kodu XML tylko pierwszy jest poprawny wzgl(cid:218)dem definicji DTD z rysunku 6.27. (cid:165)rodkowy kod jest nieprawid(cid:239)owy, poniewa(cid:285) metr nie jest dopuszczalnym wyborem dla zawarto(cid:258)ci tego atrybutu. Trzeci fragment jest nieprawid(cid:239)owy, poniewa(cid:285) brakuje atrybutu jednostka, chocia(cid:285) jest on wymagany (#REQUIRED) Tworzenie dokumentów DTD Definiowanie atrybutów z wyborami Dokumenty DTD obs(cid:239)uguj(cid:200) typy atrybutów, które dopuszczaj(cid:200) znacznie wi(cid:218)cej ni(cid:285) tylko dane znakowe. Jeden z takich typów pozwala definiowa(cid:202) atrybut, który obs(cid:239)uguje ró(cid:285)ne predefiniowane wybory (rysunek 6.27). Aby zdefiniowa(cid:202) atrybut
Pobierz darmowy fragment (pdf)

Gdzie kupić całą publikację:

XML. Szybki start. Wydanie II
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ą: