Platforma průmyslové spolupráce CZ.1.07/2.4.00/17.0041 Název Podpůrný nástroj pro výuku značkovacích jazyků Popis a využití • nástroj pro studenty pro zadávání úkolů k práci • výuka: značkovací jazyky Jazyk textu • český Autor (autoři) • Jiří Krejčí Oficiální stránka projektu: • http://lasaris.fi.muni.cz/pps Dostupnost výukových materiálů a nástrojů online: • http://lasaris.fi.muni.cz/pps/study-materials-and-tools vi Obsah 1. Úvod .............................................................................................. 1 2. Metodika ....................................................................................... 3 3. Požadavky .................................................................................... 5 4. Použité n{stroje............................................................................ 6 4.1. Apache Wicket ..................................................................... 6 4.1.1. Uk{zka použití Wicketu ................................................ 7 4.2. Hibernate............................................................................... 8 4.3. OpenShift .............................................................................. 8 4.4. Git a GitHub ......................................................................... 9 5. Aplikace ...................................................................................... 10 5.1. Z{kladní str{nka ................................................................ 10 5.1.1. HeaderPanel .................................................................. 11 5.1.2. MenuPanel ..................................................................... 11 5.1.3. TeacherPanel.................................................................. 11 5.1.4. StudentPanel.................................................................. 12 5.1.5. SignPanel........................................................................ 12 5.1.6. FooterPanel .................................................................... 13 5.2. Autorizace a autentizace................................................... 13 5.2.1. Autorizace aplikací ....................................................... 13 5.2.2. Autorizace učitelem...................................................... 14 5.2.3. Autentizace .................................................................... 14 5.3. Role a opr{vnění ................................................................ 15 5.3.1. Role student................................................................... 15 5.3.2. Role učitel....................................................................... 15 5.4. Lekce a cvičení.................................................................... 16 5.4.1. Ověření dokumentu podle DTD................................. 17 5.4.2. XSLT transformace........................................................ 18 5.4.3. XSD Schéma................................................................... 18 5.4.4. xQuery výrazy............................................................... 19 5.4.5. xPath výrazy.................................................................. 20 5.5. Protokol o absolvov{ní cvičení........................................ 20 5.6. Zvýraznění syntaxe XML ................................................. 22 5.7. WYSIWYG editor............................................................... 23 vii 6. N{vrh použití aplikace ve výuce............................................. 24 7. Z{věr............................................................................................ 27 8. Literatura..................................................................................... 28 9. Přílohy ......................................................................................... 30 1 1. Úvod V současné době je kladen velký důraz na snadnou výměnu informací mezi programy. XML1 je jednou z technologií, kter{ tento požadavek splňuje. Značkovací jazyky, jak se zmíněné XML označuje, d{vají textu takovou podobu, aby jej bylo možné automatizovaně zpracov{vat. Z pohledu z{kladní interpretace můžeme značkovací jazyky rozdělit na procedur{lní a deklarativní. Procedur{lní značky definují pro prvek konkrétní akci, zatímco deklarativní značky definují prvek jako logickou č{st značkovaného textu *1]. Předmět Moderní značkovací jazyky a jejich aplikace vyučovaný na Fakultě informatiky Masarykovy univerzity seznamuje studenty se z{kladními standardy, principy pr{ce a technologiemi moderních značkovacích jazyků na b{zi XML a jejich aplikací *2]. V současné době nemají studenti možnost automatizovaně procvičovat probíran{ témata v rozsahu zmíněného předmětu. Existují on-line n{stroje na procvičení jednotlivých témat, ale nejsou vytvořeny přímo pro podporu výuky. Studenti nemají k dispozici jednotný n{stroj, kterým by mohli procvičovat všechny probírané okruhy. Cílem této bakal{řské pr{ce je navrhnout a implementovat webovou aplikaci, kter{ podpoří výuku značkovacích jazyků v r{mci předmětu PB138 Moderní značkovací jazyky a jejich aplikace a umožnit tak studentům přístup k databance cvičení vytvořených přímo pro ně. Mezi hlavní probíranou l{tku předmětu patří validace DTD2, XSL3 transformace, pr{ce s XSD4 schématy, xQuery a xPathy výrazy. Vyvíjen{ aplikace by měla umožnit procvičov{ní všech těchto témat. Webovou aplikaci bude nutné implementovat tak, aby procvičov{ní probíraných oblastí bylo snadné, intuitivní, přívětivé, automatizované a bylo ji možné použít při výuce formou on-line cvičení. V pr{ci budou identifikov{ny uživatelské role, tak aby aplikace umožňovala pracovat jako přihl{šený uživatel. Vyvíjený n{stroj budou 1 eXtended Markup Language 2 Document Type Definition 3 eXtensible Stylesheet Language 4 XML Schema Definition 2 využívat nejen studenti, ale také vyučující, dalším cílem pr{ce je umožnit vyučujícím snadno vytv{řet nov{ cvičení a ty zpřístupňovat studentům, kteří by měli mít možnost vytvořen{ cvičení prohlížet a plnit. Bakal{řsk{ pr{ce je strukturov{na do sedmi kapitol. První kapitola se zabýv{ volbou metodiky n{vrhu a implementace. Je v ní pops{no použití SCRUM jako metodiky vývoje aplikace. Druh{ kapitola popisuje nejdůležitější požadavky na aplikaci, které byly identifikov{ny a podrobněji se zabýv{ těmi nejdůležitějšími. Třetí kapitola - Použité n{stroje seznamuje s n{stroji, který byly využity při vývoji aplikace. Jde zejména o webové aplikační rozhraní Apache Wicket v kombinaci s frameworkem5 Hibernate pro objektově relační mapov{ní. D{le pak služba OpenShift a GitHub díky kterým bylo možné aplikaci nasadit na server a zpřístupnit ji na internetu. Čtvrt{ kapitola podrobně popisuje samotnou aplikaci, její souč{sti a fungov{ní. V p{té kapitole je navrženo možné použití aplikace ve výuce. Popisuje, jak zad{vat nov{ cvičení, zpřístupňovat jejich vzorov{ řešení, hodnotit řešení vytvořen{ studenty, vysvětluje jak umožnit studentům přístup do aplikace a prohlížet protokoly o absolvov{ní cvičení. Z{věrečn{ šest{ kapitola zhodnocuje konečnou implementaci a navrhuje možnosti dalšího vývoje. 5 Softwarov{ struktura, sloužící k podpoře programov{ní a vývoji aplikace *3] 3 2. Metodika Při implementaci aplikace byla využit agilní metodika SCRUM. Jedn{ se o metodiku řízení vývoje aplikace, kter{ zahrnuje několik níže popsaných kroků. Cílem metodiky je stanovení požadavků na aplikaci, p{nov{ní, kontrola a evaluace procesu implementace. Předpokl{d{ se pr{ce v týmu s pravidelnými evaluačními schůzkami. Prvním krokem SCRUM metodiky je definov{ní požadavků na produkt tzv. user stories. Každý takový požadavek musí odpovídat na ot{zky: Kdo? Co? a Proč? požaduje. Soubor všech požadavků se označuje jako Seznam požadavků (Product Backlog) *4+. Ve druhém korku metodiky doch{zí k identifikaci důležitých požadavků a eliminaci těch nadbytečných, vznik{ tzv. Release Backlog. Třetím a z{roveň posledním krokem SCRUM metodiky před implementací je uspoř{d{ní a seskupení požadavků do skupin tak jak budou v průběhu času implementov{ny. Tyto skupiny požadavků se označují jako iterace nebo sprint. N{sledující kroky metodiky z{visí na délce jednotlivých sprintů [5]. Předn{šející a cvičící předmětu PB138 Moderní značkovací jazyky a jejich aplikace byly pož{d{ni o seps{ní požadavků na aplikaci tak aby na ně bylo možné aplikovat SCRUM metodiku. Výsledkem je seznam všech ž{daných požadavků na aplikaci. Dalším krokem podle metodiky je výběr důležitých požadavků, který probíhal formou diskuse na společné schůzce s předn{šejícími a cvičícími. Všechny stanovené požadavky byly rozděleny do skupin tak jak budou zpracov{v{ny. N{sledn{ implementace probíhala bez z{sahů cvičících a předn{šejících a byla rozděleno do n{sledujících čtyř iterací do kterým byly přiřazeny požadavky podle jejich důležitosti: 1. Spuštění všech potřebných n{strojů a technologií jako Apache Wicket, Hibernate, GitHub, Openshift, atd… (viz kapitola Použité n{stroje) a vytvoření první funkční str{nky. 2. Vytvoření pěti lekcí a cvičení týkající se validace DTD, XSL transformace, xPath výrazy, XSD schéma a xQuery výrazy. 4 3. Použití validačních n{strojů Xerces, možnost přid{v{ní nových cvičení učitelem a zpětnou vazbu pro studenty při prov{dění XSL transformací. 4. Umožnit učiteli přid{vat značky, filtrovat studenty, zobrazovat vzorové řešení cvičení a omezit registraci studentů pouze na určité období. Každ{ iterace byla konzultov{na s vedoucím pr{ce a průběžně zveřejňov{na prostřednictvím sužby OpenShift. Po čtvrté iteraci byla aplikace a její funkcionality představeny předn{šejícím a cvičícím předmětu PB138 Moderní značkovací jazyky a jejich aplikace. Na z{kladě tohoto představení vzniklo několik nových požadavků, který byla n{sledně doimplementov{ny. 5 3. Požadavky Tato kapitola se zabýv{ požadavky kladenými na aplikaci. Jejich kompletní seznam je uveden v příloze této pr{ce. Hlavním požadavkem bylo automatizované procvičov{ní témat uvedených v sylabu předmětu PB138 Moderní značkovací jazyky a jejich aplikace. Identifikované požadavky se dají rozdělit do dvou skupin. První skupinu tvoří požadavky kladené na automatizované procvičov{ní příkladů. Do druhé skupiny patří požadavky, které umožňují pr{ci s aplikací nebo ji usnadňují. Patří sem zejména autorizace a autentizace uživatelů, obsluha pr{ce s cvičeními a vytv{ření protokolů o absolvov{ní cvičení. Do první skupiny požadavků patří možnost řešení úkolů typu „Je zad{no XML a ot{zka je „Dopište DTD“ (Doplnění st{vajícího č{stečného řešení)“. Tento typ cvičení se zaměřuje na problematiku vytv{ření DTD, jako deklarace typu dokumentu *6+. Cvičení je složeno ze zadaného XML dokumentu, ke kterému m{ student za úkol vytvořit validní DTD, případně doplnit č{stečné zadané DTD. Absolvov{ním tohoto typu cvičení student prokazuje znalost z oblasti tvorby DTD dokumentů. Dalším typem cvičení jsou XSLT transformace, tedy transformace XML dokumentů na XML výstup *7+. Ve cvičení student musí projevit schopnost vytvořit transformaci, kter{ ze zadaného XML dokumentu vytvoří podle určených specifikací nový dokument na výstup. Třetím typem cvičení jsou XML schémata. Student m{ za úkol vytvořit k zadanému XML dokumentu schéma, které jej popisuje. K jednomu XML dokumentu je možné vytvořit několik různých schémat, proto je vhodné řešení č{stečně zadat, tak aby student pouze doplnil č{st řešení. Čtvrtým a p{tým typem cvičení jsou výrazy xPath a xQuery. Student m{ ve cvičení za úkol vytvořit takový výraz, který bude splňovat požadavky uvedené v zad{ní příkladu. Do druhé skupiny požadavků patří ty, které jsou potřebné k obsluze aplikace. Patří sem umožnění registrace a přihlašov{ní uživatelů, rozdělení opr{vnění uživatelů na studenty a učitele. D{le pak označení uživatelů specifickou značkou, možnost jejich filtrov{ní, prohlížení protokolů o absolvov{ní cvičení a jejich komentov{ní. 6 4. Použité n{stroje Při vývoji a implementaci aplikace bylo použito několik n{strojů K těm nejdůležitějším patří aplikační rozhraní Apache Wicket, které pracuje nad bez stavovým protokolem HTTP, framework Hinernate, který umožňuje prov{dět objektové relační mapov{ní a datab{zové dotazy s použitím SQL *8]. Pro nasazení aplikace byla použita cloudov{ služba Open Shift a systém pro spr{vu verzi Git. 4.1. Apache Wicket Apache wicket je jedním z nejzn{mějších webových aplikačních rozhraní, které zjednodušuje vývoj webové aplikace *9]. Wicket dovoluje vyvíjet webovou aplikaci objektově orientovaným programov{ním v jazyce. Snaží se řešit problémy bez stavového HTTP protokolu a stavového serverově orientovaného programov{ní. Nabízí programový model, který skrýv{ skutečnost, že program{tor pracuje nad bez stavovým protokolem. Vytv{řet aplikace pomocí Wicketu z velké č{sti vypad{ jako programov{ní v jazyce Java [10]. Obecně v programov{ní m{ objekt nějaký stav a vlastnosti. Wicket obsluhuje stavy objektů, tak aby bylo možné se soustředit zejména na řešení problému aplikace namísto psaní zdlouhavých kódů [11]. Wcket striktně odděluje prezentační a aplikační vrstvu. Jde tedy o programov{ní čistě v Javě nebo čistě v HTML. Nesnaží se poskytnout rozhraní, které by snížilo nebo dokonce eliminovalo samotné programov{ní, naopak se snaží umožnit programov{ní v Javě v co nejširší šk{le. Tím umožňuje také použití oblíbeného vývojového prostředí a Javy se všemi jeho přednostmi a výhodami. Aplikační vrstva představuje pouze kód v Javě. Prezentační vrstva je tvořena statickými HTML šablonami, které nedovolují program{torovi směšov{ní těchto dvou vrstev. HTML šablony jsou čistě statickým kódem doplněným o speci{lní Wicketové značky a identifik{tory *9+. Striktní oddělení aplikační a prezentační vrstvy by mělo vést k zlepšení čitelnosti kódu, týmové spolupr{ci, využití 7 n{strojů vývojového prostředí jako refaktorov{ní (refactoring), navigace v kódu, zvýraznění syntaxe, automatické doplnění kódu, apod. 4.1.1. Uk{zka použití Wicketu V uk{zce je představena jednoduch{ str{nka zobrazující text „Ahoj světe!“. Každ{ str{nka se ve Wicketu skl{d{ ze dvou souborů. První s HTML kódem a druhý s Java třídou. Oba soubory musejí být ve stejném balíku, mají stejný n{zev, ale rozdílnou koncovku: cz/muni/fi/wicket/PrvniStranka.html cz/muni/fi/wicket/PrvniStranka.java Uk{zka kódu č. 1 Obsah příkladového balíku. Soubor PrvniStranka.java obsahuje velmi jednoduchý kód. Pro zobrazení textu použijeme komponentu Label, kter{ m{ v konstruktoru identifik{tor a text, který se m{ zobrazit. Identifik{tor slouží k propojení prezentační a aplikační vrstvy. package cz.muni.fi.wicket; import org.apache.wicket.markup.html.WebPage; import org.apache.wicket.markup.html.basic.Label; public class PrvniStranka extends WebPage { public PrvniStranka () { add(new Label("message", " Ahoj světe!")); } } Uk{zka kódu č. 2 Aplikační č{st str{nky zobrazující komponentu Label. Soubor PrvniStranka.html obsahuje HTML značky. Značka

je identifik{torem spojena s komponentou Label. Obsah značky bude nahrazen textem z komponenty. 8

[zobrazovaný text...]

Uk{zka kódu č. 3 Prezentační č{st str{nky zobrazující komponentu Label. Výsledný kód vytvořený pomocí Wicketu bude vypadat n{sledovně:

Ahoj světe!

Uk{zka kódu č. 4 Výsledký vygenerovaný HTML kód. 4.2. Hibernate Hibernate je framework pro jazyk Java, který nabízí objektově relační mapov{ní. Umožňuje nahlížet na relační datab{ze jako na objektově orientovaný model. Hibernate mapuje objekty v Javě na entity v relační datab{zi. Patří k oblíbeným frameworkům v Javě *11]. Jeho použití v aplikaci šetří čas při vytv{ření objektů z výsledků datab{zových dotazů a přen{šení vztahů mezi objekty do relačního modelu. Hibernate je licencov{n pod GNU licencí a je uživatelům k dispozici zdarma. 4.3. OpenShift OpenShift patří mezí cloudovou službu. Dalšími zn{mými službami jsou Google App Engine od Googlu, AWS od Amazonu, MS Azure od Microsoftu [12]. OpenShift je platformou6 pro cloudový 6 Pracovní prostředí z hardwarové i softwarové str{nky 9 hosting poskytovaný společností Rad Hat a patří do kategorie služeb PaaS (Platform as a Service), platforma jako služba. Podporuje celou šk{lu serverových technologií jako JavaScript, Ruby, Python, PHP, Perl, Java, datab{ze MySQL, PostgreSQL, MonogoDB a několik r{mců. Z technologií Javy nabízí aplikační server Tomcat ve verzi 6 a 7, JBoss aplkační server ve verzi 7, JBoss aplikační platformu verze 6 *13]. Pro aplikaci byl zvolen pro svoji jednoduchost, cenovou dostupnost a při dodržení omezené prostorové kapacity užív{ní nem{ omezení. Pro potřebu pr{ce je OpenShift vhodné místo kam lze aplikaci nahr{t a d{le bezplatně provozovat. Uživateli umožňuje pod jedním účtem nahr{t a provozovat až 3 aplikace současně. Aplikace využív{ JBoss Application Server 7, MySQL 5.1 a pro spr{vu datab{ze phpMyAdmin 4.0. Aplikaci lze nahr{t na OpenShift za pomoci systému pro spr{vu verzí Git. 4.4. Git a GitHub Git je jedním ze systém pro spr{vu verzí, který umožňuje uchov{vat historie provedených změn ve zdrojovém kódu aplikace [14+. Repozit{ř v gitu je možné získat vložením již existujícího projektu, nebo klonov{ním jiného projektu. Klonov{ní repozit{ře je využív{nou službou OpenShift. GitHub patří mezi nejzn{mější servery pro hosting projektů verzovaných v Gitu. GitHub nabízí jak placené repozit{ře, tak repozit{ře neplacené pro volně rozšiřitelné aplikace. 10 5. Aplikace Aplikace je rozdělena do šesti balíků, které obsahují jednotlivé programové třídy. V prvním balíku jsou obsaženy třídy reprezentující str{nky s jednotlivými cvičeními a třídy obsluhující cvičení a protokoly o absolvov{ní cvičení. Lekce a jejich spr{va je umístěna v druhém balíku. Třetí balík se star{ o komunikaci s datab{zí a objektově relační mapov{ní. Validační procesy spouštěné při vyhodnocov{ní cvičení jsou umístěny spolu s obsluhou chyb ve čtvrtém balíku. Registrace uživatelů, protokoly o absolvov{ní cvičení a značky jsou umístěny v balíku pro obsluhu uživatelů. Poslední balík obsahuje z{kladní str{nku, panely pro učitele a studenty, panel pro přihl{šení a menu panel. 5.1. Z{kladní str{nka Aplikace umožňuje autorizaci a autentizaci uživatelů, proto musí rozšiřovat třídu AuthenticatedWebApplication, kter{ podporuje autentizaci založenou na rolích a rozšiřuje třídu WebApplication, kter{ je podtřídou Application asociovanou s instancí WicketServletu pro obsluhu str{nek přes HTTP protokol. Vlastní aplikace je tvořena třídou HomePage rozšiřující abstraktní třídu BasePage. Třída BasePage je rozšířením třídy Page z balíku org.apache.wicket.markup.html. Nejen hlavní str{nka – HomePage, ale také všechny ostatní str{nky aplikace rozšiřují třídu BasePage. Třídě BasePage jsou v konstruktoru přiřazeny n{sledující komponenty: HeaderPanel – hlavička str{nky MenuPanel – z{kladní menu TeacherPanel – menu pro uživatele s rolí učitel StudentPanel – menu pro uživatele s rolí student SignPanel – panel pro přihlašov{ní a odhlašov{ní uživatelů FooterPanel – patička str{nky 11 5.1.1. HeaderPanel HeaderPanel je rozšířením komponenty Panel a reprezentuje hlavičku str{nky, obsahující pouze její titulek, který funguje jako navigační prvek a odkazuje n{vštěvníky na titulní str{nku aplikace. 5.1.2. MenuPanel MenuPanel je obs{hlejším rozšířením komponenty Panel, které obsahuje z{kladní menu celé aplikace. Menu je rozděleno do dvou kategorií: menu lekce Kategorie menu obsahuje odkaz na str{nku se stručným popisem aplikace. Kategorie lekce odkazuje již na konkrétní lekce a jejich cvičení. MenuPanel je přístupný jak přihl{šeným, tak nepřihl{šeným uživatelům a umožňuje tak sezn{mit se s problematickou značkovacích jazyků každému kdo m{ k aplikaci přístup. 5.1.3. TeacherPanel TeacherPanel je komponenta, kter{ je určena výhradně pro uživatele s opr{vněním učitel. Učitel ze své role m{ možnost přid{vat nov{ cvičení, registrační období, nahlížet do seznamu studentů a protokolů o splnění cvičení. Panel slouží jako rozcestník s odkazy na str{nky určené učiteli. Obr. č. 1 Uk{zka komponenty TeacherPanel. Komponenta je uživateli poskytnuta v z{vislosti na jeho opr{vněním. Uživatelům s opr{vněním učitel je komponenta 12 zobrazena, ostatní uživatelé se o její existenci nedozví. Viditelnost komponenty je zajištěna překrytím metody boolean isVisible(), kter{ získ{ relaci přihl{šeného uživatele a ověří, zda se jedn{ o učitele. 5.1.4. StudentPanel Komponenta StudentPanel je svojí funkcí podobn{ komponentě TeacherPanel, ale je určena pro uživatele s rolí student. Obsahuje odkaz vedoucí k vlastním protokolům o splnění cvičení. Stejně jako u komponenty TeacherPanel je uživateli poskytnuta v z{vislosti na jeho opr{vněním. Překrytím metody boolean isVisible(), je zajištěna viditelnost komponenty pouze pro uživatele s opr{vněním student. 5.1.5. SignPanel SignPanel je komponenta, kter{ souží k přihlašov{ní a odhlašov{ní uživatelů. Je rozdělena na dvě č{sti. Nepřihl{šenému uživateli nabízí přihlašovací formul{ř, případně vytvoření nové registrace. Přihl{šený uživatel vidí své z{kladní informace a odkaz pro odhl{šení. Viditelnost jednotlivých č{stí je opět zajištěna překrytím metody boolean isVisible(), kter{ ověří stav přihl{šení uživatele metodou boolean isSignedIn(). Metoda vrací true pro přihl{šeného uživatele, false v opačném případě. Obr. č. 2 Uk{zka SignPanelu před přihl{šením (vlevo) a po přihl{šení (vpravo) 13 5.1.6. FooterPanel FooterPanel je jednoduché rozšíření třídy Panel, které reprezentuje patičku str{nky. 5.2. Autorizace a autentizace Autorizace uživatelů, jako proces získ{ní souhlasu s provedením nějaké operace *15+, probíh{ v aplikaci na dvou úrovních: 1. autorizace aplikací a 2. autorizace učitelem. Autentizace probíh{ pomocí standardního přihlašovacího formul{ře. 5.2.1. Autorizace aplikací Podpora autorizace na straně aplikace je ve Wicketu řešena konceptem autorizační strategie pomocí rozhraní Iauthorization Strategy (v balíku org.apache.wicket.authorization). Toto rozhraní definuje dvě metody, které ověřují zda je uživatel opr{vněn vytv{řet instance dané komponenty a zda je opr{vněn na dané instanci komponenty prov{dět operace *16]. Standardní implementace autorizačního rozhraní dovoluje každému uživateli vytv{řet instance z každé komponenty a prov{dět na ni všechny dostupné operace. Autorizační strategie může být změněna v průběhu inicializace aplikace. V aplikaci je použita autorizace na z{kladě rolí a k ní příslušn{ strategie RoleAuthorizationStrategy z balíku org.apache.wicket. authroles.authorization.strategies.role. Při inicializaci aplikace je vytvořena nov{ instance autorizační strategie s vlastní třídou pro získ{ní role z relace (třída UserRolesAuthorizer). Rolově orientovan{ strategie se opír{ o dvě vestavěné anotace. Těmi jsou AuthorizeInstantiation a AuthorizeAction. Anotace AuthorizeInstantiation specifikuje, kter{ role smí vytv{řet instance, zatímco anotace AuthorizeAction specifikuje kter{ role smí používat danou metodu komponenty *16]. 14 Pro autorizaci uživatelů se v aplikace použív{ anotace AuthorizeInstantiation. Pro autorizaci uživatelů s rolí učitel jde o anotaci @AuthorizeInstantiation("TEACHER"). 5.2.2. Autorizace učitelem Přístup do některých č{stí aplikace je podmíněn přihl{šením. Každý uživatel, který chce získat přístup do aplikace se musí nejprve registrovat. Při registraci musí projevit znalost registračního hesla, které je vytv{řeno učitelem a m{ omezenou platnost. Poskytnutím hesla učitel opravňuje uživatele k registraci do aplikace. 5.2.3. Autentizace Autentizace jako proces ověření proklamované identity uživatele je v aplikaci implementov{n pomocí přihlašovacího formul{ře, kde uživatel zad{v{ své uživatelské jméno a heslo. Pro jednoduchou autentizaci uživatelů pomocí formul{ře nabízí Wicket komponentu SignInPanel z balíku org.apache.wicket. authroles.authentication.panel. Komponenta je složena z přihlašovacího formul{ře a informačního panelu pro chybovou nebo informační zpr{vu – FeedbackPanel. FeedbackPanel podporuje filtry pro zpr{vy, aby bylo možné separovat zpr{vy pouze z určitého formul{ře. K tomu lze použít ContainerFeedbackMessageFilter. Již zmiňovan{ komponenta SignInPanel není implementov{na tak, aby bylo možné zadat filtr. Proto bylo nutné implementovat vlastní přihlašovací panel z důvodu kolize více FeedbackPanelů dalších formul{řů. Aplikace na jedné str{nce zobrazuje více různých formul{řů, které mají vlastní FeedbackPanel. Samotn{ autentizace probíh{ metodou boolean authenticate(String username, String password) třídy SignInSession, kter{ obsluhuje přihlašovací relaci. Aplikace použív{ vlastní třídu - SignInSession, kter{ se star{ o relaci přihl{šení a přepisuje metody Roles getRoles(), void signOut() a boolean authenticate(…). 15 V aplikaci není možné najít přímé vol{ní metody authenticate. Ta je vol{na Wicketem při vytv{ření nové relace přihl{šení. 5.3. Role a opr{vnění V aplikaci jsou použity dvě úrovně opr{vnění: student a učitel. Role uživatelů jsou stejnojmenné podle úrovně opr{vnění. Způsob získ{ní opr{vnění a jeho kontrola jsou pops{ny v kapitole 5.2 Autorizace a autentizace. V této kapitole je pops{no, jaké může uživatel vykon{vat akce s příslušnou rolí. Nez{visle na roli je dovoleno všem uživatelům: prohlížet všechny typy lekcí a jejich obsah, prohlížet jednotliv{ cvičení (ne je absolvovat), zaregistrovat se do aplikace. 5.3.1. Role student Uživatel, kterému je přiřazena role student může prov{dět tyto akce: přihl{sit a odhl{sit se z aplikace, absolvovat všechny typy cvičení, nahlížet do svých protokolů o absolvov{ní svých cvičení a nahlížet do koment{řů, které do protokolu o cvičení zadal učitel. 5.3.2. Role učitel Role učitel m{ dovoleno prov{dět více akcí. V roli učitele může uživatel prov{dět všechny n{sledující akce: přihl{sit a odhl{sit se z aplikace, absolvovat všechny typy cvičení, nahlížet do všech protokolů o absolvov{ní cvičení všech uživatelů, přidat a měnit koment{ře do protokolu o absolvov{ní cvičení, přidat nové cvičení a zobrazit nebo skrýt jeho vzorové řešení, nahlížet do existujících registračních období a přidat nové registrační období. 16 5.4. Lekce a cvičení Hlavním z{měrem aplikace je umožnit uživatelům procvičovat problematiku předmětu PB138 Moderní značkovací jazyky a jejich aplikace v rozsahu jeho sylabu. Z{kladní jednotkou je lekce, do které je možné přidat nebo upravovat text a sdružovat cvičení daného tématu. Uk{zkov{ lekce je zobrazena na Obr. č. 3. Obr. č. 3 Uk{zka lekce se vzorovým textem, dvěmi přidanými cvičeními a odkazy pro přid{ní nového cvičení a úpravu textu lekce. Cvičení dovoluje automatizovaně procvičovat danou problematiku. Aplikace umí automatizovaně procvičovat: ověření dokumentu podle DTD, XSLT transformace, XSD schéma, xQuery výrazy a xPath výrazy. Každé cvičení je složeno ze zad{ní, č{stečného řešení a vzorového řešení. Proto bylo možné navrhnout společnou třídu 17 Exercise z balíku cz.muni.fi.exercise, kter{ obsahuje všechny společné prvky. Cvičení jsou zaměřena na různou problematiku a není možné je vyhodnocovat stejně, proto bylo zapotřebí implementovat vlastní vyhodnocovací mechanizmy jednotlivých cvičení. U vyhodnocovacích mechanizmů se podařilo identifikovat společné prvky a ty č{stečně implementovat ve třídě AProcessor. Jde o abstraktní třídu, kter{ obsahuje několik abstraktních metod, které jednotlivé procesory implementují. Obsah cvičení je rozdělen na veřejnou a neveřejnou č{st. Do veřejné č{sti, kterou vidí všichni uživatelé patří zad{ní cvičení a jeho vzorové řešení (pokud je učitel povolil zobrazit). Po přihl{šení do aplikace je uživateli přístupný navíc formul{ř, který vyhodnotí jeho řešení cvičení a každé řešení je uloženo v podobě protokolu o absolvov{ní cvičení. Nepřihl{šený uživatel m{ možnost si cvičení prohlédnout, ale nemůže vyhodnotit své řešení, z důvodu aby mohl učitel nebo student nahlížet do všech řešení. 5.4.1. Ověření dokumentu podle DTD Z{měrem cvičení na ověření dokumentu podle DTD je umožnit studentům procvičovat vytv{ření DTD k zadanému XML. Cvičení m{ zadané XML ke kterému studenti mají za úkol vytvořit vlastní DTD nebo doplnit č{stečně zadané řešení. K ověření dokumentu XML podle DTD bylo vyžadov{no použití validačního n{stroje Xerces. Pro Javu existuje knihovna s implementací funkcionalit Xercesu. Do aplikace byla přid{na jako z{vislost (dependency). Knihovna je použita ve verzi 2.11.0 z balíku org.apache.xerces. V průběhu validace je zadané XML v podobě textového řetězce převedeno instancí třídy TransformerFactory na StreamResult. Transform{toru je také nastaven DOCTYPE_SYSTEM v podobě DTD, které student vytvořil. XML dokument s nastaveným DTD v podobě StreamResult je analyzov{n instancí třídy DOMParser, z knihovny Xerces a metodou parse(InputSource is) je ověřena validita DTD dokumentu, který student vytvořil. Při analýze a zpracov{ní DTD 18 dokumentu mohou vzniknout tři druhy chyb, které jsou obslouženy a vr{ceny v podobě zpr{vy pro uživatele. V případě, že při analýze nevznikla ž{dn{ chyba je DTD vyhodnoceno jako spr{vné. Pro obsluhu chybových hl{šení byla implementov{na třída ErrorHandler rozšiřující standardní DefaultHandler z balíku org.xml.sax.helpers. Programov{ny byly metody pro obsluhu varov{ní (warnings), chyb (errors) a z{važných chyb (fatal errors). Ani v případě z{važné chyby nedojde k p{du aplikace, ale student dostane hl{šení o z{važnosti. 5.4.2. XSLT transformace Cvičení na XSLT transformace umožňuje studentům vytv{řet vlastní nebo doplňovat č{stečn{ řešení XSLT transformací. Zad{ní se skl{d{ z XML dokumentu a slovního popisu toho, co m{ transformace provést. Po vyhodnocení cvičení m{ student přístup k výstupnímu XML dokumentu. Vidí tedy jak dopadla transformace, kterou navrhl. Transformace je provedena pomocí instance třídy TransformerFactory z balíku javax.xml.transform, který představuje rozhraní transformační procesy. Použit{ metoda transform(Source s, Result r) převede zdroj s na výsledek r. Transform{toru je nastaven vlastní ErrorListener implementující rozhraní ErrorListener ze stejného balíku. Transform{toru je možné nastavit specifické vlastnosti, jako například odsazov{ní elementů pro lepší orientaci v XML dokumentu, čehož je při transformaci využito. Během transformace mohou vzniknout chyby. Třída ErrorListener zajišťuje sdělení chyby uživateli, tak aby mohl transformaci opravit. Mohou vzniknout tři typy chyb: varov{ní (warning), chyba (error) nebo z{važn{ chyba (fatal error). O každé z chyb je uřivatel informov{n v podobě zpr{vy. 5.4.3. XSD Schéma Ve cvičeních zaměřených na XSD schéma m{ student za úkol napsat XSD schéma k zadanému XML. 19 K vyhodnocení uživatelem vytvořeného XSD schématu je použita instance třídy SchemaFactory z balíku javax.xml.validation. Při vytv{ření instance třídy SchemaFactory je nutné zadat jmenný prostr popisující schéma. Vybr{n byl jmenný prostor uveřejněný na webu mezin{rodního konsorcia World Wide Web Consortium (W3C). Jmenný prostor je dostupný online na adrese: http://www.w3.org/2001/XMLSchema. Z textové podoby XSD Schématu byla vytvořena instance třídy Schema. Z této instance byl metodou newValidator() vytvořen valid{tor, který vyhodnotí spr{vnost XSD schématu. Pro obsluhu chybových hl{šení byla implementov{na třída ErrorHandler, kter{ je použita také k obsluze chyb při validaci proti DTD. 5.4.4. xQuery výrazy XQuery výrazy je možné procvičovat v dalším typu cvičení. Student m{ zadané XML a jeho úkolem je vytvořit xQuery výraz, který bude odpovídat zad{ní. Ke zpracov{ní a vyhodnocení vytvořeného xQuery výrazu byla použit knihovna Saxon ve verzi 7.8 a přev{žně třídy z balíku net.sf.saxon.query. Prvním krokem k vyhodnocení xQuery výrazu je vytvoření konfiguračního objektu net.sf.saxon.Configuration, který uchov{v{ nastavení systému. Objektu není potřeba dodatečně nastavovat ž{dné vlastnosti, z{kladní nastavení je dostačující. Dalším krokem je zpracov{ní vstupního XML třídou StaticQueryContext, kter{ zkompiluje XML a vytvoří z něj výraz XqueryExpression. Z xQuery výrazu bylo nutné vytvořit instanci třídy DocumentInfo a nastavit ji jako kontextový uzel třídy DynamicQueryContext. Spuštění xQuery výrazu nad XML se prov{dí metodou run(DynamicQueryContext dqc, Result result, Properties p). Případné chyby při vykon{v{ní metody jsou vr{ceny prostřednictvím obsluhy chyb – třídou ErrorListener. 20 5.4.5. xPath výrazy Poslední typ cvičení studentům umožňuje procvičovat vytv{ření xPath výrazů. Student m{ za úkol napsat takový xPath výraz, aby odpovídal zad{ní úlohy. Souč{stí zad{ní je také XML, které se vztahuje k xPath výrazu. Student vidí XML před i po zpracov{ní. Nedost{v{ pouze zpr{vu o tom, zda je xPath výraz spr{vně nebo ne, ale m{ možnost vidět jak XML dopadlo po aplikaci jeho výrazu. Zpracov{ní xPath výrazu se děje za pomoci rozhraní XPath balíku javax.xml.xpath a instance třídy TransformerFactory a transform{toru Transformer, který metodou transform(Source s, Result r) převede zdroj s na výsledek r. Chyby vzniklé při transformaci jsou vr{ceny prostřednictvím třídy ErrorListener. Zdrojem transformace je objekt typu DOMSource. Vstupní XML v textové podobě je převedeno na objekt typu DOMSource z knihovny Xerces. Samotné zpracov{ní xPath výrazu probíh{ nad instancí třídy XpathFactory z balíku javax.xml.xpath. Metoda evauate(String expression, InputSource source, Qname returnType) vyhodnotí xPath výraz expression vzhledem ke zdroji source a vr{tí výsledek jako specifický typ returnType. 5.5. Protokol o absolvov{ní cvičení Protokol o absolvov{ní cvičení je navržen tak, aby umožnil prohlížet řešení absolvovaných cvičení a dovoluje učiteli d{t zpětnou vazbu studentovi prostřednictvím koment{ře k výsledku. Entita UserExerciseProtocol uchov{v{ informace o výsledku, uživateli který cvičení absolvoval, cvičení, které bylo absolvov{no, čas absolvov{ní a koment{ř učitele. Z důvodu různých typů cvičení je výsledek uložen pouze v textové podobě. Obr. č. 4 ilustruje podobu protokolu prohlíženou učitelem. Učitel může komentovat výsledek studenta prostřednictvím komponenty AjaxEditableLabel, kter{ umožňuj upravit obsah koment{ře přímo na str{nce s protokolem bez nutnosti znovunačtení str{nky. Koment{ř je dovoleno vkl{dat pouze uživatelům s opr{vněním učitel. Ostatní uživatelé mají pr{vo do koment{ře pouze nahlížet. 21 Obr. č. 4 Uk{zka protokolu o absolvov{ní cvičení prohlížen{ učitelem. 22 5.6. Zvýraznění syntaxe XML Souč{stí každého cvičení je vždy zadané XML a vzorové řešení v podobě XML. Aby bylo XML lépe čitelnější, je v aplikaci využito zvýraznění syntaxe, které barevně odděluje logické č{sti, např. n{zev atributu a jeho hodnotu nebo n{zev značky a n{zev atributu. Jak ilustruje Obr. č. 5, syntaxe není zvýrazněna pouze barevně, ale také prostorově. Doch{zí k odsazov{ní vnořených značek, tak aby vznikal na první pohled strukturovaný XML dokument. Pro zvýraznění syntaxe XML doumentů je v aplikaci je využito externí JavaScriptové knihovny jQuery a její rozšíření jQuery Syntax Highlighter ve verzi 1.1. Rozšíření umožňuje program{torovi jednoduše zvýraznit syntaxi XML dokumentů. Pr{ce se zvýrazněným dokumentem je pak pro uživatele přívětivější a může pomoci k lepší orientaci v dokumentu. Jak knihovna jQuery tak její rozšíření jsou licencov{ny pod licencí MIT. Knihovna i rozšíření byly vybr{ny z důvodu jejich snadné aplikace a volně rozšiřitelné licenci. Obr. č. 5 Uk{zka zvýraznění syntaxe. 23 5.7. WYSIWYG editor Aplikace dovoluje učiteli editovat text lekce a přid{vat nov{ cvičení. Aby bylo možné jednoduše form{tovat přid{vaný text přímo v prohlížeči, je v aplikaci použit WYSIWYG editor NicEdit ve verzi 0.9, který je licencov{n pod licencí MIT. Editor byl vybr{n z důvodu snadné implementace, možnosti zvolit, jaké form{tovací prvky budou uživateli poskytnuty a které budou zak{z{ny. Ze z{kladní nabídky form{tov{ní, které editor nabízí je v aplikaci odebr{no pouze tlačítko pro vkl{d{ní obr{zků. Editor uživateli nabízí možnost zarovn{ní textu, změnu velikosti textu, změnu fontu písma, odsazení, vytvoření číslovaných nebo odr{žkových seznamů, apod. Obr. č. 6 demonstruje použití editoru nad vzorový textem. Strukturovaný a form{tovaný text lekce vytvořený pomocí WYSIWYG editoru NicEdit je pro studenty lepé čitelný, umožňuje snazší orientaci a dovoluje také odkazovat na externí zdroje. Obr. č. 6 Uk{zka použití editoru na úpravu textu lekce se vzorovým textem. 24 6. N{vrh použití aplikace ve výuce Aplikace je navržena tak, aby se mohla používat jako podpora výuky předmětu PB138 Moderní značkovací jazyky a jejich aplikace. Při skutečném využití získají vyučující předmětu soubor cvičení k jednotlivým tématům, které mohou jednoduše rozšiřovat nebo doplňovat. Studenti tím mají možnost procvičit danou problematiku větším množstvím cvičení různé obtížnosti a také získat zpětnou vazbu od cvičícího. Po spuštění aplikace musí cvičící nejprve vytvořit teoretický obsah lekce a přidat k němu cvičení. Bez těchto dvou z{kladních kroků je zbytečné udělovat přístup do aplikace studentům. Teoretický obsah lekce může upravovat pouze uživatel s opr{vněním učitel na str{nce s danou lekcí kliknutí na tlačítko „Upravit text lekce“. WYSIWYG editor umožňuje text lekce strukturovat a form{tovat tak aby byl co nejpřehlednější. Souč{stí každé lekce je soubor číslovaných cvičení uvedený pod textem lekce. Uživatel s opr{vněním učitel může také přid{vat nov{ cvičení. Každé cvičení se skl{d{ z typu, textového zad{ní a XML, které tvoří nedílnou souč{st zad{ní. D{le je možné zadat č{stečné řešení cvičení. Důležitou souč{stí cvičení je oček{vaný XML výstup. Nejde o vzorové řešení, ale o výstupní XML po transformaci nebo aplikaci dotazu. Cvičení také obsahuje vzorové řešení, jak v textové tak v XML podobě, které lze zobrazit nebo skrýt. Na všechny XML bude aplikov{no zvýraznění syntaxe pro lepší přehlednost. Uložením cvičení vznikne nov{ položka v seznamu cvičení dané lekce a je možné je ihned absolvovat. N{stroje vyhodnocující řešení cvičení jsou běžně využívané ve výuce. Jejich použití není z{vislé pouze na aplikaci a student je tak může aplikovat s{m např. prostřednictvím příkazové ř{dky. Přístup uživatelů je podmíněn registrací. Registrace je povolena pouze v registračním období a je podmíněna heslem. Registrační období m{ pr{vo přidat pouze uživatel s opr{vněním učitel. Takový uživatel musí zadat registrační období (odkaz „Registrační období“ v menu) pro povolení registrace. Při zad{v{ní nového období je zapotřebí stanovit kdy začín{, kdy končí a zvolit 25 vhodné registrační heslo. Registrační heslo slouží k označení uživatelů zaregistrovaných v daném období a slouží také jako filtr v seznamu uživatelů. Vhodným heslem je např. 05jaro2013 pro studenty p{té semin{rní skupiny v semestru jaro 2013. Při zad{v{ní nového období je důležité, aby cvičící zadal opr{vnění „Student“. Po zad{ní registračního období může sdělit studenům adresu, na které se zaregistrují. Pokud chce uživatel umožnit registraci učiteli, je potřeba zadat opr{vnění „Učitel“ a období registrace co nejvíce zkr{tit, aby nemohlo dojít k neopr{vněné registraci. Studenti se vyplněním registračních údajů zaregistrují a získ{vají okamžitý přístup ke všem lekcím a jejich cvičení. Zad{ní cvičení je možné prohlížet i jako nepřihl{šený uživatel, absolvov{ní cvičení je ale přihl{šením podmíněné. Cvičení jsou dostupn{ v každé lekci pod jejím teoretickým obsahem. Po zad{ní vlastního řešení a jeho vyhodnocením kliknutím na tlačítko „Vyhodnotit“ vidí uživatel okamžitě svůj výsledek. Počet vyhodnocení každého cvičení není omezen. Při každém vyhodnocení doch{zí k uložení protokolu o absolvov{ní cvičení, který obsahuje informace o tom, jaké cvičení který uživatel absolvoval a jaké bylo jeho řešení. Protokol lze zpětně prohlížet (odkaz „Protokoly o cvičení“ při opr{vnění Student, „Seznam uživatelů“ při opr{vnění Učitel. Protokoly jsou zde řazeny podle typu lekce do které patří. Jakmile studenti absolvují cvičení, může si cvičící dohledat protokol o absolvov{ní cvičení v Seznamu uživatelů a přidat svůj koment{ř k řešení. K zad{v{ní koment{ře je využito AJAX komponenty, cvičící jej tedy zad{v{ přímo do protokolu. Dvojklikem na položku koment{ř (v případě neexistujícího koment{ře se zobrazuje text „…“) se zobrazí editační textové pole pro zad{ní obsahu. Odkaz „Seznam uživatelů“ učiteli d{v{ přehled o všech zaregistrovaných uživatelích a umožňuje mu tento seznam filtrovat podle značky a opr{vnění, pokud chce zobrazit pouze danou skupinou uživatelů. U každého uživatele je možné prohlížet jeho protokoly a absolvov{ní cvičení. Zeleně zbarvené odkazy na protokoly s n{pisem „OK“ značí, že zadané řešení vyhovuj zad{ní, oproti tomu červené 26 zbarvené odkazy s n{pisem „NOK“ značí nevyhovující nebo ž{dné řešení cvičení. Každý protokol může učitel prohlížet a komentovat. 27 7. Z{věr Cílem této pr{ce bylo navrhnout a implementovat aplikaci, kter{ umožní automatizovaně procvičovat problematiku značkovacích jazyků v rozsahu předmětu PB138 Moderní značkovací jazyky a jejich aplikace. Na z{kladě zvolené SCRUM metodiky byly stanoveny požadavky, které se podařilo všechny implementovat. Vznikl tak n{stroj, který umožňuje vytv{řet a rozšiřovat databanku cvičení k podpoře výuky témat jako je validace DTD dokumentů, XML transformací, XSD schémat, xQuery a xPath výrazů. Aplikace podporuje dvě úrovně opr{vnění. Uživatelé s opr{vněním student mají možnost pouze plnit cvičení, zatímco uživatelé s opr{vněním učitel mohou nov{ cvičení přid{vat, komentovat protokoly a absolvov{ní cvičení nebo povolovat registraci uživatelům novým. Volba úrovní opr{vnění je tak vhodn{ k použití ve výuce. Aplikace byla nasazena na službu OpenShift a je volně přístupn{. 28 8. Literatura [1] VOCHOZKA JOSEF. Značkovací jazyky a XML [online]. 2000 [cit. 2013-11-29+. Dostupné z: . [2] PB138 Moderní značkovací jazyky a jejich aplikace [online]. 2012 [cit. 2013-11-25+. Dostupné z: . [3] Wicket: A simplified framework for building and testing dynamic Web pages. IBM developerWorks [online]. 2008 [cit. 2013-08-12]. Dostupné z: . [4] SCHWABER KEN. Agile Software Development with SCRUM. Pearson 2008, 158 s. ISBN 978-0-1320-7489-6. [5] SUTHERLAND JEFF, SCHWABER KEN. The Scrum Guid TM [online]. 2013 [cit. 2013-08-20+ Dostupné z: . *6+ PITNER TOM[Š. Z{kladní standardy a rozhraní rodiny XML [online]. 2. 3. 2010. [cit. 2013-09-05+. Dostupné z: . *7+ PITNER TOM[Š. Transformace XML dat [online]. 22. 3. 2010. [cit. 2013-09-05+. Dostupné z: . [8] Hibernate ORM [online]. [cit. 2013-10-12+. Dostupné z: . 29 [9] VAYNBERG IGOR. Apache Wicket Cookbook. 1. vyd{ní. Packt Publishing, 2011, 312 s. ISBN 978-1-849511-60-5. [10] MARTIJN DASHORST, EELCO HILLENIUS. Wicket in Action. Greenwich: Mannig Publications Co., 2009, 392 s. ISBN 1-932394-98-2. [11] BAUER CHRISTIAN, KING GAVIN. Hibernate in Action. Greenwich: Mannig Publications Co., 2005, 430 s. ISBN 1932394-15-X. *12+ Nov{ cloudov{ platforma OpenShift. Živě.cz [online]. 2011 [cit. 213-10-11+. Dostupné z: . [13] Java Application Hosting. OpenShift [online]. 2013 [cit. 2013-10-23]. Dostupné z: . [14] CHACON SCOTT. Pro Git. Praha: CZ.NIC, z. s. p. o., 2009, 263 s. ISBN: 978-80-904248-1-4. *15+ MATY[Š V[CLAV, KRHOVJ[K JAN. Autorizace elektronických transakcí a autentizace dat i uživatelů. 1. vyd. Brno: Masarykova univerzita, 2008. 128 s. 1. ISBN 978-80-210-4556-9. [16] 20 Security with Wicket - Reference Documentation. Apache Wicket [online]. 2012 [cit. 2013-12-05+. Dostupné z: < https://wicket.apache.org/ guide/guide/chapter19.html#chapter19_2>. 30 9. Přílohy Autor Požadavky Mgr. Filip Nguyen Student může komentovat jednotlivé lekce, aby učitel měl zpětnou vazbu o tom, co přidal, že je chyba ve cvičení, apod. Mgr. Filip Nguyen Student může měnit obsah lekce. Aby nebylo možné "ničit" obsah, tak jakýkoliv obsah který se do systému dostane nebude nikdy smaz{n. Mgr. Filip Nguyen Měla by být možnost jednoduše přidat studenty určitého ročníku. Registrace na heslo, tj. učitel přijde do učebny, v systému zad{ hodinové heslo na registraci. Systém nyní akceptuje registrace po dobu jedné hodiny na z{kladě tohoto hesla. Mgr. Filip Nguyen Student m{ možnost odpovídat na ot{zky systému a/b/c/d Mgr. Filip Nguyen Student může řešit úkol typu: je zad{no XML a ot{zka je "Dopište DTD" (Doplnění st{vajícího č{stečného řešení) Mgr. Filip Nguyen Student m{ možnost zpětné vazby při řešení cvičení XSLT transformací. (Tj. vidí XML před i po transformaci) Mgr. Filip Nguyen Když student validuje pomocí DTD ve cvičení, tak výstup validace bude ve form{tu, který zprostředkov{v{ XMLLint. Tzn. že technologicky se na pozadí spouští XMLLint. Mgr. Filip Nguyen Učitel může přid{vat další cvičení. Mgr. Filip Nguyen Učitel může zobrazit statistiku nejčastěji vyhodnocovaných řešení a nejvíce problematických cvičení. 31 Mgr. Filip Nguyen V lekci je více str{nek. Aby učitel při výkladu mohl studentům říct, že budeme pracovat s další str{nkou. Jiří Krejčí Učitel může zobrazit nebo skrýt vzorové řešení příkladu. Jiří Krejčí Mezi uživatelem a systémem probíh{ automatick{ mailov{ komunikace (při registraci, změně hesla). Jiří Krejčí Učitel může přid{vat další lekce. Jiří Krejčí Učitel může vytv{řet testové ot{zky a/b/c/d. Jiří Krejčí Uživatel si může přid{vat vlastní značky (tagy), aby si vytvořil supiny, např. tag '2011', 'skupina01'. Jiří Krejčí Učitel může přiřazovat značku (tag) studentovi, aby byl schopen filtrovat studenty. Jiří Krejčí Student může řešit úkol typu: je zad{no XML a ot{zka je "Napište XPath výraz, který vybere elementy s atributem 'id'." Jiří Krejčí Student může řešit úkol typu: je zad{no XML a ot{zka je "Dopište XML schéma" (Doplnění st{vajícího č{stečného řešení) Jiří Krejčí Student může řešit úkol typu: je zad{no XML a ot{zka je "Dopište XSL transformaci, aby výsledný XML splňoval tyto podmínky:..." (Doplnění st{vajícího č{stečného řešení) Jiří Krejčí Student může řešit úkol typu: je zad{no XML a ot{zka je "Napište XQuery výraz, který vybere elementy XY." Mgr. Marek Gr{c Cvičení v lekci jsou uspoř{d{ny neline{rně, aby pokročilí studenti mohli rychle přejít na složitější úlohy a slabší studenti si mohli lehčí příklady více osvojit. Mgr. Marek Gr{c Učitel může ke cvičení přidat předpokl{daný čas 32 potřebný k zvl{dnutí úlohy, aby studenty motivoval úlohu dokončit v nějakém čase. doc. RNDr. Tom{š Pitner, Ph.D. Student může řešit úkoly typu: vytvořte dokumentaci v DocBook. Dokumentace bude vložena jako volný text a učitel ji bude mít možnost prohlížet. doc. RNDr. Tom{š Pitner, Ph.D. Student může řešit úkoly typu: vytvořte dokument v HTML5 vložte protokol z online valid{toru. Protokol bude vložen jako volný text a učitel bude mít možnost jej prohlížet. doc. RNDr. Tom{š Pitner, Ph.D. Student může programově spouštět xPath a xQuery doplněním programové spuštění xPath, XQuery, apod. doplňov{ní 1 metody. Mgr. Luděk B{rtek, Ph.D. Když student validuje pomocí DTD ve cvičení, tak výstup validace bude ve form{tu, který zprostředkov{v{ validační n{stroj Xerces. Tab. 1 Seznam požadavků a jejich autoři. Student může řešit úkol typu: je zad{no XML a ot{zka je "Dopište DTD" (Doplnění st{vajícího č{stečného řešení). Student může řešit úkol typu: je zad{no XML a ot{zka je "Dopište XSL transformaci, aby výsledný XML splňoval tyto podmínky: ..." (Doplnění st{vajícího č{stečného řešení.) Student může řešit úkol typu: je zad{no XML a ot{zka je "Nepiště XPath výraz, který vybere elementy s atributem 'id'." Student může řešit úkol typu: je zad{no XML a ot{zka je "Dopište XML schéma" (Doplnění st{vajícího č{stečného řešení) Student může řešit úkol typu: je zad{no XML a ot{zka je "Nepiště XQuery výraz, který vybere elementy XY." Student m{ možnost zpětné vazby při řešení cvičení XSLT transformací. (Tj. vidí XML před i po transformaci) Učitel může přid{vat další cvičení. Učitel může zobrazit nebo skrýt vzorové řešení příkladu. 33 Učitel může přiřazovat značku (tag) studentovi, aby byl schopen filtrovat studenty. Když student validuje pomocí DTD ve cvičení, tak výstup validace bude ve form{tu, který zprostředkov{v{ validační n{stroj Xerces. Měla by být možnost jednoduše přidat studenty určitého ročníku. Registrace na heslo, tj. učitel přijde do učebny, v systému zad{ hodinové heslo na registraci. Systém nyní akceptuje registrace po dobu jedné hodiny na z{kladě tohoto hesla. Tab. 2 Seznam vybraných požadavků k implementaci. CD č. 1 CD se zdrojovými kódy.