Zadania zaliczeniowe
W celu zaliczenia laboratorium należy zrealizować własny projekt, w którym w istotny sposób wkorzystywany jest XML
i poznawane na przedmiocie technologie. Formalnie do zrealizowania w określonych terminach są trzy zadania. Terminy na stronie głównej wykładu.
Schemat
Schemat określający strukturę dokumentów używanych w projekcie. Struktura dokumentu powinna uwzględniać (umożliwiać / ułatwiać) operacje, które będziemy wykonywać na dokumentach w ramach dalszych dwóch zadań.
Wspólne wymagania:
- XML Schema (lub po uzgodnieniu z ćwiczeniowcem inny format, DTD tylko w uzasadnionych przypadkach),
- przykład poprawnego dokumentu, ilustrujący postać typowego dokumentu oraz ciekawe możliwości struktury,
- nowe zastosowanie XML ma być zdefiniowane w osobnej przestrzeni nazw (poza wyjątkowymi sytuacjami gdy wymagana jest kompatybilność z istniejącymi standardami),
- można odwoływać się do istniejących zastosowań, gdy jest to sensowne, ale w rozwiązaniu ma być istotny wkład własny,
- precyzyjnie i sensownie zdefiniowane typy proste,
- wykorzystać importowanie fragmentów schematu, typy nazwane, rozszerzanie / zawężanie typów, grupy i grupy atrybutów, ewentualnie (gdy to zasadne) globalne elementy / atrybuty w celu uniknięcia duplikacji definicji; należy do tego podejść z rozsądkiem - istotna nie jest fizyczna duplikacja kodu, ale logiczne powiązanie różnych obiektów; należy pomyśleć także o przyszłej pielęgnacji i zmianach schematu,
- klucze i referencje,
- dokumentacja kluczowych decyzji analitycznych/projektowych.
Transformacja
Zastosowanie standardów XPath, XSLT, XQuery, CSS, XSL-FO (niekoniecznie wszystkich na raz) do przekształcania i/lub wizualizacji dokumentów.
Przykłady:
- nietrywialne wyszukiwanie / przetwarzanie danych przy użyciu XSLT 1.0, XSLT 2.0 lub XQuery i zapisywanie wyniku "dla człowieka" jako (X)HTML+CSS,
- nietrywialne przetwarzanie dokumentów j.w. i zapisywanie wyników jako XML; np. aktualizacja dokumentu na podstawie innego dokumentu – nowelizacja aktów prawnych, realizacja dostawy do magazynu itp.,
- wizualizacja dokumentów z elementami przetwarzania (rozwiązywanie odwołań, podsumowania ze zagregowanymi danymi...) za pomocą XSLT i zapisanie wymiku jako (X)HTML+CSS,
- nieco prostsza wizualizacja w XSLT, ale za to do PDF za pośrednitwem XSL-FO; wykorzystanie możliwości layoutowych (szablony stron z nagłówkiem/stopką, odnośniki...),
- zestaw zaawansowanych zapytań XPath do użycia we własnym programie w zadaniu 3; wskazane byłoby umieszczenie w arkuszu XSLT choðby w celu uruchomienia.
Wspólne wymagania:
- poprawna obsługa przestrzeni nazw,
- zastosowanie szablonów, szablonów nazwanych, własnych funkcji (XQuery/XSLT 2.0), parametrów arkusza i szablonów w celu unikania duplikacji kodu :),
- efektywność, na ile te standardy pozwalają,
- struktura i czytelność rozwiązania.
Program
Program spinający wszystko w całość i realizujący dodatkowe operacje w miarę potrzeb dla wybranej "bajki". Ilość "logiki" można w pewnym stopniu rozłożyć pomiędzy zadanie 2 i 3, uzgadniając to z ćwiczeniowcem.
Przykłady:
- aktualizacja dużych dokumentów XML w sposób strumieniowy (bez wczytywania w całości do pamięci), w oparciu i filtry SAX lub Reader i Writer StAX,
- logikia aplikacji korzystająca z modelu uzyskanego jako tłumaczenie schematu zgodne z JAXB,
- udostępnienie logiki opracowanej w zadaniu 2 przez WebSerwis.
Wspólne wymagania:
- obsługa przestrzeni nazw,
- walidacja,
- poprawny dobór interfejsu programistycznego do problemu (przetwarzanie węzeł po węźle vs wczytywanie do pamięci),
- estetyczny kod (w tym brak duplikacji itd.).