1. Dokumenty elektroniczne i standard XML: zadania 1.1. XML i DTD
Transkrypt
1. Dokumenty elektroniczne i standard XML: zadania 1.1. XML i DTD
1. Dokumenty elektroniczne i standard XML: zadania 1.1. XML i DTD 1.1.1. Zadanie #1 Pobrać plik xmlsoft0.zip z tego katalogu [http://gnu.univ.gda.pl/~tomasz/Download/z/de/] i rozpakować jego zawartość w jakimś katalogu na lokalnym komputerze. Pobrać pliki z danymi do ćwiczenia #1: ramy.xml [./ramy/ramy.xml] oraz ramy.dtd [./ramy/ramy.dtd]. Zweryfikować poprawność pliku ramy.xml względem DTD, wykorzystując parser xmllint. Wskazówka: w oknie DOSa przejść do katalogu zwierającego rozpakowane archiwum xmlsoft0.zip i wykonać polecenie: xmllint --valid --noout ramy.xml Pobrać plik ramy-bad.xml [./ramy/ramy-bad.xml]. Zwalidować ten dokument. Przeanalizować wyświetlane przez parser komunikaty o błędach. Poprawić dokument. Rozszerzyć DTD w następujący sposób: możliwość dodawania do opisu części zdjęcia (lub zdjęć) oraz możliwość dodania opisu tekstowego. Wskazówka: do modyfikowania plików wykorzystaj program Notatnik Dodać elementy zdefiniowane w poprzednim punkcie do dokumentu XML i zweryfikować jego poprawność. 1.2. XML Schema 1.2.1. Zadanie #2 Pobrać plik z schematem: ramy.xsd [./ramy/ramy.xsd]. Zweryfikuj poprawność pliku ramy.xml względem schematu XSD, wykorzystując parser xmllint. xmllint -noout -schema ramy.xsd ramy.xml Powtórzyć weryfikację względem powyższego schematu XSD dla pliku ramy-bad.xml [./ramy/ramy-bad.xml]: xmllint -noout -schema ramy.xsd ramy-bad.xml Uwaga: wydaje się, że walidacja dokumentów XML względem schematów XSD przez xmllint nie jest kompletna. W powyższym przykładzie nie jest sygnalizowane powtórzenie wartości atrybutu o typie xs:ID (błąd ten jest sygnalizowany jeżeli dokument jest walidowany względem DTD). Pobrać plik z schematem: ramy_x.xsd [./ramy/ramy_x.xsd]. Zweryfikuj poprawność pliku ramy.xml względem schematu XSD, wykorzystując parser xmllint. 1 Dokumenty elektroniczne i standard XML: zadania xmllint -noout -valid -schema ramy_x.xsd ramy.xml Schemat ramy_x.xsd deklaruje, że kombinacje wartości elementów nazwa oraz firma dla każdego elementu czesc muszą być unikalne (element unique). Zwróć uwagę na elementy annotation zawierające dokumentację schematu. 1.2.2. Zadanie #3 Pobierz zawartość katalogu ./6nc/. Zweryfikuj poprawność pliku 6n2003_xi.xml [./6nc/6n2003_xi.xml] względem schematu z pliku6n.xsd [./6nc/6n.xsd] wykorzystując parser xmllint: xmllint -xinclude -noout -schema 6n.xsd 6n2003_xi.xml Uwaga: dokument 6n2003_xi.xml wykorzystuje standard XInclude [http://www.w3.org/TR/xinclude/] do dołączania dokumentów zewnętrznych. Aby dokument był prawidłowo przetworzony należy uruchomić xmllinta z opcją -xinclude. Uwaga 2: powyższa walidacja zakończy się błędem. Na ekranie pojawi się kilkanaście komunikatów; większość będzie dotyczyła błędnego formatu daty (w atrybucie date elementu match). Zweryfikuj poprawność pliku 6n2003_xi.xml [./6nc/6n2003_xi.xml] względem schematu z pliku 6n_x.xsd [./6nc/6n_x.xsd] wykorzystując parser xmllint: xmllint -xinclude -noout -schema 6n_x.xsd 6n2003_xi.xml Schemat 6n_x.xsd [./6nc/6n_x.xsd] (plus pliki: simpleDate.xsd [./6nc/simpleDate.xsd] i 6nc_misc.xsd [./6nc/6nc_misc.xsd]) jest przykładem dołączenia fragmentów schematów z plików zewnętrznych (polecenie include). Obejrzyj zawartość plików simpleDate.xsd oraz 6nc_misc.xsd. Schemat turniej_uc.xsd [./6nc/turniej_uc] zawiera przykład wykorzystania poleceń unique oraz keyref. Przykład walidacji: xmllint -xinclude -noout -schema turniej_uc.xsd 6n2003_uc.xml 1.3. XSLT 1.3.1. Zadanie #4 Pobierz przykładowy arkusz XSLT: ramy0.xsl [./ramy/ramy0.xsl] (zamienia zestawienie części na tabelę w formacie HTML). Uruchom program xsltproc i wygeneruj dokument wynikowy w formacie HTML. Obejrzyj wynik w przeglądarce internetowej. Wskazówka: w oknie DOSa przejść do katalogu zwierającego program xsltproc. Transformację uruchamia się wydając w wierszu poleceń następującą instrukcję: xsltproc -o ramy0.html ramy0.xsl ramy.xml Opracować prosty szablon XSLT/CSS do wizualizacji lub zmodyfikować szablony ramy0.xsl lub ramy1.xsl 2 Dokumenty elektroniczne i standard XML: zadania Przetwórz dokumenty ramy.xml przy wykorzystaniu pozostałych przykładowych szablonów XSL z katalogu ./ramy/. 1.3.2. Zadanie #5 Przetwórz dokumenty XML z katalogu ./6nc/ [./6nc/6] przy wykorzystaniu przykładowych szablonów XSL. 1.4. Zadania różne 1.4.1. Zadanie #6 Pobrać plik #2 z danym do ćwiczenia: tdp2005-nf.xml [./tdp-nn/tdp2005-nf.xml]. xOpracować DTD do pliku XML Zweryfikować poprawność DTD/pliku XML za pomocą xmllint Opracować prosty arkusz CSS wizualizujący plik xml albo opracować prosty arkusz XSLT wizualizujący plik xml 1.4.2. Zadanie #7 Pobrać plik #3 z danym do ćwiczenia: ex2s-u8.xml [./filmy/ex2s-u8.xml] (kodowanie UTF8) albo ex2s.xml [./filmy/ex2s.xml] (ISO8859-2) albo ex2s-1250.xml [./filmy/ex2s-1250.xml] (CP1250). Wskazówka: Wybrać jeden z powyższych (w systemie MS Windows będzie to albo CP1250 albo UTF8). Opracować DTD do pliku XML. Uwaga: ponieważ struktura pliku jest skomplikowana, to można ją nieco uprościć. Zweryfikować poprawność DTD/pliku XML za pomocą xmllint Opracować prosty arkusz XSLT lub CSS wizualizujący plik xml. 1.5. Projekt zaliczeniowy Opracować schemat (XSD/RelaxNG) dla wybranej aplikacji typu: rynek nieruchomości (www.gratka.pl [http://www.gratka.pl/]), program telewizyjny, przepis kucharski, program muzyki poważnej, katalog filmów (www.filmweb.pl [http://www.filmweb.pl/]), katalog (czegoś), itd, itp... Przygotować przykładowy dokument, poprawny względem schematu opracowanego w punkcie 1. Poprawność dokumentu XML oraz schematu sprawdzić parserem (np. xmllint). Opracować szablon CSS i/lub XSLT do wizualizacji i/lub transformacji pliku XML. Wskazówka: uwagi nt. oprogramowania [../startdocs/opis.html]. Jeżeli coś nie na tej stronie jest nie tak, to proszę o list na adres: tomasz_[at]_gnu 3