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.
Przykładowe tematy
Czekamy przede wszystkim na Państwa pomysły, np. związane z zainteresowaniami. W przeszłości pojawiały się
m.in. tematy związane z sieciami neuronowymi, eksploracją jaskiń, muzyką. Ale w razie braku pomysłów, poniżej wymieniamy kilka standardowych tematów.
- Struktura aktów prawnych obejmująca polskie prawodawstwo (zob. Rozporządzenie w sprawie Zasad techniki prawodawczej i dostępne przykłady ustaw i rozporządzeń).
XSL do wizualizacji, program do wykonywania automatycznej nowelizacji (uzyskiwania tekstu ujednoliconego). Ewentualnie nowelizacje także w XSLT, a aplikacja jako opakowanie całości, np. Webowy interfejs użytkownika.
- Sklep, stany magazynowe, dostawy, zamówienia, ...
- Sklep (/ wypożyczalnia / wyszukiwarka ofert / ...) z towarami z konkretnej branży, np. komputerami, aparatami foto, książkami, muzyką – aby można było szczegółowo opisywać cechy towarów i porównywać / wyszukiwać.
- CMS lub system obiegu dokumentów z własną strukturą dokumentów i metadanych.
Zadanie 1 – 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.
Zadanie 2 – 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 wyniku 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 (niekoniecznie wszystkie rzeczy na raz) w celu unikania duplikacji kodu (i logiki),
- efektywność, na ile te technologie pozwalają,
- struktura i czytelność rozwiązania.
Zadanie 3 – 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,
- logika aplikacji korzystająca z modelu uzyskanego jako tłumaczenie schematu zgodne z JAXB,
- udostępnienie logiki opracowanej w zadaniu 2 przez WebService.
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.).