Úloha č. 3 XSLT
V úloze 3 máte za úkol vytvořit do předchystaného NetBeans projektu do adresáře src XSLT styl ab-to-html.xsl (v NetBeans lze kliknutím pravým tlačítkem a výběrem z kategorie XML přímo založit XSL styl).
Transformace řízená tímto stylem (opět spustitelná přímo z NetBeans tlačítkem "modré šipky vpravo" na panelu zdrojového textu) bude mít za úkol přetransformovat soubor address-book.xml (validní podle schématu address-book.xsd) do podoby XHTML dokumentu.
Požadavky na vygenerovaný XHTML dokument:
- Výsledný XHTML bude validní podle DTD "-//W3C//DTD XHTML 1.0 Strict//EN" nebo "-//W3C//DTD XHTML 1.0 Transitional//EN" (uvedené řetězce jsou PUBLIC identifikátory daných DTD). Lze prověřit např. online validátorem.
- Na začátku dokumentu budou vhodnou formou (odrážkový seznam, navigační řádek) vygenerovány odkazy (tedy <a href=... elementy) na jednotlivé uživatele (představované ve zdroji elementy user). Seznamy odkazů budou dva - jeden se všemi uživateli uspořádaný abecedně podle jejich příjmení, druhý bude uspořádaný abecedně podle hodnot jejich atributu id, přičemž uživatelé bez id nebudou v tomto druhém seznamu uvedeni vůbec.
- V druhé části dokumentu bude následovat pro každého uživatele (user) vygenerovaný popis obsahující jednak informace přímo o něm (jméno, příjmení, v závorce id a nakonec e-mail jako klikatelný odkaz s URI mailto:), ale také informace o jeho kontaktech. Na generování info o kontaktech má vliv atribut visible elementu contacts: je-li nastaven na false, nebudou se kontakty do výstupu generovat a namísto toho se uvede červeným písmem v anglickém jazyce, že kontakty nejsou viditelné. V případě, že je element contacts prázdný, vypíše se oranžovým písmem anglicky, že uživatel nemá žádné kontakty.
- Při generování výstupů si dejte pozor, které elementy, příp. atributy jsou povinné, které (elementy) se mohou opakovat atd. Je-li opakování povoleno, musíte do výstupu dát všechny informace ze vstupu - tzn. má-li uživatel uvedeno více e-mailů, musí být ve výstupu všechny a to oddělené čárkou. Samozřejmě je-li hodnota jen jedna, čárka za ní nebude. Když bude u kontaktu např. chybět jméno, nesmí být ve výsledné informaci o kontaktu místo jména zbytečná mezera.
- Transformace musí správně pracovat i pro jiné vstupní dokumenty validní podle address-book.xsd.
- Přiložený screenshot je vzor, jak může výstup vypadat v prohlížeči pro vzorový vstup address-book.xml.
NetBeans projekt obsahující styl XSL zabalte do ZIP (jiné formáty nebudou akceptovány) a odevzdejte do příslušné odevzdávárny v IS.