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