XML. Tworzenie stron WWW z wykorzystaniem XML, CSS, XHTML oraz XSLT. Niebieski podrêcznik



Podobne dokumenty
Rola języka XML narzędziem

XML Schema. Bartłomiej Świercz. Łódź, 19 listopada 2005 roku. Katedra Mikroelektroniki i Technik Informatycznych. Bartłomiej Świercz XML Schema

Po zakończeniu rozważań na temat World Wide Web, poznaniu zasad organizacji witryn WWW, przeczytaniu kilkudziesięciu stron i poznaniu wielu nowych

29. Poprawność składniowa i strukturalna dokumentu XML

Tworzenie prezentacji w MS PowerPoint

XML Schema. Typy proste, wyprowadzanie typów, modularyzacja schematu. Patryk Czarnik. Instytut Informatyki UW

Przewodnik Szybki start

Zadanie 1. Stosowanie stylów

Dodawanie grafiki i obiektów

Instrukcja obsługi Zaplecza epk w zakresie zarządzania tłumaczeniami opisów procedur, publikacji oraz poradników przedsiębiorcy

etrader Pekao Podręcznik użytkownika Strumieniowanie Excel

WYMAGANIA EDUKACYJNE. Witryny i Aplikacje Internetowe klasa I

XML extensible Markup Language. część 4

Wprowadzenie do XML schema

Słowem wstępu. Część rodziny języków XSL. Standard: W3C XSLT razem XPath 1.0 XSLT Trwają prace nad XSLT 3.0

5.4. Tworzymy formularze

1. Przypisy, indeks i spisy.

Spis treści. Rozdział 2. Graficzna oprawa witryny...z Stosowanie motywu...s...s.. 19

Przewodnik Szybki start

Sekretariat Optivum. Jak przygotować listę uczniów zawierającą tylko wybrane dane, np. adresy ucznia i jego opiekunów? Projektowanie listy

INSTRUKCJA obsługi certyfikatów

Wstęp 7 Rozdział 1. OpenOffice.ux.pl Writer środowisko pracy 9

Przewodnik... Tworzenie Landing Page

Wymagania edukacyjne: Statyczne witryny internetowe (na podstawie programu nr )

Stawiamy pierwsze kroki

Bydgoskie Centrum Archiwizacji Cyfrowej sp. z o.o.

1. Dockbar, CMS + wyszukiwarka aplikacji Dodawanie portletów Widok zawartości stron... 3

uczyć się bez zagłębiania się w formalnym otoczeniu,

Zadanie 9. Projektowanie stron dokumentu

Język XML Schema. UEK w Krakowie Janusz Stal & Grażyna Paliwoda-Pękosz. UEK w Krakowie Janusz Stal & Grażyna Paliwoda-Pękosz

Automatyzowanie zadan przy uz yciu makr języka Visual Basic

Formatowanie tekstu przy uz yciu stylo w

CMS - INFORMACJE. *** Mirosław Kuduk E mail: tel. kom DODATKOWE FUNKCJE - PANEL ADMINISTRATORA

Portal zarządzania Version 7.5

Zakres treści Czas. 2 Określenie charakteru i tematyki strony. Rodzaje witryn. Projekt graficzny witryny. Opracowanie skryptów

Pokaz slajdów na stronie internetowej

Zasady tworzenia podstron

WOJEWÓDZTWO PODKARPACKIE

Instrukcja użytkownika

Aplikacje WWW - laboratorium

LAB 7. XML EXtensible Markup Language - Rozszerzalny Język Znaczników XSD XML Schema Definition Definicja Schematu XML

Włączanie/wyłączanie paska menu

Jak stworzyć własny blog w kreatorze Click Web?

EAP XML Legislator Opis zmian w wersji Service Pack 41 ABC PRO Sp. z o.o.

Przewodnik... Tworzenie ankiet

10.2. Udostępnianie zasobów

E.14.1 Tworzenie stron internetowych / Krzysztof T. Czarkowski, Ilona Nowosad. Warszawa, Spis treści

APLIKACJE WCHODZĄCE W SKŁAD PAKIETU MS OFFICE DLA UŻYTKOWNIKÓW DOMOWYCH

ABC 2002/XP PL EXCEL. Autor: Edward C. Willett, Steve Cummings. Rozdział 1. Podstawy pracy z programem (9) Uruchamianie programu (9)

Spis treści. Warto zapamiętać...2. Podstawy...3

HTML, CSS i JavaScript / Laura Lemay, Rafe Colburn, Jennifer Kyrnin. Gliwice, cop Spis treści

Zasady budowy i przekazywania komunikatów XML dla rynku OTC w systemie KDPW_CCP

Instrukcja obsługi systemu zarządzania treścią dwajeden.pl

DODAJEMY TREŚĆ DO STRONY

Zasady budowy i przekazywania komunikatów wykorzystywanych w Systemie IT KDPW_CCP

Zmiana logo. Dziękujemy za wybór naszych rozwiązań. apjoo od Apláuz. Wspólnie przebrniemy przez proces konfiguracji strony www i wstawiania treści.

3.1. Na dobry początek

UONET+ moduł Dziennik

Polityka cookies w serwisie internetowym

2 Podstawy tworzenia stron internetowych

WPROWADZANIE ZLECEŃ POPRZEZ STRONĘ INSTRUKCJA UŻYTKOWNIKA

Kadry Optivum, Płace Optivum

Część 3 - Konfiguracja

World Wide Web? rkijanka

1.Formatowanie tekstu z użyciem stylów

Zasady budowy i przekazywania komunikatów XML w systemie kdpw_otc

UNIWERSYTET RZESZOWSKI KATEDRA INFORMATYKI

Bazy danych Karta pracy 1

CMS- kontakty (mapa)

PROGRAM NAUCZANIA DLA ZAWODU TECHNIK INFORMATYK, O STRUKTURZE PRZEDMIOTOWEJ

Widoczność zmiennych Czy wartości każdej zmiennej można zmieniać w dowolnym miejscu kodu? Czy można zadeklarować dwie zmienne o takich samych nazwach?

UONET+ - moduł Sekretariat. Jak wykorzystać wydruki list w formacie XLS do analizy danych uczniów?

Microsoft Word jak zrobić bibliografię

Aplikacja Novell Filr 2.0 Web Szybki start

Tworzenie prezentacji multimedialnej Microsoft PowerPoint

Lokalizacja jest to położenie geograficzne zajmowane przez aparat. Miejsce, w którym zainstalowane jest to urządzenie.

Instrukcja użytkownika Internetowej Platformy Edukacyjnej UPRP

Uruchamianie bazy PostgreSQL

MATERIAŁY - udostępnianie materiałów dydaktycznych w sieci SGH

WYKŁAD 1 METAJĘZYK SGML CZĘŚĆ 1

MS Word Długi dokument. Praca z długim dokumentem. Kinga Sorkowska

Temat: Organizacja skoroszytów i arkuszy

Zaawansowane aplikacje internetowe - laboratorium

Użycie Visual Basic for Applications ("VBA")

Ćwiczenia nr 2. Edycja tekstu (Microsoft Word)

Dane słowa oraz wyrażenia są tłumaczone przy pomocy polecenia Przetwarzanie > Tłumaczenie

5-6. Struktura dokumentu html. 2 Określenie charakteru i tematyki strony. Rodzaje witryn. Projekt graficzny witryny. Opracowanie skryptów

Zasady budowy i przekazywania komunikatów XML w systemie kdpw_otc

Instrukcja do aplikacji Trezor BUZA Moduł Wykonanie Planów Finansowych

Dokumentacja Administratora portalu. aplikacji. Wirtualna szkoła

Co nowego w programie GM EPC

Podręcznik Użytkownika LSI WRPO

Programowanie dla początkujących w 24 godziny / Greg Perry, Dean Miller. Gliwice, cop Spis treści

Oprogramowanie Użytkowe ćwiczenia Semestr I mgr inż. Daniel Riabcew SWSPiZ

INSTRUKCJA EDYCJI PROFILU OSOBOWEGO W SERWISIE

Synchronizator plików (SSC) - dokumentacja

Elektroniczny Urząd Podawczy

Instrukcja obsługi certyfikatów w programie pocztowym MS Outlook Express 5.x/6.x

Arkusz Optivum. Jak eksportować do SIO dane z Arkusza Optivum?

Transkrypt:

XML. Tworzenie stron WWW z wykorzystaniem XML, CSS, XHTML oraz XSLT. Niebieski podrêcznik Autor: Rob Huddleston T³umaczenie: Andrzej Gra yñski ISBN: 98-8-6-18-8 Tytu³ orygina³u: XML: Your visual blueprint for building expertwebsites with XML, CSS, XHTML, and XSLT (Visual Blueprint) Format: 10 0, stron: 0 Odpowiedzi na wszystkie Twoje pytania dotycz¹ce XML w jednym miejscu! Do czego potrzebujê formatu XML? Jak zapewniæ poprawnoœæ plikom XML? Jak przetworzyæ plik XML do formatu XHTML? XML znaczy tyle, co rozszerzalny jêzyk znaczników. Prawdopodobnie s³owo rozszerzalny w tym skrócie jest najwa niejsze. Oznacza ono, e jako u ytkownik mo esz zdefiniowaæ tyle znaczników, ile tylko jest Ci potrzebnych w danym przypadku. XML jest uniwersalnym jêzykiem formalnym, za pomoc¹ którego mo na reprezentowaæ dane w usystematyzowany, strukturalny sposób. Niezale noœæ od platformy jest niew¹tpliwie t¹ cech¹, która pozwoli³a mu na zdobycie ogromnej popularnoœci sta³ siê on wrêcz swego rodzaju standardem. W dodatku jêzyk ten pozwala na tworzenie stron internetowych przy u yciu XHTML, czyli przedstawienie HTML w postaci XML. Ma³o? Dziêki zastosowaniu XSLT mo esz tak e przekszta³ciæ dowolny dokument XML do postaci XHTML! Dziêki ksi¹ ce XML. Tworzenie stron WWW z wykorzystaniem XML, CSS, XHTML oraz XSLT. Niebieski podrêcznik poznasz podstawy XML i sposób przetwarzania plików XML za pomoc¹ jêzyka XSLT oraz dowiesz siê, jak wybraæ dobry edytor, pozwalaj¹cy na wygodn¹ pracê z dokumentami. W kolejnych rozdzia³ach zdobêdziesz wiedzê na temat sposobów wykorzystania atrybutów i przestrzeni nazw oraz stworzysz swój pierwszy dokument XML. Ponadto nauczysz siê definiowaæ strukturê dokumentu za pomoc¹ schematów i zobaczysz, jak ³atwo mo na oceniaæ poprawnoœæ dokumentów XML. Autor ksi¹ ki zaprezentuje Ci równie technikê generowania dokumentów XML na podstawie istniej¹cych danych, miêdzy innymi w programach Access i Excel, oraz technikê przekszta³cania plików XML do formatu XHTML za pomoc¹ jêzyka XSLT. Je eli interesuje Ciê format XML i formaty pokrewne, trzymasz w rêku ksi¹ kê, której poszukiwania zajê³y Ci tak du o czasu! Wykorzystaj wszystkie mo liwoœci XML w swoich projektach!

Spis treści Jak korzystać z książki... x Rozdział 1. Zaczynamy... Wprowadzenie do języka XML... Wprowadzenie do języka XSLT... Wprowadzenie do języka XHTML... Wprowadzenie do CSS... Dokument XML w przeglądarce WWW... 6 Wprowadzenie do anatomii dokumentu XML... 8 Wybór dobrego edytora... 9 Rozdział. Tworzenie dokumentów XML... 10 Tworzymy pierwszy dokument XML...10 Dane i elementy potomne w dokumentach XML...1 Atrybuty...1 Encje i CDATA... 16 Przestrzenie nazw...18 Rozdział. Definiowanie struktury dokumentów XML za pomocą schematów... 0 Wprowadzenie do schematów...0 Przestrzenie nazw schematów... Elementy złożone... Typy danych...6 Atrybuty...8 Elementy proste...0 Elementy mieszane... Ograniczenie występowania elementów... Kojarzenie dokumentu XML ze schematem...6 Walidacja dokumentu...8 Wizualne tworzenie schematu za pomocą XMLSpy...0 iv

Rozdział. Inne schematy walidacyjne... DTD... Tworzenie DTD...6 Atrybuty...8 Encje...9 Encje parametryczne...0 RELAX NG... XML-owa składnia RELAX NG... Kompaktowa składnia RELAX NG...6 Rozdział. Generowanie dokumentów XML na podstawie istniejących danych...8 Generowanie dokumentów XML z programu Access 00...8 Generowanie dokumentów XML z programu Access 00...60 Generowanie dokumentów XML z programu Excel 00...6 Generowanie dokumentów XML z programu Excel 00...6 Rozdział 6. Podstawy języka XHTML...66 Wprowadzenie do XHTML-a...66 Strona XHTML Transitional...68 Tytuł dokumentu...0 Nagłówki... Tekst... Encje...6 Hiperłącza...8 Obrazy i grafika...80 Tabele...8 Listy...8 Rozdział. Transformowanie dokumentów XML do postaci XHTML za pomocą języka XSLT...86 Podstawy języka XSLT...86 Przestrzeń nazw XSLT...88 XPath...90 v

Spis treści Specyfikowanie formatu wyjściowego...9 Szablony XSLT...9 Transformowanie wartości elementów...96 Tekst otwarty w transformacji...98 Instrukcja apply-templates... 100 Pętle w dokumentach XSLT... 10 Sortowanie... 10 Instrukcje warunkowe... 106 Tworzenie nowych elementów... 108 Dołączanie i importowanie dokumentów...110 Zmienne i parametry...11 Transformacja XSLT wykonywana przez przeglądarkę WWW...11 Transformacja XSLT wykonywana przy użyciu edytora Altova XMLSpy...116 Transformacja XSLT wykonywana w PHP...118 Transformacja XSLT wykonywana w ColdFusion... 10 Transformacja XSLT wykonywana w ASP.NET... 1 Tworzenie dokumentów XSLT za pomocą Adobe Dreamweavera CS... 1 Rozdział 8. Formatowanie stron WWW za pomocą kaskadowych arkuszy stylów (CSS)...16 Podstawy CSS... 16 Zmiana czcionki... 18 Kolorowanie tekstu...10 Tło i obrazki...1 Obrzeże...1 Dopełnienia i marginesy...16 Pozycjonowanie elementów...18 Otaczanie elementu... 10 Kombinacja otaczania, pozycjonowania i marginesów... 1 Stylizowanie grup elementów za pośrednictwem selektorów klas... 1 Stylizowanie wybranych elementów za pośrednictwem selektorów identyfikacyjnych... 16 Selektory kontekstowe... 18 Stylizacja nagłówków... 10 Stylizacja list... 1 vi

Stylizacja hiperłączy... 1 Inne pseudoklasy i pseudoelementy... 16 Podział treści dokumentu na sekcje... 18 Przewodnik po stylach...160 Drukowanie stron WWW...16 Strony WWW w urządzeniach mobilnych...16 Rozdział 9. Z HTML-a do XHTML-a...166 HTML Tidy...166 Konwersja HTML-a na XHTML za pomocą Dreamweavera...168 Usuwanie znaczników prezentacyjnych za pomocą Dreamweavera... 10 Usuwanie tabel za pomocą Dreamweavera... 1 Alternatywny tekst dla obrazków... 1 Rozdział 10. Projektowanie i budowanie serwisu WWW...16 Struktura folderów serwisu WWW... 16 Nawigacja po serwisie... 18 Strona główna (indeksowa)...180 Strona-wizytówka...18 Konwersja pliku-wizytówki do postaci XML...18 Kolekcja ulubionych filmów...188 Konwersja kolekcji filmów do postaci dokumentu XHTML...190 Ikona serwisu...19 Reklamy na stronach WWW...196 Rozdział 11. Publikowanie witryn WWW...198 Hosting...198 Pozyskiwanie własnej domeny... 00 Publikowanie serwisu przez FTP... 0 Publikowanie serwisu przy użyciu Dreamweavera... 0 Publikowanie serwisu przy użyciu SmartFTP... 06 Twoja witryna a wyszukiwarki... 08 vii

Spis treści Rozdział 1. Testowanie i debugowanie... 10 Walidacja dokumentu XHTML... 10 Firebug... 1 Walidacja arkuszy CSS... 1 Weryfikacja dostępności strony...16 Testowanie hiperłączy...18 Najczęstsze błędy w dokumentach XML... 0 Najczęstsze błędy w dokumentach XHTML... Najczęstsze błędy w arkuszach CSS... Najczęstsze błędy XSLT... 6 Błędy wynikające z niezgodności przeglądarek... Problemy z użytecznością strony... 8 Rozdział 1. Integrowanie serwisu WWW z innymi serwisami... 0 RSS... 0 Kanały RSS... Pokaż innym swoje zdjęcia za pomocą serwisu Flickr... Wideoklipy YouTube na stronach WWW... 8 Smak.owi.te hiperłącza... 0 Mapy Google na stronach WWW... Szukaj z Google... viii

Dodatek A: XHTML lista referencyjna...6 Dodatek B: CSS lista referencyjna... 60 Dodatek C: XSD lista referencyjna...6 Dodatek D: XSLT lista referencyjna... Dodatek E: XPath lista referencyjna... 80 Skorowidz...8 ix

Wprowadzenie do schematów Jak wiadomo, twórca dokumentu XML ma bardzo dużą swobodę pod względem definiowania elementów. Aby jednak tworzony dokument był zrozumiały dla innych ludzi i dla parserów, konieczne staje się dostarczenie informacji na temat jego struktury, a konkretnie informacji o tym, jakie elementy będą w dokumencie używane, w jakiej kolejności powinny się pojawiać, które z nich muszą być obowiązkowe użyte i (ewentualnie) jakie atrybuty posiadać może (lub musi) każdy z tych elementów. Definicja schematu WC XML i pokrewne mu technologie opracowany został przez World Wide Web Consortium, w skrócie WC. Dostrzegając konieczność dostarczenia metody definiowania XML-a, konsorcjum to opracowało język o nazwie XML Schema Language, który stał się standardem definiowania poprawnych dokumentów XML. Język ten, sam oparty na XML-u, to język zarówno skomplikowany, jak i bardzo funkcjonalny. Schemat dokumentu XML jest jego planem; samo słowo schemat wywodzi się z języka greckiego i oznacza właśnie kształt lub plan. Niekiedy schematy dokumentów XML określane są mianem ich gramatyki. Schemat schematów No dobrze, ale sama koncepcja schematu XML wyrażona została przez WC w postaci dokumentu XML, co przypomina błędne koło w rodzaju: Co było pierwsze: kura czy jajko?. Jak bowiem zdefiniować schemat dokumentu, którego treścią jest właśnie definicja schematu? Odpowiedź kryje się pod postacią głównego (master) dokumentu nazywanego schematem schematów, opracowanego przez WC i stanowiącego punkt wyjścia do definiowania jakichkolwiek schematów. Definiując więc schemat w odróżnieniu od zwykłego dokumentu XML możemy wykorzystywać jedynie znaczniki zdefiniowane w schemacie schematów XML Data Reduced Schema firmy Microsoft Konsorcjum WC z zasady działa dość wolno, wobec konieczności zbierania materiałów i opinii od programistów z całego świata, dyskutowania pojawiających się problemów i wypracowywania rekomendacji (które znowu muszą być szeroko dyskutowane). Pod koniec lat 90. ubiegłego wieku Microsoft przygotowywał się do wypuszczenia serii produktów wykorzystujących XML i w związku z tym potrzebował narzędzia do definiowania schematów. Ponieważ standard WC nie był jeszcze gotowy, Microsoft opracował własny standard w tym względzie, niestety jak się ostatecznie okazało całkowicie odmienny od WC Schema. Microsoft (sam wchodzący w skład WC) zgodził się więc całkowicie zarzucić własny standard po ukazaniu się WC Schema, i tak się też faktycznie stało. Ponieważ jednak ów zarzucony standard był dostępny publicznie, można natknąć się na schematy definiowane na jego podstawie; w takim przypadku warto rozważyć przepisanie schematu do postaci zgodnej z WC Schema, bowiem ewentualne przyszłe wsparcie dla standardu Microsoftu stoi pod znakiem zapytania. Co jest definiowane w ramach schematu? Mimo iż wielu początkujących twórców skłonnych jest traktować poszczególne dokumenty XML jako niezależne całości, to często zachodzi potrzeba stworzenia szeregu dokumentów różnych, co prawda, ale opartych na tej samej strukturze. Koronnym przykładem takiej sytuacji jest tworzenie witryny WWW, której poszczególne strony przechowują dane w postaci XML wielce prawdopodobnym jest, że na każdej ze stron dane te podporządkowane są pewnemu wspólnemu schematowi. 0

Co jest definiowane w ramach schematu? (kontynuacja) Dokładniej rzecz biorąc, w definicji schematu określone są następujące aspekty struktury dokumentu: nazwa elementu nadrzędnego (root) i sposób różnicowania wielkości liter w tej nazwie, nazwy i sposoby różnicowania wielkości liter dla elementów zagnieżdżonych bezpośrednio w elemencie root, nazwy i sposoby różnicowania wielkości liter dla elementów zagnieżdżonych na niższych poziomach, określenie, które elementy mogą zawierać dane i w których elementach można zagnieżdżać inne elementy, dla elementów, które mogą zawierać dane dozwolony typ tych danych (na przykład tekst lub liczba), Tworzenie schematów Ponieważ definicja schematu jest niczym innym jak dokumentem XML, można ją tworzyć za pomocą tych samych narzędzi, które służą do tworzenia regularnych dokumentów XML. Jeżeli jakaś aplikacja posiada funkcję eksportu danych w formacie XML do wykorzystania w innych aplikacjach prawdopodobnie udostępnia też funkcję eksportu schematu dla tychże danych. Wiele zaawansowanych edytorów XML, jak XMLSpy, oferuje możliwość automatycznego generowania definicji schematu na podstawie przykładowego pliku; istnieją ponadto dedykowane narzędzia do tworzenia schematów. określenie, które elementy muszą wystąpić obowiązkowo w dokumencie, które są opcjonalne i które mogą występować wielokrotnie w dokumencie, określenie, które elemen ty mogą posiadać atrybuty, wraz z bliższą informacją o tychże atrybutach: rodzaju, obowiązkowości lub opcjonalności wystąpienia, rodzaju reprezentowanej informacji, kolejność, w jakiej poszczególne elementy powinny pojawiać się w dokumencie. Co najpierw? Logicznie rzecz biorąc, wydaje się oczywiste, że nie sposób stworzyć dokumentu XML bez podstawowej wiedzy o jego strukturze; wychodzi więc na to, że najpierw trzeba zdefiniować schemat dokumentu. W praktyce jednak kwestia ta rozstrzygana jest nieco mniej rygorystycznie: autorzy, mając jedynie zarys koncepcji struktury, tworzą na jego podstawie zaczątek przykładowego dokumentu, a dopiero potem przystępują do regularnego definiowania schematu, weryfikując w ten sposób uprzednio przyjęte założenia. Rozdział. Definiowanie struktury dokumentów XML za pomocą schematów Publikowanie schematów Niektóre schematy przeznaczone są jedynie dla wąskich, specyficznych potrzeb, niektóre jednak są na tyle uniwersalne, że prawdopodobne jest, iż staną się podstawą masowego tworzenia dokumentów XML, i z tego względu warto je uczynić publicznie dostępnymi. Wiele popularnych technologii, w tym RSS, miało właśnie takie początki. Wykorzystywanie istniejących schematów Wiele organizacji i korporacji opublikowało mnóstwo standaryzowanych schematów XML dla swych gałęzi przemysłu, warto więc poszukać gotowych rozwiązań przed podjęciem decyzji o samodzielnym definiowaniu takiego czy innego schematu. Można w tym celu użyć popularnych wyszukiwarek bądź skontaktować się bezpośrednio z przedstawicielem odpowiedniej firmy. 1

Przestrzenie nazw schematów Schemat jest dokumentem XML, którego strukturę określa schemat schematów narzucający predefiniowany zestaw elementów. Aby jednak ułatwić programistom rozszerzanie koncepcji schematu, owe predefiniowane elementy zanurzone zostały w swej własnej przestrzeni nazw, zatem muszą być specyfikowane z wykorzystywaniem (konsekwentnym) prefiksu identyfikującego tę przestrzeń. Mimo iż może to wydawać się wielce uciążliwe, jest konieczne do tego, by standard XML był tak elastyczny, jak to tylko jest możliwe. Wiele zaawansowanych edytorów XML uwalnia zresztą użytkowników (w dużym stopniu) od tej uciążliwości, m.in. przez automatyczne dodawanie znaczników zamykających opatrzonych właściwymi prefiksami. Podobnie jak przestrzenie nazw w ogólności, tak i przestrzeń nazw schematu definiowana jest w elemencie nadrzędnym (root) dokumentu. W definicji tej konieczne jest odwołanie do oryginalnej definicji schematu schematów znajdującej się pod adresem http://www. w.org/001/xmlschema, przykładowy element nadrzędny mógłby więc rozpoczynać się następującym znacznikiem: <xs:schema xmlns:xs="http://www.w.org/001/ XMLSchema"> Zwróćmy uwagę na znany już atrybut xmlns oraz frazę :schema po definicji przedrostka, która oznacza, że przestrzeń nazw dotyczy właśnie schematu; zdarza się, że początkujący programiści zapominają o tych szczegółach. Zgodnie z wymogami schematu schematów nazwy elementów zapisywane są z użyciem mieszanej wielkości liter, a dokładniej nazwa rozpoczyna się małą literą, zaś początek każdego jej słowa składowego sygnalizowany jest wielką literą. Dotyczy to zarówno nazw samych elementów, jak i nazw i wartości atrybutów. Wykorzystywanie przestrzeni nazw 1 Otwórz nową stronę w edytorze XML. W edytorze XMLSpy kliknij w tym celu przycisk New Document i wybierz z wyświetlonej listy pozycję XML Document. 1 Dodaj prolog XML. Dodaj element root schematu. Utwórz odwołanie do przestrzeni nazw identyfikowanej przez prefiks xs. Dodaj znacznik zamykający element root.

6 8 Kliknij przycisk Check Well-Formedness, by sprawdzić poprawność składniową dokumentu. Informacja o poprawności (albo niepoprawności) dokumentu pojawi się w obszarze walidacji. Kliknij przycisk Check Validity w celu sprawdzenia zgodności dokumentu ze schematem. Informacja o poprawności (albo niepoprawności) dokumentu pojawi się w obszarze walidacji. Zapisz dokument w pliku z rozszerzeniem.xsd. 6 Rozdział. Definiowanie struktury dokumentów XML za pomocą schematów Wskazówka Technicznie rzecz biorąc, prefiks przestrzeni nazw schematu może mieć dowolną postać, określoną przez atrybut xmlns, na przykład: <myschema:schema xmlns:myschema ="http://www.w.org/001/xmlschema"> Gdy jednak weźmie się pod uwagę fakt, że prefiks ten będzie wykorzystywany w treści dokumentu dość intensywnie, staje się oczywiste, iż powinien on składać się z raczej niewielkiej liczby liter. W niniejszej książce konsekwentnie używamy przedrostka xs, który stał się już powszechnie przyjętym standardem w tej roli. Konsorcjum World Wide Web realizuje swój serwis internetowy na bazie serwerów uniksowych. Jak wiadomo, UNIX, w odróżnieniu od Windows, jest systemem wrażliwym na wielkość liter w nazwach plików. Dla przeciętnego użytkownika Internetu fakt ten nie ma znaczenia o tyle, że pliki zawierające dane powiązane ze stronami WWW opatrywane są zazwyczaj nazwami składającymi się wyłącznie z małych liter. Konsorcjum WC wyłamuje się jednak z tej konwencji, stosując różnicowanie wielkości liter a skoro tak, to wszelkie odwołania do nazw plików muszą być zgodne z faktycznymi nazwami tychże plików także co do wielkości liter, w przeciwnym razie przeprowadzenie walidacji dokumentu opisującego schemat okaże się niemożliwe.

Elementy złożone W dokumencie XML mogą występować dwa typy elementów. Elementy proste to takie, które zawierają jedynie dane i pozbawione są atrybutów. Elementy nie posiadające tej własności, w szczególności zagnieżdżające w sobie inne elementy i (lub) wykorzystujące atrybuty, to elementy złożone w typowym dokumencie jest ich więcej niż elementów prostych. W definicji schematu opis struktury elementu rozpoczyna się od znacznika xs:element, w którym specyfikuje się nazwę odnośnego elementu. Opis struktury elementu złożonego jest natomiast określony (w definicji schematu) za pomocą elementu xs:complextype. Jeżeli docelowy element zagnieżdżać będzie w sobie inne elementy (co jest prawdą w przypadku wszystkich niemal elementów root), fakt ten odzwierciedla się w definicji schematu za pomocą elementu xs:sequence. Każdy z zagnieżdżonych elementów (docelowych) opisywany jest z kolei (w definicji schematu) przez osobny element xs:element, zagnieżdżony wewnątrz elementu xs:sequence; opis ten sygnalizuje jednak tylko fakt zagnieżdżania elementu potomnego, bez opisywania tegoż. Oto przykładowa definicja elementu kolekcjafilmow, zagnieżdżającego w sobie element (lub sekwencję elementów) film: <xs:element name="kolekcjafilmow"> <xs:complextype> <xs:sequence> <xs:element name="film" /> </xs:sequence> </xs:complextype> </xs:element> Alternatywą dla deklaracji <xs:sequence> jest deklaracja <xs:choice>, dająca możliwość wyboru użytego elementu: <xs:element name="kolekcjafilmow"> <xs:complextype> <xs:choice> <xs:element name="film" /> <xs:element name="zapowiedz" /> </xs:choice> </xs:complextype> </xs:element> Dodawanie elementów złożonych 1 Otwórz dokument schematu XML. Dodaj znacznik otwierający <xs:element>. Przypisz nazwę do atrybutu name elementu root. Dodaj znacznik otwierający <xs:complextype>. Dodaj znacznik otwierający <xs:sequence>.

6 8 9 10 11 1 1 1 Dodaj znacznik otwierający <xs:element>. Dodaj atrybut name elementu. Przypisz temu atrybutowi nazwę elementu potomnego. Uczyń znacznik <xs:element> samozamykającym. Dodaj znacznik zamykający element <xs:sequence>. Dodaj znacznik zamykający element <xs:complextype>. Dodaj znacznik zamykający element <xs:element>. Kliknij przycisk Check Well-Formedness, by sprawdzić poprawność składniową dokumentu. Informacja o poprawności (albo niepoprawności) dokumentu pojawi się w obszarze walidacji. Kliknij przycisk Check Validity w celu sprawdzenia zgodności dokumentu ze schematem. Informacja o poprawności (albo niepoprawności) dokumentu pojawi się w obszarze walidacji. 10 1 1 6 8 9 11 1 1 Rozdział. Definiowanie struktury dokumentów XML za pomocą schematów 1 Zapisz dokument w pliku z rozszerzeniem.xsd. Uwaga: Dokument powinien zostać zapisany w pliku z rozszerzeniem.xsd, aby mógł być bezbłędnie rozpoznawany jako schemat XML. Zastosuj to W ramach elementu <xs:sequence> możliwe jest określenie sekwencji następstwa elementów pod pojęciem następstwa rozumiemy określone elementy występujące w określonej kolejności, na przykład: <xs:element name="film"> <xs:complextype name="film"> <xs:sequence> <xs:element name="tytul" /> <xs:element name="recenzja" /> </xs:sequence> </xs:complextype> </xs:element>

Typy danych Jedną z podstawowych cech aplikacji bazodanowych (i większości języków programowania) jest definiowanie, różnicowanie i kontrolowanie typów danych specyfikując pole bazy danych, związujemy z nim zwykle dane odpowiedniego typu: tekst, liczbę całkowitą, liczbę dziesiętną, datę itp. W podobny sposób schematy dają możliwość określania typów danych występujących w elementach XML. Dopuszczalnych jest wiele typów elementów, najczęściej jednak wykorzystywane są: string dla zwykłego tekstu, int dla liczb całkowitych, decimal dla liczb zawierających część ułamkową i boolean dla logiki dwuwartościowej true/false. Zgodność postaci danych elementu ze specyfikowanym ich typem jest jednym z warunków poprawności dokumentu XML parser zakwestionuje wszystkie przypadki, w których brak jest takiej zgodności. Miejscem, w którym definiuje się typ danych odnośnego elementu, jest atrybut type znacznika <xs:element> otwierającego definicję tegoż elementu. W przypadku zagnieżdżonej hierarchii elementów (z użyciem znaczników xs:choice lub xs:sequence) dotyczy to elementów na najniższym poziomie zagnieżdżenia. W przypadku elementu złożonego, który elementem złożonym jest jedynie z racji posiadania atrybutu, typ danych specyfikujemy za pomocą atrybutu type znacznika xs:extension. Ponieważ dopuszczalne typy danych predefiniowane są w schemacie schematów, wszelkie wystąpienia ich identyfikatorów muszą być poprzedzone prefiksem identyfikującym przestrzeń nazw schematu. Dodawanie typów danych 1 Otwórz dokument schematu XML. Dodaj znacznik otwierający <xs:element>. Dodaj znacznik otwierający <xs:complextype>. Dodaj znacznik otwierający <xs:sequence> lub <xs:choice>. Dodaj jeden lub kilka znaczników otwierających <xs:element>. 6 Dodaj do każdego z tych znaczników atrybut type. Przypisz każdemu z tych atrybutów stosowną wartość. 8 Zamknij wszystkie elementy otwarte w punkcie. 6 8 6

9 10 11 Kliknij przycisk Check Well-Formedness, by sprawdzić poprawność składniową dokumentu. Informacja o poprawności (albo niepoprawności) dokumentu pojawi się w obszarze walidacji. Kliknij przycisk Check Validity w celu sprawdzenia zgodności dokumentu ze schematem. Informacja o poprawności (albo niepoprawności) dokumentu pojawi się w obszarze walidacji. Kliknij przycisk Save. Dokument zostanie zapisany. 11 9 10 Rozdział. Definiowanie struktury dokumentów XML za pomocą schematów Wskazówka Należy starannie upewnić się, że istotnie wybrano właściwy typ danych dla elementu. Jednym z najczęstszych błędów jest kwalifikowanie jako typy numeryczne danych takich jak numer telefonu, kod pocztowy, numer NIP itp. Owszem, dane te zawierają cyfry, lecz cyfrom tym towarzyszą dodatkowe znaki w rodzaju nawiasów, myślników itp., nieakceptowane w polu numerycznym. Należy przyjąć zasadę, iż typy numeryczne rezerwujemy wyłącznie dla danych podlegających obliczeniom matematycznym, takich jak cena czy ilość. Schemat schematów definiuje rozmaite odmiany typów numerycznych, umożliwiających reprezentowanie liczb całkowitych i dziesiętnych, wraz z ograniczeniem zakresu lub długości części ułamkowej (liczby cyfr dziesiętnych). W związku z powyższym należy regularnie przeprowadzać walidację dokumentów definiujących schematy. W przeciwieństwie do zwykłych dokumentów XML, które co prawda mogą, lecz wcale nie muszą odwoływać się do schematów, każda definicja schematu powołuje się z konieczności na schemat schematów i jako taka nieuchronnie podlega walidacji. Wiele edytorów XML, m.in. Altova XMLSpy, oferuje wbudowane walidatory, które znacząco upraszczają ten proces.

Atrybuty Wiele elementów posiada atrybuty, których rolą jest dokładniejszy opis zawartości. W schemacie atrybuty definiowane są w ramach definicji elementu złożonego. Jeśli ów docelowy element posiada jedynie dane, fakt ten odzwierciedlony zostaje przez deklarację xs:simplecontent; element zagnieżdżający inne elementy deklarowany jest jako xs:complexcontent. W obydwu przypadkach typ atrybutu odnośnego elementu deklarowany jest przez atrybut base znacznika xs:extension, najczęściej jako xs:string (dla tekstów) lub xs:int (dla liczb całkowitych). Nazwa atrybutu definiowana jest (w schemacie) przez atrybut name elementu xs:attribute zagnieżdżonego wewnątrz elementu xs:extension. W elemencie xs:attribute można także określić, za pomocą atrybutu use, sposób traktowania atrybutu: required (obowiązkowy), optional (nieobowiązkowy) albo prohibited (niedozwolony). Opisane zagnieżdżanie definicji może wydawać się dość przytłaczające, lecz staje się coraz bardziej zrozumiałe w miarę nabywania doświadczenia w pracy ze schematami. Czytając opisaną wyżej definicję, można w naturalny sposób wywnioskować, że mamy do czynienia z elementem złożonym (complextype), o prostej zawartości (simplecontent), a typ jego danych rozszerzany jest (extension) przez atrybut o wartości określonego typu. Młodsze od XML-a języki służące do definiowania danych nie mają już co prawda tak rozgadanego charakteru, lecz jednocześnie brak im elastyczności właściwej schematom XML. Użycie elementu xs:extension jest konieczne, ponieważ definicja elementów prostych (xs:simpletype) nie pozwala na definiowanie typów danych. Istotą xs:extension jest rozszerzenie (extension) typu danych na atrybut elementu, nie na sam element. To notabene jedna z takich subtelności, czyniących prawdziwe zrozumienie schematów XML niezwykle trudnym. Dodawanie atrybutów 1 Otwórz dokument schematu XML. Dodaj znacznik otwierający <xs:element>. Nadaj elementowi nazwę, przypisując ją do atrybutu name. Dodaj znacznik otwierający <xs:complextype>. 6 Dodaj znacznik otwierający <xs:simplecontent>. Dodaj znacznik otwierający <xs:extension>. Przypisz atrybutowi base ww. znacznika odpowiedni typ danych. 6 8

8 Dodaj znacznik otwierający <xs:attribute>. 9 Określ nazwę atrybutu docelowego. 10 Określ obowiązkowy charakter atrybutu docelowego. 11 Uczyń znacznik <xs:attribute> samozamykającym. 1 Zamknij element <xs:extension>. 1 Zamknij element <xs:simplecontent>. 1 Zamknij element <xs:complextype>. 1 Zamknij element <xs:element>. 1 1 16 1 Kliknij przycisk Check Well-Formedness, by sprawdzić poprawność składniową dokumentu. Informacja o poprawności (albo niepoprawności) dokumentu pojawi się w obszarze walidacji. Kliknij przycisk Check Validity w celu sprawdzenia zgodności dokumentu ze schematem. Informacja o poprawności (albo niepoprawności) dokumentu pojawi się w obszarze walidacji. 1 18 8 9 10 1 16 1 11 Rozdział. Definiowanie struktury dokumentów XML za pomocą schematów 18 Kliknij przycisk Save. Dokument zostanie zapisany. Zastosuj to Możliwe jest nadanie globalnego charakteru definicjom atrybutów, na początku definicji schematu, i odwoływanie się do tychże definicji w całym dokumencie. Robi się to za pomocą znacznika xs:attributegroup: <xs:attributegroup name="fileattrs"> <xs:attribute name="path" type="xs:string" /> </xs:attributegroup> <xs:element name="filename"> <xs:simplecontent> <xs:extension base="xs:string"> <xs:attributegroup ref="fileattrs" /> </xs:extension> </xs:simplecontent> </xs:element> 9

Elementy proste W typowym dokumencie XML można znaleźć przynajmniej kilka elementów prostych czyli takich, które nie zagnieżdżają w sobie innych elementów i nie zawierają atrybutów, posiadając co najwyżej dane. W schemacie element prosty deklarowany jest za pomocą samozamykającego znacznika xs:element: <xs:element name="autorrecenzji" type="xs:string" /> Jedynym wymaganym atrybutem tego znacznika jest name, określający nazwę elementu; niemal zawsze stosuje się także atrybut type, ten bowiem określa typ danych posiadanych przez odnośny element. Ponadto za pomocą atrybutów minoccurs oraz maxoccurs można określić dozwoloną, odpowiednio: minimalną i maksymalną liczbę wystąpień elementu. Z wyjątkiem przypadku, gdy elementy deklarowane są w ramach sekwencji xs:sequence, kolejność ich występowania w dokumencie jest dowolna, niezależna od kolejności ich deklarowania. Niektórzy programiści zwykli deklarować (w schemacie) najpierw elementy złożone, potem elementy proste, inni z kolei deklarują elementy w kolejności, jakiej oczekiwaliby w docelowym dokumencie. Wszystko to jest kwestią gustu, nie rodzącą żadnych konsekwencji pod adresem dokumentu docelowego. Dodawanie elementów prostych 1 Otwórz dokument schematu XML. Dodaj element zagnieżdżony bezpośrednio w <xs:schema>. Przypisz atrybutowi name nazwę definiowanego elementu. 0

6 Dodaj atrybut type i przypisz mu odpowiednią wartość. Kliknij przycisk Check Well-Formedness, by sprawdzić poprawność składniową dokumentu. Informacja o poprawności (albo niepoprawności) dokumentu pojawi się w obszarze walidacji. Kliknij przycisk Check Validity w celu sprawdzenia zgodności dokumentu ze schematem. Informacja o poprawności (albo niepoprawności) dokumentu pojawi się w obszarze walidacji. Kliknij przycisk Save. Dokument zostanie zapisany. 6 Rozdział. Definiowanie struktury dokumentów XML za pomocą schematów Wskazówka Dodatkowe wymogi pod adresem deklarowanego elementu można określić za pomocą tzw. faset (ang. facets). Schemat schematów oferuje osiem takich faset, spośród których najczęściej używane są te ograniczające długości łańcuchów, definiujące zbiory wartości domyślnych i ograniczające zakres danych liczbowych. Wszystkie one definiowane są pod postacią elementu xs:restrictions. W szczególności xs:minlength i xs:maxlength mogą być użyte do określenia minimalnej i maksymalnej długości łańcucha, a za pomocą xs:enumeration specyfikuje się zestaw możliwych wartości do wyboru. Wreszcie, dopuszczalny zakres wartości liczbowych określić można za pomocą faset xs:mininclusive, xs:maxinclusive, xs:minexclusive i xs:maxexclusive. Oto przykład użycia faset: <xs:element name = "password"> <xs:simpletype> <xs:restriction base="xs:string"> <xs:minlength value="8" /> <xs:maxlength value="16" /> </xs:restriction> </xs:simpletype> </xs:element> 1

Elementy mieszane Elementy złożone to elementy zagnieżdżające w sobie inne ele menty i nie posiadające danych. Jedno nie wyklucza jednak drugiego: elementy zawierające zarówno dane, jak i elementy potomne, noszą nazwę elementów mieszanych. Rozpatrzmy przykładową recenzję filmu: choć może być ona zwykłym tekstem, to równie dobrze może mieć strukturę bardziej skomplikowaną, na przykład w celu uwidocznienia cytowanego tytułu: <recenzja> <para> <tytul>rozmowy kontrolowane</tytul> to kontynuacja losów Ryszarda Ochódzkiego znanego z komedii <tytul>miś</tytul>. </para> </recenzja> W powyższym przykładzie element recenzja zagnieżdża w sobie element potomny para, który z kolei zagnieżdża w sobie zarówno dwa elementy potomne, jak i dane w postaci otartego tekstu. Element para powinien zatem zostać zdefiniowany w schemacie jako element mieszany. Definicja elementu mieszanego jest w istocie definicją elementu złożonego, używającą atrybutu mixed: <xs:element name="para"> <xs:complextype mixed="true"> <xs:choice> <xs:element name="title" /> </xs:choice> </xs:complextype> </xs:element> W definicji takiej deklarowany jest zarówno wybór (choice) innych elementów, jak i typ danych posiadanych przez element. Dodawanie elementów złożonych 1 Otwórz dokument schematu XML. Dodaj znacznik otwierający <xs:element>. Określ nazwę elementu. Dodaj znacznik otwierający <xs:complextype>. Dodaj atrybut mixed="true".

6 8 9 10 11 1 Dodaj znacznik otwierający <xs:choice>. Dodaj dwa lub więcej znaczników <xs:element> reprezentujących elementy potomne. Zamknij element <xs:choice>. Zamknij element <xs:complextype>. Zamknij element <xs:element>. Kliknij przycisk Check Well-Formedness, by sprawdzić poprawność składniową dokumentu. Informacja o poprawności (albo niepoprawności) dokumentu pojawi się w obszarze walidacji. Kliknij przycisk Check Validity w celu sprawdzenia zgodności dokumentu ze schematem. Informacja o poprawności (albo niepoprawności) dokumentu pojawi się w obszarze walidacji. 10 6 8 9 1 1 11 Rozdział. Definiowanie struktury dokumentów XML za pomocą schematów 1 Kliknij przycisk Save. Dokument zostanie zapisany. Wskazówka Oprócz xs:choice dostępne są jeszcze dwie formy specyfikacji zagnieżdżanych elementów: xs:sequence i xs:all. Jak wiadomo, xs:choice specyfikuje listę wzajemnie wykluczających się elementów, z których wystąpić musi dokładnie jeden; xs:sequence specyfikuje listę elementów, które wystąpić muszą w ściśle określonej kolejności; xs:all specyfikuje elementy, z których każdy wystąpić musi dokładnie raz, jednak kolejność wystąpienia poszczególnych elementów jest dowolna. Jeśli wykorzystywane jest xs:all, musi pojawić się na początku dokumentu schematu i najczęściej pojawia się w definicji elementu root. Każdy z trzech wymienionych selektorów może, choć nie musi pojawić się w definicji elementu złożonego (i faktycznie często się pojawia), w szczególności elementu root. Jedyną cechą, która odróżnia element mieszany od elementu złożonego, jest obecność atrybutu mixed w znaczniku xs:complextype. Wybór między użyciem elementu złożonego a użyciem elementu mieszanego jest zawsze kwestią konkretnego zastosowania i osobistego upodobania programisty.

Ograniczenie występowania elementów Wymienione wcześniej selektory stwarzają dość dużą elastyczność w zakresie używania elementów potomnych, często jednak konieczne jest określenie wymagań jeszcze bardziej rygorystycznych. Przykładowo, lista zawodników meczu piłki nożnej składać się musi z dokładnie 11 elementów. Schematy XML dają możliwość określenia zarówno minimalnej, jak i maksymalnej liczby wystąpień danego elementu; w opisanym przypadku obydwie te wartości, specyfikowane przez atrybuty minoccurs i maxoccurs znacznika xs:element, muszą mieć wartość 11. Przez przypisanie atrybutowi minoccurs wartości 0 sprawiamy, że odnośny element staje się opcjonalny, czyli nie musi w ogóle występować. Zdjęcie górnego ograniczenia na liczbę występowania elementu odbywa się przez przypisanie atrybutowi maxoccurs wartości unbounded. Nadanie obydwu atrybutom tej samej wartości oznacza żądanie wystąpienia elementów w ściśle określonej liczbie 11 w przytoczonym przykładzie drużyny piłkarzy. Domyślną wartością każdego z atrybutów minoccurs i maxoccurs jest 1 gdy atrybuty te nie zostaną jawnie określone, odnośny element wystąpić musi dokładnie jeden raz. Ponieważ z natury wymaganie takie narzucone jest na element root, wspomniane atrybuty nie mogą wystąpić w jego definicji. Definiowanie dopuszczalnej liczby wystąpień elementów 1 Otwórz dokument schematu XML. Dodaj nowy (lub wykorzystaj istniejący) znacznik otwierający <xs:element>. Dodaj atrybut minoccurs. Przypisz atrybutowi wartość 0 oznaczającą, że użycie elementu jest opcjonalne.

6 8 Dodaj atrybut maxoccurs. Przypisz atrybutowi wartość "unbounded" lub konkretną liczbę. Kliknij przycisk Check Well-Formedness, by sprawdzić poprawność składniową dokumentu. Informacja o poprawności (albo niepoprawności) dokumentu pojawi się w obszarze walidacji. Kliknij przycisk Check Validity w celu sprawdzenia zgodności dokumentu ze schematem. Informacja o poprawności (albo niepoprawności) dokumentu pojawi się w obszarze walidacji. 9 8 6 Rozdział. Definiowanie struktury dokumentów XML za pomocą schematów 9 Zapisz dokument w pliku z rozszerzeniem.xsd. Wskazówka Staranne zaplanowanie jest kluczem do stworzenia właściwego schematu. Dokumenty XML wrażliwe są na wielkość liter; chociaż plik schematu posiada specyficzne rozszerzenie, jest dokumentem XML i wszelkie użyte w nim nazwy elementów, atrybutów itp. muszą być tożsame także co do wielkości liter z odpowiednimi nazwami w dokumencie docelowym. Z tego względu niezwykle ważną rzeczą jest opracowanie spójnej metody różnicowania wielkości liter ( kapitalizacji ) i konsekwentne jej stosowanie zarówno w schemacie, jak i dokumentach na tym schemacie opartych. Alternatywą dla różnicowania wielkości liter w identyfikatorach wielosłowowych jest używanie myślników i znaków podkreślenia jeśli się na to decydujemy, także to powinniśmy robić w sposób spójny. Należy ponadto zwracać szczególną uwagę na wartości przypisywane atrybutom minoccurs i maxoccurs, rozważając przypadki, kiedy to dopuszczalne jest wystąpienie dokumentu o jeden raz więcej lub o jeden raz mniej od typowej wartości. Co do rygoryzmu kontroli wynikającej ze schematu: zbyt restrykcyjne schematy okazują się na tyle krępujące (dla twórców docelowych dokumentów), że w praktyce okazać się mogą nieużyteczne; z drugiej jednak strony schemat powinien być na tyle restrykcyjny, by dawać jak najlepszą gwarancję kontroli poprawności danych.

Kojarzenie dokumentu XML ze schematem Aby walidator mógł przeprowadzić kontrolę poprawności dokumentu względem pewnego schematu, musi uzyskać informację o lokalizacji tegoż schematu. Z pojedynczym schematem może być skojarzonych wiele dokumentów. Informacji o lokalizacji schematu dostarcza atrybut nonamespaceschemalocation w znaczniku otwierającym element root. Bezpośrednie użycie tego atrybutu jest jednak niedopuszczalne, bowiem wywodzi się on z własnej przestrzeni nazw, a konkretnie z przestrzeni XMLSchemaInstance. Aby zatem poprawnie połączyć dokument z odpowiednim schematem, atrybut ów należy poprzedzić prefiksem identyfikującym wspomnianą przestrzeń zwykle używa się w tym celu przedrostka xsi. Sama ścieżka wskazująca położenie schematu może być absolutną lub relatywną względem położenia samego dokumentu, może też mieć postać URL-a wskazującego zdalny zasób w sieci (absolutnego lub relatywnego). Oto przykład poprawnego wskazania schematu, którego plik znajduje się w tym samym katalogu co kontrolowany dokument: <myroot xmlns:xsi= "http://www.w.org/001/xmlschema-instance" xsi:nonamespaceschemalocation="myschema.xsd" > Definiowanie skojarzenia dokumentu XML ze schematem 1 Otwórz dowolny dokument XML bazujący na schemacie. Dodaj atrybut xmlns do elementu root. Dodaj prefiks xsi. Przypisz atrybutowi xmlns:xsi wartość http://www.w.org/001/ XMLSchema-instance. Uwaga: Zwróć uwagę na różnicowanie wielkości liter. 6

Dodaj atrybut xsi:nonamespaceschemalocation. Uwaga: Ponownie zwróć uwagę na wielkość liter. 6 8 Przypisz powyższemu atrybutowi ścieżkę do pliku.xsd zawierającego dokument schematu. Kliknij przycisk Check Well-Formedness, by sprawdzić poprawność składniową dokumentu. Informacja o poprawności (albo niepoprawności) dokumentu pojawi się w obszarze walidacji. Kliknij przycisk Check Validity w celu sprawdzenia zgodności dokumentu ze schematem. Informacja o poprawności (albo niepoprawności) dokumentu pojawi się w obszarze walidacji. 6 9 8 Rozdział. Definiowanie struktury dokumentów XML za pomocą schematów 9 Zapisz dokument w pliku z rozszerzeniem.xsd. Zastosuj to Gdy dokument XML odwołuje się do elementów pochodzących z innej przestrzeni adresowej, odwołanie do schematu związanego z tą przestrzenią powinno odbywać się za pośrednictwem atrybutu xsi:schemalocation, zamiast (lub w uzupełnieniu do) atrybutu xsi:nonamespaceschemalocation, na przykład tak: <kolekcjafilmow xmlns:xsi="http://www.w.org/001/xmlschema-instance" xsi:nonamespacelocation="movielistschema.xsd" xsi:schemalocation="http://www.someothersite.com/a-schema.xsd" >

Walidacja dokumentu Należy zwrócić uwagę na fakt, że o ile wszystkie parsery domyślnie kontrolują poprawność syntaktyczną ( poprawne sformowanie ) dokumentu, niektóre tylko przeprowadzają jego walidację, nawet jeśli w dokumencie jawnie podano odwołanie do schematu. Różne parsery prezentują przy tym nieco odmienne podejście do samej walidacji. XMLSpy wykonuje tę czynność na żądanie (w wyniku kliknięcia odpowiedniego przycisku), lecz wykonuje ją także w czasie zapisywania dokumentu, wyświetlając stosowny komunikat ostrzegawczy w przypadku stwierdzenia błędu; mimo iż komunikat ten oferuje możliwość zapisania błędnego dokumentu, wskazane jest natychmiastowe poprawienie sygnalizowanych błędów zamiast odkładania tej czynności na później. Ani Internet Explorer, ani Firefox nie posiadają wbudowanych walidatorów, te jednak dostępne są powszechnie Walidacja dokumentu pod postacią rozmaitych rozszerzeń. Inne parsery, jak te wbudowane w aplikacje MS Office, generalnie pozwalają na pracę z dowolnymi dokumentami XML, proponując później przeprowadzenie ich walidacji. Mimo iż parsery zwykle są odporne na błędy walidacji, niepoprawne dokumenty mogą okazać się kłopotliwe w przetwarzaniu, przykładowo ich transformacja z użyciem XSLT może się załamywać lub dawać nieoczekiwane wyniki. Jest więc niezwykle istotne konsekwentne przeprowadzanie walidacji (i poprawianie napotkanych błędów na bieżąco ) każdorazowo przed użyciem dokumentu. Rozmaite bywa także traktowanie samych błędów walidacji przez poszczególne parsery niektóre z nich ograniczają się do wyświetlania komunikatów diagnostycznych, inne natomiast traktują błędy jako krytyczne i odmawiają dalszego przetwarzania dokumentu. W edytorze XMLSpy 1 Jeśli to konieczne, zadeklaruj przestrzeń nazw XMLSchema-instance. Jeśli to konieczne, użyj atrybutu xsi:nonamespaceschemalocation w celu odwołania się do schematu. 1 Kliknij przycisk Check Well-Formedness, by sprawdzić poprawność składniową dokumentu. Informacja o poprawności (albo niepoprawności) dokumentu pojawi się w obszarze walidacji. Kliknij przycisk Check Validity w celu sprawdzenia zgodności dokumentu ze schematem. Informacja o poprawności (albo niepoprawności) dokumentu pojawi się w obszarze walidacji. W Internet Explorerze 1 Pobierz i zainstaluj Internet Explorer Tools for Validating XML and Viewing XSLT Output ze strony www.microsoft.com/downloads/details. aspx?familyid=dc1dc-11-d61-bda8- ADF9F689DF9&displaylang=en. Otwórz dokument XML zawierający odwołanie do schematu. Kliknij dokument prawym przyciskiem myszy. Z menu kontekstowego wybierz opcję Validate XML. Wyświetlony zostanie komunikat potwierdzający poprawność (albo niepoprawność) dokumentu. 8

Walidacja dokumentu w Firefoksie 1 6 Uruchom Firefox, wejdź na stronę https://addons.mozilla.org/en-us/firefox/ addon/89 i zainstaluj XML Developer Toolbar. Zaakceptuj komunikat informujący o ponownym uruchomieniu Firefoksa. Na pasku XML Developer kliknij opcję Validation. Z wyświetlonego menu kontekstowego wybierz opcję Validation. Uruchomiony zostanie XSD Validator firmy DecisionSoft. Kliknij przycisk Przeglądaj obok pola XML Schema. Wskaż plik zawierający definicję schematu. Kliknij przycisk Przeglądaj obok pola XML instance. 6 Rozdział. Definiowanie struktury dokumentów XML za pomocą schematów 8 Wskaż plik zawierający weryfikowany dokument. Kliknij przycisk Validate. Po zakończeniu walidacji kliknij opcję Click here, aby zobaczyć wyniki. 8 Zastosuj to Dostępnych jest wiele narzędzi walidacyjnych dla Internet Explorera i Firefoksa, a także dla innych przeglądarek, jak Safari czy Opera. Większość z nich ogranicza jednak swą funkcjonalność do weryfikacji dokumentu pod kątem zgodności z WC Schema lub DTD. Walidacja pod kątem zgodności z innymi schematami, jak RELAX NG, oferowana jest jedynie przez wybrane narzędzia. SourceForge.net, witryna stworzona w celu udostępniania oprogramowania open-source, oferuje wiele walidatorów XML, a także wiele edytorów i parserów, napisanych w różnych językach i przeznaczonych do wielu różnych celów. Mimo iż dostępne jest w tej kolekcji także oprogramowanie komercyjne, większość produktów dostępna jest za darmo. Sama witryna posiada wbudowaną wyszukiwarkę, oferującą zaawansowane funkcje, m.in. system rankingu oceniający stopień zgodności wyszukanych pozycji pod kątem kryterium wyszukiwania. Niektóre produkty oferowane przez SourceForge.net mogą być kłopotliwe w instalowaniu i konfigurowaniu wówczas pomocne może okazać się bardzo aktywne forum użytkowników. 9

Wizualne tworzenie schematu za pomocą XMLSpy XMLSpy jest wysoce funkcjonalną aplikacją pozwalającą radykalnie zredukować czas potrzebny na tworzenie dokumentów XML, arkuszy stylów XSL i schematów. Gdy załaduje się do programu plik schematu, program automatycznie uruchamia widok Design View umożliwiający budowanie schematu w sposób wizualny, podczas gdy XMLSpy automatycznie tworzy kod tegoż schematu. Ta i inne funkcje tego rodzaju to zasadniczy powód, dla którego XMLSpy cieszy się takim powodzeniem wśród programistów używających go w codziennej pracy. Widok Design View może być wyświetlany w dwóch trybach: Schema Overview i Content Model View. W pierwszym z nich podzielony jest na sekcje w górnej połowie okna widnieje lista wszystkich elementów definiowanych w schemacie, u dołu natomiast widoczne są wszystkie atrybuty wybranego elementu i związane z nim ograniczenia. Grupa paneli po prawej stronie ekranu umożliwia przeglądanie szczegółów elementów schematu, wraz z zastosowanymi do tych elementów fasetami. Design View posiada jeszcze szereg innych opcji upraszczających proces tworzenia schematów, między innymi zmianę kolejności elementów za pomocą operacji przeciągnij i upuść oraz kopiowanie i wklejanie elementów za pomocą menu kontekstowego, co daje możliwość łatwego kopiowania i przenoszenia elementów między różnymi dokumentami schematów. W trybie Content Model View widoczny jest prosty diagram ukazujący zależności między elementami definiowanymi w schemacie, co znacznie ułatwia analizę złożonych schematów. Diagram ten umożliwia zarówno łatwe nawigowanie po elementach, jak i wizualne edytowanie zależności między nimi. Wizualne tworzenie schematu za pomocą XMLSpy 1 W edytorze XMLSpy wybierz opcję File/New. Wyświetlone zostanie okno dialogowe Create New Document. Z listy obsługiwanych typów plików wybierz xsd XML Schema. 1 Kliknij przycisk OK. Utworzony zostanie nowy dokument schematu. Zastąp tekst ENTER_NAME_OF_ROOT_ELEMENT_HERE wybraną przez Ciebie nazwą elementu root. Kliknij ikonę Content Model View. 0

6 8 Wyświetlone zostanie okno dialogowe Content Model View. Kliknij ww. okno prawym przyciskiem myszy. Z menu kontekstowego wybierz opcję Add Child. Z kolejnego menu kontekstowego wybierz opcję Sequence. Pojawi się kompozytor sekwencji. 9 Kliknij wyświetlone okno prawym przyciskiem myszy. 10 Z menu kontekstowego wybierz opcję Add Child. 11 Kliknij opcję Element. Zostanie utworzony nowy element. 1 Wprowadź nazwę dla elementu potomnego. 6 9 10 8 11 Rozdział. Definiowanie struktury dokumentów XML za pomocą schematów 1 Kliknij element prawym przyciskiem myszy. 1 Wybierz opcję Unbounded. Widok zostanie zaktualizowany, wskazując, że liczba wystąpień elementu jest nieograniczona. 1 1 1 1 Kliknij ikonę Show Globals. Wyświetlony zostanie widok Schema Design. 1 Wskazówka Użytkownicy XMLSpy z łatwością spostrzegą, że edytor ten dodaje do schematu elementy xs:annotation i xs:documentation. Elementy te nie są przetwarzane przez parser w procesie walidacji, lecz umożliwiają umieszczanie opisowych notatek dotyczących schematu bezpośrednio w tymże schemacie. Użycie wspomnianych elementów jest bezpieczniejsze niż umieszczanie komentarzy, te ostatnie bowiem bywają usuwane ze schematów przez niektóre parsery. Elementom takie usuwanie nie grozi, a przy okazji powstaje mechanizm umożliwiający automatyczne generowanie dokumentacji. Każdy niemal element schematu może posiadać element xs:annotation jako element potomny, ten z kolei może zagnieżdżać element xs:documentation. Tekst w ramach tego elementu jako jego dane powinien w sposób czytelny dla człowieka adekwatnie opisywać odnośny element, wraz z takimi szczegółami jak atrybuty (obowiązkowe i opcjonalne), typ danych i informację o powtarzalności. cdn. 1

Wizualne tworzenie schematu za pomocą XMLSpy (ciąg dalszy) Widok Schema Overview umożliwia wybór globalnie zdefiniowanych elementów i ich atrybutów z prostej listy. Program wyświetla atrybuty i ograniczenia wybranego elementu w pomocniczym oknie poniżej listy, ułatwiając definiowanie typów danych, narzucanie ograniczeń oraz nadawanie atrybutom wartości stałych lub domyślnych. W tabeli widocznej w górnej sekcji ekranu można w łatwy sposób wstawiać, dołączać i usuwać elementy globalne oraz typy złożone. Wybierając element lub typ, można zmieniać jego atrybuty w oknie pomocniczym. W trybie Content Model view możliwe jest także edytowanie (w oknie pomocniczym) właściwości wybranych elementów; chociaż w danej chwili dostępny do takiej edycji jest tylko pojedynczy element, to jednak bardzo łatwo można się przemieszczać między poszczególnymi elementami, jak również przenosić i kopiować ich właściwości przy użyciu schowka. Definiowanie typu złożonego, obarczonego ograniczeniami, jeżeli odbywa się bezpośrednio w kodzie źródłowym, jest o tyle utrudnione, że bardzo łatwo można pomylić się w definiowaniu owych ograniczeń. Wizualny edytor XMLSpy znacznie ułatwia to zadanie, przez wizualizację zastosowanych ograniczeń i propozycje dodawania kolejnych. Sposób wyświetlania schematu jest wysoce konfigurowalny: użytkownik ma możliwość określenia, które z parametrów będą wyświetlane te, których na pewno nie użyje, można z łatwością ukryć. Całości dopełniają funkcje importowania definicji z innych przestrzeni nazw, globalnego redefiniowania komponentów schematu, generowanie schematów na podstawie DTD lub innych schematów oraz generowanie relacyjnych baz danych. Wizualne tworzenie schematu za pomocą XMLSpy (ciąg dalszy) 16 1 W wyświetlanym dialogu Design View kliknij ikonę Append. Kliknij opcję Element. Zostanie utworzony nowy element. 16 19 18 18 Wpisz nazwę elementu potomnego, który utworzyłeś w punkcie 1. 19 Kliknij ikonę towarzyszącą nowemu elementowi. Wyświetlony zostanie widok Content Model View. 0 1 Kliknij prawym przyciskiem myszy wyświetlone okno. Wybierz opcję Add Child. 0 1 Wybierz opcję Sequence. Pojawi się kompozytor sekwencji. Kliknij prawym przyciskiem myszy wyświetlone okno. Wybierz opcję Add Child. Wybierz opcję Element w celu dodania nowego elementu. 6 Wprowadź nazwę dla utworzonego elementu potomnego. 6 Kliknij element prawym przyciskiem myszy. 8 Wybierz opcję Unbounded. 8

9 0 1 Widok zostanie zaktualizowany, wskazując, że liczba wystąpień elementu jest nieograniczona. W oknie pomocniczym Details entry kliknij opcję type i wybierz z listy pozycję xs:string. Kliknij prawym przyciskiem myszy okno kompozytora sekwencji. Wybierz opcję Add Child. Kliknij opcję Element. Zostanie utworzony nowy element. Wprowadź nazwę dla utworzonego elementu potomnego. Kliknij zakładkę Text. Zostanie wyświetlony tekstowy widok schematu. 0 1 9 Rozdział. Definiowanie struktury dokumentów XML za pomocą schematów Wskazówka Elementy xs:annotation i xs:documentation, automatycznie dodawane przez XMLSpy, nie tylko ułatwiają posługiwanie się schematami, lecz także wykorzystywane są do generowania szczegółowej dokumentacji na temat tych schematów. Dokumentacja taka zawsze jest przydatna jako taka, jednak szczególnie wartościowa okazuje się w przypadku publikowania schematów do użytku ogólnego. Oferowany przez XMLSpy automatyczny generator dokumentacji, uruchamiany za pośrednictwem prostego okna dialogowego, umożliwia szczegółowe określenie listy elementów (globalnych i lokalnych) oraz ich grup, typów danych (prostych i złożonych) oraz atrybutów, na temat których utworzony zostanie szczegółowy opis wyjaśniający sposoby używania ich w tworzonym dokumencie docelowym. Dla każdej pozycji zażądać można wygenerowania diagramu graficznego, podobnego do tego wyświetlanego w widoku Content View, a także dołączenia związanego z daną pozycją fragmentu kodu źródłowego. Dokumentacja może być generowana zarówno w formacie HTML, jak i w formacie obsługiwanym przez Microsoft Word.