<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.itcollege.ee/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Otiks</id>
	<title>ICO wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.itcollege.ee/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Otiks"/>
	<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php/Special:Contributions/Otiks"/>
	<updated>2026-05-08T09:37:53Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Talk:JRT&amp;diff=123694</id>
		<title>Talk:JRT</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Talk:JRT&amp;diff=123694"/>
		<updated>2017-06-14T23:01:02Z</updated>

		<summary type="html">&lt;p&gt;Otiks: /* Hinnang meeskonna JRT esitatud klientrakendusele */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Hinnang meeskonna JRT esitatud XML-failidele==&lt;br /&gt;
&lt;br /&gt;
Koostaja: [https://wiki.itcollege.ee/index.php/Team_SPOT Team SPOT]&lt;br /&gt;
&lt;br /&gt;
Meeskond JRT on esitanud XML-faili, skeemifaili ja kaks XSLT-faili andmete transformeerimiseks HTML- ja XML-formaati. Transformatsioonid sisaldavad enam kui ühte &#039;&#039;for-each&#039;&#039;-klauslit. HTML-väljundiga transformatsioonis on kasutatud nelja &#039;&#039;for-each&#039;&#039;i ja kolme &#039;&#039;if&#039;&#039;-tingimust. XML-väljundiga transformatsioonis on kasutatud viite &#039;&#039;for-each&#039;&#039;i ja kolme &#039;&#039;if&#039;&#039;-tingimust. XML valideerub ja loogilisi dimensioone on viis. Neljal dimensioonil on kasutatud atribuute, mis on enam kui lihtsalt ID. Töö põhinõuded on täidetud.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Märkused XMLi/XSD kohta:&#039;&#039;&#039;&lt;br /&gt;
* elemendi &amp;lt;user&amp;gt; &#039;&#039;id&#039;&#039;-atribuudi väärtuse unikaalsus ei ole tagatud&lt;br /&gt;
* elemendile &amp;lt;user&amp;gt; saab lisada piiramatul arvul sama alamelementi: &amp;lt;firstName&amp;gt;, &amp;lt;lastName&amp;gt;, &amp;lt;born&amp;gt;, &amp;lt;sex&amp;gt;, …&lt;br /&gt;
* elemendil &amp;lt;user&amp;gt; on kõigi &amp;lt;subscription&amp;gt;-elementide &#039;&#039;type&#039;&#039; määratud kõige ülemisel tasemel &#039;&#039;status&#039;&#039;-atribuudiga, aga see võiks olla &amp;lt;subscription&amp;gt;-tasemel, et võimaldada rohkem paindlikkust&lt;br /&gt;
* atribuuti &#039;&#039;id&#039;&#039; (unikaalset) võiks kasutada ka teiste “liigielementide” puhul, sest:&lt;br /&gt;
**  elemente &amp;lt;subscription&amp;gt; saab sama &#039;&#039;name&#039;&#039;-atribuudiga lisada piiramatul arvul&lt;br /&gt;
**  elemendi &amp;lt;subscription&amp;gt; alla saab lisada piiramatul arvul &amp;lt;price&amp;gt;-elemente samade &#039;&#039;type&#039;&#039;- ja &#039;&#039;currency&#039;&#039;-atribuutide väärtustega&lt;br /&gt;
* elemendi &amp;lt;subscription&amp;gt; &#039;&#039;name&#039;&#039;-atribuudiga võib tekkida probleeme, kui atribuuti pandud nimi sisaldaks erimärke, seega oleks mõistlikum &#039;&#039;name&#039;&#039;-atribuut asendada eraldi alamelemendiga &amp;lt;name&amp;gt;&amp;lt;/name&amp;gt;, kus saaks kasutada CDATAt.&lt;br /&gt;
&lt;br /&gt;
Tööga on nähtud vaeva, XSLTd on koostatud arusaadavalt, kuid XSD ja XML vajaksid täiendamist, et vältida võimalikke ohukohti andmete saatmisel. Vastasel korral võivad ka transformatsioonid ootamatusi toota (vt näidet). Põhiline oleks XSDs ära märkida, kui palju mingit elementi esineda võib ning tagada ka &#039;&#039;id&#039;&#039;-atribuudi unikaalsus. XMLi koostamise puhul tuleks läbi mõelda kas atribuudid on mõistlikult valitud või saaks neid esitada paremini alamelementidena. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Näide:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;background-color: whitesmoke; border: solid thin grey; display: inline-block; padding:10px&amp;quot;&amp;gt;&lt;br /&gt;
Name: Peeter Banaan&amp;lt;br&amp;gt;Member status: gold&amp;lt;br&amp;gt;Workouts and prices: &lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;     Balance: 39.99EUR&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;     Balance: 39.99EUR&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;     Balance: 39.99EUR&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;     Gym: 69.99EUR&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;     Yoga: 39.99EURYoga: 39.99EURYoga: 39.99EUR&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
JRT esitatud töö asub [https://wiki.itcollege.ee/index.php/JRT#XML siin].&lt;br /&gt;
&lt;br /&gt;
==Hinnang meeskonna JRT esitatud veebiteenusele==&lt;br /&gt;
&lt;br /&gt;
Koostaja: [https://wiki.itcollege.ee/index.php/Team_SPOT Team SPOT]&lt;br /&gt;
&lt;br /&gt;
JRT veebiteenus on mõeldud jõusaali külastajale, kes näevad erinevatele kehaosadele mõeldud harjutusi, treeningukavasid ning ja saavad üles märkida oma saavutusi. Projekti realiseerimiseks on kasutatud REST arhitektuuri ja ASP.NET MVC Web API tehnoloogiat. Andmebaas luuakse Entity Frameworki abil. Lahendusele on lisatud Asp.Net Identity (Individual User Accounts) funktsionaalsuse võimalus.&lt;br /&gt;
 &lt;br /&gt;
Teenuse lähtekood on jagatud kihtidesse: BL (äriloogika, andmeobjektid, teenused), DAL (suhtlus andmebaasiga, repositooriumid), Domain (olemid), Web (kontrollerid), eraldi teek on ka liidestele (Interfaces). Samuti on kasutatud sõltuvuste süstimist (Ninject) ning repositooriumide puhul Factory ja UOW mustrit. Web projektis on koos, aga eraldi kaustades, nii teenuse API kontrollerid kui ka veebikliendi MVC kontrollerid ja AngularJS kontrollerid.&lt;br /&gt;
 &lt;br /&gt;
Meeskonna lehel avaldatud veebiteenuse analüüsis endale eesmärgiks seatud kohustuslike funktsionaalsuste hulka kuuluvad: kasutajagrupid, konto loomise võimalus, isiklike andmete ja kavade salvestamise võimalus, treenerite info ja kontaktandmed. Lisavõimalusena sooviti luua ka kasutusstatistika ja -analüüsi tuge ning administraatori liidest.&lt;br /&gt;
 &lt;br /&gt;
Praeguse seisuga esitatud teenuse kohta pole meeskond kommentaare lisanud, mistõttu on keeruline kõigest ülevaadet saada ja tehtut adekvaatselt hinnata. Andmebaasi skeemi juures võiks olla ka tabelite kirjeldused ja olemite omavaheliste seoste selgitused. Esimese hooga on raske skeemi loogikast aru saada. &lt;br /&gt;
 &lt;br /&gt;
Eelnevalt mainitud põhifunktsionaalsused on ühel või teisel kujul ka realiseeritud: teenusest on võimalik kätte saada infot erinevatele kehaosadele mõeldud harjutuste, erinevate treeningühikute, treeningkavade ja päevaplaanide kohta, samuti kasutajate andmeid. Ka uute kasutajate lisamine on võimalik. Täiendavate funktsionaalsuste realiseerimiseni pole jõutud.&lt;br /&gt;
 &lt;br /&gt;
Andmebaasi migratsioone pole projekti selles faasis lisatud. Andmebaasi kustutamise või olemites tehtud muudatuste korral luuakse uus andmebaas, mis populeeritakse DAL kihis asuva DBInitializer klassi Seed() meetodis olevate andmetega.&lt;br /&gt;
 &lt;br /&gt;
Küsimusi tekitab kasutajate haldus. Nimelt on tehtud andmebaasi teenuse kasutajatele eraldi olem AppUser, kuhu saab lisada kasutajaid ilma Asp.Net Identity funktsionaalsust kasutamata. Sealt on ilma autentimiseta võimalik kätte saada kõigi kasutajate isikuandmeid. Paralleelselt on alles jäetud ka UserInt olem, kuhu saab samuti kasutajaid lisada, viimaseid on võimalik autentida läbi Web projektis asuva Account kontrolleri. AppUserit on võimalik siduda UserInt olemiga, aga see ei kajastu meeskonna lehel esitatud andmebaasi skeemis.&lt;br /&gt;
 &lt;br /&gt;
Account mudelid on samas ümber kolitud BL kihis asuvasse DTO-de kausta. Kas see on ikka õige koht? Pigem võiks need ju asuda Web projektis, kus asub vastav kontroller ja kus autentimine ja autoriseerimine tegelikult peaks toimuma. Silma jäi seegi, et nii Asp.Net Identity kui ka mõned teised paketid (näiteks Ninject) on lisatud alamprojektidesse, kus neid vaja ei lähe. &lt;br /&gt;
 &lt;br /&gt;
Asp.Net Identity funktsionaalsust tegelikult kuskil ei kasutatagi. Autentimist pole üheski kontrolleris peale AccountControlleri rakendatud, aga see pole praegu muu teenusega seotud. Kõigile andmetele pääseb takistusteta ligi otse brauserist. Samuti on võimalik näiteks Fiddleri abil andmeid muuta ja kustutada.&lt;br /&gt;
 &lt;br /&gt;
Andmebaasiga suhtlemine käib läbi DAL kihis asuvate repositooriumide, kuid kasutusel on ainult standardsed meetodid: All(), Find() / GetById(), Remove(), Add(), Update(), SaveChanges(). Ühtegi kohandatud viisi andmete kättesaamiseks või muutmiseks pole repositooriumidesse lisatud - need on kõik tühjad. Sama lugu on ka BL Services kihiga. &lt;br /&gt;
 &lt;br /&gt;
Web projekti kontrollerites pole hetkel samuti ühtegi kohandatud IHttpActionResult meetodit realiseeritud. Ka on puudu mõned tavapärased meetodid. Bodyparts ja RoutineWorkouts kontrollerid ei võimalda ID järgi objekti kätte saada. Konkreetse objekti selekteerimine on nende andmete puhul seega jäetud kliendi mureks. &lt;br /&gt;
 &lt;br /&gt;
Nagu juba eelnevalt mainitud, siis ühegi kontrolleri kasutamist pole praegu autentimisega piiratud ja kasutajarolle ei rakendata.&lt;br /&gt;
 &lt;br /&gt;
Service kihis tuleks üle vaadata Edit() meetodid, sest need ei tööta olemite puhul, millel on sõltuvusi teiste olemitega. DTO klassides on tehtud osa atribuute kohustuslikeks, mistõttu on ka seotud olemite loomine ja muutmine läbi teenuse keerulisem kui ehk peaks. Lisaks id-atribuudile tuleb mõnel puhul kaasa anda ka objekti nimi. ProgramDTO puhul puudub aga näiteks id-atribuut sootuks. &lt;br /&gt;
 &lt;br /&gt;
Domeeni kihis on rohkem olemeid, kui praegu teenuses ära kasutatakse, aga kõiki funktsionaalsusi polegi jõutud veel realiseerida. Annotatsioonid on olemas. Vajalikud atribuudid on muudetud kohustuslikuks ning stringide pikkused piiratud. Küll on domeeni tasemel jäetud kohustuslikuks tegemata AppUseri ees- ja perenimi. Need piirangud on lisatud Account mudelites.&lt;br /&gt;
 &lt;br /&gt;
Üldkokkuvõttes võib siiski öelda, et kui autentimine ja autoriseerimine välja jätta, siis on nõutud põhifunktsionaalsused veebiteenuses lahendatud. Lahendus on jagatud kihtidesse ning äriloogika on kontrolleritest välja jäetud. Andmebaasis on olemeid piisavalt ja neid andmeid on võimalik läbi API kätte saada. Projekt on piisavalt keeruline ja selle lõplik realiseerimine nõuab ilmselt rohkem aega ja pühendumist, mida käesoleva aine sisu, mahtu ja ajakava arvesse võttes oleks ülekohtune nõuda.&lt;br /&gt;
&lt;br /&gt;
JRT esitatud töö asub [https://wiki.itcollege.ee/index.php/JRT#J.C3.B5usaali_infos.C3.BCsteemi_anal.C3.BC.C3.BCs siin].&lt;br /&gt;
&lt;br /&gt;
==Hinnang meeskonna JRT esitatud klientrakendusele==&lt;br /&gt;
&lt;br /&gt;
Koostaja: [https://wiki.itcollege.ee/index.php/JRT#J.C3.B5usaali_infos.C3.BCsteemi_anal.C3.BC.C3.BCs Team SPOT]&lt;br /&gt;
&lt;br /&gt;
JRT veebiteenuse vastu töötava klientrakenduse loomisel on kasutatud Angular JS raamistikku koos Asp.Net MVC kontrollerite ja vaadetega (Razor). Angulari osa on eraldatud App kausta. Koodis on kasutatud ka jQueryt. MVC kontrollerid ja vaated on tekitatud scaffoldingiga. Seega pole pidanud eraldi vaeva nägema ruutimisega. Kuna klient on lisatud samasse projekti, kus asuvad ka API kontrollerid, siis pole pidanud kliendi jaoks eraldi salvestama teenuse baasaadressi, mille vastu päringuid tehakse.&lt;br /&gt;
 &lt;br /&gt;
Meeskonna lehel avaldatud teenuse analüüsis on välja toodud kaks liidest, mida soovitakse arendada. Administraatoriliideses peaks administraatoril olema võimalus hallata kõiki andmeid (näiteks lisada ja kustutada: kasutajaid, harjutusi, treenigukavasid jne). Kasutajaliideses peaks tavakasutaja saama sisestada oma keha kohta viimaseid andmeid, panna kirja infot viimase treeningu kohta ning lisada omale kontaktandmeid, valida treeningukavasid ja paigutada need soovitud päevadele.&lt;br /&gt;
 &lt;br /&gt;
Mingisuguseid kommentaare avaldatud klientrakenduse kohta meeskonna lehelt leida ei õnnestunud. Lisaks leidub lähtekoodis lõpuni realiseerimata osasid, mis tegelikult rakenduse tööd ei mõjuta. See tegi retsenseerimise keerulisemaks, aga üldjoontes on kõigest hoolimata võimalik lahenduse tööpõhimõttest aru saada, kui rakendust natuke testida ja lähtekoodi uurida.&lt;br /&gt;
 &lt;br /&gt;
Praeguse seisuga on veebikliendis osaliselt teostatud administraatorile mõeldud funktsionaalsus. Kasutajaid hallata veel ei saa, aga harjutusi ja treeningukavasid on võimalik lisada. Realiseerida on proovitud ka tokenipõhist autentimist, kuid see ei tööta, mis on arusaadav, kuna kasutajahaldus ja autentimine / autoriseerimine on jäänud praeguse seisuga realiseerimata ka teenuse API poolel. Ilmselgelt on näha, et töö jäi pooleli.&lt;br /&gt;
 &lt;br /&gt;
Angulari rakenduse kontrolleritega on veebikliendis tööle pandud neli vaadet: Exercises, Units, BodyParts, Routines. Neile pääseb ligi menüüribale lisatud linkide kaudu. Users vaade on ka olemas, aga ilma Angulari kontrollerita - andmeid ei laeta. Sellele vaatele pääseb ligi, kui lisada brauseri aadressiribal domeeni lõppu “/Users”. Tokenipõhise autentimise jaoks on tehtud ka MainAngular vaade (domeen/MainAngular), kuid see ei toimi.&lt;br /&gt;
 &lt;br /&gt;
Kõik olemasolevad vaated on sama ülesehitusega - kuvatakse nimekirja koos Edit ja Delete nuppudega. Filtreid andmete sorteerimiseks ei ole. Igal vaatel on olemas on ka Add New nupp. Andmete lisamiseks ja muutmiseks avaneb hüpikaken (modal), kuhu laetakse kõik objekti jaoks vajalikud input-väljad ja seotud olemite puhul valiku tegemiseks ripploetelud. Objektide kustutamisel küsitakse kasutajalt kinnitust. Kõik pakutud funktsionaalsused paraku veel ei tööta. Probleeme on eeskätt teiste olemitega seotud olemite muutmise ja kustutamisega.&lt;br /&gt;
 &lt;br /&gt;
Funktsionaalsused vaadete kaupa:&lt;br /&gt;
*Units  - andmete kuvamine, lisamine, muutmine ja kustutamine töötavad&lt;br /&gt;
*Exercises - andmete kuvamine, lisamine ja kustutamine töötavad, ent muutmine töötab ainult osaliselt: kui muuta harjutuse mõõtühikut, siis veast ei teavitata, aga muudatus andmebaasi ei jõua (Fiddleriga otse teenuse API poole pöördudes lisandus andmebaasi uus kirje)&lt;br /&gt;
*BodyParts - andmete kuvamine, lisamine ja kustutamine töötavad, aga muutmine ei õnnestu (ka Fiddleriga otse teenuse API poole pöördudes). Kui üritada muuta kehaosa alla kuuluvate harjutuste nimekirja, siis tuleb vastuseks Http status 400 (Bad request!)&lt;br /&gt;
*Routines - andmete kuvamine ja lisamine töötavad, muutmine (ReferenceError: bodyPart is not defined) ja kustutamine (Bad request!) ei õnnestu&lt;br /&gt;
 &lt;br /&gt;
Vaadete puhul võib nuriseda selle üle, et iga kontrolleri kohta on tehtud ainult Index vaatefail, mis sisaldab endas nii põhiakna kui ka hüpikakende html-koodi. Need oleks võinud parema arusaadavuse huvides ju lahutada, isegi kui andmete laadimine toimub läbi sama kontrolleri. &lt;br /&gt;
 &lt;br /&gt;
Lähtekoodist ilmneb veel, et iga töötava vaate jaoks on tehtud eraldi moodul oma kontrolleriga, mis registreeritakse vastavas vaates. Keskne moodul failis app.js ei tööta, see on praegusel kujul mõeldud tokenipõhise autentimise realiseerimiseks ja eeldab üheleherakendust (ruutimisinfo on ka seal). Kõiki autentimise töölesaamiseks vajalikke mooduleid ei ole samas projekti lisatud (authService, authInterceptorService). Tegelikult oleks keskset app-moodulit võimalik (ilma ruutimiseta) siduda ka olemasolevate MVC-vaadetega.&lt;br /&gt;
 &lt;br /&gt;
Praeguse lahenduse üheks puuduseks on veel see, et kõik Http-päringud veebiteenusele tehakse otse Angulari kontrolleritest, puudub vahepealne service-kiht. Selle tagajärjel on päringud ja vaadete loogika koodis läbisegi. Hüpikaknas objektide muutmiseks ei pärita andmeid uuesti teenusest, vaid muudetakse juba varem põhiaknasse laetud andmeid. Lisaks on Angulari raamistiku kõrval kasutatud ka tavalisi jQuery võtteid, mis teeb üldpildi võrdlemisi kirjuks. Mõned funktsioonid ei tööta korrektselt ja nii on üsna keeruline aru saada, kus viga täpselt asub: kontrolleris või teenuse API poolel.&lt;br /&gt;
 &lt;br /&gt;
Kokkuvõttes võib tõdeda, et olemasolevate vaadetega on siiski vaeva nähtud ja suhtlus teenusega tööle saadud, mis selle aine puhul on ilmselt peamine. Mõned funktsionaalsused vajavad veel viimistlemist ja projekti üldine ülesehitus korrastamist. MVC kontrolleritega autentimise tööle saamiseks tuleks lisada eespool mainitud puuduvad teenused, siduda olemasolevad kontrollerid keskse app-mooduliga ning see omakorda jagatud Layout vaatega, millele tuleks ka lisada eraldi kontroller.&lt;br /&gt;
&lt;br /&gt;
JRT esitatud töö asub [https://wiki.itcollege.ee/index.php/JRT#J.C3.B5usaali_infos.C3.BCsteemi_anal.C3.BC.C3.BCs siin].&lt;/div&gt;</summary>
		<author><name>Otiks</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Talk:JRT&amp;diff=123693</id>
		<title>Talk:JRT</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Talk:JRT&amp;diff=123693"/>
		<updated>2017-06-14T22:57:51Z</updated>

		<summary type="html">&lt;p&gt;Otiks: /* Hinnang meeskonna JRT esitatud klientrakendusele */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Hinnang meeskonna JRT esitatud XML-failidele==&lt;br /&gt;
&lt;br /&gt;
Koostaja: [https://wiki.itcollege.ee/index.php/Team_SPOT Team SPOT]&lt;br /&gt;
&lt;br /&gt;
Meeskond JRT on esitanud XML-faili, skeemifaili ja kaks XSLT-faili andmete transformeerimiseks HTML- ja XML-formaati. Transformatsioonid sisaldavad enam kui ühte &#039;&#039;for-each&#039;&#039;-klauslit. HTML-väljundiga transformatsioonis on kasutatud nelja &#039;&#039;for-each&#039;&#039;i ja kolme &#039;&#039;if&#039;&#039;-tingimust. XML-väljundiga transformatsioonis on kasutatud viite &#039;&#039;for-each&#039;&#039;i ja kolme &#039;&#039;if&#039;&#039;-tingimust. XML valideerub ja loogilisi dimensioone on viis. Neljal dimensioonil on kasutatud atribuute, mis on enam kui lihtsalt ID. Töö põhinõuded on täidetud.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Märkused XMLi/XSD kohta:&#039;&#039;&#039;&lt;br /&gt;
* elemendi &amp;lt;user&amp;gt; &#039;&#039;id&#039;&#039;-atribuudi väärtuse unikaalsus ei ole tagatud&lt;br /&gt;
* elemendile &amp;lt;user&amp;gt; saab lisada piiramatul arvul sama alamelementi: &amp;lt;firstName&amp;gt;, &amp;lt;lastName&amp;gt;, &amp;lt;born&amp;gt;, &amp;lt;sex&amp;gt;, …&lt;br /&gt;
* elemendil &amp;lt;user&amp;gt; on kõigi &amp;lt;subscription&amp;gt;-elementide &#039;&#039;type&#039;&#039; määratud kõige ülemisel tasemel &#039;&#039;status&#039;&#039;-atribuudiga, aga see võiks olla &amp;lt;subscription&amp;gt;-tasemel, et võimaldada rohkem paindlikkust&lt;br /&gt;
* atribuuti &#039;&#039;id&#039;&#039; (unikaalset) võiks kasutada ka teiste “liigielementide” puhul, sest:&lt;br /&gt;
**  elemente &amp;lt;subscription&amp;gt; saab sama &#039;&#039;name&#039;&#039;-atribuudiga lisada piiramatul arvul&lt;br /&gt;
**  elemendi &amp;lt;subscription&amp;gt; alla saab lisada piiramatul arvul &amp;lt;price&amp;gt;-elemente samade &#039;&#039;type&#039;&#039;- ja &#039;&#039;currency&#039;&#039;-atribuutide väärtustega&lt;br /&gt;
* elemendi &amp;lt;subscription&amp;gt; &#039;&#039;name&#039;&#039;-atribuudiga võib tekkida probleeme, kui atribuuti pandud nimi sisaldaks erimärke, seega oleks mõistlikum &#039;&#039;name&#039;&#039;-atribuut asendada eraldi alamelemendiga &amp;lt;name&amp;gt;&amp;lt;/name&amp;gt;, kus saaks kasutada CDATAt.&lt;br /&gt;
&lt;br /&gt;
Tööga on nähtud vaeva, XSLTd on koostatud arusaadavalt, kuid XSD ja XML vajaksid täiendamist, et vältida võimalikke ohukohti andmete saatmisel. Vastasel korral võivad ka transformatsioonid ootamatusi toota (vt näidet). Põhiline oleks XSDs ära märkida, kui palju mingit elementi esineda võib ning tagada ka &#039;&#039;id&#039;&#039;-atribuudi unikaalsus. XMLi koostamise puhul tuleks läbi mõelda kas atribuudid on mõistlikult valitud või saaks neid esitada paremini alamelementidena. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Näide:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;background-color: whitesmoke; border: solid thin grey; display: inline-block; padding:10px&amp;quot;&amp;gt;&lt;br /&gt;
Name: Peeter Banaan&amp;lt;br&amp;gt;Member status: gold&amp;lt;br&amp;gt;Workouts and prices: &lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;     Balance: 39.99EUR&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;     Balance: 39.99EUR&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;     Balance: 39.99EUR&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;     Gym: 69.99EUR&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;     Yoga: 39.99EURYoga: 39.99EURYoga: 39.99EUR&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
JRT esitatud töö asub [https://wiki.itcollege.ee/index.php/JRT#XML siin].&lt;br /&gt;
&lt;br /&gt;
==Hinnang meeskonna JRT esitatud veebiteenusele==&lt;br /&gt;
&lt;br /&gt;
Koostaja: [https://wiki.itcollege.ee/index.php/Team_SPOT Team SPOT]&lt;br /&gt;
&lt;br /&gt;
JRT veebiteenus on mõeldud jõusaali külastajale, kes näevad erinevatele kehaosadele mõeldud harjutusi, treeningukavasid ning ja saavad üles märkida oma saavutusi. Projekti realiseerimiseks on kasutatud REST arhitektuuri ja ASP.NET MVC Web API tehnoloogiat. Andmebaas luuakse Entity Frameworki abil. Lahendusele on lisatud Asp.Net Identity (Individual User Accounts) funktsionaalsuse võimalus.&lt;br /&gt;
 &lt;br /&gt;
Teenuse lähtekood on jagatud kihtidesse: BL (äriloogika, andmeobjektid, teenused), DAL (suhtlus andmebaasiga, repositooriumid), Domain (olemid), Web (kontrollerid), eraldi teek on ka liidestele (Interfaces). Samuti on kasutatud sõltuvuste süstimist (Ninject) ning repositooriumide puhul Factory ja UOW mustrit. Web projektis on koos, aga eraldi kaustades, nii teenuse API kontrollerid kui ka veebikliendi MVC kontrollerid ja AngularJS kontrollerid.&lt;br /&gt;
 &lt;br /&gt;
Meeskonna lehel avaldatud veebiteenuse analüüsis endale eesmärgiks seatud kohustuslike funktsionaalsuste hulka kuuluvad: kasutajagrupid, konto loomise võimalus, isiklike andmete ja kavade salvestamise võimalus, treenerite info ja kontaktandmed. Lisavõimalusena sooviti luua ka kasutusstatistika ja -analüüsi tuge ning administraatori liidest.&lt;br /&gt;
 &lt;br /&gt;
Praeguse seisuga esitatud teenuse kohta pole meeskond kommentaare lisanud, mistõttu on keeruline kõigest ülevaadet saada ja tehtut adekvaatselt hinnata. Andmebaasi skeemi juures võiks olla ka tabelite kirjeldused ja olemite omavaheliste seoste selgitused. Esimese hooga on raske skeemi loogikast aru saada. &lt;br /&gt;
 &lt;br /&gt;
Eelnevalt mainitud põhifunktsionaalsused on ühel või teisel kujul ka realiseeritud: teenusest on võimalik kätte saada infot erinevatele kehaosadele mõeldud harjutuste, erinevate treeningühikute, treeningkavade ja päevaplaanide kohta, samuti kasutajate andmeid. Ka uute kasutajate lisamine on võimalik. Täiendavate funktsionaalsuste realiseerimiseni pole jõutud.&lt;br /&gt;
 &lt;br /&gt;
Andmebaasi migratsioone pole projekti selles faasis lisatud. Andmebaasi kustutamise või olemites tehtud muudatuste korral luuakse uus andmebaas, mis populeeritakse DAL kihis asuva DBInitializer klassi Seed() meetodis olevate andmetega.&lt;br /&gt;
 &lt;br /&gt;
Küsimusi tekitab kasutajate haldus. Nimelt on tehtud andmebaasi teenuse kasutajatele eraldi olem AppUser, kuhu saab lisada kasutajaid ilma Asp.Net Identity funktsionaalsust kasutamata. Sealt on ilma autentimiseta võimalik kätte saada kõigi kasutajate isikuandmeid. Paralleelselt on alles jäetud ka UserInt olem, kuhu saab samuti kasutajaid lisada, viimaseid on võimalik autentida läbi Web projektis asuva Account kontrolleri. AppUserit on võimalik siduda UserInt olemiga, aga see ei kajastu meeskonna lehel esitatud andmebaasi skeemis.&lt;br /&gt;
 &lt;br /&gt;
Account mudelid on samas ümber kolitud BL kihis asuvasse DTO-de kausta. Kas see on ikka õige koht? Pigem võiks need ju asuda Web projektis, kus asub vastav kontroller ja kus autentimine ja autoriseerimine tegelikult peaks toimuma. Silma jäi seegi, et nii Asp.Net Identity kui ka mõned teised paketid (näiteks Ninject) on lisatud alamprojektidesse, kus neid vaja ei lähe. &lt;br /&gt;
 &lt;br /&gt;
Asp.Net Identity funktsionaalsust tegelikult kuskil ei kasutatagi. Autentimist pole üheski kontrolleris peale AccountControlleri rakendatud, aga see pole praegu muu teenusega seotud. Kõigile andmetele pääseb takistusteta ligi otse brauserist. Samuti on võimalik näiteks Fiddleri abil andmeid muuta ja kustutada.&lt;br /&gt;
 &lt;br /&gt;
Andmebaasiga suhtlemine käib läbi DAL kihis asuvate repositooriumide, kuid kasutusel on ainult standardsed meetodid: All(), Find() / GetById(), Remove(), Add(), Update(), SaveChanges(). Ühtegi kohandatud viisi andmete kättesaamiseks või muutmiseks pole repositooriumidesse lisatud - need on kõik tühjad. Sama lugu on ka BL Services kihiga. &lt;br /&gt;
 &lt;br /&gt;
Web projekti kontrollerites pole hetkel samuti ühtegi kohandatud IHttpActionResult meetodit realiseeritud. Ka on puudu mõned tavapärased meetodid. Bodyparts ja RoutineWorkouts kontrollerid ei võimalda ID järgi objekti kätte saada. Konkreetse objekti selekteerimine on nende andmete puhul seega jäetud kliendi mureks. &lt;br /&gt;
 &lt;br /&gt;
Nagu juba eelnevalt mainitud, siis ühegi kontrolleri kasutamist pole praegu autentimisega piiratud ja kasutajarolle ei rakendata.&lt;br /&gt;
 &lt;br /&gt;
Service kihis tuleks üle vaadata Edit() meetodid, sest need ei tööta olemite puhul, millel on sõltuvusi teiste olemitega. DTO klassides on tehtud osa atribuute kohustuslikeks, mistõttu on ka seotud olemite loomine ja muutmine läbi teenuse keerulisem kui ehk peaks. Lisaks id-atribuudile tuleb mõnel puhul kaasa anda ka objekti nimi. ProgramDTO puhul puudub aga näiteks id-atribuut sootuks. &lt;br /&gt;
 &lt;br /&gt;
Domeeni kihis on rohkem olemeid, kui praegu teenuses ära kasutatakse, aga kõiki funktsionaalsusi polegi jõutud veel realiseerida. Annotatsioonid on olemas. Vajalikud atribuudid on muudetud kohustuslikuks ning stringide pikkused piiratud. Küll on domeeni tasemel jäetud kohustuslikuks tegemata AppUseri ees- ja perenimi. Need piirangud on lisatud Account mudelites.&lt;br /&gt;
 &lt;br /&gt;
Üldkokkuvõttes võib siiski öelda, et kui autentimine ja autoriseerimine välja jätta, siis on nõutud põhifunktsionaalsused veebiteenuses lahendatud. Lahendus on jagatud kihtidesse ning äriloogika on kontrolleritest välja jäetud. Andmebaasis on olemeid piisavalt ja neid andmeid on võimalik läbi API kätte saada. Projekt on piisavalt keeruline ja selle lõplik realiseerimine nõuab ilmselt rohkem aega ja pühendumist, mida käesoleva aine sisu, mahtu ja ajakava arvesse võttes oleks ülekohtune nõuda.&lt;br /&gt;
&lt;br /&gt;
JRT esitatud töö asub [https://wiki.itcollege.ee/index.php/JRT#J.C3.B5usaali_infos.C3.BCsteemi_anal.C3.BC.C3.BCs siin].&lt;br /&gt;
&lt;br /&gt;
==Hinnang meeskonna JRT esitatud klientrakendusele==&lt;br /&gt;
&lt;br /&gt;
Koostaja: [https://wiki.itcollege.ee/index.php/JRT#J.C3.B5usaali_infos.C3.BCsteemi_anal.C3.BC.C3.BCs Team SPOT]&lt;br /&gt;
&lt;br /&gt;
JRT veebiteenuse vastu töötava klientrakenduse loomisel on kasutatud Angular JS raamistikku koos Asp.Net MVC kontrollerite ja vaadetega (Razor). Angulari osa on eraldatud App kausta. Koodis on kasutatud ka jQueryt. MVC kontrollerid ja vaated on tekitatud scaffoldingiga. Seega pole pidanud eraldi vaeva nägema ruutimisega. Kuna klient on lisatud samasse projekti, kus asuvad ka API kontrollerid, siis pole pidanud kliendi jaoks eraldi salvestama teenuse baasaadressi, mille vastu päringuid tehakse.&lt;br /&gt;
 &lt;br /&gt;
Meeskonna lehel avaldatud teenuse analüüsis on välja toodud kaks liidest, mida soovitakse arendada. Administraatoriliideses peaks administraatoril olema võimalus hallata kõiki andmeid (näiteks lisada ja kustutada: kasutajaid, harjutusi, treenigukavasid jne). Kasutajaliideses peaks tavakasutaja saama sisestada oma keha kohta viimaseid andmeid, panna kirja infot viimase treeningu kohta ning lisada omale kontaktandmeid, valida treeningukavasid ja paigutada need soovitud päevadele.&lt;br /&gt;
 &lt;br /&gt;
Mingisuguseid kommentaare avaldatud klientrakenduse kohta meeskonna lehelt leida ei õnnestunud. Lisaks leidub lähtekoodis lõpuni realiseerimata osasid, mis tegelikult rakenduse tööd ei mõjuta. See tegi retsenseerimise keerulisemaks, aga üldjoontes on kõigest hoolimata võimalik lahenduse tööpõhimõttest aru saada, kui rakendust natuke testida ja lähtekoodi uurida.&lt;br /&gt;
 &lt;br /&gt;
Praeguse seisuga on veebikliendis osaliselt teostatud administraatorile mõeldud funktsionaalsus. Kasutajaid hallata veel ei saa, aga harjutusi ja treeningukavasid on võimalik lisada. Realiseerida on proovitud ka tokenipõhist autentimist, kuid see ei tööta, mis on arusaadav, kuna kasutajahaldus ja autentimine / autoriseerimine on jäänud praeguse seisuga realiseerimata ka teenuse API poolel. Ilmselgelt on näha, et töö jäi pooleli.&lt;br /&gt;
 &lt;br /&gt;
Angulari rakenduse kontrolleritega on veebikliendis tööle pandud neli vaadet: Exercises, Units, BodyParts, Routines. Neile pääseb ligi menüüribale lisatud linkide kaudu. Users vaade on ka olemas, aga ilma Angulari kontrollerita - andmeid ei laeta. Sellele vaatele pääseb ligi, kui lisada brauseri aadressiribal domeeni lõppu “/Users”. Tokenipõhise autentimise jaoks on tehtud ka MainAngular vaade (domeen/MainAngular), kuid see ei toimi.&lt;br /&gt;
 &lt;br /&gt;
Kõik olemasolevad vaated on sama ülesehitusega - kuvatakse nimekirja koos Edit ja Delete nuppudega. Filtreid andmete sorteerimiseks ei ole. Igal vaatel on olemas on ka Add New nupp. Andmete lisamiseks ja muutmiseks avaneb hüpikaken (modal), kuhu laetakse kõik objekti jaoks vajalikud input-väljad ja seotud olemite puhul valiku tegemiseks ripploetelud. Objektide kustutamisel küsitakse kasutajalt kinnitust. Kõik pakutud funktsionaalsused paraku veel ei tööta. Probleeme on eeskätt teiste olemitega seotud olemite muutmise ja kustutamisega.&lt;br /&gt;
 &lt;br /&gt;
Funktsionaalsused vaadete kaupa:&lt;br /&gt;
*Units  - andmete kuvamine, lisamine, muutmine ja kustutamine töötavad&lt;br /&gt;
*Exercises - andmete kuvamine, lisamine ja kustutamine töötavad, ent muutmine töötab ainult osaliselt: kui muuta harjutuse mõõtühikut, siis veast ei teavitata, aga muudatus andmebaasi ei jõua (Fiddleriga otse teenuse API poole pöördudes lisandus andmebaasi uus kirje)&lt;br /&gt;
*BodyParts - andmete kuvamine, lisamine ja kustutamine töötavad, aga muutmine ei õnnestu (ka Fiddleriga otse teenuse API poole pöördudes). Kui üritada muuta kehaosa alla kuuluvate harjutuste nimekirja, siis tuleb vastuseks Http status 400 (Bad request!)&lt;br /&gt;
*Routines - andmete kuvamine ja lisamine töötavad, muutmine (ReferenceError: bodyPart is not defined) ja kustutamine (Bad request!) ei õnnestu&lt;br /&gt;
 &lt;br /&gt;
Vaadete puhul võib nuriseda selle üle, et iga kontrolleri kohta on tehtud ainult Index vaatefail, mis sisaldab endas nii põhiakna kui ka hüpikakende html-koodi. Need oleks võinud parema arusaadavuse huvides ju lahutada, isegi kui andmete laadimine toimub läbi sama kontrolleri. &lt;br /&gt;
 &lt;br /&gt;
Lähtekoodist ilmneb veel, et iga töötava vaate jaoks on tehtud eraldi moodul oma kontrolleriga, mis registreeritakse vastavas vaates. Keskne moodul failis app.js ei tööta, see on mõeldud tokenipõhise autentimise realiseerimiseks ja eeldab üheleherakendust (ruutimisinfo on ka seal). Kõiki autentimise töölesaamiseks vajalikke mooduleid ei ole samas projekti lisatud (authService, authInterceptorService).&lt;br /&gt;
 &lt;br /&gt;
Praeguse lahenduse üheks puuduseks on veel see, et kõik Http-päringud veebiteenusele tehakse otse Angulari kontrolleritest, puudub vahepealne service-kiht. Selle tagajärjel on päringud ja vaadete loogika koodis läbisegi. Hüpikaknas objektide muutmiseks ei pärita andmeid uuesti teenusest, vaid muudetakse juba varem põhiaknasse laetud andmeid. Lisaks on Angulari raamistiku kõrval kasutatud ka tavalisi jQuery võtteid, mis teeb üldpildi võrdlemisi kirjuks. Mõned funktsioonid ei tööta korrektselt ja nii on üsna keeruline aru saada, kus viga täpselt asub: kontrolleris või teenuse API poolel.&lt;br /&gt;
 &lt;br /&gt;
Kokkuvõttes võib tõdeda, et olemasolevate vaadetega on siiski vaeva nähtud ja suhtlus teenusega tööle saadud, mis selle aine puhul on ilmselt peamine. Mõned funktsionaalsused vajavad veel viimistlemist ja projekti üldine ülesehitus korrastamist. MVC kontrolleritega autentimise tööle saamiseks tuleks lisada eespool mainitud puuduvad teenused, siduda olemasolevad kontrollerid keskse app-mooduliga ning see omakorda jagatud Layout vaatega, millele tuleks ka lisada eraldi kontroller.&lt;br /&gt;
&lt;br /&gt;
JRT esitatud töö asub [https://wiki.itcollege.ee/index.php/JRT#J.C3.B5usaali_infos.C3.BCsteemi_anal.C3.BC.C3.BCs siin].&lt;/div&gt;</summary>
		<author><name>Otiks</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Talk:JRT&amp;diff=123692</id>
		<title>Talk:JRT</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Talk:JRT&amp;diff=123692"/>
		<updated>2017-06-14T22:56:25Z</updated>

		<summary type="html">&lt;p&gt;Otiks: /* Hinnang meeskonna JRT esitatud veebiteenusele */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Hinnang meeskonna JRT esitatud XML-failidele==&lt;br /&gt;
&lt;br /&gt;
Koostaja: [https://wiki.itcollege.ee/index.php/Team_SPOT Team SPOT]&lt;br /&gt;
&lt;br /&gt;
Meeskond JRT on esitanud XML-faili, skeemifaili ja kaks XSLT-faili andmete transformeerimiseks HTML- ja XML-formaati. Transformatsioonid sisaldavad enam kui ühte &#039;&#039;for-each&#039;&#039;-klauslit. HTML-väljundiga transformatsioonis on kasutatud nelja &#039;&#039;for-each&#039;&#039;i ja kolme &#039;&#039;if&#039;&#039;-tingimust. XML-väljundiga transformatsioonis on kasutatud viite &#039;&#039;for-each&#039;&#039;i ja kolme &#039;&#039;if&#039;&#039;-tingimust. XML valideerub ja loogilisi dimensioone on viis. Neljal dimensioonil on kasutatud atribuute, mis on enam kui lihtsalt ID. Töö põhinõuded on täidetud.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Märkused XMLi/XSD kohta:&#039;&#039;&#039;&lt;br /&gt;
* elemendi &amp;lt;user&amp;gt; &#039;&#039;id&#039;&#039;-atribuudi väärtuse unikaalsus ei ole tagatud&lt;br /&gt;
* elemendile &amp;lt;user&amp;gt; saab lisada piiramatul arvul sama alamelementi: &amp;lt;firstName&amp;gt;, &amp;lt;lastName&amp;gt;, &amp;lt;born&amp;gt;, &amp;lt;sex&amp;gt;, …&lt;br /&gt;
* elemendil &amp;lt;user&amp;gt; on kõigi &amp;lt;subscription&amp;gt;-elementide &#039;&#039;type&#039;&#039; määratud kõige ülemisel tasemel &#039;&#039;status&#039;&#039;-atribuudiga, aga see võiks olla &amp;lt;subscription&amp;gt;-tasemel, et võimaldada rohkem paindlikkust&lt;br /&gt;
* atribuuti &#039;&#039;id&#039;&#039; (unikaalset) võiks kasutada ka teiste “liigielementide” puhul, sest:&lt;br /&gt;
**  elemente &amp;lt;subscription&amp;gt; saab sama &#039;&#039;name&#039;&#039;-atribuudiga lisada piiramatul arvul&lt;br /&gt;
**  elemendi &amp;lt;subscription&amp;gt; alla saab lisada piiramatul arvul &amp;lt;price&amp;gt;-elemente samade &#039;&#039;type&#039;&#039;- ja &#039;&#039;currency&#039;&#039;-atribuutide väärtustega&lt;br /&gt;
* elemendi &amp;lt;subscription&amp;gt; &#039;&#039;name&#039;&#039;-atribuudiga võib tekkida probleeme, kui atribuuti pandud nimi sisaldaks erimärke, seega oleks mõistlikum &#039;&#039;name&#039;&#039;-atribuut asendada eraldi alamelemendiga &amp;lt;name&amp;gt;&amp;lt;/name&amp;gt;, kus saaks kasutada CDATAt.&lt;br /&gt;
&lt;br /&gt;
Tööga on nähtud vaeva, XSLTd on koostatud arusaadavalt, kuid XSD ja XML vajaksid täiendamist, et vältida võimalikke ohukohti andmete saatmisel. Vastasel korral võivad ka transformatsioonid ootamatusi toota (vt näidet). Põhiline oleks XSDs ära märkida, kui palju mingit elementi esineda võib ning tagada ka &#039;&#039;id&#039;&#039;-atribuudi unikaalsus. XMLi koostamise puhul tuleks läbi mõelda kas atribuudid on mõistlikult valitud või saaks neid esitada paremini alamelementidena. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Näide:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;background-color: whitesmoke; border: solid thin grey; display: inline-block; padding:10px&amp;quot;&amp;gt;&lt;br /&gt;
Name: Peeter Banaan&amp;lt;br&amp;gt;Member status: gold&amp;lt;br&amp;gt;Workouts and prices: &lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;     Balance: 39.99EUR&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;     Balance: 39.99EUR&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;     Balance: 39.99EUR&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;     Gym: 69.99EUR&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;     Yoga: 39.99EURYoga: 39.99EURYoga: 39.99EUR&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
JRT esitatud töö asub [https://wiki.itcollege.ee/index.php/JRT#XML siin].&lt;br /&gt;
&lt;br /&gt;
==Hinnang meeskonna JRT esitatud veebiteenusele==&lt;br /&gt;
&lt;br /&gt;
Koostaja: [https://wiki.itcollege.ee/index.php/Team_SPOT Team SPOT]&lt;br /&gt;
&lt;br /&gt;
JRT veebiteenus on mõeldud jõusaali külastajale, kes näevad erinevatele kehaosadele mõeldud harjutusi, treeningukavasid ning ja saavad üles märkida oma saavutusi. Projekti realiseerimiseks on kasutatud REST arhitektuuri ja ASP.NET MVC Web API tehnoloogiat. Andmebaas luuakse Entity Frameworki abil. Lahendusele on lisatud Asp.Net Identity (Individual User Accounts) funktsionaalsuse võimalus.&lt;br /&gt;
 &lt;br /&gt;
Teenuse lähtekood on jagatud kihtidesse: BL (äriloogika, andmeobjektid, teenused), DAL (suhtlus andmebaasiga, repositooriumid), Domain (olemid), Web (kontrollerid), eraldi teek on ka liidestele (Interfaces). Samuti on kasutatud sõltuvuste süstimist (Ninject) ning repositooriumide puhul Factory ja UOW mustrit. Web projektis on koos, aga eraldi kaustades, nii teenuse API kontrollerid kui ka veebikliendi MVC kontrollerid ja AngularJS kontrollerid.&lt;br /&gt;
 &lt;br /&gt;
Meeskonna lehel avaldatud veebiteenuse analüüsis endale eesmärgiks seatud kohustuslike funktsionaalsuste hulka kuuluvad: kasutajagrupid, konto loomise võimalus, isiklike andmete ja kavade salvestamise võimalus, treenerite info ja kontaktandmed. Lisavõimalusena sooviti luua ka kasutusstatistika ja -analüüsi tuge ning administraatori liidest.&lt;br /&gt;
 &lt;br /&gt;
Praeguse seisuga esitatud teenuse kohta pole meeskond kommentaare lisanud, mistõttu on keeruline kõigest ülevaadet saada ja tehtut adekvaatselt hinnata. Andmebaasi skeemi juures võiks olla ka tabelite kirjeldused ja olemite omavaheliste seoste selgitused. Esimese hooga on raske skeemi loogikast aru saada. &lt;br /&gt;
 &lt;br /&gt;
Eelnevalt mainitud põhifunktsionaalsused on ühel või teisel kujul ka realiseeritud: teenusest on võimalik kätte saada infot erinevatele kehaosadele mõeldud harjutuste, erinevate treeningühikute, treeningkavade ja päevaplaanide kohta, samuti kasutajate andmeid. Ka uute kasutajate lisamine on võimalik. Täiendavate funktsionaalsuste realiseerimiseni pole jõutud.&lt;br /&gt;
 &lt;br /&gt;
Andmebaasi migratsioone pole projekti selles faasis lisatud. Andmebaasi kustutamise või olemites tehtud muudatuste korral luuakse uus andmebaas, mis populeeritakse DAL kihis asuva DBInitializer klassi Seed() meetodis olevate andmetega.&lt;br /&gt;
 &lt;br /&gt;
Küsimusi tekitab kasutajate haldus. Nimelt on tehtud andmebaasi teenuse kasutajatele eraldi olem AppUser, kuhu saab lisada kasutajaid ilma Asp.Net Identity funktsionaalsust kasutamata. Sealt on ilma autentimiseta võimalik kätte saada kõigi kasutajate isikuandmeid. Paralleelselt on alles jäetud ka UserInt olem, kuhu saab samuti kasutajaid lisada, viimaseid on võimalik autentida läbi Web projektis asuva Account kontrolleri. AppUserit on võimalik siduda UserInt olemiga, aga see ei kajastu meeskonna lehel esitatud andmebaasi skeemis.&lt;br /&gt;
 &lt;br /&gt;
Account mudelid on samas ümber kolitud BL kihis asuvasse DTO-de kausta. Kas see on ikka õige koht? Pigem võiks need ju asuda Web projektis, kus asub vastav kontroller ja kus autentimine ja autoriseerimine tegelikult peaks toimuma. Silma jäi seegi, et nii Asp.Net Identity kui ka mõned teised paketid (näiteks Ninject) on lisatud alamprojektidesse, kus neid vaja ei lähe. &lt;br /&gt;
 &lt;br /&gt;
Asp.Net Identity funktsionaalsust tegelikult kuskil ei kasutatagi. Autentimist pole üheski kontrolleris peale AccountControlleri rakendatud, aga see pole praegu muu teenusega seotud. Kõigile andmetele pääseb takistusteta ligi otse brauserist. Samuti on võimalik näiteks Fiddleri abil andmeid muuta ja kustutada.&lt;br /&gt;
 &lt;br /&gt;
Andmebaasiga suhtlemine käib läbi DAL kihis asuvate repositooriumide, kuid kasutusel on ainult standardsed meetodid: All(), Find() / GetById(), Remove(), Add(), Update(), SaveChanges(). Ühtegi kohandatud viisi andmete kättesaamiseks või muutmiseks pole repositooriumidesse lisatud - need on kõik tühjad. Sama lugu on ka BL Services kihiga. &lt;br /&gt;
 &lt;br /&gt;
Web projekti kontrollerites pole hetkel samuti ühtegi kohandatud IHttpActionResult meetodit realiseeritud. Ka on puudu mõned tavapärased meetodid. Bodyparts ja RoutineWorkouts kontrollerid ei võimalda ID järgi objekti kätte saada. Konkreetse objekti selekteerimine on nende andmete puhul seega jäetud kliendi mureks. &lt;br /&gt;
 &lt;br /&gt;
Nagu juba eelnevalt mainitud, siis ühegi kontrolleri kasutamist pole praegu autentimisega piiratud ja kasutajarolle ei rakendata.&lt;br /&gt;
 &lt;br /&gt;
Service kihis tuleks üle vaadata Edit() meetodid, sest need ei tööta olemite puhul, millel on sõltuvusi teiste olemitega. DTO klassides on tehtud osa atribuute kohustuslikeks, mistõttu on ka seotud olemite loomine ja muutmine läbi teenuse keerulisem kui ehk peaks. Lisaks id-atribuudile tuleb mõnel puhul kaasa anda ka objekti nimi. ProgramDTO puhul puudub aga näiteks id-atribuut sootuks. &lt;br /&gt;
 &lt;br /&gt;
Domeeni kihis on rohkem olemeid, kui praegu teenuses ära kasutatakse, aga kõiki funktsionaalsusi polegi jõutud veel realiseerida. Annotatsioonid on olemas. Vajalikud atribuudid on muudetud kohustuslikuks ning stringide pikkused piiratud. Küll on domeeni tasemel jäetud kohustuslikuks tegemata AppUseri ees- ja perenimi. Need piirangud on lisatud Account mudelites.&lt;br /&gt;
 &lt;br /&gt;
Üldkokkuvõttes võib siiski öelda, et kui autentimine ja autoriseerimine välja jätta, siis on nõutud põhifunktsionaalsused veebiteenuses lahendatud. Lahendus on jagatud kihtidesse ning äriloogika on kontrolleritest välja jäetud. Andmebaasis on olemeid piisavalt ja neid andmeid on võimalik läbi API kätte saada. Projekt on piisavalt keeruline ja selle lõplik realiseerimine nõuab ilmselt rohkem aega ja pühendumist, mida käesoleva aine sisu, mahtu ja ajakava arvesse võttes oleks ülekohtune nõuda.&lt;br /&gt;
&lt;br /&gt;
JRT esitatud töö asub [https://wiki.itcollege.ee/index.php/JRT#J.C3.B5usaali_infos.C3.BCsteemi_anal.C3.BC.C3.BCs siin].&lt;br /&gt;
&lt;br /&gt;
==Hinnang meeskonna JRT esitatud klientrakendusele==&lt;br /&gt;
&lt;br /&gt;
Koostaja: [https://wiki.itcollege.ee/index.php/JRT#J.C3.B5usaali_infos.C3.BCsteemi_anal.C3.BC.C3.BCs Team SPOT]&lt;br /&gt;
&lt;br /&gt;
JRT veebiteenuse vastu töötava klientrakenduse loomisel on kasutatud Angular JS raamistikku koos Asp.Net MVC kontrollerite ja vaadetega (Razor). Angulari osa on eraldatud App kausta. Koodis on kasutatud ka jQueryt. MVC kontrollerid ja vaated on tekitatud scaffoldingiga. Seega pole pidanud eraldi vaeva nägema ruutimisega. Kuna klient on lisatud samasse projekti, kus asuvad ka API kontrollerid, siis pole pidanud kliendi jaoks eraldi salvestama teenuse baasaadressi, mille vastu päringuid tehakse.&lt;br /&gt;
 &lt;br /&gt;
Meeskonna lehel avaldatud teenuse analüüsis on välja toodud kaks liidest, mida soovitakse arendada. Administraatoriliideses peaks administraatoril olema võimalus hallata kõiki andmeid (näiteks lisada ja kustutada: kasutajaid, harjutusi, treenigukavasid jne). Kasutajaliideses peaks tavakasutaja saama sisestada oma keha kohta viimaseid andmeid, panna kirja infot viimase treeningu kohta ning lisada omale kontaktandmeid, valida treeningukavasid ja paigutada need soovitud päevadele.&lt;br /&gt;
 &lt;br /&gt;
Mingisuguseid kommentaare avaldatud klientrakenduse kohta meeskonna lehelt leida ei õnnestunud. Lisaks leidub lähtekoodis lõpuni realiseerimata osasid, mis tegelikult rakenduse tööd ei mõjuta. See tegi retsenseerimise keerulisemaks, aga üldjoontes on kõigest hoolimata võimalik lahenduse tööpõhimõttest aru saada, kui rakendust natuke testida ja lähtekoodi uurida.&lt;br /&gt;
 &lt;br /&gt;
Praeguse seisuga on veebikliendis osaliselt teostatud administraatorile mõeldud funktsionaalsus. Kasutajaid hallata veel ei saa, aga harjutusi ja treeningukavasid on võimalik lisada. Realiseerida on proovitud ka tokenipõhist autentimist, kuid see ei tööta, mis on arusaadav, kuna kasutajahaldus ja autentimine / autoriseerimine on jäänud praeguse seisuga realiseerimata ka teenuse API poolel. Ilmselgelt on näha, et töö jäi pooleli.&lt;br /&gt;
 &lt;br /&gt;
Angulari rakenduse kontrolleritega on veebikliendis tööle pandud neli vaadet: Exercises, Units, BodyParts, Routines. Neile pääseb ligi menüüribale lisatud linkide kaudu. Users vaade on ka olemas, aga ilma Angulari kontrollerita - andmeid ei laeta. Sellele vaatele pääseb ligi, kui lisada brauseri aadressiribal domeeni lõppu “/Users”. Tokenipõhise autentimise jaoks on tehtud ka MainAngular vaade (domeen/MainAngular), kuid see ei toimi.&lt;br /&gt;
 &lt;br /&gt;
Kõik olemasolevad vaated on sama ülesehitusega - kuvatakse nimekirja koos Edit ja Delete nuppudega. Filtreid andmete sorteerimiseks ei ole. Igal vaatel on olemas on ka Add New nupp. Andmete lisamiseks ja muutmiseks avaneb hüpikaken (modal), kuhu laetakse kõik objekti jaoks vajalikud input-väljad ja seotud olemite puhul valiku tegemiseks ripploetelud. Objektide kustutamisel küsitakse kasutajalt kinnitust. Kõik pakutud funktsionaalsused paraku veel ei tööta. Probleeme on eeskätt teiste olemitega seotud olemite muutmise ja kustutamisega.&lt;br /&gt;
 &lt;br /&gt;
Funktsionaalsused vaadete kaupa:&lt;br /&gt;
*Units  - andmete kuvamine, lisamine, muutmine ja kustutamine töötavad&lt;br /&gt;
*Exercises - andmete kuvamine, lisamine ja kustutamine töötavad, ent muutmine töötab ainult osaliselt: kui muuta harjutuse mõõtühikut, siis veast ei teavitata, aga muudatus andmebaasi ei jõua (Fiddleriga otse teenuse API poole pöördudes lisandus andmebaasi uus kirje)&lt;br /&gt;
*BodyParts - andmete kuvamine, lisamine ja kustutamine töötavad, aga muutmine ei õnnestu (ka Fiddleriga otse teenuse API poole pöördudes). Kui üritada muuta kehaosa alla kuuluvate harjutuste nimekirja, siis tuleb vastuseks Http status 400 (Bad request!)&lt;br /&gt;
*Routines - andmete kuvamine ja lisamine töötavad, muutmine (ReferenceError: bodyPart is not defined) ja kustutamine ei õnnestu (Bad request!)&lt;br /&gt;
 &lt;br /&gt;
Vaadete puhul võib nuriseda selle üle, et iga kontrolleri kohta on tehtud ainult Index vaatefail, mis sisaldab endas nii põhiakna kui ka hüpikakende html-koodi. Need oleks võinud parema arusaadavuse huvides ju lahutada, isegi kui andmete laadimine toimub läbi sama kontrolleri. &lt;br /&gt;
 &lt;br /&gt;
Lähtekoodist ilmneb veel, et iga töötava vaate jaoks on tehtud eraldi moodul oma kontrolleriga, mis registreeritakse vastavas vaates. Keskne moodul failis app.js ei tööta, see on mõeldud tokenipõhise autentimise realiseerimiseks ja eeldab üheleherakendust (ruutimisinfo on ka seal). Kõiki autentimise töölesaamiseks vajalikke mooduleid ei ole samas projekti lisatud (authService, authInterceptorService).&lt;br /&gt;
 &lt;br /&gt;
Praeguse lahenduse üheks puuduseks on veel see, et kõik Http-päringud veebiteenusele tehakse otse Angulari kontrolleritest, puudub vahepealne service-kiht. Selle tagajärjel on päringud ja vaadete loogika koodis läbisegi. Hüpikaknas objektide muutmiseks ei pärita andmeid uuesti teenusest, vaid muudetakse juba varem põhiaknasse laetud andmeid. Lisaks on Angulari raamistiku kõrval kasutatud ka tavalisi jQuery võtteid, mis teeb üldpildi võrdlemisi kirjuks. Mõned funktsioonid ei tööta korrektselt ja nii on üsna keeruline aru saada, kus viga täpselt asub: kontrolleris või teenuse API poolel.&lt;br /&gt;
 &lt;br /&gt;
Kokkuvõttes võib tõdeda, et olemasolevate vaadetega on siiski vaeva nähtud ja suhtlus teenusega tööle saadud, mis selle aine puhul on ilmselt peamine. Mõned funktsionaalsused vajavad veel viimistlemist ja projekti üldine ülesehitus korrastamist. MVC kontrolleritega autentimise tööle saamiseks tuleks lisada eespool mainitud puuduvad teenused, siduda olemasolevad kontrollerid keskse app-mooduliga ning see omakorda jagatud Layout vaatega, millele tuleks ka lisada eraldi kontroller.&lt;br /&gt;
&lt;br /&gt;
JRT esitatud töö asub [https://wiki.itcollege.ee/index.php/JRT#J.C3.B5usaali_infos.C3.BCsteemi_anal.C3.BC.C3.BCs siin].&lt;/div&gt;</summary>
		<author><name>Otiks</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Talk:JRT&amp;diff=123605</id>
		<title>Talk:JRT</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Talk:JRT&amp;diff=123605"/>
		<updated>2017-06-14T09:23:16Z</updated>

		<summary type="html">&lt;p&gt;Otiks: /* Hinnang meeskonna JRT esitatud klientrakendusele */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Hinnang meeskonna JRT esitatud XML-failidele==&lt;br /&gt;
&lt;br /&gt;
Koostaja: [https://wiki.itcollege.ee/index.php/Team_SPOT Team SPOT]&lt;br /&gt;
&lt;br /&gt;
Meeskond JRT on esitanud XML-faili, skeemifaili ja kaks XSLT-faili andmete transformeerimiseks HTML- ja XML-formaati. Transformatsioonid sisaldavad enam kui ühte &#039;&#039;for-each&#039;&#039;-klauslit. HTML-väljundiga transformatsioonis on kasutatud nelja &#039;&#039;for-each&#039;&#039;i ja kolme &#039;&#039;if&#039;&#039;-tingimust. XML-väljundiga transformatsioonis on kasutatud viite &#039;&#039;for-each&#039;&#039;i ja kolme &#039;&#039;if&#039;&#039;-tingimust. XML valideerub ja loogilisi dimensioone on viis. Neljal dimensioonil on kasutatud atribuute, mis on enam kui lihtsalt ID. Töö põhinõuded on täidetud.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Märkused XMLi/XSD kohta:&#039;&#039;&#039;&lt;br /&gt;
* elemendi &amp;lt;user&amp;gt; &#039;&#039;id&#039;&#039;-atribuudi väärtuse unikaalsus ei ole tagatud&lt;br /&gt;
* elemendile &amp;lt;user&amp;gt; saab lisada piiramatul arvul sama alamelementi: &amp;lt;firstName&amp;gt;, &amp;lt;lastName&amp;gt;, &amp;lt;born&amp;gt;, &amp;lt;sex&amp;gt;, …&lt;br /&gt;
* elemendil &amp;lt;user&amp;gt; on kõigi &amp;lt;subscription&amp;gt;-elementide &#039;&#039;type&#039;&#039; määratud kõige ülemisel tasemel &#039;&#039;status&#039;&#039;-atribuudiga, aga see võiks olla &amp;lt;subscription&amp;gt;-tasemel, et võimaldada rohkem paindlikkust&lt;br /&gt;
* atribuuti &#039;&#039;id&#039;&#039; (unikaalset) võiks kasutada ka teiste “liigielementide” puhul, sest:&lt;br /&gt;
**  elemente &amp;lt;subscription&amp;gt; saab sama &#039;&#039;name&#039;&#039;-atribuudiga lisada piiramatul arvul&lt;br /&gt;
**  elemendi &amp;lt;subscription&amp;gt; alla saab lisada piiramatul arvul &amp;lt;price&amp;gt;-elemente samade &#039;&#039;type&#039;&#039;- ja &#039;&#039;currency&#039;&#039;-atribuutide väärtustega&lt;br /&gt;
* elemendi &amp;lt;subscription&amp;gt; &#039;&#039;name&#039;&#039;-atribuudiga võib tekkida probleeme, kui atribuuti pandud nimi sisaldaks erimärke, seega oleks mõistlikum &#039;&#039;name&#039;&#039;-atribuut asendada eraldi alamelemendiga &amp;lt;name&amp;gt;&amp;lt;/name&amp;gt;, kus saaks kasutada CDATAt.&lt;br /&gt;
&lt;br /&gt;
Tööga on nähtud vaeva, XSLTd on koostatud arusaadavalt, kuid XSD ja XML vajaksid täiendamist, et vältida võimalikke ohukohti andmete saatmisel. Vastasel korral võivad ka transformatsioonid ootamatusi toota (vt näidet). Põhiline oleks XSDs ära märkida, kui palju mingit elementi esineda võib ning tagada ka &#039;&#039;id&#039;&#039;-atribuudi unikaalsus. XMLi koostamise puhul tuleks läbi mõelda kas atribuudid on mõistlikult valitud või saaks neid esitada paremini alamelementidena. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Näide:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;background-color: whitesmoke; border: solid thin grey; display: inline-block; padding:10px&amp;quot;&amp;gt;&lt;br /&gt;
Name: Peeter Banaan&amp;lt;br&amp;gt;Member status: gold&amp;lt;br&amp;gt;Workouts and prices: &lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;     Balance: 39.99EUR&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;     Balance: 39.99EUR&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;     Balance: 39.99EUR&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;     Gym: 69.99EUR&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;     Yoga: 39.99EURYoga: 39.99EURYoga: 39.99EUR&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
JRT esitatud töö asub [https://wiki.itcollege.ee/index.php/JRT#XML siin].&lt;br /&gt;
&lt;br /&gt;
==Hinnang meeskonna JRT esitatud veebiteenusele==&lt;br /&gt;
&lt;br /&gt;
Koostaja: [https://wiki.itcollege.ee/index.php/Team_SPOT Team SPOT]&lt;br /&gt;
&lt;br /&gt;
JRT veebiteenus on mõeldud jõusaali külastajale, kes näevad erinevatele kehaosadele mõeldud harjutusi, treeningukavasid ning ja saavad üles märkida oma saavutusi. Projekti realiseerimiseks on kasutatud REST arhitektuuri ja ASP.NET MVC Web API tehnoloogiat. Andmebaas luuakse Entity Frameworki abil. Lahendusele on lisatud Asp.Net Identity (Individual User Accounts) funktsionaalsuse võimalus.&lt;br /&gt;
 &lt;br /&gt;
Teenuse lähtekood on jagatud kihtidesse: BL (äriloogika, andmeobjektid, teenused), DAL (suhtlus andmebaasiga, repositooriumid), Domain (olemid), Web (kontrollerid), eraldi teek on ka liidestele (Interfaces). Samuti on kasutatud sõltuvuste süstimist (Ninject) ning repositooriumide puhul Factory ja UOW mustrit. Web projektis on koos, aga eraldi kaustades, nii teenuse API kontrollerid kui ka veebikliendi MVC kontrollerid ja AngularJS kontrollerid.&lt;br /&gt;
 &lt;br /&gt;
Meeskonna lehel avaldatud veebiteenuse analüüsis endale eesmärgiks seatud kohustuslike funktsionaalsuste hulka kuuluvad: kasutajagrupid, konto loomise võimalus, isiklike andmete ja kavade salvestamise võimalus, treenerite info ja kontaktandmed. Lisavõimalusena sooviti luua ka kasutusstatistika ja -analüüsi tuge ning administraatori liidest.&lt;br /&gt;
 &lt;br /&gt;
Praeguse seisuga esitatud teenuse kohta pole meeskond kommentaare lisanud, mistõttu on keeruline kõigest ülevaadet saada ja tehtut adekvaatselt hinnata. Andmebaasi skeemi juures võiks olla ka tabelite kirjeldused ja olemite omavaheliste seoste selgitused. Esimese hooga on raske skeemi loogikast aru saada. &lt;br /&gt;
 &lt;br /&gt;
Eelnevalt mainitud põhifunktsionaalsused on ühel või teisel kujul ka realiseeritud: teenusest on võimalik kätte saada infot erinevatele kehaosadele mõeldud harjutuste, erinevate treeningühikute, treeningkavade ja päevaplaanide kohta, samuti kasutajate andmeid. Ka uute kasutajate lisamine on võimalik. Täiendavate funktsionaalsuste realiseerimiseni pole jõutud.&lt;br /&gt;
 &lt;br /&gt;
Andmebaasi migratsioone pole projekti selles faasis lisatud. Andmebaasi kustutamise või olemites tehtud muudatuste korral luuakse uus andmebaas, mis populeeritakse DAL kihis asuva DBInitializer klassi Seed() meetodis olevate andmetega.&lt;br /&gt;
 &lt;br /&gt;
Küsimusi tekitab kasutajate haldus. Nimelt on tehtud andmebaasi teenuse kasutajatele eraldi olem AppUser, kuhu saab lisada kasutajaid ilma Asp.Net Identity funktsionaalsust kasutamata. Sealt on ilma autentimiseta võimalik kätte saada kõigi kasutajate isikuandmeid. Paralleelselt on alles jäetud ka UserInt olem, kuhu saab samuti kasutajaid lisada, viimaseid on võimalik autentida läbi Web projektis asuva Account kontrolleri. AppUserit on võimalik siduda UserInt olemiga, aga see ei kajastu meeskonna lehel esitatud andmebaasi skeemis.&lt;br /&gt;
 &lt;br /&gt;
Account mudelid on samas ümber kolitud BL kihis asuvasse DTO-de kausta. Kas see on ikka õige koht? Pigem võiks need ju asuda Web projektis, kus asub vastav kontroller ja kus autentimine ja autoriseerimine tegelikult peaks toimuma. Silma jäi seegi, et nii Asp.Net Identity kui ka mõned teised paketid (näiteks Ninject) on lisatud alamprojektidesse, kus neid vaja ei lähe. &lt;br /&gt;
 &lt;br /&gt;
Asp.Net Identity funktsionaalsust tegelikult siiski kuskil ei kasutatagi. Autentimist pole üheski kontrolleris peale AccountControlleri rakendatud, aga see pole praegu muu teenusega seotud. Kõigile andmetele pääseb takistusteta ligi otse brauserist. Samuti on võimalik näiteks Fiddleri abil andmeid muuta ja kustutada.&lt;br /&gt;
 &lt;br /&gt;
Andmebaasiga suhtlemine käib läbi DAL kihis asuvate repositooriumide, kuid kasutusel on ainult standardsed meetodid: All(), Find() / GetById(), Remove(), Add(), Update(), SaveChanges(). Ühtegi kohandatud viisi andmete kättesaamiseks või muutmiseks pole repositooriumidesse lisatud - need on kõik tühjad. Sama lugu on ka BL Services kihiga. &lt;br /&gt;
 &lt;br /&gt;
Web projekti kontrollerites pole hetkel samuti ühtegi kohandatud IHttpActionResult meetodit realiseeritud. Ka on puudu mõned tavapärased meetodid. Bodyparts ja RoutineWorkouts kontrollerid ei võimalda ID järgi objekti kätte saada. Konkreetse objekti selekteerimine on nende andmete puhul seega jäetud kliendi mureks. &lt;br /&gt;
 &lt;br /&gt;
Nagu juba eelnevalt mainitud, siis ühegi kontrolleri kasutamist pole praegu autentimisega piiratud ja kasutajarolle ei rakendata.&lt;br /&gt;
 &lt;br /&gt;
Service kihis tuleks üle vaadata Edit() meetodid, sest need ei tööta olemite puhul, millel on suubuvaid seoseid teiste olemitega. DTO klassides on tehtud osa atribuute kohustuslikeks, mistõttu on ka seotud olemite loomine ja muutmine läbi teenuse keerulisem kui ehk peaks. Lisaks id-atribuudile tuleb mõnel puhul kaasa anda ka objekti nimi. ProgramDTO puhul puudub aga näiteks id-atribuut sootuks. &lt;br /&gt;
 &lt;br /&gt;
Domeeni kihis on rohkem olemeid, kui praegu teenuses ära kasutatakse, aga kõiki funktsionaalsusi polegi jõutud veel realiseerida. Annotatsioonid on olemas. Vajalikud atribuudid on muudetud kohustuslikuks ning stringide pikkused piiratud. Küll on domeeni tasemel jäetud kohustuslikuks tegemata AppUseri ees- ja perenimi. Need piirangud on lisatud Account mudelites.&lt;br /&gt;
 &lt;br /&gt;
Üldkokkuvõttes võib siiski öelda, et kui autentimine ja autoriseerimine välja jätta, siis on nõutud põhifunktsionaalsused veebiteenuses lahendatud. Lahendus on jagatud kihtidesse ning äriloogika on kontrolleritest välja jäetud. Andmebaasis on olemeid piisavalt ja neid andmeid on võimalik läbi API kätte saada. Projekt on piisavalt keeruline ja selle lõplik realiseerimine nõuab ilmselt rohkem aega ja pühendumist, mida käesoleva aine sisu, mahtu ja ajakava arvesse võttes oleks ülekohtune nõuda.&lt;br /&gt;
&lt;br /&gt;
JRT esitatud töö asub [https://wiki.itcollege.ee/index.php/JRT#J.C3.B5usaali_infos.C3.BCsteemi_anal.C3.BC.C3.BCs siin].&lt;br /&gt;
&lt;br /&gt;
==Hinnang meeskonna JRT esitatud klientrakendusele==&lt;br /&gt;
&lt;br /&gt;
Koostaja: [https://wiki.itcollege.ee/index.php/JRT#J.C3.B5usaali_infos.C3.BCsteemi_anal.C3.BC.C3.BCs Team SPOT]&lt;br /&gt;
&lt;br /&gt;
JRT veebiteenuse vastu töötava klientrakenduse loomisel on kasutatud Angular JS raamistikku koos Asp.Net MVC kontrollerite ja vaadetega (Razor). Angulari osa on eraldatud App kausta. Koodis on kasutatud ka jQueryt. MVC kontrollerid ja vaated on tekitatud scaffoldingiga. Seega pole pidanud eraldi vaeva nägema ruutimisega. Kuna klient on lisatud samasse projekti, kus asuvad ka API kontrollerid, siis pole pidanud kliendi jaoks eraldi salvestama teenuse baasaadressi, mille vastu päringuid tehakse.&lt;br /&gt;
 &lt;br /&gt;
Meeskonna lehel avaldatud teenuse analüüsis on välja toodud kaks liidest, mida soovitakse arendada. Administraatoriliideses peaks administraatoril olema võimalus hallata kõiki andmeid (näiteks lisada ja kustutada: kasutajaid, harjutusi, treenigukavasid jne). Kasutajaliideses peaks tavakasutaja saama sisestada oma keha kohta viimaseid andmeid, panna kirja infot viimase treeningu kohta ning lisada omale kontaktandmeid, valida treeningukavasid ja paigutada need soovitud päevadele.&lt;br /&gt;
 &lt;br /&gt;
Mingisuguseid kommentaare avaldatud klientrakenduse kohta meeskonna lehelt leida ei õnnestunud. Lisaks leidub lähtekoodis lõpuni realiseerimata osasid, mis tegelikult rakenduse tööd ei mõjuta. See tegi retsenseerimise keerulisemaks, aga üldjoontes on kõigest hoolimata võimalik lahenduse tööpõhimõttest aru saada, kui rakendust natuke testida ja lähtekoodi uurida.&lt;br /&gt;
 &lt;br /&gt;
Praeguse seisuga on veebikliendis osaliselt teostatud administraatorile mõeldud funktsionaalsus. Kasutajaid hallata veel ei saa, aga harjutusi ja treeningukavasid on võimalik lisada. Realiseerida on proovitud ka tokenipõhist autentimist, kuid see ei tööta, mis on arusaadav, kuna kasutajahaldus ja autentimine / autoriseerimine on jäänud praeguse seisuga realiseerimata ka teenuse API poolel. Ilmselgelt on näha, et töö jäi pooleli.&lt;br /&gt;
 &lt;br /&gt;
Angulari rakenduse kontrolleritega on veebikliendis tööle pandud neli vaadet: Exercises, Units, BodyParts, Routines. Neile pääseb ligi menüüribale lisatud linkide kaudu. Users vaade on ka olemas, aga ilma Angulari kontrollerita - andmeid ei laeta. Sellele vaatele pääseb ligi, kui lisada brauseri aadressiribal domeeni lõppu “/Users”. Tokenipõhise autentimise jaoks on tehtud ka MainAngular vaade (domeen/MainAngular), kuid see ei toimi.&lt;br /&gt;
 &lt;br /&gt;
Kõik olemasolevad vaated on sama ülesehitusega - kuvatakse nimekirja koos Edit ja Delete nuppudega. Filtreid andmete sorteerimiseks ei ole. Igal vaatel on olemas on ka Add New nupp. Andmete lisamiseks ja muutmiseks avaneb hüpikaken (modal), kuhu laetakse kõik objekti jaoks vajalikud input-väljad ja seotud olemite puhul valiku tegemiseks ripploetelud. Objektide kustutamisel küsitakse kasutajalt kinnitust. Kõik pakutud funktsionaalsused paraku veel ei tööta. Probleeme on eeskätt teiste olemitega seotud olemite muutmise ja kustutamisega.&lt;br /&gt;
 &lt;br /&gt;
Funktsionaalsused vaadete kaupa:&lt;br /&gt;
*Units  - andmete kuvamine, lisamine, muutmine ja kustutamine töötavad&lt;br /&gt;
*Exercises - andmete kuvamine, lisamine ja kustutamine töötavad, ent muutmine töötab ainult osaliselt: kui muuta harjutuse mõõtühikut, siis veast ei teavitata, aga muudatus andmebaasi ei jõua (Fiddleriga otse teenuse API poole pöördudes lisandus andmebaasi uus kirje)&lt;br /&gt;
*BodyParts - andmete kuvamine, lisamine ja kustutamine töötavad, aga muutmine ei õnnestu (ka Fiddleriga otse teenuse API poole pöördudes). Kui üritada muuta kehaosa alla kuuluvate harjutuste nimekirja, siis tuleb vastuseks Http status 400 (Bad request!)&lt;br /&gt;
*Routines - andmete kuvamine ja lisamine töötavad, muutmine (ReferenceError: bodyPart is not defined) ja kustutamine ei õnnestu (Bad request!)&lt;br /&gt;
 &lt;br /&gt;
Vaadete puhul võib nuriseda selle üle, et iga kontrolleri kohta on tehtud ainult Index vaatefail, mis sisaldab endas nii põhiakna kui ka hüpikakende html-koodi. Need oleks võinud parema arusaadavuse huvides ju lahutada, isegi kui andmete laadimine toimub läbi sama kontrolleri. &lt;br /&gt;
 &lt;br /&gt;
Lähtekoodist ilmneb veel, et iga töötava vaate jaoks on tehtud eraldi moodul oma kontrolleriga, mis registreeritakse vastavas vaates. Keskne moodul failis app.js ei tööta, see on mõeldud tokenipõhise autentimise realiseerimiseks ja eeldab üheleherakendust (ruutimisinfo on ka seal). Kõiki autentimise töölesaamiseks vajalikke mooduleid ei ole samas projekti lisatud (authService, authInterceptorService).&lt;br /&gt;
 &lt;br /&gt;
Praeguse lahenduse üheks puuduseks on veel see, et kõik Http-päringud veebiteenusele tehakse otse Angulari kontrolleritest, puudub vahepealne service-kiht. Selle tagajärjel on päringud ja vaadete loogika koodis läbisegi. Hüpikaknas objektide muutmiseks ei pärita andmeid uuesti teenusest, vaid muudetakse juba varem põhiaknasse laetud andmeid. Lisaks on Angulari raamistiku kõrval kasutatud ka tavalisi jQuery võtteid, mis teeb üldpildi võrdlemisi kirjuks. Mõned funktsioonid ei tööta korrektselt ja nii on üsna keeruline aru saada, kus viga täpselt asub: kontrolleris või teenuse API poolel.&lt;br /&gt;
 &lt;br /&gt;
Kokkuvõttes võib tõdeda, et olemasolevate vaadetega on siiski vaeva nähtud ja suhtlus teenusega tööle saadud, mis selle aine puhul on ilmselt peamine. Mõned funktsionaalsused vajavad veel viimistlemist ja projekti üldine ülesehitus korrastamist. MVC kontrolleritega autentimise tööle saamiseks tuleks lisada eespool mainitud puuduvad teenused, siduda olemasolevad kontrollerid keskse app-mooduliga ning see omakorda jagatud Layout vaatega, millele tuleks ka lisada eraldi kontroller.&lt;br /&gt;
&lt;br /&gt;
JRT esitatud töö asub [https://wiki.itcollege.ee/index.php/JRT#J.C3.B5usaali_infos.C3.BCsteemi_anal.C3.BC.C3.BCs siin].&lt;/div&gt;</summary>
		<author><name>Otiks</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Talk:JRT&amp;diff=123589</id>
		<title>Talk:JRT</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Talk:JRT&amp;diff=123589"/>
		<updated>2017-06-13T20:59:27Z</updated>

		<summary type="html">&lt;p&gt;Otiks: /* Hinnang meeskonna JRT esitatud klientrakendusele */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Hinnang meeskonna JRT esitatud XML-failidele==&lt;br /&gt;
&lt;br /&gt;
Koostaja: [https://wiki.itcollege.ee/index.php/Team_SPOT Team SPOT]&lt;br /&gt;
&lt;br /&gt;
Meeskond JRT on esitanud XML-faili, skeemifaili ja kaks XSLT-faili andmete transformeerimiseks HTML- ja XML-formaati. Transformatsioonid sisaldavad enam kui ühte &#039;&#039;for-each&#039;&#039;-klauslit. HTML-väljundiga transformatsioonis on kasutatud nelja &#039;&#039;for-each&#039;&#039;i ja kolme &#039;&#039;if&#039;&#039;-tingimust. XML-väljundiga transformatsioonis on kasutatud viite &#039;&#039;for-each&#039;&#039;i ja kolme &#039;&#039;if&#039;&#039;-tingimust. XML valideerub ja loogilisi dimensioone on viis. Neljal dimensioonil on kasutatud atribuute, mis on enam kui lihtsalt ID. Töö põhinõuded on täidetud.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Märkused XMLi/XSD kohta:&#039;&#039;&#039;&lt;br /&gt;
* elemendi &amp;lt;user&amp;gt; &#039;&#039;id&#039;&#039;-atribuudi väärtuse unikaalsus ei ole tagatud&lt;br /&gt;
* elemendile &amp;lt;user&amp;gt; saab lisada piiramatul arvul sama alamelementi: &amp;lt;firstName&amp;gt;, &amp;lt;lastName&amp;gt;, &amp;lt;born&amp;gt;, &amp;lt;sex&amp;gt;, …&lt;br /&gt;
* elemendil &amp;lt;user&amp;gt; on kõigi &amp;lt;subscription&amp;gt;-elementide &#039;&#039;type&#039;&#039; määratud kõige ülemisel tasemel &#039;&#039;status&#039;&#039;-atribuudiga, aga see võiks olla &amp;lt;subscription&amp;gt;-tasemel, et võimaldada rohkem paindlikkust&lt;br /&gt;
* atribuuti &#039;&#039;id&#039;&#039; (unikaalset) võiks kasutada ka teiste “liigielementide” puhul, sest:&lt;br /&gt;
**  elemente &amp;lt;subscription&amp;gt; saab sama &#039;&#039;name&#039;&#039;-atribuudiga lisada piiramatul arvul&lt;br /&gt;
**  elemendi &amp;lt;subscription&amp;gt; alla saab lisada piiramatul arvul &amp;lt;price&amp;gt;-elemente samade &#039;&#039;type&#039;&#039;- ja &#039;&#039;currency&#039;&#039;-atribuutide väärtustega&lt;br /&gt;
* elemendi &amp;lt;subscription&amp;gt; &#039;&#039;name&#039;&#039;-atribuudiga võib tekkida probleeme, kui atribuuti pandud nimi sisaldaks erimärke, seega oleks mõistlikum &#039;&#039;name&#039;&#039;-atribuut asendada eraldi alamelemendiga &amp;lt;name&amp;gt;&amp;lt;/name&amp;gt;, kus saaks kasutada CDATAt.&lt;br /&gt;
&lt;br /&gt;
Tööga on nähtud vaeva, XSLTd on koostatud arusaadavalt, kuid XSD ja XML vajaksid täiendamist, et vältida võimalikke ohukohti andmete saatmisel. Vastasel korral võivad ka transformatsioonid ootamatusi toota (vt näidet). Põhiline oleks XSDs ära märkida, kui palju mingit elementi esineda võib ning tagada ka &#039;&#039;id&#039;&#039;-atribuudi unikaalsus. XMLi koostamise puhul tuleks läbi mõelda kas atribuudid on mõistlikult valitud või saaks neid esitada paremini alamelementidena. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Näide:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;background-color: whitesmoke; border: solid thin grey; display: inline-block; padding:10px&amp;quot;&amp;gt;&lt;br /&gt;
Name: Peeter Banaan&amp;lt;br&amp;gt;Member status: gold&amp;lt;br&amp;gt;Workouts and prices: &lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;     Balance: 39.99EUR&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;     Balance: 39.99EUR&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;     Balance: 39.99EUR&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;     Gym: 69.99EUR&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;     Yoga: 39.99EURYoga: 39.99EURYoga: 39.99EUR&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
JRT esitatud töö asub [https://wiki.itcollege.ee/index.php/JRT#XML siin].&lt;br /&gt;
&lt;br /&gt;
==Hinnang meeskonna JRT esitatud veebiteenusele==&lt;br /&gt;
&lt;br /&gt;
Koostaja: [https://wiki.itcollege.ee/index.php/Team_SPOT Team SPOT]&lt;br /&gt;
&lt;br /&gt;
JRT veebiteenus on mõeldud jõusaali külastajale, kes näevad erinevatele kehaosadele mõeldud harjutusi, treeningukavasid ning ja saavad üles märkida oma saavutusi. Projekti realiseerimiseks on kasutatud REST arhitektuuri ja ASP.NET MVC Web API tehnoloogiat. Andmebaas luuakse Entity Frameworki abil. Lahendusele on lisatud Asp.Net Identity (Individual User Accounts) funktsionaalsuse võimalus.&lt;br /&gt;
 &lt;br /&gt;
Teenuse lähtekood on jagatud kihtidesse: BL (äriloogika, andmeobjektid, teenused), DAL (suhtlus andmebaasiga, repositooriumid), Domain (olemid), Web (kontrollerid), eraldi teek on ka liidestele (Interfaces). Samuti on kasutatud sõltuvuste süstimist (Ninject) ning repositooriumide puhul Factory ja UOW mustrit. Web projektis on koos, aga eraldi kaustades, nii teenuse API kontrollerid kui ka veebikliendi MVC kontrollerid ja AngularJS kontrollerid.&lt;br /&gt;
 &lt;br /&gt;
Meeskonna lehel avaldatud veebiteenuse analüüsis endale eesmärgiks seatud kohustuslike funktsionaalsuste hulka kuuluvad: kasutajagrupid, konto loomise võimalus, isiklike andmete ja kavade salvestamise võimalus, treenerite info ja kontaktandmed. Lisavõimalusena sooviti luua ka kasutusstatistika ja -analüüsi tuge ning administraatori liidest.&lt;br /&gt;
 &lt;br /&gt;
Praeguse seisuga esitatud teenuse kohta pole meeskond kommentaare lisanud, mistõttu on keeruline kõigest ülevaadet saada ja tehtut adekvaatselt hinnata. Andmebaasi skeemi juures võiks olla ka tabelite kirjeldused ja olemite omavaheliste seoste selgitused. Esimese hooga on raske skeemi loogikast aru saada. &lt;br /&gt;
 &lt;br /&gt;
Eelnevalt mainitud põhifunktsionaalsused on ühel või teisel kujul ka realiseeritud: teenusest on võimalik kätte saada infot erinevatele kehaosadele mõeldud harjutuste, erinevate treeningühikute, treeningkavade ja päevaplaanide kohta, samuti kasutajate andmeid. Ka uute kasutajate lisamine on võimalik. Täiendavate funktsionaalsuste realiseerimiseni pole jõutud.&lt;br /&gt;
 &lt;br /&gt;
Andmebaasi migratsioone pole projekti selles faasis lisatud. Andmebaasi kustutamise või olemites tehtud muudatuste korral luuakse uus andmebaas, mis populeeritakse DAL kihis asuva DBInitializer klassi Seed() meetodis olevate andmetega.&lt;br /&gt;
 &lt;br /&gt;
Küsimusi tekitab kasutajate haldus. Nimelt on tehtud andmebaasi teenuse kasutajatele eraldi olem AppUser, kuhu saab lisada kasutajaid ilma Asp.Net Identity funktsionaalsust kasutamata. Sealt on ilma autentimiseta võimalik kätte saada kõigi kasutajate isikuandmeid. Paralleelselt on alles jäetud ka UserInt olem, kuhu saab samuti kasutajaid lisada, viimaseid on võimalik autentida läbi Web projektis asuva Account kontrolleri. AppUserit on võimalik siduda UserInt olemiga, aga see ei kajastu meeskonna lehel esitatud andmebaasi skeemis.&lt;br /&gt;
 &lt;br /&gt;
Account mudelid on samas ümber kolitud BL kihis asuvasse DTO-de kausta. Kas see on ikka õige koht? Pigem võiks need ju asuda Web projektis, kus asub vastav kontroller ja kus autentimine ja autoriseerimine tegelikult peaks toimuma. Silma jäi seegi, et nii Asp.Net Identity kui ka mõned teised paketid (näiteks Ninject) on lisatud alamprojektidesse, kus neid vaja ei lähe. &lt;br /&gt;
 &lt;br /&gt;
Asp.Net Identity funktsionaalsust tegelikult siiski kuskil ei kasutatagi. Autentimist pole üheski kontrolleris peale AccountControlleri rakendatud, aga see pole praegu muu teenusega seotud. Kõigile andmetele pääseb takistusteta ligi otse brauserist. Samuti on võimalik näiteks Fiddleri abil andmeid muuta ja kustutada.&lt;br /&gt;
 &lt;br /&gt;
Andmebaasiga suhtlemine käib läbi DAL kihis asuvate repositooriumide, kuid kasutusel on ainult standardsed meetodid: All(), Find() / GetById(), Remove(), Add(), Update(), SaveChanges(). Ühtegi kohandatud viisi andmete kättesaamiseks või muutmiseks pole repositooriumidesse lisatud - need on kõik tühjad. Sama lugu on ka BL Services kihiga. &lt;br /&gt;
 &lt;br /&gt;
Web projekti kontrollerites pole hetkel samuti ühtegi kohandatud IHttpActionResult meetodit realiseeritud. Ka on puudu mõned tavapärased meetodid. Bodyparts ja RoutineWorkouts kontrollerid ei võimalda ID järgi objekti kätte saada. Konkreetse objekti selekteerimine on nende andmete puhul seega jäetud kliendi mureks. &lt;br /&gt;
 &lt;br /&gt;
Nagu juba eelnevalt mainitud, siis ühegi kontrolleri kasutamist pole praegu autentimisega piiratud ja kasutajarolle ei rakendata.&lt;br /&gt;
 &lt;br /&gt;
Service kihis tuleks üle vaadata Edit() meetodid, sest need ei tööta olemite puhul, millel on suubuvaid seoseid teiste olemitega. DTO klassides on tehtud osa atribuute kohustuslikeks, mistõttu on ka seotud olemite loomine ja muutmine läbi teenuse keerulisem kui ehk peaks. Lisaks id-atribuudile tuleb mõnel puhul kaasa anda ka objekti nimi. ProgramDTO puhul puudub aga näiteks id-atribuut sootuks. &lt;br /&gt;
 &lt;br /&gt;
Domeeni kihis on rohkem olemeid, kui praegu teenuses ära kasutatakse, aga kõiki funktsionaalsusi polegi jõutud veel realiseerida. Annotatsioonid on olemas. Vajalikud atribuudid on muudetud kohustuslikuks ning stringide pikkused piiratud. Küll on domeeni tasemel jäetud kohustuslikuks tegemata AppUseri ees- ja perenimi. Need piirangud on lisatud Account mudelites.&lt;br /&gt;
 &lt;br /&gt;
Üldkokkuvõttes võib siiski öelda, et kui autentimine ja autoriseerimine välja jätta, siis on nõutud põhifunktsionaalsused veebiteenuses lahendatud. Lahendus on jagatud kihtidesse ning äriloogika on kontrolleritest välja jäetud. Andmebaasis on olemeid piisavalt ja neid andmeid on võimalik läbi API kätte saada. Projekt on piisavalt keeruline ja selle lõplik realiseerimine nõuab ilmselt rohkem aega ja pühendumist, mida käesoleva aine sisu, mahtu ja ajakava arvesse võttes oleks ülekohtune nõuda.&lt;br /&gt;
&lt;br /&gt;
JRT esitatud töö asub [https://wiki.itcollege.ee/index.php/JRT#J.C3.B5usaali_infos.C3.BCsteemi_anal.C3.BC.C3.BCs siin].&lt;br /&gt;
&lt;br /&gt;
==Hinnang meeskonna JRT esitatud klientrakendusele==&lt;br /&gt;
&lt;br /&gt;
Koostaja: [https://wiki.itcollege.ee/index.php/JRT#J.C3.B5usaali_infos.C3.BCsteemi_anal.C3.BC.C3.BCs Team SPOT]&lt;br /&gt;
&lt;br /&gt;
JRT veebiteenuse vastu töötava klientrakenduse loomisel on kasutatud Angular JS raamistikku koos Asp.Net MVC kontrollerite ja vaadetega (Razor). Angulari osa on eraldatud App kausta. Koodis on kasutatud ka jQueryt. MVC kontrollerid ja vaated on tekitatud scaffoldingiga. Seega pole pidanud eraldi vaeva nägema ruutimisega. Kuna klient on lisatud samasse projekti, kus asuvad ka API kontrollerid, siis pole pidanud kliendi jaoks eraldi salvestama teenuse baasaadressi, mille vastu päringuid tehakse.&lt;br /&gt;
 &lt;br /&gt;
Meeskonna lehel avaldatud teenuse analüüsis on välja toodud kaks liidest, mida soovitakse arendada. Administraatoriliideses peaks administraatoril olema võimalus hallata kõiki andmeid (näiteks lisada ja kustutada: kasutajaid, harjutusi, treenigukavasid jne). Kasutajaliideses peaks tavakasutaja saama sisestada oma keha kohta viimaseid andmeid, panna kirja infot viimase treeningu kohta ning lisada omale kontaktandmeid, valida treeningukavasid ja paigutada need soovitud päevadele.&lt;br /&gt;
 &lt;br /&gt;
Mingisuguseid kommentaare avaldatud klientrakenduse kohta meeskonna lehelt leida ei õnnestunud. Lisaks leidub lähtekoodis lõpuni realiseerimata osasid, mis tegelikult rakenduse tööd ei mõjuta. See tegi retsenseerimise keerulisemaks, aga üldjoontes on kõigest hoolimata võimalik lahenduse tööpõhimõttest aru saada, kui rakendust natuke testida ja lähtekoodi uurida.&lt;br /&gt;
 &lt;br /&gt;
Praeguse seisuga on veebikliendis osaliselt teostatud administraatorile mõeldud funktsionaalsus. Kasutajaid hallata veel ei saa, aga harjutusi ja treeningukavasid on võimalik lisada. Realiseerida on proovitud ka tokenipõhist autentimist, kuid see ei tööta, mis on arusaadav, kuna kasutajahaldus ja autentimine / autoriseerimine on jäänud praeguse seisuga realiseerimata ka teenuse API poolel. Ilmselgelt on näha, et töö jäi pooleli.&lt;br /&gt;
 &lt;br /&gt;
Angulari rakenduse kontrolleritega on veebikliendis tööle pandud neli vaadet: Exercises, Units, BodyParts, Routines. Neile pääseb ligi menüüribale lisatud linkide kaudu. Users vaade on ka olemas, aga ilma Angulari kontrollerita - andmeid ei laeta. Sellele vaatele pääseb ligi, kui lisada brauseri aadressiribal domeeni lõppu “/Users”. Tokenipõhise autentimise jaoks on tehtud ka MainAngular vaade (domeen/MainAngular), kuid see ei toimi.&lt;br /&gt;
 &lt;br /&gt;
Kõik olemasolevad vaated on sama ülesehitusega - kuvatakse nimekirja koos Edit ja Delete nuppudega. Filtreid andmete sorteerimiseks ei ole. Igal vaatel on olemas on ka Add New nupp. Andmete lisamiseks ja muutmiseks avaneb hüpikaken (modal), kuhu laetakse kõik objekti jaoks vajalikud input-väljad ja seotud olemite puhul valiku tegemiseks ripploetelud. Objektide kustutamisel küsitakse kasutajalt kinnitust. Kõik pakutud funktsionaalsused paraku veel ei tööta. Probleeme on eeskätt teiste olemitega seotud olemite muutmise ja kustutamisega.&lt;br /&gt;
 &lt;br /&gt;
Funktsionaalsused vaadete kaupa:&lt;br /&gt;
*Units  - andmete kuvamine, lisamine, muutmine ja kustutamine töötavad&lt;br /&gt;
*Exercises - andmete kuvamine, lisamine ja kustutamine töötavad, ent muutmine töötab ainult osaliselt: kui muuta harjutuse mõõtühikut, siis veast ei teavitata, aga muudatus andmebaasi ei jõua (Fiddleriga otse teenuse API poole pöördudes lisandus andmebaasi uus kirje)&lt;br /&gt;
*BodyParts - andmete kuvamine, lisamine ja kustutamine töötavad, aga muutmine ei õnnestu (ka Fiddleriga otse teenuse API poole pöördudes). Kui üritada muuta kehaosa alla kuuluvate harjutuste nimekirja, siis tuleb vastuseks Http status 400 (Bad request!)&lt;br /&gt;
*Routines - andmete kuvamine ja lisamine töötavad, muutmine (ReferenceError: bodyPart is not defined) ja kustutamine ei õnnestu (Bad request!)&lt;br /&gt;
 &lt;br /&gt;
Vaadete puhul võib nuriseda selle üle, et iga kontrolleri kohta on tehtud ainult Index vaatefail, mis sisaldab endas nii põhiakna kui ka hüpikakende html-koodi. Need oleks võinud parema arusaadavuse huvides ju lahutada, isegi kui andmete laadimine toimub läbi sama kontrolleri. &lt;br /&gt;
 &lt;br /&gt;
Lähtekoodist ilmneb veel, et iga töötava vaate jaoks on tehtud eraldi moodul oma kontrolleriga, mis registreeritakse vastavas vaates. Keskne moodul failis app.js ei tööta, see on mõeldud tokenipõhise autentimise realiseerimiseks ja eeldab üheleherakendust (ruutimisinfo on ka samas). Kõiki autentimise töölesaamiseks vajalikke mooduleid ei ole samas projekti lisatud (authService, authInterceptorService).&lt;br /&gt;
 &lt;br /&gt;
Praeguse lahenduse üheks puuduseks on veel see, et kõik Http-päringud veebiteenusele tehakse otse Angulari kontrolleritest, puudub vahepealne service-kiht. Selle tagajärjel on päringud ja vaadete loogika koodis läbisegi. Hüpikaknas objektide muutmiseks ei pärita andmeid uuesti teenusest, vaid muudetakse juba varem põhiaknasse laetud andmeid. Lisaks on Angulari raamistiku kõrval kasutatud ka tavalisi jQuery võtteid, mis teeb üldpildi võrdlemisi kirjuks. Mõned funktsioonid ei tööta korrektselt ja nii on üsna keeruline aru saada, kus viga täpselt asub: kontrolleris või teenuse API poolel.&lt;br /&gt;
 &lt;br /&gt;
Kokkuvõttes võib tõdeda, et olemasolevate vaadetega on siiski vaeva nähtud ja suhtlus teenusega tööle saadud, mis selle aine puhul on ilmselt peamine. Mõned funktsionaalsused vajavad veel viimistlemist ja projekti üldine ülesehitus korrastamist. MVC kontrolleritega autentimise tööle saamiseks tuleks lisada eespool mainitud puuduvad teenused, siduda olemasolevad kontrollerid keskse app-mooduliga ning see omakorda jagatud Layout vaatega, millele tuleks ka lisada eraldi kontroller.&lt;br /&gt;
&lt;br /&gt;
JRT esitatud töö asub [https://wiki.itcollege.ee/index.php/JRT#J.C3.B5usaali_infos.C3.BCsteemi_anal.C3.BC.C3.BCs siin].&lt;/div&gt;</summary>
		<author><name>Otiks</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Talk:JRT&amp;diff=123588</id>
		<title>Talk:JRT</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Talk:JRT&amp;diff=123588"/>
		<updated>2017-06-13T20:58:04Z</updated>

		<summary type="html">&lt;p&gt;Otiks: /* Hinnang meeskonna JRT esitatud klientrakendusele */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Hinnang meeskonna JRT esitatud XML-failidele==&lt;br /&gt;
&lt;br /&gt;
Koostaja: [https://wiki.itcollege.ee/index.php/Team_SPOT Team SPOT]&lt;br /&gt;
&lt;br /&gt;
Meeskond JRT on esitanud XML-faili, skeemifaili ja kaks XSLT-faili andmete transformeerimiseks HTML- ja XML-formaati. Transformatsioonid sisaldavad enam kui ühte &#039;&#039;for-each&#039;&#039;-klauslit. HTML-väljundiga transformatsioonis on kasutatud nelja &#039;&#039;for-each&#039;&#039;i ja kolme &#039;&#039;if&#039;&#039;-tingimust. XML-väljundiga transformatsioonis on kasutatud viite &#039;&#039;for-each&#039;&#039;i ja kolme &#039;&#039;if&#039;&#039;-tingimust. XML valideerub ja loogilisi dimensioone on viis. Neljal dimensioonil on kasutatud atribuute, mis on enam kui lihtsalt ID. Töö põhinõuded on täidetud.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Märkused XMLi/XSD kohta:&#039;&#039;&#039;&lt;br /&gt;
* elemendi &amp;lt;user&amp;gt; &#039;&#039;id&#039;&#039;-atribuudi väärtuse unikaalsus ei ole tagatud&lt;br /&gt;
* elemendile &amp;lt;user&amp;gt; saab lisada piiramatul arvul sama alamelementi: &amp;lt;firstName&amp;gt;, &amp;lt;lastName&amp;gt;, &amp;lt;born&amp;gt;, &amp;lt;sex&amp;gt;, …&lt;br /&gt;
* elemendil &amp;lt;user&amp;gt; on kõigi &amp;lt;subscription&amp;gt;-elementide &#039;&#039;type&#039;&#039; määratud kõige ülemisel tasemel &#039;&#039;status&#039;&#039;-atribuudiga, aga see võiks olla &amp;lt;subscription&amp;gt;-tasemel, et võimaldada rohkem paindlikkust&lt;br /&gt;
* atribuuti &#039;&#039;id&#039;&#039; (unikaalset) võiks kasutada ka teiste “liigielementide” puhul, sest:&lt;br /&gt;
**  elemente &amp;lt;subscription&amp;gt; saab sama &#039;&#039;name&#039;&#039;-atribuudiga lisada piiramatul arvul&lt;br /&gt;
**  elemendi &amp;lt;subscription&amp;gt; alla saab lisada piiramatul arvul &amp;lt;price&amp;gt;-elemente samade &#039;&#039;type&#039;&#039;- ja &#039;&#039;currency&#039;&#039;-atribuutide väärtustega&lt;br /&gt;
* elemendi &amp;lt;subscription&amp;gt; &#039;&#039;name&#039;&#039;-atribuudiga võib tekkida probleeme, kui atribuuti pandud nimi sisaldaks erimärke, seega oleks mõistlikum &#039;&#039;name&#039;&#039;-atribuut asendada eraldi alamelemendiga &amp;lt;name&amp;gt;&amp;lt;/name&amp;gt;, kus saaks kasutada CDATAt.&lt;br /&gt;
&lt;br /&gt;
Tööga on nähtud vaeva, XSLTd on koostatud arusaadavalt, kuid XSD ja XML vajaksid täiendamist, et vältida võimalikke ohukohti andmete saatmisel. Vastasel korral võivad ka transformatsioonid ootamatusi toota (vt näidet). Põhiline oleks XSDs ära märkida, kui palju mingit elementi esineda võib ning tagada ka &#039;&#039;id&#039;&#039;-atribuudi unikaalsus. XMLi koostamise puhul tuleks läbi mõelda kas atribuudid on mõistlikult valitud või saaks neid esitada paremini alamelementidena. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Näide:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;background-color: whitesmoke; border: solid thin grey; display: inline-block; padding:10px&amp;quot;&amp;gt;&lt;br /&gt;
Name: Peeter Banaan&amp;lt;br&amp;gt;Member status: gold&amp;lt;br&amp;gt;Workouts and prices: &lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;     Balance: 39.99EUR&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;     Balance: 39.99EUR&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;     Balance: 39.99EUR&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;     Gym: 69.99EUR&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;     Yoga: 39.99EURYoga: 39.99EURYoga: 39.99EUR&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
JRT esitatud töö asub [https://wiki.itcollege.ee/index.php/JRT#XML siin].&lt;br /&gt;
&lt;br /&gt;
==Hinnang meeskonna JRT esitatud veebiteenusele==&lt;br /&gt;
&lt;br /&gt;
Koostaja: [https://wiki.itcollege.ee/index.php/Team_SPOT Team SPOT]&lt;br /&gt;
&lt;br /&gt;
JRT veebiteenus on mõeldud jõusaali külastajale, kes näevad erinevatele kehaosadele mõeldud harjutusi, treeningukavasid ning ja saavad üles märkida oma saavutusi. Projekti realiseerimiseks on kasutatud REST arhitektuuri ja ASP.NET MVC Web API tehnoloogiat. Andmebaas luuakse Entity Frameworki abil. Lahendusele on lisatud Asp.Net Identity (Individual User Accounts) funktsionaalsuse võimalus.&lt;br /&gt;
 &lt;br /&gt;
Teenuse lähtekood on jagatud kihtidesse: BL (äriloogika, andmeobjektid, teenused), DAL (suhtlus andmebaasiga, repositooriumid), Domain (olemid), Web (kontrollerid), eraldi teek on ka liidestele (Interfaces). Samuti on kasutatud sõltuvuste süstimist (Ninject) ning repositooriumide puhul Factory ja UOW mustrit. Web projektis on koos, aga eraldi kaustades, nii teenuse API kontrollerid kui ka veebikliendi MVC kontrollerid ja AngularJS kontrollerid.&lt;br /&gt;
 &lt;br /&gt;
Meeskonna lehel avaldatud veebiteenuse analüüsis endale eesmärgiks seatud kohustuslike funktsionaalsuste hulka kuuluvad: kasutajagrupid, konto loomise võimalus, isiklike andmete ja kavade salvestamise võimalus, treenerite info ja kontaktandmed. Lisavõimalusena sooviti luua ka kasutusstatistika ja -analüüsi tuge ning administraatori liidest.&lt;br /&gt;
 &lt;br /&gt;
Praeguse seisuga esitatud teenuse kohta pole meeskond kommentaare lisanud, mistõttu on keeruline kõigest ülevaadet saada ja tehtut adekvaatselt hinnata. Andmebaasi skeemi juures võiks olla ka tabelite kirjeldused ja olemite omavaheliste seoste selgitused. Esimese hooga on raske skeemi loogikast aru saada. &lt;br /&gt;
 &lt;br /&gt;
Eelnevalt mainitud põhifunktsionaalsused on ühel või teisel kujul ka realiseeritud: teenusest on võimalik kätte saada infot erinevatele kehaosadele mõeldud harjutuste, erinevate treeningühikute, treeningkavade ja päevaplaanide kohta, samuti kasutajate andmeid. Ka uute kasutajate lisamine on võimalik. Täiendavate funktsionaalsuste realiseerimiseni pole jõutud.&lt;br /&gt;
 &lt;br /&gt;
Andmebaasi migratsioone pole projekti selles faasis lisatud. Andmebaasi kustutamise või olemites tehtud muudatuste korral luuakse uus andmebaas, mis populeeritakse DAL kihis asuva DBInitializer klassi Seed() meetodis olevate andmetega.&lt;br /&gt;
 &lt;br /&gt;
Küsimusi tekitab kasutajate haldus. Nimelt on tehtud andmebaasi teenuse kasutajatele eraldi olem AppUser, kuhu saab lisada kasutajaid ilma Asp.Net Identity funktsionaalsust kasutamata. Sealt on ilma autentimiseta võimalik kätte saada kõigi kasutajate isikuandmeid. Paralleelselt on alles jäetud ka UserInt olem, kuhu saab samuti kasutajaid lisada, viimaseid on võimalik autentida läbi Web projektis asuva Account kontrolleri. AppUserit on võimalik siduda UserInt olemiga, aga see ei kajastu meeskonna lehel esitatud andmebaasi skeemis.&lt;br /&gt;
 &lt;br /&gt;
Account mudelid on samas ümber kolitud BL kihis asuvasse DTO-de kausta. Kas see on ikka õige koht? Pigem võiks need ju asuda Web projektis, kus asub vastav kontroller ja kus autentimine ja autoriseerimine tegelikult peaks toimuma. Silma jäi seegi, et nii Asp.Net Identity kui ka mõned teised paketid (näiteks Ninject) on lisatud alamprojektidesse, kus neid vaja ei lähe. &lt;br /&gt;
 &lt;br /&gt;
Asp.Net Identity funktsionaalsust tegelikult siiski kuskil ei kasutatagi. Autentimist pole üheski kontrolleris peale AccountControlleri rakendatud, aga see pole praegu muu teenusega seotud. Kõigile andmetele pääseb takistusteta ligi otse brauserist. Samuti on võimalik näiteks Fiddleri abil andmeid muuta ja kustutada.&lt;br /&gt;
 &lt;br /&gt;
Andmebaasiga suhtlemine käib läbi DAL kihis asuvate repositooriumide, kuid kasutusel on ainult standardsed meetodid: All(), Find() / GetById(), Remove(), Add(), Update(), SaveChanges(). Ühtegi kohandatud viisi andmete kättesaamiseks või muutmiseks pole repositooriumidesse lisatud - need on kõik tühjad. Sama lugu on ka BL Services kihiga. &lt;br /&gt;
 &lt;br /&gt;
Web projekti kontrollerites pole hetkel samuti ühtegi kohandatud IHttpActionResult meetodit realiseeritud. Ka on puudu mõned tavapärased meetodid. Bodyparts ja RoutineWorkouts kontrollerid ei võimalda ID järgi objekti kätte saada. Konkreetse objekti selekteerimine on nende andmete puhul seega jäetud kliendi mureks. &lt;br /&gt;
 &lt;br /&gt;
Nagu juba eelnevalt mainitud, siis ühegi kontrolleri kasutamist pole praegu autentimisega piiratud ja kasutajarolle ei rakendata.&lt;br /&gt;
 &lt;br /&gt;
Service kihis tuleks üle vaadata Edit() meetodid, sest need ei tööta olemite puhul, millel on suubuvaid seoseid teiste olemitega. DTO klassides on tehtud osa atribuute kohustuslikeks, mistõttu on ka seotud olemite loomine ja muutmine läbi teenuse keerulisem kui ehk peaks. Lisaks id-atribuudile tuleb mõnel puhul kaasa anda ka objekti nimi. ProgramDTO puhul puudub aga näiteks id-atribuut sootuks. &lt;br /&gt;
 &lt;br /&gt;
Domeeni kihis on rohkem olemeid, kui praegu teenuses ära kasutatakse, aga kõiki funktsionaalsusi polegi jõutud veel realiseerida. Annotatsioonid on olemas. Vajalikud atribuudid on muudetud kohustuslikuks ning stringide pikkused piiratud. Küll on domeeni tasemel jäetud kohustuslikuks tegemata AppUseri ees- ja perenimi. Need piirangud on lisatud Account mudelites.&lt;br /&gt;
 &lt;br /&gt;
Üldkokkuvõttes võib siiski öelda, et kui autentimine ja autoriseerimine välja jätta, siis on nõutud põhifunktsionaalsused veebiteenuses lahendatud. Lahendus on jagatud kihtidesse ning äriloogika on kontrolleritest välja jäetud. Andmebaasis on olemeid piisavalt ja neid andmeid on võimalik läbi API kätte saada. Projekt on piisavalt keeruline ja selle lõplik realiseerimine nõuab ilmselt rohkem aega ja pühendumist, mida käesoleva aine sisu, mahtu ja ajakava arvesse võttes oleks ülekohtune nõuda.&lt;br /&gt;
&lt;br /&gt;
JRT esitatud töö asub [https://wiki.itcollege.ee/index.php/JRT#J.C3.B5usaali_infos.C3.BCsteemi_anal.C3.BC.C3.BCs siin].&lt;br /&gt;
&lt;br /&gt;
==Hinnang meeskonna JRT esitatud klientrakendusele==&lt;br /&gt;
&lt;br /&gt;
Koostaja: [https://wiki.itcollege.ee/index.php/JRT#J.C3.B5usaali_infos.C3.BCsteemi_anal.C3.BC.C3.BCs Team SPOT]&lt;br /&gt;
&lt;br /&gt;
JRT veebiteenuse vastu töötava klientrakenduse loomisel on kasutatud Angular JS raamistikku koos Asp.Net MVC kontrollerite ja vaadetega (Razor). Angulari osa on eraldatud App kausta. Koodis on kasutatud ka jQueryt. MVC kontrollerid ja vaated on tekitatud scaffoldingiga. Seega pole pidanud eraldi vaeva nägema ruutimisega. Kuna klient on lisatud samasse projekti, kus asuvad ka API kontrollerid, siis pole pidanud kliendi jaoks eraldi salvestama teenuse baasaadressi, mille vastu päringuid tehakse.&lt;br /&gt;
 &lt;br /&gt;
Meeskonna lehel avaldatud teenuse analüüsis on välja toodud kaks liidest, mida soovitakse arendada. Administraatoriliideses peaks administraatoril olema võimalus hallata kõiki andmeid (näiteks lisada ja kustutada: kasutajaid, harjutusi, treenigukavasid jne). Kasutajaliideses peaks tavakasutaja saama sisestada oma keha kohta viimaseid andmeid, panna kirja infot viimase treeningu kohta ning lisada omale kontaktandmeid, valida treeningukavasid ja paigutada need soovitud päevadele.&lt;br /&gt;
 &lt;br /&gt;
Mingisuguseid kommentaare avaldatud klientrakenduse kohta meeskonna lehelt leida ei õnnestunud. Lisaks leidub lähtekoodis lõpuni realiseerimata osasid, mis tegelikult rakenduse tööd ei mõjuta. See tegi retsenseerimise keerulisemaks, aga üldjoontes on kõigest hoolimata võimalik lahenduse tööpõhimõttest aru saada, kui rakendust natuke testida ja lähtekoodi uurida.&lt;br /&gt;
 &lt;br /&gt;
Praeguse seisuga on veebikliendis osaliselt teostatud administraatorile mõeldud funktsionaalsus. Kasutajaid hallata veel ei saa, aga harjutusi ja treeningukavasid on võimalik lisada. Realiseerida on proovitud ka tokenipõhist autentimist, kuid see ei tööta, mis on arusaadav, kuna kasutajahaldus ja autentimine / autoriseerimine on jäänud praeguse seisuga realiseerimata ka teenuse API poolel. Ilmselgelt on näha, et töö jäi pooleli.&lt;br /&gt;
 &lt;br /&gt;
Angulari rakenduse kontrolleritega on veebikliendis tööle pandud neli vaadet: Exercises, Units, BodyParts, Routines. Neile pääseb ligi menüüribale lisatud linkide kaudu. Users vaade on ka olemas, aga ilma Angulari kontrollerita - andmeid ei laeta. Sellele vaatele pääseb ligi, kui lisada brauseri aadressiribal domeeni lõppu “/Users”. Tokenipõhise autentimise jaoks on tehtud ka MainAngular vaade (domeen/MainAngular), kuid see ei toimi.&lt;br /&gt;
 &lt;br /&gt;
Kõik olemasolevad vaated on sama ülesehitusega - kuvatakse nimekirja koos Edit ja Delete nuppudega. Filtreid andmete sorteerimiseks ei ole. Igal vaatel on olemas on ka Add New nupp. Andmete lisamiseks ja muutmiseks avaneb hüpikaken (modal), kuhu laetakse kõik objekti jaoks vajalikud input-väljad - ja seotud olemite puhul valiku tegemiseks ripploetelud. Objektide kustutamisel küsitakse kasutajalt kinnitust. Kõik pakutud funktsionaalsused paraku veel ei tööta. Probleeme on eeskätt teiste olemitega seotud olemite muutmise ja kustutamisega.&lt;br /&gt;
 &lt;br /&gt;
Funktsionaalsused vaadete kaupa:&lt;br /&gt;
*Units  - andmete kuvamine, lisamine, muutmine ja kustutamine töötavad&lt;br /&gt;
*Exercises - andmete kuvamine, lisamine ja kustutamine töötavad, ent muutmine töötab ainult osaliselt: kui muuta harjutuse mõõtühikut, siis veast ei teavitata, aga muudatus andmebaasi ei jõua (Fiddleriga otse teenuse API poole pöördudes lisandus andmebaasi uus kirje)&lt;br /&gt;
*BodyParts - andmete kuvamine, lisamine ja kustutamine töötavad, aga muutmine ei õnnestu (ka Fiddleriga otse teenuse API poole pöördudes). Kui üritada muuta kehaosa alla kuuluvate harjutuste nimekirja, siis tuleb vastuseks Http status 400 (Bad request!)&lt;br /&gt;
*Routines - andmete kuvamine ja lisamine töötavad, muutmine (ReferenceError: bodyPart is not defined) ja kustutamine ei õnnestu (Bad request!)&lt;br /&gt;
 &lt;br /&gt;
Vaadete puhul võib nuriseda selle üle, et iga kontrolleri kohta on tehtud ainult Index vaatefail, mis sisaldab endas nii põhiakna kui ka hüpikakende html-koodi. Need oleks võinud parema arusaadavuse huvides ju lahutada, isegi kui andmete laadimine toimub läbi sama kontrolleri. &lt;br /&gt;
 &lt;br /&gt;
Lähtekoodist ilmneb veel, et iga töötava vaate jaoks on tehtud eraldi moodul oma kontrolleriga, mis registreeritakse vastavas vaates. Keskne moodul failis app.js ei tööta, see on mõeldud tokenipõhise autentimise realiseerimiseks ja eeldab üheleherakendust (ruutimisinfo on ka samas). Kõiki autentimise töölesaamiseks vajalikke mooduleid ei ole samas projekti lisatud (authService, authInterceptorService).&lt;br /&gt;
 &lt;br /&gt;
Praeguse lahenduse üheks puuduseks on veel see, et kõik Http-päringud veebiteenusele tehakse otse Angulari kontrolleritest, puudub vahepealne service-kiht. Selle tagajärjel on päringud ja vaadete loogika koodis läbisegi. Hüpikaknas objektide muutmiseks ei pärita andmeid uuesti teenusest, vaid muudetakse juba varem põhiaknasse laetud andmeid. Lisaks on Angulari raamistiku kõrval kasutatud ka tavalisi jQuery võtteid, mis teeb üldpildi võrdlemisi kirjuks. Mõned funktsioonid ei tööta korrektselt ja nii on üsna keeruline aru saada, kus viga täpselt asub: kontrolleris või teenuse API poolel.&lt;br /&gt;
 &lt;br /&gt;
Kokkuvõttes võib tõdeda, et olemasolevate vaadetega on siiski vaeva nähtud ja suhtlus teenusega tööle saadud, mis selle aine puhul on ilmselt peamine. Mõned funktsionaalsused vajavad veel viimistlemist ja projekti üldine ülesehitus korrastamist. MVC kontrolleritega autentimise tööle saamiseks tuleks lisada eespool mainitud puuduvad teenused, siduda olemasolevad kontrollerid keskse app-mooduliga ning see omakorda jagatud Layout vaatega, millele tuleks ka lisada eraldi kontroller.&lt;br /&gt;
&lt;br /&gt;
JRT esitatud töö asub [https://wiki.itcollege.ee/index.php/JRT#J.C3.B5usaali_infos.C3.BCsteemi_anal.C3.BC.C3.BCs siin].&lt;/div&gt;</summary>
		<author><name>Otiks</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Team_SPOT&amp;diff=123587</id>
		<title>Team SPOT</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Team_SPOT&amp;diff=123587"/>
		<updated>2017-06-13T20:54:50Z</updated>

		<summary type="html">&lt;p&gt;Otiks: /* Log */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://wiki.itcollege.ee/index.php/Kodut%C3%B6%C3%B6_aines_%22V%C3%B5rgurakendused_II:_hajuss%C3%BCsteemide_ehitamine%22_2017 Kodutöö aines &amp;quot;Võrgurakendused II: hajussüsteemide ehitamine&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
[https://projectspot.visualstudio.com/PROJECTSPOT Projekti repositoorium (avaneb ainult liikmetele)]&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==Liikmed==&lt;br /&gt;
*Sigrid Pachel&lt;br /&gt;
*Oliver Tiks&lt;br /&gt;
&lt;br /&gt;
==Idee==&lt;br /&gt;
Mõttes on luua spordiklubi(de) veebiteenus ja klientrakendus, mis võimaldaks saada infot pakutavate treeningute kohta, sisestada ja kuvada tunniplaani andmeid, registreerida osalejaid tundidesse ning teha muid asjakohaseid tegevusi nii klubi(de) personalil, liikmetel kui ka juhukasutajatel.&lt;br /&gt;
&lt;br /&gt;
==Veebiteenuse analüüs==&lt;br /&gt;
SPOTi veebiteenus võimaldab saada infot erinevate klubide treeningute kohta ja end neisse registreerida. Kasutaja saab teavet, kus ja millal treeningud toimuvad (tunniplaan), mida treeningus täpsemalt tehakse, mis stiiliga on tegemist, kes on treener, kui palju üks kord maksab jms info. Kasutajakontoga liikmel on võimalik end registreerida soovitud tundi ja hallata oma registreeringuid (muuta, tühistada).&lt;br /&gt;
&lt;br /&gt;
Spordiklubide infot haldavad süsteemi administraatorid, kes saavad lisada, muuta ja kustutada kõike sprodiklubiga seonduvat. Erinevaid treeninguid ja nendega seotud konkreetset infot saavad lisada ja hallata treenerid või spordiklubi esindajad.&lt;br /&gt;
&lt;br /&gt;
Projekti realiseerimiseks kasutame REST arhitektuuri ja ASP.NET MVC Web API tehnoloogiat.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Üldine plaan:&#039;&#039;&#039;&lt;br /&gt;
* esialgu üks kett (laienemise võimalusega)&lt;br /&gt;
* mitu klubi (asukoht, saalid-treeningualad, võimalikud lisatingimused)&lt;br /&gt;
* treeningute info (stiilid ehk kontseptid, litsentsid, …)&lt;br /&gt;
* tunniplaan (aeg, koht, instruktorid, max osalejate arv, ühe korra hind)&lt;br /&gt;
* registratuur (treeningutest osavõtjad)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kasutajad (rollid):&#039;&#039;&#039;&lt;br /&gt;
* administraatorid (saavad teha muudatusi)&lt;br /&gt;
* treenerid (info kvalifikatsiooni, litsentside kohta, õigus treeninguid lisada) &lt;br /&gt;
* liikmed (saavad treeningutele registreeruda)&lt;br /&gt;
* ülejäänud (näevad klubide ja treeningute infot ning tunniplaani)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Peaks olema:&#039;&#039;&#039;&lt;br /&gt;
* kasutajate loomine&lt;br /&gt;
* kasutajate tuvastamine ja haldamine&lt;br /&gt;
* kasutajate ja kasutusstatistika logimine&lt;br /&gt;
* teenuse poole pöördumiste arvu piiramine ja piirangute haldamine&lt;br /&gt;
* klubide, treenerite ja treeningute info väljastamine&lt;br /&gt;
* tunniplaani info väljastamine&lt;br /&gt;
* treeningutesse registreerimine&lt;br /&gt;
* registreeringu tühistamine&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Võiks olla:&#039;&#039;&#039;&lt;br /&gt;
* klubide, treenerite, treeningute lisamine ja muutmine&lt;br /&gt;
* tunniplaanis treeningute tühistamine&lt;br /&gt;
* sisestatud andmete kustutamine (pehmelt)&lt;br /&gt;
* rollide-õiguste määramine (admin)&lt;br /&gt;
* asukohad mitmes riigis&lt;br /&gt;
* kliendipaketid, arveldus&lt;br /&gt;
* kontaktide tsentraliseeritud haldus&lt;br /&gt;
* sisselogimine läbi Google’i, Facebooki vmt teenuse&lt;br /&gt;
&lt;br /&gt;
===Andmebaasi skeem (lihtsustatud)===&lt;br /&gt;
&lt;br /&gt;
[[File:SPOTService ERD.JPG|border|SPOT Service ERD]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Märkus: olemite atribuutidest on välja toodud ainult peamised.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====Tabelite kirjeldused====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kasutajahaldus*:&#039;&#039;&#039;&lt;br /&gt;
* User - kasutajate andmed&lt;br /&gt;
* Role - rollid, millega määratakse kasutajate õigused (&amp;quot;Admin&amp;quot;, &amp;quot;Trainer&amp;quot;, ...)&lt;br /&gt;
* UserRole - kasutajate sidumine rolli(de)ga&lt;br /&gt;
* UserLogin - muu teenuse kaudu sisselogimiseks&lt;br /&gt;
* UserClaim - muu teenuse kaudu sisselogimiseks&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;&#039;&#039;Kasutajahalduse süsteem toetub Asp.Net Identity valmislahendusele, mida on täiendanud A. Käver.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Klubid:&#039;&#039;&#039;&lt;br /&gt;
* Chain (optional) - spordiklubikettide info&lt;br /&gt;
* Location - spordiklubi/-rajatise asukoht linna/asula täpsusega&lt;br /&gt;
* Facility - spordiklubi/-rajatise andmed, seotud asukohaga ja vajadusel ketiga.&lt;br /&gt;
* Venue - spordiklubis/-rajatises kasutatavad saalid ja muud treeningualad&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Treeningud:&#039;&#039;&#039;&lt;br /&gt;
* Concept (Style) - treeningustiilid ehk kontseptid&lt;br /&gt;
* Licenser (optional) - treeninguliikide litsentsid (kui on)&lt;br /&gt;
* Training - treeninguliikide andmed, seotud stiili ja vajadusel litsentsiga&lt;br /&gt;
* Trainer (User (role: Trainer) + Training) - treeninguliikide sidumine treeneritega&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tunniplaan:&#039;&#039;&#039;&lt;br /&gt;
* ScheduleItem - treeningud tunniplaanis&lt;br /&gt;
* Instructor (User (role: Trainer) + ScheduleItem) - tundide juhendajad (võib olla mitu)&lt;br /&gt;
* Registration (ScheduleItem + User (role: any)) - tundidesse tehtud registreeringud&lt;br /&gt;
&lt;br /&gt;
== XML / XSD / XSLT==&lt;br /&gt;
Projekti esimeses etapis sai loodud XML andmefail, mille ülesehitus on paika pandud XSD skeemifailis. Lisaks on olemas kaks stiilifaili: esimene neist transformeerib andmed HTML-kujule, et kuvada infot  veebilehel, teine tekitab samade andmete esitamiseks uue struktuuriga XML faili.&lt;br /&gt;
&lt;br /&gt;
[https://drive.google.com/open?id=0B84njRSbVLUtd0U4aEJXOUhOTG8 Lae failid alla.] &lt;br /&gt;
&lt;br /&gt;
=== XML ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Fail sisaldab andmeid ühes spordiklubis pakutavate treeningute kohta. Andmed on esitatud treeninguliikide kaupa, mille juurde on lisatud ka vastava treeninguliigi tunniplaan. Treeninguliikidel on nimi ja kirjeldus ning vajadusel ära märgitud ka litsents. Failis on eraldi välja toodud treeningustiilid, instruktorid ja ruumid, kus treeningud toimuvad. Iga treeninguliik kuulub ühe või mitme stiili alla. Instruktoritel on tagasiside põhjal saadud hinne. Treeninguruumidel on vaikimisi määratud mahutavus. Tunniplaanis on ära toodud treeningu koht, algusaeg ja kestus ning instruktorid. Vajadusel saab eraldi määrata ka treeningurühma suuruse, kui see erineb tavalisest ruumi mahutavusest. Ka on võimalik treeningutunnile lisada kommentaar. Erinevate elementide andmed on omavahel seotud id-atribuutidega.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;?xml-stylesheet type=&amp;quot;text/xsl&amp;quot; href=&amp;quot;trainingsToHtml.xslt&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Trainings&amp;gt;&lt;br /&gt;
  &amp;lt;Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;![CDATA[Cardio]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
  &amp;lt;/Styles&amp;gt;&lt;br /&gt;
  &amp;lt;Instructors&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;1&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Yogafier]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;2&amp;quot; Rating=&amp;quot;4.7&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Mickey Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;3&amp;quot; Rating=&amp;quot;4.6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;4&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Donald Duck]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;5&amp;quot; Rating=&amp;quot;3.9&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Goofy]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;6&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Schwarzenegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;8&amp;quot; Rating=&amp;quot;4.8&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Kayla Weightlifter]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;9&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Margaret Strengthener]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
  &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;Venues&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;1&amp;quot; GroupSize=&amp;quot;45&amp;quot;&amp;gt;&amp;lt;![CDATA[Main Hall]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 2]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;3&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 3]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;4&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 4]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;5&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 5]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&amp;lt;![CDATA[Area 6]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;7&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&amp;lt;![CDATA[Yoga Hall]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
  &amp;lt;/Venues&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Yoga]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[Yoga is a group of physical, mental, and spiritual practices or disciplines which originated in ancient India. ]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;1&amp;quot; VenueId=&amp;quot;7&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-25T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;14&amp;quot; VenueId=&amp;quot;7&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT1H20M&amp;quot;&amp;gt;2017-03-28T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Comment&amp;gt;&lt;br /&gt;
          &amp;lt;![CDATA[Special class!]]&amp;gt;&lt;br /&gt;
        &amp;lt;/Comment&amp;gt; &lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/Nvlxn0EnmbM&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;  &lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;2&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyBalance™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[BODYBALANCE™ is the Yoga, Tai Chi, Pilates workout that builds flexibility and strength and leaves you feeling centered and calm. Based on a carefully structured series of stretches, moves and poses to music it creates a holistic workout that brings the body into a state of harmony and balance. This class will heighten your flexibility and inner strength creating a strong supple body from the inside out. Burn on average 390cals per hour.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;2&amp;quot; VenueId=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-31T12:15:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;3&amp;quot; VenueId=&amp;quot;2&amp;quot; &amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-30T13:30:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;3&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/jJxA6vBjUqY&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;3&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyJam™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;4&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[The Body Jam program is an addictive fusion of the latest dance styles to the hottest new sounds. This class isn’t just for dancers, it’s for everyone because the emphasis is put on not only having fun but also breaking a sweat. So grab a friend, get front and centre … you bring the attitude and we’ll bring the moves!]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;4&amp;quot;  VenueId=&amp;quot;3&amp;quot; &amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T16:10:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;4&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;5&amp;quot; VenueId=&amp;quot;5&amp;quot; &amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT45M&amp;quot;&amp;gt;2017-04-01T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;5&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/8PTXyg9si_4&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;4&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyPump™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[BodyPump classes are 59 minutes long and contain eight separate muscle-group specific songs or &amp;quot;tracks&amp;quot; along with an opening warm up track and closing cool-down track. There are also 45-minute and 30-minute class formats. The classes are performed to music using free weights-plates, barbells and an aerobic step. Participants choose their weights based on the exercise and their personal goals. Major muscle groups are worked via series of compound and isolation-based exercises including squats, presses, dead lifts. The focus is towards muscle endurance by moving light weights at high repetitions, what Les Mills calls the Rep Effect.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;3&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;6&amp;quot; VenueId=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;6&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;7&amp;quot; VenueId=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-23T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;6&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/zU_0XrdO3wo&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[CoreStrenght is a very hard workout! Not for beginners.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;3&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;8&amp;quot; VenueId=&amp;quot;6&amp;quot; GroupSize=&amp;quot;10&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT2H&amp;quot;&amp;gt;2017-03-23T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;9&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Comment&amp;gt;&lt;br /&gt;
          &amp;lt;![CDATA[Special challenge!]]&amp;gt;&lt;br /&gt;
        &amp;lt;/Comment&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;9&amp;quot; VenueId=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;8&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;10&amp;quot; VenueId=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-04-05T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;8&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;9&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/ZxTVmpvyUt8&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[Zumba involves dance and aerobic movements performed to energetic music. The choreography incorporates hip-hop, soca, samba, salsa, merengue and mambo. Squats and lunges are also included.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;4&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;11&amp;quot; VenueId=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT55M&amp;quot;&amp;gt;2017-03-26T15:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;12&amp;quot; VenueId=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-28T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;13&amp;quot; VenueId=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/-ZB6XIkfxnQ&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
&amp;lt;/Trainings&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSD ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Skeemifail kontrollib eelnevas andmefailis esitatud andmete vastavust kokkulepitud formaadile, samuti õigete andmetüüpide kasutamist. Alamelemendi id-atribuudi väärtus peab olema iga elemendirühma lõikes unikaalne. Kohustuslike elementide ja atribuutide kõrval on ka mõned (nt kommentaar), mille olemasolu pole alati tarvilik. Teatud puhkudel on piiratud maksimaalset elementide arvu (nt treeningutunni algusaeg). Faili üldine struktuur on kindel, aga alati pole alamelementide järjekord oluline (nt treeninguliigi puhul).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xs:schema attributeFormDefault=&amp;quot;unqualified&amp;quot; elementFormDefault=&amp;quot;qualified&amp;quot; xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xs:element name=&amp;quot;Trainings&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Styles&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Style&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
          &amp;lt;xs:unique name=&amp;quot;UniqueStyleId&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xs:selector xpath=&amp;quot;Style&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Instructors&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;Name&amp;quot; type=&amp;quot;xs:string&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:attribute name=&amp;quot;Rating&amp;quot; type=&amp;quot;xs:decimal&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
          &amp;lt;xs:unique name=&amp;quot;UniqueInstructorId&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xs:selector xpath=&amp;quot;Instructor&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Venues&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Venue&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:attribute name=&amp;quot;GroupSize&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
          &amp;lt;xs:unique name=&amp;quot;UniqueVenueId&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xs:selector xpath=&amp;quot;Venue&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Training&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:all&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Description&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Styles&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Style&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Schedule&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;ScheduleItem&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:all&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element  maxOccurs=&amp;quot;1&amp;quot; name=&amp;quot;Time&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:extension base=&amp;quot;xs:dateTime&amp;quot;&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:attribute name=&amp;quot;Duration&amp;quot; type=&amp;quot;xs:duration&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element name=&amp;quot;Instructors&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                    &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                                      &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                                        &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                                      &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                                    &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                                  &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; name=&amp;quot;Comment&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:all&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;VenueId&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;GroupSize&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;optional&amp;quot; /&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;VideoUrl&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:all&amp;gt;&lt;br /&gt;
            &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xs:attribute name=&amp;quot;Licence&amp;quot; type=&amp;quot;xs:string&amp;quot; use=&amp;quot;optional&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
    &amp;lt;xs:unique name=&amp;quot;UniqueTrainingId&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xs:selector xpath=&amp;quot;Training&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
    &amp;lt;xs:unique name=&amp;quot;UniqueScheduleItemId&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xs:selector xpath=&amp;quot;Training/Schedule/ScheduleItem&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSLT (html) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Selles transformatsioonifailis on kirjeldatud XML failis olevate andmete [http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/trainings.xml  kuvamise viis veebilehel]. Treeninguliigid on jaotatud stiiliblokkidesse (mõni treening kuulub mitme stiili alla). Iga treeninguliigi all on tabeli kujul esitatud tunniplaan ning lisatud näidisvideo ja kirjeldus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot; xmlns:msxsl=&amp;quot;urn:schemas-microsoft-com:xslt&amp;quot; exclude-result-prefixes=&amp;quot;msxsl&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:output method=&amp;quot;html&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;html&amp;gt;&lt;br /&gt;
      &amp;lt;head&amp;gt;&lt;br /&gt;
        &amp;lt;title&amp;gt;SuperSportsClub - Trainings&amp;lt;/title&amp;gt;&lt;br /&gt;
        &amp;lt;style&amp;gt;&lt;br /&gt;
          body {&lt;br /&gt;
          background:BurlyWood;&lt;br /&gt;
          text-align: center;&lt;br /&gt;
          }&lt;br /&gt;
          .section {&lt;br /&gt;
          text-align:left;&lt;br /&gt;
          width:1000px;&lt;br /&gt;
          padding:20px;&lt;br /&gt;
          background:Chocolate;&lt;br /&gt;
          margin: auto;&lt;br /&gt;
          }&lt;br /&gt;
          table, th, td, .section {&lt;br /&gt;
          border: 1px solid black;&lt;br /&gt;
          }&lt;br /&gt;
          th {&lt;br /&gt;
          text-align:left;&lt;br /&gt;
          padding-left: 10px;&lt;br /&gt;
          padding-right: 10px;&lt;br /&gt;
          }&lt;br /&gt;
          td {&lt;br /&gt;
          text-align:center;&lt;br /&gt;
          }&lt;br /&gt;
          p {&lt;br /&gt;
          text-align:justify;&lt;br /&gt;
          }&lt;br /&gt;
          .description {&lt;br /&gt;
          vertical-align:top; &lt;br /&gt;
          padding:10px;&lt;br /&gt;
          }&lt;br /&gt;
        &amp;lt;/style&amp;gt;&lt;br /&gt;
      &amp;lt;/head&amp;gt;&lt;br /&gt;
      &amp;lt;body&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;Trainings at SuperSportsClub&amp;lt;/h1&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;/Trainings/Styles/Style&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:sort select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:variable select=&amp;quot;.&amp;quot; name=&amp;quot;SelectedStyle&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;section&amp;quot; &amp;gt;&lt;br /&gt;
            &amp;lt;h2&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select=&amp;quot;$SelectedStyle&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/h2&amp;gt;&lt;br /&gt;
            &amp;lt;ul&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:for-each select=&amp;quot;/Trainings/Training&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:sort select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:variable name=&amp;quot;Training&amp;quot; select=&amp;quot;.&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:if test=&amp;quot;Styles/Style/@Id = $SelectedStyle/@Id&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;&lt;br /&gt;
                    &amp;lt;h3&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;$Training/Name&amp;quot; /&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:if test=&amp;quot;$Training/@Licence&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:text&amp;gt; (&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:value-of select=&amp;quot;$Training/@Licence&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:text&amp;gt;)&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
                    &amp;lt;/h3&amp;gt;&lt;br /&gt;
                    &amp;lt;table&amp;gt;&lt;br /&gt;
                      &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                      &amp;lt;/tr&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:for-each select=&amp;quot;$Training/Schedule/ScheduleItem&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:sort select=&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:variable name=&amp;quot;StartTime&amp;quot; select=&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:variable name=&amp;quot;Duration&amp;quot; select=&amp;quot;$StartTime/@Duration&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;tr&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;150&amp;quot; &amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;concat(&lt;br /&gt;
                                            substring($StartTime, 9, 2), &lt;br /&gt;
                                            &#039;.&#039;, &lt;br /&gt;
                                            substring($StartTime, 6, 2), &lt;br /&gt;
                                            &#039;.&#039;, &lt;br /&gt;
                                            substring($StartTime, 1, 4),&lt;br /&gt;
                                            &#039; &#039;,&lt;br /&gt;
                                            substring($StartTime, 12, 2),&lt;br /&gt;
                                            &#039;:&#039;,&lt;br /&gt;
                                            substring($StartTime, 15, 2))&lt;br /&gt;
                                            &amp;quot; /&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:if test=&amp;quot;Comment&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;br/&amp;gt;&lt;br /&gt;
                              &amp;lt;div style=&amp;quot;color:Green&amp;quot;&amp;gt;&lt;br /&gt;
                                &amp;lt;xsl:value-of select=&amp;quot;Comment&amp;quot;/&amp;gt;&lt;br /&gt;
                              &amp;lt;/div&amp;gt;&lt;br /&gt;
                            &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;substring($Duration, 3, 6)&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:variable name=&amp;quot;VenueId&amp;quot; select=&amp;quot;@VenueId&amp;quot;/&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;/Trainings/Venues/Venue[@Id=$VenueId]&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:for-each select=&amp;quot;Instructors/Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:variable name=&amp;quot;InstructorId&amp;quot; select=&amp;quot;@Id&amp;quot;&amp;gt;&amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:variable name=&amp;quot;SelectedInstructor&amp;quot; select=&amp;quot;/Trainings/Instructors/Instructor[@Id=$InstructorId]&amp;quot; /&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/Name&amp;quot;/&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:text&amp;gt; (&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/@Rating&amp;quot; /&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:text&amp;gt;)&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                              &amp;lt;br/&amp;gt;&lt;br /&gt;
                            &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;/tr&amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
                    &amp;lt;/table&amp;gt;&lt;br /&gt;
                    &amp;lt;br/&amp;gt;&lt;br /&gt;
                    &amp;lt;table&amp;gt;&lt;br /&gt;
                      &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                          &amp;lt;xsl:variable name=&amp;quot;VideoUrl&amp;quot; select=&amp;quot;$Training/VideoUrl&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;{$VideoUrl}&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                          &amp;lt;p&amp;gt;&lt;br /&gt;
                            &amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&lt;br /&gt;
                          &amp;lt;/p&amp;gt;&lt;br /&gt;
                          &amp;lt;p&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;$Training/Description&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                      &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;/table&amp;gt;&lt;br /&gt;
                  &amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
            &amp;lt;/ul&amp;gt;&lt;br /&gt;
          &amp;lt;/div&amp;gt;&lt;br /&gt;
          &amp;lt;br/&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
      &amp;lt;/body&amp;gt;&lt;br /&gt;
    &amp;lt;/html&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== HTML (transformeeritud) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/trainings.html Vaata eelneva transformatsiooni tulemust.]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;META http-equiv=&amp;quot;Content-Type&amp;quot; content=&amp;quot;text/html; charset=utf-8&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;SuperSportsClub - Trainings&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;style&amp;gt;&lt;br /&gt;
        body {&lt;br /&gt;
            background: BurlyWood;&lt;br /&gt;
            text-align: center;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        .section {&lt;br /&gt;
            text-align: left;&lt;br /&gt;
            width: 1000px;&lt;br /&gt;
            padding: 20px;&lt;br /&gt;
            background: Chocolate;&lt;br /&gt;
            margin: auto;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        table, th, td, .section {&lt;br /&gt;
            border: 1px solid black;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        th {&lt;br /&gt;
            text-align: left;&lt;br /&gt;
            padding-left: 10px;&lt;br /&gt;
            padding-right: 10px;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        td {&lt;br /&gt;
            text-align: center;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        p {&lt;br /&gt;
            text-align: justify;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        .description {&lt;br /&gt;
            vertical-align: top;&lt;br /&gt;
            padding: 10px;&lt;br /&gt;
        }&lt;br /&gt;
    &amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
    &amp;lt;h1&amp;gt;Trainings at SuperSportsClub&amp;lt;/h1&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Body&amp;amp;amp;Mind&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyBalance™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 13:30&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;1H15M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 2&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Minnie Mouse (4.6)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;31.03.2017 12:15&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;1H15M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 3&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Mickey Mouse (4.7)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/jJxA6vBjUqY&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                BODYBALANCE™ is the Yoga, Tai Chi, Pilates workout that builds flexibility and strength and leaves you feeling centered and calm. Based on a carefully structured series of stretches, moves and poses to music it creates a holistic workout that brings the body into a state of harmony and balance. This class will heighten your flexibility and inner strength creating a strong supple body from the inside out. Burn on average 390cals per hour.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;Yoga&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;25.03.2017 14:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Yoga Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Minnie Yogafier (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
                            28.03.2017 14:00&amp;lt;br&amp;gt;&amp;lt;div style=&amp;quot;color:Green&amp;quot;&amp;gt;&lt;br /&gt;
                                Special class!&lt;br /&gt;
                            &amp;lt;/div&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;1H20M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Yoga Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Minnie Yogafier (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/Nvlxn0EnmbM&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                Yoga is a group of physical, mental, and spiritual practices or disciplines which originated in ancient India.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Cardio&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyJam™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 16:10&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 3&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Donald Duck (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;01.04.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;45M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 5&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Goofy (3.9)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/8PTXyg9si_4&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                The Body Jam program is an addictive fusion of the latest dance styles to the hottest new sounds. This class isn’t just for dancers, it’s for everyone because the emphasis is put on not only having fun but also breaking a sweat. So grab a friend, get front and centre … you bring the attitude and we’ll bring the moves!&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Dance&amp;amp;amp;Fun&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyJam™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 16:10&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 3&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Donald Duck (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;01.04.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;45M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 5&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Goofy (3.9)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/8PTXyg9si_4&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                The Body Jam program is an addictive fusion of the latest dance styles to the hottest new sounds. This class isn’t just for dancers, it’s for everyone because the emphasis is put on not only having fun but also breaking a sweat. So grab a friend, get front and centre … you bring the attitude and we’ll bring the moves!&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;Zumba®&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;26.03.2017 15:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;55M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 2&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Zumbaschnegger (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;28.03.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 4&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Zumbaschnegger (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 2&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Zumbaschnegger (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/-ZB6XIkfxnQ&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                Zumba involves dance and aerobic movements performed to energetic music. The choreography incorporates hip-hop, soca, samba, salsa, merengue and mambo. Squats and lunges are also included.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Strength&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyPump™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;23.03.2017 13:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Main Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Schwarzenegger (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 13:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Main Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Schwarzenegger (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/zU_0XrdO3wo&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                BodyPump classes are 59 minutes long and contain eight separate muscle-group specific songs or &amp;quot;tracks&amp;quot; along with an opening warm up track and closing cool-down track. There are also 45-minute and 30-minute class formats. The classes are performed to music using free weights-plates, barbells and an aerobic step. Participants choose their weights based on the exercise and their personal goals. Major muscle groups are worked via series of compound and isolation-based exercises including squats, presses, dead lifts. The focus is towards muscle endurance by moving light weights at high repetitions, what Les Mills calls the Rep Effect.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;CoreStrength&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
                            23.03.2017 12:00&amp;lt;br&amp;gt;&amp;lt;div style=&amp;quot;color:Green&amp;quot;&amp;gt;&lt;br /&gt;
                                Special challenge!&lt;br /&gt;
                            &amp;lt;/div&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;2H&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Area 6&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Margaret Strengthener (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Area 6&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Kayla Weightlifter (4.8)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;05.04.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Area 6&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Kayla Weightlifter (4.8)&amp;lt;br&amp;gt;Margaret Strengthener (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/ZxTVmpvyUt8&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                CoreStrenght is a very hard workout! Not for beginners.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSLT (xml) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Selle transformatsiooniga luuakse uus [http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/schedule.xml XML fail], milles on treeningute andmed esitatud ühtse tunniplaani kujul. Algses failis erinevate elementide alla paigutatud andmed on nüüd tunniplaani alamelemendis kokku viidud. Sidumine on teostatud id-atribuutide abil. Tunniplaanis on ühes kohas kirjas treeningu nimi, stiil(id), koht, algusaeg, kestus, rühma suurus, instruktorid ja muu täiendav info.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&lt;br /&gt;
    xmlns:msxsl=&amp;quot;urn:schemas-microsoft-com:xslt&amp;quot; exclude-result-prefixes=&amp;quot;msxsl&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:output method=&amp;quot;xml&amp;quot; indent=&amp;quot;yes&amp;quot; cdata-section-elements=&amp;quot;Name Style Comment&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;/Trainings/Training&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:sort select=&amp;quot;Name&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:variable name=&amp;quot;SelectedTraining&amp;quot; select=&amp;quot;.&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;Schedule/ScheduleItem&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:sort select=&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;ScheduleItem&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:variable name=&amp;quot;VenueId&amp;quot; select=&amp;quot;@VenueId&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:variable name=&amp;quot;SelectedVenue&amp;quot; select=&amp;quot;/Trainings/Venues/Venue[@Id=$VenueId]&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:attribute name=&amp;quot;GroupSize&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;@GroupSize&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:value-of select=&amp;quot;@GroupSize&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:value-of select=&amp;quot;$SelectedVenue/@GroupSize&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
            &amp;lt;Venue&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$VenueId&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select=&amp;quot;$SelectedVenue&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/Venue&amp;gt;&lt;br /&gt;
            &amp;lt;Training&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$SelectedTraining/@Id&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:if test=&amp;quot;$SelectedTraining/@Licence&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:attribute name=&amp;quot;Licence&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:value-of select=&amp;quot;$SelectedTraining/@Licence&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
              &amp;lt;Name&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$SelectedTraining/Name&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/Name&amp;gt;&lt;br /&gt;
              &amp;lt;Styles&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:for-each select=&amp;quot;$SelectedTraining/Styles/Style&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:variable name=&amp;quot;StyleId&amp;quot; select=&amp;quot;@Id&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;Style&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:attribute name=&amp;quot;StyleId&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;$StyleId&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;/Trainings/Styles/Style[@Id=$StyleId]&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/Style&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
              &amp;lt;/Styles&amp;gt;&lt;br /&gt;
            &amp;lt;/Training&amp;gt;&lt;br /&gt;
            &amp;lt;Time&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:attribute name=&amp;quot;Duration&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;Time/@Duration&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select =&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/Time&amp;gt;&lt;br /&gt;
            &amp;lt;Instructors&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:for-each select=&amp;quot;Instructors/Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:variable name=&amp;quot;InstructorId&amp;quot; select=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:variable name=&amp;quot;SelectedInstructor&amp;quot; select=&amp;quot;/Trainings/Instructors/Instructor[@Id=$InstructorId]&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;Instructor&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;$InstructorId&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:attribute name=&amp;quot;Rating&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/@Rating&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                  &amp;lt;Name&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/Name&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/Name&amp;gt;&lt;br /&gt;
                &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
            &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:if test=&amp;quot;Comment&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;Comment&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;Comment&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/Comment&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
          &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XML (transformeeritud) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/schedule.xml Vaata eelneva transformatsiooni tulemust.]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Schedule&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;3&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot;&amp;gt;Hall 2&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;2&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyBalance™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-30T13:30:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;3&amp;quot; Rating=&amp;quot;4.6&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;2&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;3&amp;quot;&amp;gt;Hall 3&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;2&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyBalance™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-31T12:15:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;2&amp;quot; Rating=&amp;quot;4.7&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Mickey Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;4&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;3&amp;quot;&amp;gt;Hall 3&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;3&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyJam™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;![CDATA[Cardio]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T16:10:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;4&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Donald Duck]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;5&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;5&amp;quot;&amp;gt;Hall 5&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;3&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyJam™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;![CDATA[Cardio]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT45M&amp;quot;&amp;gt;2017-04-01T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;5&amp;quot; Rating=&amp;quot;3.9&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Goofy]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;7&amp;quot; GroupSize=&amp;quot;45&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;1&amp;quot;&amp;gt;Main Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;4&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyPump™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-23T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;6&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Schwarzenegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;6&amp;quot; GroupSize=&amp;quot;45&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;1&amp;quot;&amp;gt;Main Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;4&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyPump™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;6&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Schwarzenegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;8&amp;quot; GroupSize=&amp;quot;10&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot;&amp;gt;Area 6&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT2H&amp;quot;&amp;gt;2017-03-23T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;9&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Margaret Strengthener]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
    &amp;lt;Comment&amp;gt;&amp;lt;![CDATA[&lt;br /&gt;
          Special challenge!&lt;br /&gt;
        ]]&amp;gt;&amp;lt;/Comment&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;9&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot;&amp;gt;Area 6&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;8&amp;quot; Rating=&amp;quot;4.8&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Kayla Weightlifter]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;10&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot;&amp;gt;Area 6&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-04-05T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;8&amp;quot; Rating=&amp;quot;4.8&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Kayla Weightlifter]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;9&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Margaret Strengthener]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;11&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot;&amp;gt;Hall 2&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT55M&amp;quot;&amp;gt;2017-03-26T15:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;12&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;4&amp;quot;&amp;gt;Hall 4&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-28T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;13&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot;&amp;gt;Hall 2&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;1&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;7&amp;quot;&amp;gt;Yoga Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Yoga]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-25T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;1&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Yogafier]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;14&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;7&amp;quot;&amp;gt;Yoga Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Yoga]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT1H20M&amp;quot;&amp;gt;2017-03-28T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;1&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Yogafier]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
    &amp;lt;Comment&amp;gt;&amp;lt;![CDATA[&lt;br /&gt;
          Special class!&lt;br /&gt;
        ]]&amp;gt;&amp;lt;/Comment&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
&amp;lt;/Schedule&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus ==&lt;br /&gt;
Angular JS &#039;&#039;single page application&#039;&#039; eelnevalt kirjeldatud veebiteenusele. Sisse logimata saab kuvada spordiklubi tunniplaani nädalate kaupa, treeninguliike stiilide kaupa ja treenereid. Võimalik on liituda teenusega ja registreeruda treeningutele, samuti registreeringuid tühistada nii otse tunniplaanist kui ka registreeringute lehel. Esialgu põhineb süsteem ühel spordiklubil. Kasutamise eelduseks on tunniplaani olemasolu andmebaasis.&lt;br /&gt;
&lt;br /&gt;
Autentimine on lahendatud tokenipõhiselt. Eeskuju ja põhjana kasutasime näidisrakendust, mille juhend ja lähtekood on leitav [http://bitoftech.net/2014/06/09/angularjs-token-authentication-using-asp-net-web-api-2-owin-asp-net-identity/ siit].&lt;br /&gt;
&lt;br /&gt;
== Lähtekood ==&lt;br /&gt;
Eksamiks valminud veebiteenuse ja klientrakenduse kokkupakitult allalaadimiseks klõpsa [https://drive.google.com/open?id=0B84njRSbVLUtTWx5ZkZsdDBJZDQ sellel lingil]. WebApi ja Angular JS klient on eraldi lahendustes. Kliendi testimiseks brauseris (Chrome, Firefox vm) tuleb eelnevalt käivitada ka veebiteenus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;NB! Võib juhtuda, et WebApi esmakordsel käivitamisel loodavasse andmebaasi kõiki andmeid (tunniplaani ja registreerimisi jooksvasse nädalasse) ei lisandu. Sellisel juhul kustuta tekkinud andmebaas ja käivita kõigepealt samas lahenduses olev konsoolirakendus.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Retsensioonid ==&lt;br /&gt;
&lt;br /&gt;
# [https://wiki.itcollege.ee/index.php/Talk:JRT#Hinnang_meeskonna_JRT_esitatud_XML-failidele JRT meeskonna XML/XSD/XSLT retsensioon ]&lt;br /&gt;
# [https://wiki.itcollege.ee/index.php/Talk:JRT#Hinnang_meeskonna_JRT_esitatud_veebiteenusele JRT meeskonna veebiteenuse retsensioon ]&lt;br /&gt;
# [https://wiki.itcollege.ee/index.php/Talk:JRT#Hinnang_meeskonna_JRT_esitatud_klientrakendusele JRT meeskonna klientrakenduse retsensioon ]&lt;br /&gt;
&lt;br /&gt;
== Log ==&lt;br /&gt;
* 03.03.17 Esimene kohtumine. Idee.&lt;br /&gt;
* 17.03.17 Osa XMList valmis, osa XSLT-st valmis.&lt;br /&gt;
* 18.03.17 Teine kohtumine. XMLi täiendamine, esimene ülekäimine XSD-s.&lt;br /&gt;
* 19.03.17 XML/XSLT/XSD täiendamine ja lõpetamine.&lt;br /&gt;
* 20.03.17 XML fail, skeemifail ja stiilifailid esitatud. Projekti esimese etapi lõpp. Kevade algus.&lt;br /&gt;
* 26.03.17 XML/XSLT/XSD retsensioon esitatud.&lt;br /&gt;
* 16.04.17 Veebiteenuse analüüsi koostamine.&lt;br /&gt;
* 17.04.17 Esialgne veebiteenuse analüüs ja kavand valmis.&lt;br /&gt;
* 19.04.17 Alustasime veebiteenusega, koostegemine: Domain, DAL, Interfaces, Repostitories. Testimine konsoolis.&lt;br /&gt;
* 24.04.17 Veebiteenuse koostegemine, 2. kord: Domaini täiendamine.&lt;br /&gt;
* 29.04.17 Veebiteenuse koostegemine, 3. kord: Interfaces, Repositories, Factory + UOW. Testimine konsoolis.&lt;br /&gt;
* 01.05.17 Andmebaasi täitmine testandmetega varasemas faasis loodud XML failist.&lt;br /&gt;
* 02.05.17 Veebiteenuse koostegemine, 4. kord: alustasime BLi ja WebApi ehitamist. GET päringud.&lt;br /&gt;
* 09.05.17 Veebiteenuse koostegemine, 5. kord: lisasime Identity.&lt;br /&gt;
* 11.05.17 Veebiteenuse koostegemine, 6. kord: WebApi arendamine. POST, PUT ja DELETE päringud.&lt;br /&gt;
* 15.05.17 Veebiteenuse koostegemine, 7. kord: WebApi arendamine. Lisasime  api kontrollereid.&lt;br /&gt;
* 16.05.17 Veebiteenuse koostegemine, 8. kord: WebApi arendamine. Identity kontroll Fiddleri ja Postmaniga.&lt;br /&gt;
* 20.05.17 Klientrakenduse koostegemine, 1. kord. Testklient.&lt;br /&gt;
* 25.05.17 Klientrakenduse koostegemine, 2. kord. Klientrakenduse arendamine. Angular JS alustamine.&lt;br /&gt;
* 01.06.17 Klientrakenduse koostegemine, 3. kord. Klientrakenduse arendamine. Angular JS (katse MVC kontrolleritega).&lt;br /&gt;
* 03.06.17 - 11.06.17 Klientrakenduse arendamine. Üheleherakendus. Tokenipõhine autentimine. Veebiteenuse viimistlemine.&lt;br /&gt;
* 11.06.17 Lõpptähtaeg. Projekti esitlemine eksamil.&lt;br /&gt;
* 12.06.17 Teiste lahenduste retsenseerimine.&lt;br /&gt;
* 13.06.17 Veebiteenuse ja klientrakenduse retsensioonid esitatud. Selleks korraks kõik.&lt;/div&gt;</summary>
		<author><name>Otiks</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Team_SPOT&amp;diff=123586</id>
		<title>Team SPOT</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Team_SPOT&amp;diff=123586"/>
		<updated>2017-06-13T20:53:54Z</updated>

		<summary type="html">&lt;p&gt;Otiks: /* Log */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://wiki.itcollege.ee/index.php/Kodut%C3%B6%C3%B6_aines_%22V%C3%B5rgurakendused_II:_hajuss%C3%BCsteemide_ehitamine%22_2017 Kodutöö aines &amp;quot;Võrgurakendused II: hajussüsteemide ehitamine&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
[https://projectspot.visualstudio.com/PROJECTSPOT Projekti repositoorium (avaneb ainult liikmetele)]&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==Liikmed==&lt;br /&gt;
*Sigrid Pachel&lt;br /&gt;
*Oliver Tiks&lt;br /&gt;
&lt;br /&gt;
==Idee==&lt;br /&gt;
Mõttes on luua spordiklubi(de) veebiteenus ja klientrakendus, mis võimaldaks saada infot pakutavate treeningute kohta, sisestada ja kuvada tunniplaani andmeid, registreerida osalejaid tundidesse ning teha muid asjakohaseid tegevusi nii klubi(de) personalil, liikmetel kui ka juhukasutajatel.&lt;br /&gt;
&lt;br /&gt;
==Veebiteenuse analüüs==&lt;br /&gt;
SPOTi veebiteenus võimaldab saada infot erinevate klubide treeningute kohta ja end neisse registreerida. Kasutaja saab teavet, kus ja millal treeningud toimuvad (tunniplaan), mida treeningus täpsemalt tehakse, mis stiiliga on tegemist, kes on treener, kui palju üks kord maksab jms info. Kasutajakontoga liikmel on võimalik end registreerida soovitud tundi ja hallata oma registreeringuid (muuta, tühistada).&lt;br /&gt;
&lt;br /&gt;
Spordiklubide infot haldavad süsteemi administraatorid, kes saavad lisada, muuta ja kustutada kõike sprodiklubiga seonduvat. Erinevaid treeninguid ja nendega seotud konkreetset infot saavad lisada ja hallata treenerid või spordiklubi esindajad.&lt;br /&gt;
&lt;br /&gt;
Projekti realiseerimiseks kasutame REST arhitektuuri ja ASP.NET MVC Web API tehnoloogiat.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Üldine plaan:&#039;&#039;&#039;&lt;br /&gt;
* esialgu üks kett (laienemise võimalusega)&lt;br /&gt;
* mitu klubi (asukoht, saalid-treeningualad, võimalikud lisatingimused)&lt;br /&gt;
* treeningute info (stiilid ehk kontseptid, litsentsid, …)&lt;br /&gt;
* tunniplaan (aeg, koht, instruktorid, max osalejate arv, ühe korra hind)&lt;br /&gt;
* registratuur (treeningutest osavõtjad)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kasutajad (rollid):&#039;&#039;&#039;&lt;br /&gt;
* administraatorid (saavad teha muudatusi)&lt;br /&gt;
* treenerid (info kvalifikatsiooni, litsentside kohta, õigus treeninguid lisada) &lt;br /&gt;
* liikmed (saavad treeningutele registreeruda)&lt;br /&gt;
* ülejäänud (näevad klubide ja treeningute infot ning tunniplaani)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Peaks olema:&#039;&#039;&#039;&lt;br /&gt;
* kasutajate loomine&lt;br /&gt;
* kasutajate tuvastamine ja haldamine&lt;br /&gt;
* kasutajate ja kasutusstatistika logimine&lt;br /&gt;
* teenuse poole pöördumiste arvu piiramine ja piirangute haldamine&lt;br /&gt;
* klubide, treenerite ja treeningute info väljastamine&lt;br /&gt;
* tunniplaani info väljastamine&lt;br /&gt;
* treeningutesse registreerimine&lt;br /&gt;
* registreeringu tühistamine&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Võiks olla:&#039;&#039;&#039;&lt;br /&gt;
* klubide, treenerite, treeningute lisamine ja muutmine&lt;br /&gt;
* tunniplaanis treeningute tühistamine&lt;br /&gt;
* sisestatud andmete kustutamine (pehmelt)&lt;br /&gt;
* rollide-õiguste määramine (admin)&lt;br /&gt;
* asukohad mitmes riigis&lt;br /&gt;
* kliendipaketid, arveldus&lt;br /&gt;
* kontaktide tsentraliseeritud haldus&lt;br /&gt;
* sisselogimine läbi Google’i, Facebooki vmt teenuse&lt;br /&gt;
&lt;br /&gt;
===Andmebaasi skeem (lihtsustatud)===&lt;br /&gt;
&lt;br /&gt;
[[File:SPOTService ERD.JPG|border|SPOT Service ERD]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Märkus: olemite atribuutidest on välja toodud ainult peamised.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====Tabelite kirjeldused====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kasutajahaldus*:&#039;&#039;&#039;&lt;br /&gt;
* User - kasutajate andmed&lt;br /&gt;
* Role - rollid, millega määratakse kasutajate õigused (&amp;quot;Admin&amp;quot;, &amp;quot;Trainer&amp;quot;, ...)&lt;br /&gt;
* UserRole - kasutajate sidumine rolli(de)ga&lt;br /&gt;
* UserLogin - muu teenuse kaudu sisselogimiseks&lt;br /&gt;
* UserClaim - muu teenuse kaudu sisselogimiseks&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;&#039;&#039;Kasutajahalduse süsteem toetub Asp.Net Identity valmislahendusele, mida on täiendanud A. Käver.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Klubid:&#039;&#039;&#039;&lt;br /&gt;
* Chain (optional) - spordiklubikettide info&lt;br /&gt;
* Location - spordiklubi/-rajatise asukoht linna/asula täpsusega&lt;br /&gt;
* Facility - spordiklubi/-rajatise andmed, seotud asukohaga ja vajadusel ketiga.&lt;br /&gt;
* Venue - spordiklubis/-rajatises kasutatavad saalid ja muud treeningualad&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Treeningud:&#039;&#039;&#039;&lt;br /&gt;
* Concept (Style) - treeningustiilid ehk kontseptid&lt;br /&gt;
* Licenser (optional) - treeninguliikide litsentsid (kui on)&lt;br /&gt;
* Training - treeninguliikide andmed, seotud stiili ja vajadusel litsentsiga&lt;br /&gt;
* Trainer (User (role: Trainer) + Training) - treeninguliikide sidumine treeneritega&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tunniplaan:&#039;&#039;&#039;&lt;br /&gt;
* ScheduleItem - treeningud tunniplaanis&lt;br /&gt;
* Instructor (User (role: Trainer) + ScheduleItem) - tundide juhendajad (võib olla mitu)&lt;br /&gt;
* Registration (ScheduleItem + User (role: any)) - tundidesse tehtud registreeringud&lt;br /&gt;
&lt;br /&gt;
== XML / XSD / XSLT==&lt;br /&gt;
Projekti esimeses etapis sai loodud XML andmefail, mille ülesehitus on paika pandud XSD skeemifailis. Lisaks on olemas kaks stiilifaili: esimene neist transformeerib andmed HTML-kujule, et kuvada infot  veebilehel, teine tekitab samade andmete esitamiseks uue struktuuriga XML faili.&lt;br /&gt;
&lt;br /&gt;
[https://drive.google.com/open?id=0B84njRSbVLUtd0U4aEJXOUhOTG8 Lae failid alla.] &lt;br /&gt;
&lt;br /&gt;
=== XML ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Fail sisaldab andmeid ühes spordiklubis pakutavate treeningute kohta. Andmed on esitatud treeninguliikide kaupa, mille juurde on lisatud ka vastava treeninguliigi tunniplaan. Treeninguliikidel on nimi ja kirjeldus ning vajadusel ära märgitud ka litsents. Failis on eraldi välja toodud treeningustiilid, instruktorid ja ruumid, kus treeningud toimuvad. Iga treeninguliik kuulub ühe või mitme stiili alla. Instruktoritel on tagasiside põhjal saadud hinne. Treeninguruumidel on vaikimisi määratud mahutavus. Tunniplaanis on ära toodud treeningu koht, algusaeg ja kestus ning instruktorid. Vajadusel saab eraldi määrata ka treeningurühma suuruse, kui see erineb tavalisest ruumi mahutavusest. Ka on võimalik treeningutunnile lisada kommentaar. Erinevate elementide andmed on omavahel seotud id-atribuutidega.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;?xml-stylesheet type=&amp;quot;text/xsl&amp;quot; href=&amp;quot;trainingsToHtml.xslt&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Trainings&amp;gt;&lt;br /&gt;
  &amp;lt;Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;![CDATA[Cardio]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
  &amp;lt;/Styles&amp;gt;&lt;br /&gt;
  &amp;lt;Instructors&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;1&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Yogafier]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;2&amp;quot; Rating=&amp;quot;4.7&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Mickey Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;3&amp;quot; Rating=&amp;quot;4.6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;4&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Donald Duck]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;5&amp;quot; Rating=&amp;quot;3.9&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Goofy]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;6&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Schwarzenegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;8&amp;quot; Rating=&amp;quot;4.8&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Kayla Weightlifter]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;9&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Margaret Strengthener]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
  &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;Venues&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;1&amp;quot; GroupSize=&amp;quot;45&amp;quot;&amp;gt;&amp;lt;![CDATA[Main Hall]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 2]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;3&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 3]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;4&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 4]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;5&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 5]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&amp;lt;![CDATA[Area 6]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;7&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&amp;lt;![CDATA[Yoga Hall]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
  &amp;lt;/Venues&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Yoga]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[Yoga is a group of physical, mental, and spiritual practices or disciplines which originated in ancient India. ]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;1&amp;quot; VenueId=&amp;quot;7&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-25T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;14&amp;quot; VenueId=&amp;quot;7&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT1H20M&amp;quot;&amp;gt;2017-03-28T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Comment&amp;gt;&lt;br /&gt;
          &amp;lt;![CDATA[Special class!]]&amp;gt;&lt;br /&gt;
        &amp;lt;/Comment&amp;gt; &lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/Nvlxn0EnmbM&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;  &lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;2&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyBalance™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[BODYBALANCE™ is the Yoga, Tai Chi, Pilates workout that builds flexibility and strength and leaves you feeling centered and calm. Based on a carefully structured series of stretches, moves and poses to music it creates a holistic workout that brings the body into a state of harmony and balance. This class will heighten your flexibility and inner strength creating a strong supple body from the inside out. Burn on average 390cals per hour.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;2&amp;quot; VenueId=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-31T12:15:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;3&amp;quot; VenueId=&amp;quot;2&amp;quot; &amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-30T13:30:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;3&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/jJxA6vBjUqY&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;3&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyJam™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;4&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[The Body Jam program is an addictive fusion of the latest dance styles to the hottest new sounds. This class isn’t just for dancers, it’s for everyone because the emphasis is put on not only having fun but also breaking a sweat. So grab a friend, get front and centre … you bring the attitude and we’ll bring the moves!]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;4&amp;quot;  VenueId=&amp;quot;3&amp;quot; &amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T16:10:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;4&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;5&amp;quot; VenueId=&amp;quot;5&amp;quot; &amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT45M&amp;quot;&amp;gt;2017-04-01T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;5&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/8PTXyg9si_4&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;4&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyPump™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[BodyPump classes are 59 minutes long and contain eight separate muscle-group specific songs or &amp;quot;tracks&amp;quot; along with an opening warm up track and closing cool-down track. There are also 45-minute and 30-minute class formats. The classes are performed to music using free weights-plates, barbells and an aerobic step. Participants choose their weights based on the exercise and their personal goals. Major muscle groups are worked via series of compound and isolation-based exercises including squats, presses, dead lifts. The focus is towards muscle endurance by moving light weights at high repetitions, what Les Mills calls the Rep Effect.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;3&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;6&amp;quot; VenueId=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;6&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;7&amp;quot; VenueId=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-23T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;6&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/zU_0XrdO3wo&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[CoreStrenght is a very hard workout! Not for beginners.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;3&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;8&amp;quot; VenueId=&amp;quot;6&amp;quot; GroupSize=&amp;quot;10&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT2H&amp;quot;&amp;gt;2017-03-23T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;9&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Comment&amp;gt;&lt;br /&gt;
          &amp;lt;![CDATA[Special challenge!]]&amp;gt;&lt;br /&gt;
        &amp;lt;/Comment&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;9&amp;quot; VenueId=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;8&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;10&amp;quot; VenueId=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-04-05T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;8&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;9&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/ZxTVmpvyUt8&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[Zumba involves dance and aerobic movements performed to energetic music. The choreography incorporates hip-hop, soca, samba, salsa, merengue and mambo. Squats and lunges are also included.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;4&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;11&amp;quot; VenueId=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT55M&amp;quot;&amp;gt;2017-03-26T15:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;12&amp;quot; VenueId=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-28T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;13&amp;quot; VenueId=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/-ZB6XIkfxnQ&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
&amp;lt;/Trainings&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSD ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Skeemifail kontrollib eelnevas andmefailis esitatud andmete vastavust kokkulepitud formaadile, samuti õigete andmetüüpide kasutamist. Alamelemendi id-atribuudi väärtus peab olema iga elemendirühma lõikes unikaalne. Kohustuslike elementide ja atribuutide kõrval on ka mõned (nt kommentaar), mille olemasolu pole alati tarvilik. Teatud puhkudel on piiratud maksimaalset elementide arvu (nt treeningutunni algusaeg). Faili üldine struktuur on kindel, aga alati pole alamelementide järjekord oluline (nt treeninguliigi puhul).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xs:schema attributeFormDefault=&amp;quot;unqualified&amp;quot; elementFormDefault=&amp;quot;qualified&amp;quot; xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xs:element name=&amp;quot;Trainings&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Styles&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Style&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
          &amp;lt;xs:unique name=&amp;quot;UniqueStyleId&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xs:selector xpath=&amp;quot;Style&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Instructors&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;Name&amp;quot; type=&amp;quot;xs:string&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:attribute name=&amp;quot;Rating&amp;quot; type=&amp;quot;xs:decimal&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
          &amp;lt;xs:unique name=&amp;quot;UniqueInstructorId&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xs:selector xpath=&amp;quot;Instructor&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Venues&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Venue&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:attribute name=&amp;quot;GroupSize&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
          &amp;lt;xs:unique name=&amp;quot;UniqueVenueId&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xs:selector xpath=&amp;quot;Venue&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Training&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:all&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Description&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Styles&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Style&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Schedule&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;ScheduleItem&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:all&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element  maxOccurs=&amp;quot;1&amp;quot; name=&amp;quot;Time&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:extension base=&amp;quot;xs:dateTime&amp;quot;&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:attribute name=&amp;quot;Duration&amp;quot; type=&amp;quot;xs:duration&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element name=&amp;quot;Instructors&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                    &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                                      &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                                        &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                                      &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                                    &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                                  &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; name=&amp;quot;Comment&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:all&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;VenueId&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;GroupSize&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;optional&amp;quot; /&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;VideoUrl&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:all&amp;gt;&lt;br /&gt;
            &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xs:attribute name=&amp;quot;Licence&amp;quot; type=&amp;quot;xs:string&amp;quot; use=&amp;quot;optional&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
    &amp;lt;xs:unique name=&amp;quot;UniqueTrainingId&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xs:selector xpath=&amp;quot;Training&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
    &amp;lt;xs:unique name=&amp;quot;UniqueScheduleItemId&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xs:selector xpath=&amp;quot;Training/Schedule/ScheduleItem&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSLT (html) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Selles transformatsioonifailis on kirjeldatud XML failis olevate andmete [http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/trainings.xml  kuvamise viis veebilehel]. Treeninguliigid on jaotatud stiiliblokkidesse (mõni treening kuulub mitme stiili alla). Iga treeninguliigi all on tabeli kujul esitatud tunniplaan ning lisatud näidisvideo ja kirjeldus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot; xmlns:msxsl=&amp;quot;urn:schemas-microsoft-com:xslt&amp;quot; exclude-result-prefixes=&amp;quot;msxsl&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:output method=&amp;quot;html&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;html&amp;gt;&lt;br /&gt;
      &amp;lt;head&amp;gt;&lt;br /&gt;
        &amp;lt;title&amp;gt;SuperSportsClub - Trainings&amp;lt;/title&amp;gt;&lt;br /&gt;
        &amp;lt;style&amp;gt;&lt;br /&gt;
          body {&lt;br /&gt;
          background:BurlyWood;&lt;br /&gt;
          text-align: center;&lt;br /&gt;
          }&lt;br /&gt;
          .section {&lt;br /&gt;
          text-align:left;&lt;br /&gt;
          width:1000px;&lt;br /&gt;
          padding:20px;&lt;br /&gt;
          background:Chocolate;&lt;br /&gt;
          margin: auto;&lt;br /&gt;
          }&lt;br /&gt;
          table, th, td, .section {&lt;br /&gt;
          border: 1px solid black;&lt;br /&gt;
          }&lt;br /&gt;
          th {&lt;br /&gt;
          text-align:left;&lt;br /&gt;
          padding-left: 10px;&lt;br /&gt;
          padding-right: 10px;&lt;br /&gt;
          }&lt;br /&gt;
          td {&lt;br /&gt;
          text-align:center;&lt;br /&gt;
          }&lt;br /&gt;
          p {&lt;br /&gt;
          text-align:justify;&lt;br /&gt;
          }&lt;br /&gt;
          .description {&lt;br /&gt;
          vertical-align:top; &lt;br /&gt;
          padding:10px;&lt;br /&gt;
          }&lt;br /&gt;
        &amp;lt;/style&amp;gt;&lt;br /&gt;
      &amp;lt;/head&amp;gt;&lt;br /&gt;
      &amp;lt;body&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;Trainings at SuperSportsClub&amp;lt;/h1&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;/Trainings/Styles/Style&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:sort select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:variable select=&amp;quot;.&amp;quot; name=&amp;quot;SelectedStyle&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;section&amp;quot; &amp;gt;&lt;br /&gt;
            &amp;lt;h2&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select=&amp;quot;$SelectedStyle&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/h2&amp;gt;&lt;br /&gt;
            &amp;lt;ul&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:for-each select=&amp;quot;/Trainings/Training&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:sort select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:variable name=&amp;quot;Training&amp;quot; select=&amp;quot;.&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:if test=&amp;quot;Styles/Style/@Id = $SelectedStyle/@Id&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;&lt;br /&gt;
                    &amp;lt;h3&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;$Training/Name&amp;quot; /&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:if test=&amp;quot;$Training/@Licence&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:text&amp;gt; (&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:value-of select=&amp;quot;$Training/@Licence&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:text&amp;gt;)&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
                    &amp;lt;/h3&amp;gt;&lt;br /&gt;
                    &amp;lt;table&amp;gt;&lt;br /&gt;
                      &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                      &amp;lt;/tr&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:for-each select=&amp;quot;$Training/Schedule/ScheduleItem&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:sort select=&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:variable name=&amp;quot;StartTime&amp;quot; select=&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:variable name=&amp;quot;Duration&amp;quot; select=&amp;quot;$StartTime/@Duration&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;tr&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;150&amp;quot; &amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;concat(&lt;br /&gt;
                                            substring($StartTime, 9, 2), &lt;br /&gt;
                                            &#039;.&#039;, &lt;br /&gt;
                                            substring($StartTime, 6, 2), &lt;br /&gt;
                                            &#039;.&#039;, &lt;br /&gt;
                                            substring($StartTime, 1, 4),&lt;br /&gt;
                                            &#039; &#039;,&lt;br /&gt;
                                            substring($StartTime, 12, 2),&lt;br /&gt;
                                            &#039;:&#039;,&lt;br /&gt;
                                            substring($StartTime, 15, 2))&lt;br /&gt;
                                            &amp;quot; /&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:if test=&amp;quot;Comment&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;br/&amp;gt;&lt;br /&gt;
                              &amp;lt;div style=&amp;quot;color:Green&amp;quot;&amp;gt;&lt;br /&gt;
                                &amp;lt;xsl:value-of select=&amp;quot;Comment&amp;quot;/&amp;gt;&lt;br /&gt;
                              &amp;lt;/div&amp;gt;&lt;br /&gt;
                            &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;substring($Duration, 3, 6)&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:variable name=&amp;quot;VenueId&amp;quot; select=&amp;quot;@VenueId&amp;quot;/&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;/Trainings/Venues/Venue[@Id=$VenueId]&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:for-each select=&amp;quot;Instructors/Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:variable name=&amp;quot;InstructorId&amp;quot; select=&amp;quot;@Id&amp;quot;&amp;gt;&amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:variable name=&amp;quot;SelectedInstructor&amp;quot; select=&amp;quot;/Trainings/Instructors/Instructor[@Id=$InstructorId]&amp;quot; /&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/Name&amp;quot;/&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:text&amp;gt; (&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/@Rating&amp;quot; /&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:text&amp;gt;)&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                              &amp;lt;br/&amp;gt;&lt;br /&gt;
                            &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;/tr&amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
                    &amp;lt;/table&amp;gt;&lt;br /&gt;
                    &amp;lt;br/&amp;gt;&lt;br /&gt;
                    &amp;lt;table&amp;gt;&lt;br /&gt;
                      &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                          &amp;lt;xsl:variable name=&amp;quot;VideoUrl&amp;quot; select=&amp;quot;$Training/VideoUrl&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;{$VideoUrl}&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                          &amp;lt;p&amp;gt;&lt;br /&gt;
                            &amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&lt;br /&gt;
                          &amp;lt;/p&amp;gt;&lt;br /&gt;
                          &amp;lt;p&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;$Training/Description&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                      &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;/table&amp;gt;&lt;br /&gt;
                  &amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
            &amp;lt;/ul&amp;gt;&lt;br /&gt;
          &amp;lt;/div&amp;gt;&lt;br /&gt;
          &amp;lt;br/&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
      &amp;lt;/body&amp;gt;&lt;br /&gt;
    &amp;lt;/html&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== HTML (transformeeritud) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/trainings.html Vaata eelneva transformatsiooni tulemust.]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;META http-equiv=&amp;quot;Content-Type&amp;quot; content=&amp;quot;text/html; charset=utf-8&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;SuperSportsClub - Trainings&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;style&amp;gt;&lt;br /&gt;
        body {&lt;br /&gt;
            background: BurlyWood;&lt;br /&gt;
            text-align: center;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        .section {&lt;br /&gt;
            text-align: left;&lt;br /&gt;
            width: 1000px;&lt;br /&gt;
            padding: 20px;&lt;br /&gt;
            background: Chocolate;&lt;br /&gt;
            margin: auto;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        table, th, td, .section {&lt;br /&gt;
            border: 1px solid black;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        th {&lt;br /&gt;
            text-align: left;&lt;br /&gt;
            padding-left: 10px;&lt;br /&gt;
            padding-right: 10px;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        td {&lt;br /&gt;
            text-align: center;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        p {&lt;br /&gt;
            text-align: justify;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        .description {&lt;br /&gt;
            vertical-align: top;&lt;br /&gt;
            padding: 10px;&lt;br /&gt;
        }&lt;br /&gt;
    &amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
    &amp;lt;h1&amp;gt;Trainings at SuperSportsClub&amp;lt;/h1&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Body&amp;amp;amp;Mind&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyBalance™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 13:30&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;1H15M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 2&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Minnie Mouse (4.6)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;31.03.2017 12:15&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;1H15M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 3&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Mickey Mouse (4.7)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/jJxA6vBjUqY&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                BODYBALANCE™ is the Yoga, Tai Chi, Pilates workout that builds flexibility and strength and leaves you feeling centered and calm. Based on a carefully structured series of stretches, moves and poses to music it creates a holistic workout that brings the body into a state of harmony and balance. This class will heighten your flexibility and inner strength creating a strong supple body from the inside out. Burn on average 390cals per hour.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;Yoga&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;25.03.2017 14:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Yoga Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Minnie Yogafier (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
                            28.03.2017 14:00&amp;lt;br&amp;gt;&amp;lt;div style=&amp;quot;color:Green&amp;quot;&amp;gt;&lt;br /&gt;
                                Special class!&lt;br /&gt;
                            &amp;lt;/div&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;1H20M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Yoga Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Minnie Yogafier (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/Nvlxn0EnmbM&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                Yoga is a group of physical, mental, and spiritual practices or disciplines which originated in ancient India.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Cardio&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyJam™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 16:10&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 3&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Donald Duck (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;01.04.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;45M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 5&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Goofy (3.9)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/8PTXyg9si_4&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                The Body Jam program is an addictive fusion of the latest dance styles to the hottest new sounds. This class isn’t just for dancers, it’s for everyone because the emphasis is put on not only having fun but also breaking a sweat. So grab a friend, get front and centre … you bring the attitude and we’ll bring the moves!&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Dance&amp;amp;amp;Fun&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyJam™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 16:10&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 3&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Donald Duck (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;01.04.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;45M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 5&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Goofy (3.9)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/8PTXyg9si_4&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                The Body Jam program is an addictive fusion of the latest dance styles to the hottest new sounds. This class isn’t just for dancers, it’s for everyone because the emphasis is put on not only having fun but also breaking a sweat. So grab a friend, get front and centre … you bring the attitude and we’ll bring the moves!&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;Zumba®&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;26.03.2017 15:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;55M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 2&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Zumbaschnegger (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;28.03.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 4&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Zumbaschnegger (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 2&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Zumbaschnegger (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/-ZB6XIkfxnQ&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                Zumba involves dance and aerobic movements performed to energetic music. The choreography incorporates hip-hop, soca, samba, salsa, merengue and mambo. Squats and lunges are also included.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Strength&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyPump™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;23.03.2017 13:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Main Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Schwarzenegger (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 13:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Main Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Schwarzenegger (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/zU_0XrdO3wo&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                BodyPump classes are 59 minutes long and contain eight separate muscle-group specific songs or &amp;quot;tracks&amp;quot; along with an opening warm up track and closing cool-down track. There are also 45-minute and 30-minute class formats. The classes are performed to music using free weights-plates, barbells and an aerobic step. Participants choose their weights based on the exercise and their personal goals. Major muscle groups are worked via series of compound and isolation-based exercises including squats, presses, dead lifts. The focus is towards muscle endurance by moving light weights at high repetitions, what Les Mills calls the Rep Effect.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;CoreStrength&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
                            23.03.2017 12:00&amp;lt;br&amp;gt;&amp;lt;div style=&amp;quot;color:Green&amp;quot;&amp;gt;&lt;br /&gt;
                                Special challenge!&lt;br /&gt;
                            &amp;lt;/div&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;2H&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Area 6&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Margaret Strengthener (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Area 6&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Kayla Weightlifter (4.8)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;05.04.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Area 6&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Kayla Weightlifter (4.8)&amp;lt;br&amp;gt;Margaret Strengthener (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/ZxTVmpvyUt8&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                CoreStrenght is a very hard workout! Not for beginners.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSLT (xml) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Selle transformatsiooniga luuakse uus [http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/schedule.xml XML fail], milles on treeningute andmed esitatud ühtse tunniplaani kujul. Algses failis erinevate elementide alla paigutatud andmed on nüüd tunniplaani alamelemendis kokku viidud. Sidumine on teostatud id-atribuutide abil. Tunniplaanis on ühes kohas kirjas treeningu nimi, stiil(id), koht, algusaeg, kestus, rühma suurus, instruktorid ja muu täiendav info.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&lt;br /&gt;
    xmlns:msxsl=&amp;quot;urn:schemas-microsoft-com:xslt&amp;quot; exclude-result-prefixes=&amp;quot;msxsl&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:output method=&amp;quot;xml&amp;quot; indent=&amp;quot;yes&amp;quot; cdata-section-elements=&amp;quot;Name Style Comment&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;/Trainings/Training&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:sort select=&amp;quot;Name&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:variable name=&amp;quot;SelectedTraining&amp;quot; select=&amp;quot;.&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;Schedule/ScheduleItem&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:sort select=&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;ScheduleItem&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:variable name=&amp;quot;VenueId&amp;quot; select=&amp;quot;@VenueId&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:variable name=&amp;quot;SelectedVenue&amp;quot; select=&amp;quot;/Trainings/Venues/Venue[@Id=$VenueId]&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:attribute name=&amp;quot;GroupSize&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;@GroupSize&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:value-of select=&amp;quot;@GroupSize&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:value-of select=&amp;quot;$SelectedVenue/@GroupSize&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
            &amp;lt;Venue&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$VenueId&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select=&amp;quot;$SelectedVenue&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/Venue&amp;gt;&lt;br /&gt;
            &amp;lt;Training&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$SelectedTraining/@Id&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:if test=&amp;quot;$SelectedTraining/@Licence&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:attribute name=&amp;quot;Licence&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:value-of select=&amp;quot;$SelectedTraining/@Licence&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
              &amp;lt;Name&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$SelectedTraining/Name&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/Name&amp;gt;&lt;br /&gt;
              &amp;lt;Styles&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:for-each select=&amp;quot;$SelectedTraining/Styles/Style&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:variable name=&amp;quot;StyleId&amp;quot; select=&amp;quot;@Id&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;Style&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:attribute name=&amp;quot;StyleId&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;$StyleId&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;/Trainings/Styles/Style[@Id=$StyleId]&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/Style&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
              &amp;lt;/Styles&amp;gt;&lt;br /&gt;
            &amp;lt;/Training&amp;gt;&lt;br /&gt;
            &amp;lt;Time&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:attribute name=&amp;quot;Duration&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;Time/@Duration&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select =&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/Time&amp;gt;&lt;br /&gt;
            &amp;lt;Instructors&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:for-each select=&amp;quot;Instructors/Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:variable name=&amp;quot;InstructorId&amp;quot; select=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:variable name=&amp;quot;SelectedInstructor&amp;quot; select=&amp;quot;/Trainings/Instructors/Instructor[@Id=$InstructorId]&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;Instructor&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;$InstructorId&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:attribute name=&amp;quot;Rating&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/@Rating&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                  &amp;lt;Name&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/Name&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/Name&amp;gt;&lt;br /&gt;
                &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
            &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:if test=&amp;quot;Comment&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;Comment&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;Comment&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/Comment&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
          &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XML (transformeeritud) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/schedule.xml Vaata eelneva transformatsiooni tulemust.]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Schedule&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;3&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot;&amp;gt;Hall 2&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;2&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyBalance™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-30T13:30:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;3&amp;quot; Rating=&amp;quot;4.6&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;2&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;3&amp;quot;&amp;gt;Hall 3&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;2&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyBalance™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-31T12:15:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;2&amp;quot; Rating=&amp;quot;4.7&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Mickey Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;4&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;3&amp;quot;&amp;gt;Hall 3&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;3&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyJam™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;![CDATA[Cardio]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T16:10:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;4&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Donald Duck]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;5&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;5&amp;quot;&amp;gt;Hall 5&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;3&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyJam™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;![CDATA[Cardio]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT45M&amp;quot;&amp;gt;2017-04-01T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;5&amp;quot; Rating=&amp;quot;3.9&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Goofy]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;7&amp;quot; GroupSize=&amp;quot;45&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;1&amp;quot;&amp;gt;Main Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;4&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyPump™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-23T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;6&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Schwarzenegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;6&amp;quot; GroupSize=&amp;quot;45&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;1&amp;quot;&amp;gt;Main Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;4&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyPump™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;6&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Schwarzenegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;8&amp;quot; GroupSize=&amp;quot;10&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot;&amp;gt;Area 6&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT2H&amp;quot;&amp;gt;2017-03-23T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;9&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Margaret Strengthener]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
    &amp;lt;Comment&amp;gt;&amp;lt;![CDATA[&lt;br /&gt;
          Special challenge!&lt;br /&gt;
        ]]&amp;gt;&amp;lt;/Comment&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;9&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot;&amp;gt;Area 6&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;8&amp;quot; Rating=&amp;quot;4.8&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Kayla Weightlifter]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;10&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot;&amp;gt;Area 6&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-04-05T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;8&amp;quot; Rating=&amp;quot;4.8&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Kayla Weightlifter]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;9&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Margaret Strengthener]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;11&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot;&amp;gt;Hall 2&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT55M&amp;quot;&amp;gt;2017-03-26T15:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;12&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;4&amp;quot;&amp;gt;Hall 4&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-28T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;13&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot;&amp;gt;Hall 2&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;1&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;7&amp;quot;&amp;gt;Yoga Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Yoga]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-25T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;1&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Yogafier]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;14&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;7&amp;quot;&amp;gt;Yoga Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Yoga]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT1H20M&amp;quot;&amp;gt;2017-03-28T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;1&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Yogafier]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
    &amp;lt;Comment&amp;gt;&amp;lt;![CDATA[&lt;br /&gt;
          Special class!&lt;br /&gt;
        ]]&amp;gt;&amp;lt;/Comment&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
&amp;lt;/Schedule&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus ==&lt;br /&gt;
Angular JS &#039;&#039;single page application&#039;&#039; eelnevalt kirjeldatud veebiteenusele. Sisse logimata saab kuvada spordiklubi tunniplaani nädalate kaupa, treeninguliike stiilide kaupa ja treenereid. Võimalik on liituda teenusega ja registreeruda treeningutele, samuti registreeringuid tühistada nii otse tunniplaanist kui ka registreeringute lehel. Esialgu põhineb süsteem ühel spordiklubil. Kasutamise eelduseks on tunniplaani olemasolu andmebaasis.&lt;br /&gt;
&lt;br /&gt;
Autentimine on lahendatud tokenipõhiselt. Eeskuju ja põhjana kasutasime näidisrakendust, mille juhend ja lähtekood on leitav [http://bitoftech.net/2014/06/09/angularjs-token-authentication-using-asp-net-web-api-2-owin-asp-net-identity/ siit].&lt;br /&gt;
&lt;br /&gt;
== Lähtekood ==&lt;br /&gt;
Eksamiks valminud veebiteenuse ja klientrakenduse kokkupakitult allalaadimiseks klõpsa [https://drive.google.com/open?id=0B84njRSbVLUtTWx5ZkZsdDBJZDQ sellel lingil]. WebApi ja Angular JS klient on eraldi lahendustes. Kliendi testimiseks brauseris (Chrome, Firefox vm) tuleb eelnevalt käivitada ka veebiteenus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;NB! Võib juhtuda, et WebApi esmakordsel käivitamisel loodavasse andmebaasi kõiki andmeid (tunniplaani ja registreerimisi jooksvasse nädalasse) ei lisandu. Sellisel juhul kustuta tekkinud andmebaas ja käivita kõigepealt samas lahenduses olev konsoolirakendus.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Retsensioonid ==&lt;br /&gt;
&lt;br /&gt;
# [https://wiki.itcollege.ee/index.php/Talk:JRT#Hinnang_meeskonna_JRT_esitatud_XML-failidele JRT meeskonna XML/XSD/XSLT retsensioon ]&lt;br /&gt;
# [https://wiki.itcollege.ee/index.php/Talk:JRT#Hinnang_meeskonna_JRT_esitatud_veebiteenusele JRT meeskonna veebiteenuse retsensioon ]&lt;br /&gt;
# [https://wiki.itcollege.ee/index.php/Talk:JRT#Hinnang_meeskonna_JRT_esitatud_klientrakendusele JRT meeskonna klientrakenduse retsensioon ]&lt;br /&gt;
&lt;br /&gt;
== Log ==&lt;br /&gt;
* 03.03.17 Esimene kohtumine. Idee.&lt;br /&gt;
* 17.03.17 Osa XMList valmis, osa XSLT-st valmis.&lt;br /&gt;
* 18.03.17 Teine kohtumine. XMLi täiendamine, esimene ülekäimine XSD-s.&lt;br /&gt;
* 19.03.17 XML/XSLT/XSD täiendamine ja lõpetamine.&lt;br /&gt;
* 20.03.17 XML fail, skeemifail ja stiilifailid esitatud. Projekti esimese etapi lõpp. Kevade algus.&lt;br /&gt;
* 26.03.17 XML/XSLT/XSD retsensioon esitatud.&lt;br /&gt;
* 16.04.17 Veebiteenuse analüüsi koostamine.&lt;br /&gt;
* 17.04.17 Esialgne veebiteenuse analüüs ja kavand valmis.&lt;br /&gt;
* 19.04.17 Alustasime veebiteenusega, koostegemine: Domain, DAL, Interfaces, Repostitories. Testimine konsoolis.&lt;br /&gt;
* 24.04.17 Veebiteenuse koostegemine, 2. kord: Domaini täiendamine.&lt;br /&gt;
* 29.04.17 Veebiteenuse koostegemine, 3. kord: Interfaces, Repositories, Factory + UOW. Testimine konsoolis.&lt;br /&gt;
* 01.05.17 Andmebaasi täitmine testandmetega varasemas faasis loodud XML failist.&lt;br /&gt;
* 02.05.17 Veebiteenuse koostegemine, 4. kord: alustasime BLi ja WebApi ehitamist. GET päringud.&lt;br /&gt;
* 09.05.17 Veebiteenuse koostegemine, 5. kord: lisasime Identity.&lt;br /&gt;
* 11.05.17 Veebiteenuse koostegemine, 6. kord: WebApi arendamine. POST, PUT ja DELETE päringud.&lt;br /&gt;
* 15.05.17 Veebiteenuse koostegemine, 7. kord: WebApi arendamine. Lisasime  api kontrollereid.&lt;br /&gt;
* 16.05.17 Veebiteenuse koostegemine, 8. kord: WebApi arendamine. Identity kontroll Fiddleri ja Postmaniga.&lt;br /&gt;
* 20.05.17 Klientrakenduse koostegemine, 1. kord. Testklient.&lt;br /&gt;
* 25.05.17 Klientrakenduse koostegemine, 2. kord. Klientrakenduse arendamine. Angular JS alustamine.&lt;br /&gt;
* 01.06.17 Klientrakenduse koostegemine, 3. kord. Klientrakenduse arendamine. Angular JS (katse MVC kontrolleritega).&lt;br /&gt;
* 03.06.17 - 11.06.17 Klientrakenduse arendamine. Tokenipõhine autentimine. Veebiteenuse viimistlemine.&lt;br /&gt;
* 11.06.17 Lõpptähtaeg. Projekti esitlemine eksamil.&lt;br /&gt;
* 12.06.17 Teiste lahenduste retsenseerimine.&lt;br /&gt;
* 13.06.17 Veebiteenuse ja klientrakenduse retsensioonid esitatud. Selleks korraks kõik.&lt;/div&gt;</summary>
		<author><name>Otiks</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Team_SPOT&amp;diff=123585</id>
		<title>Team SPOT</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Team_SPOT&amp;diff=123585"/>
		<updated>2017-06-13T20:52:54Z</updated>

		<summary type="html">&lt;p&gt;Otiks: /* Log */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://wiki.itcollege.ee/index.php/Kodut%C3%B6%C3%B6_aines_%22V%C3%B5rgurakendused_II:_hajuss%C3%BCsteemide_ehitamine%22_2017 Kodutöö aines &amp;quot;Võrgurakendused II: hajussüsteemide ehitamine&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
[https://projectspot.visualstudio.com/PROJECTSPOT Projekti repositoorium (avaneb ainult liikmetele)]&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==Liikmed==&lt;br /&gt;
*Sigrid Pachel&lt;br /&gt;
*Oliver Tiks&lt;br /&gt;
&lt;br /&gt;
==Idee==&lt;br /&gt;
Mõttes on luua spordiklubi(de) veebiteenus ja klientrakendus, mis võimaldaks saada infot pakutavate treeningute kohta, sisestada ja kuvada tunniplaani andmeid, registreerida osalejaid tundidesse ning teha muid asjakohaseid tegevusi nii klubi(de) personalil, liikmetel kui ka juhukasutajatel.&lt;br /&gt;
&lt;br /&gt;
==Veebiteenuse analüüs==&lt;br /&gt;
SPOTi veebiteenus võimaldab saada infot erinevate klubide treeningute kohta ja end neisse registreerida. Kasutaja saab teavet, kus ja millal treeningud toimuvad (tunniplaan), mida treeningus täpsemalt tehakse, mis stiiliga on tegemist, kes on treener, kui palju üks kord maksab jms info. Kasutajakontoga liikmel on võimalik end registreerida soovitud tundi ja hallata oma registreeringuid (muuta, tühistada).&lt;br /&gt;
&lt;br /&gt;
Spordiklubide infot haldavad süsteemi administraatorid, kes saavad lisada, muuta ja kustutada kõike sprodiklubiga seonduvat. Erinevaid treeninguid ja nendega seotud konkreetset infot saavad lisada ja hallata treenerid või spordiklubi esindajad.&lt;br /&gt;
&lt;br /&gt;
Projekti realiseerimiseks kasutame REST arhitektuuri ja ASP.NET MVC Web API tehnoloogiat.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Üldine plaan:&#039;&#039;&#039;&lt;br /&gt;
* esialgu üks kett (laienemise võimalusega)&lt;br /&gt;
* mitu klubi (asukoht, saalid-treeningualad, võimalikud lisatingimused)&lt;br /&gt;
* treeningute info (stiilid ehk kontseptid, litsentsid, …)&lt;br /&gt;
* tunniplaan (aeg, koht, instruktorid, max osalejate arv, ühe korra hind)&lt;br /&gt;
* registratuur (treeningutest osavõtjad)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kasutajad (rollid):&#039;&#039;&#039;&lt;br /&gt;
* administraatorid (saavad teha muudatusi)&lt;br /&gt;
* treenerid (info kvalifikatsiooni, litsentside kohta, õigus treeninguid lisada) &lt;br /&gt;
* liikmed (saavad treeningutele registreeruda)&lt;br /&gt;
* ülejäänud (näevad klubide ja treeningute infot ning tunniplaani)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Peaks olema:&#039;&#039;&#039;&lt;br /&gt;
* kasutajate loomine&lt;br /&gt;
* kasutajate tuvastamine ja haldamine&lt;br /&gt;
* kasutajate ja kasutusstatistika logimine&lt;br /&gt;
* teenuse poole pöördumiste arvu piiramine ja piirangute haldamine&lt;br /&gt;
* klubide, treenerite ja treeningute info väljastamine&lt;br /&gt;
* tunniplaani info väljastamine&lt;br /&gt;
* treeningutesse registreerimine&lt;br /&gt;
* registreeringu tühistamine&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Võiks olla:&#039;&#039;&#039;&lt;br /&gt;
* klubide, treenerite, treeningute lisamine ja muutmine&lt;br /&gt;
* tunniplaanis treeningute tühistamine&lt;br /&gt;
* sisestatud andmete kustutamine (pehmelt)&lt;br /&gt;
* rollide-õiguste määramine (admin)&lt;br /&gt;
* asukohad mitmes riigis&lt;br /&gt;
* kliendipaketid, arveldus&lt;br /&gt;
* kontaktide tsentraliseeritud haldus&lt;br /&gt;
* sisselogimine läbi Google’i, Facebooki vmt teenuse&lt;br /&gt;
&lt;br /&gt;
===Andmebaasi skeem (lihtsustatud)===&lt;br /&gt;
&lt;br /&gt;
[[File:SPOTService ERD.JPG|border|SPOT Service ERD]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Märkus: olemite atribuutidest on välja toodud ainult peamised.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====Tabelite kirjeldused====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kasutajahaldus*:&#039;&#039;&#039;&lt;br /&gt;
* User - kasutajate andmed&lt;br /&gt;
* Role - rollid, millega määratakse kasutajate õigused (&amp;quot;Admin&amp;quot;, &amp;quot;Trainer&amp;quot;, ...)&lt;br /&gt;
* UserRole - kasutajate sidumine rolli(de)ga&lt;br /&gt;
* UserLogin - muu teenuse kaudu sisselogimiseks&lt;br /&gt;
* UserClaim - muu teenuse kaudu sisselogimiseks&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;&#039;&#039;Kasutajahalduse süsteem toetub Asp.Net Identity valmislahendusele, mida on täiendanud A. Käver.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Klubid:&#039;&#039;&#039;&lt;br /&gt;
* Chain (optional) - spordiklubikettide info&lt;br /&gt;
* Location - spordiklubi/-rajatise asukoht linna/asula täpsusega&lt;br /&gt;
* Facility - spordiklubi/-rajatise andmed, seotud asukohaga ja vajadusel ketiga.&lt;br /&gt;
* Venue - spordiklubis/-rajatises kasutatavad saalid ja muud treeningualad&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Treeningud:&#039;&#039;&#039;&lt;br /&gt;
* Concept (Style) - treeningustiilid ehk kontseptid&lt;br /&gt;
* Licenser (optional) - treeninguliikide litsentsid (kui on)&lt;br /&gt;
* Training - treeninguliikide andmed, seotud stiili ja vajadusel litsentsiga&lt;br /&gt;
* Trainer (User (role: Trainer) + Training) - treeninguliikide sidumine treeneritega&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tunniplaan:&#039;&#039;&#039;&lt;br /&gt;
* ScheduleItem - treeningud tunniplaanis&lt;br /&gt;
* Instructor (User (role: Trainer) + ScheduleItem) - tundide juhendajad (võib olla mitu)&lt;br /&gt;
* Registration (ScheduleItem + User (role: any)) - tundidesse tehtud registreeringud&lt;br /&gt;
&lt;br /&gt;
== XML / XSD / XSLT==&lt;br /&gt;
Projekti esimeses etapis sai loodud XML andmefail, mille ülesehitus on paika pandud XSD skeemifailis. Lisaks on olemas kaks stiilifaili: esimene neist transformeerib andmed HTML-kujule, et kuvada infot  veebilehel, teine tekitab samade andmete esitamiseks uue struktuuriga XML faili.&lt;br /&gt;
&lt;br /&gt;
[https://drive.google.com/open?id=0B84njRSbVLUtd0U4aEJXOUhOTG8 Lae failid alla.] &lt;br /&gt;
&lt;br /&gt;
=== XML ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Fail sisaldab andmeid ühes spordiklubis pakutavate treeningute kohta. Andmed on esitatud treeninguliikide kaupa, mille juurde on lisatud ka vastava treeninguliigi tunniplaan. Treeninguliikidel on nimi ja kirjeldus ning vajadusel ära märgitud ka litsents. Failis on eraldi välja toodud treeningustiilid, instruktorid ja ruumid, kus treeningud toimuvad. Iga treeninguliik kuulub ühe või mitme stiili alla. Instruktoritel on tagasiside põhjal saadud hinne. Treeninguruumidel on vaikimisi määratud mahutavus. Tunniplaanis on ära toodud treeningu koht, algusaeg ja kestus ning instruktorid. Vajadusel saab eraldi määrata ka treeningurühma suuruse, kui see erineb tavalisest ruumi mahutavusest. Ka on võimalik treeningutunnile lisada kommentaar. Erinevate elementide andmed on omavahel seotud id-atribuutidega.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;?xml-stylesheet type=&amp;quot;text/xsl&amp;quot; href=&amp;quot;trainingsToHtml.xslt&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Trainings&amp;gt;&lt;br /&gt;
  &amp;lt;Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;![CDATA[Cardio]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
  &amp;lt;/Styles&amp;gt;&lt;br /&gt;
  &amp;lt;Instructors&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;1&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Yogafier]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;2&amp;quot; Rating=&amp;quot;4.7&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Mickey Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;3&amp;quot; Rating=&amp;quot;4.6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;4&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Donald Duck]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;5&amp;quot; Rating=&amp;quot;3.9&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Goofy]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;6&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Schwarzenegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;8&amp;quot; Rating=&amp;quot;4.8&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Kayla Weightlifter]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;9&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Margaret Strengthener]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
  &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;Venues&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;1&amp;quot; GroupSize=&amp;quot;45&amp;quot;&amp;gt;&amp;lt;![CDATA[Main Hall]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 2]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;3&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 3]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;4&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 4]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;5&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 5]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&amp;lt;![CDATA[Area 6]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;7&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&amp;lt;![CDATA[Yoga Hall]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
  &amp;lt;/Venues&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Yoga]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[Yoga is a group of physical, mental, and spiritual practices or disciplines which originated in ancient India. ]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;1&amp;quot; VenueId=&amp;quot;7&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-25T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;14&amp;quot; VenueId=&amp;quot;7&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT1H20M&amp;quot;&amp;gt;2017-03-28T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Comment&amp;gt;&lt;br /&gt;
          &amp;lt;![CDATA[Special class!]]&amp;gt;&lt;br /&gt;
        &amp;lt;/Comment&amp;gt; &lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/Nvlxn0EnmbM&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;  &lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;2&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyBalance™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[BODYBALANCE™ is the Yoga, Tai Chi, Pilates workout that builds flexibility and strength and leaves you feeling centered and calm. Based on a carefully structured series of stretches, moves and poses to music it creates a holistic workout that brings the body into a state of harmony and balance. This class will heighten your flexibility and inner strength creating a strong supple body from the inside out. Burn on average 390cals per hour.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;2&amp;quot; VenueId=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-31T12:15:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;3&amp;quot; VenueId=&amp;quot;2&amp;quot; &amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-30T13:30:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;3&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/jJxA6vBjUqY&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;3&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyJam™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;4&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[The Body Jam program is an addictive fusion of the latest dance styles to the hottest new sounds. This class isn’t just for dancers, it’s for everyone because the emphasis is put on not only having fun but also breaking a sweat. So grab a friend, get front and centre … you bring the attitude and we’ll bring the moves!]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;4&amp;quot;  VenueId=&amp;quot;3&amp;quot; &amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T16:10:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;4&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;5&amp;quot; VenueId=&amp;quot;5&amp;quot; &amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT45M&amp;quot;&amp;gt;2017-04-01T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;5&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/8PTXyg9si_4&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;4&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyPump™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[BodyPump classes are 59 minutes long and contain eight separate muscle-group specific songs or &amp;quot;tracks&amp;quot; along with an opening warm up track and closing cool-down track. There are also 45-minute and 30-minute class formats. The classes are performed to music using free weights-plates, barbells and an aerobic step. Participants choose their weights based on the exercise and their personal goals. Major muscle groups are worked via series of compound and isolation-based exercises including squats, presses, dead lifts. The focus is towards muscle endurance by moving light weights at high repetitions, what Les Mills calls the Rep Effect.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;3&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;6&amp;quot; VenueId=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;6&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;7&amp;quot; VenueId=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-23T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;6&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/zU_0XrdO3wo&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[CoreStrenght is a very hard workout! Not for beginners.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;3&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;8&amp;quot; VenueId=&amp;quot;6&amp;quot; GroupSize=&amp;quot;10&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT2H&amp;quot;&amp;gt;2017-03-23T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;9&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Comment&amp;gt;&lt;br /&gt;
          &amp;lt;![CDATA[Special challenge!]]&amp;gt;&lt;br /&gt;
        &amp;lt;/Comment&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;9&amp;quot; VenueId=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;8&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;10&amp;quot; VenueId=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-04-05T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;8&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;9&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/ZxTVmpvyUt8&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[Zumba involves dance and aerobic movements performed to energetic music. The choreography incorporates hip-hop, soca, samba, salsa, merengue and mambo. Squats and lunges are also included.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;4&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;11&amp;quot; VenueId=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT55M&amp;quot;&amp;gt;2017-03-26T15:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;12&amp;quot; VenueId=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-28T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;13&amp;quot; VenueId=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/-ZB6XIkfxnQ&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
&amp;lt;/Trainings&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSD ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Skeemifail kontrollib eelnevas andmefailis esitatud andmete vastavust kokkulepitud formaadile, samuti õigete andmetüüpide kasutamist. Alamelemendi id-atribuudi väärtus peab olema iga elemendirühma lõikes unikaalne. Kohustuslike elementide ja atribuutide kõrval on ka mõned (nt kommentaar), mille olemasolu pole alati tarvilik. Teatud puhkudel on piiratud maksimaalset elementide arvu (nt treeningutunni algusaeg). Faili üldine struktuur on kindel, aga alati pole alamelementide järjekord oluline (nt treeninguliigi puhul).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xs:schema attributeFormDefault=&amp;quot;unqualified&amp;quot; elementFormDefault=&amp;quot;qualified&amp;quot; xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xs:element name=&amp;quot;Trainings&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Styles&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Style&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
          &amp;lt;xs:unique name=&amp;quot;UniqueStyleId&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xs:selector xpath=&amp;quot;Style&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Instructors&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;Name&amp;quot; type=&amp;quot;xs:string&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:attribute name=&amp;quot;Rating&amp;quot; type=&amp;quot;xs:decimal&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
          &amp;lt;xs:unique name=&amp;quot;UniqueInstructorId&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xs:selector xpath=&amp;quot;Instructor&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Venues&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Venue&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:attribute name=&amp;quot;GroupSize&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
          &amp;lt;xs:unique name=&amp;quot;UniqueVenueId&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xs:selector xpath=&amp;quot;Venue&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Training&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:all&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Description&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Styles&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Style&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Schedule&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;ScheduleItem&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:all&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element  maxOccurs=&amp;quot;1&amp;quot; name=&amp;quot;Time&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:extension base=&amp;quot;xs:dateTime&amp;quot;&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:attribute name=&amp;quot;Duration&amp;quot; type=&amp;quot;xs:duration&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element name=&amp;quot;Instructors&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                    &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                                      &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                                        &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                                      &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                                    &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                                  &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; name=&amp;quot;Comment&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:all&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;VenueId&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;GroupSize&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;optional&amp;quot; /&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;VideoUrl&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:all&amp;gt;&lt;br /&gt;
            &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xs:attribute name=&amp;quot;Licence&amp;quot; type=&amp;quot;xs:string&amp;quot; use=&amp;quot;optional&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
    &amp;lt;xs:unique name=&amp;quot;UniqueTrainingId&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xs:selector xpath=&amp;quot;Training&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
    &amp;lt;xs:unique name=&amp;quot;UniqueScheduleItemId&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xs:selector xpath=&amp;quot;Training/Schedule/ScheduleItem&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSLT (html) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Selles transformatsioonifailis on kirjeldatud XML failis olevate andmete [http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/trainings.xml  kuvamise viis veebilehel]. Treeninguliigid on jaotatud stiiliblokkidesse (mõni treening kuulub mitme stiili alla). Iga treeninguliigi all on tabeli kujul esitatud tunniplaan ning lisatud näidisvideo ja kirjeldus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot; xmlns:msxsl=&amp;quot;urn:schemas-microsoft-com:xslt&amp;quot; exclude-result-prefixes=&amp;quot;msxsl&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:output method=&amp;quot;html&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;html&amp;gt;&lt;br /&gt;
      &amp;lt;head&amp;gt;&lt;br /&gt;
        &amp;lt;title&amp;gt;SuperSportsClub - Trainings&amp;lt;/title&amp;gt;&lt;br /&gt;
        &amp;lt;style&amp;gt;&lt;br /&gt;
          body {&lt;br /&gt;
          background:BurlyWood;&lt;br /&gt;
          text-align: center;&lt;br /&gt;
          }&lt;br /&gt;
          .section {&lt;br /&gt;
          text-align:left;&lt;br /&gt;
          width:1000px;&lt;br /&gt;
          padding:20px;&lt;br /&gt;
          background:Chocolate;&lt;br /&gt;
          margin: auto;&lt;br /&gt;
          }&lt;br /&gt;
          table, th, td, .section {&lt;br /&gt;
          border: 1px solid black;&lt;br /&gt;
          }&lt;br /&gt;
          th {&lt;br /&gt;
          text-align:left;&lt;br /&gt;
          padding-left: 10px;&lt;br /&gt;
          padding-right: 10px;&lt;br /&gt;
          }&lt;br /&gt;
          td {&lt;br /&gt;
          text-align:center;&lt;br /&gt;
          }&lt;br /&gt;
          p {&lt;br /&gt;
          text-align:justify;&lt;br /&gt;
          }&lt;br /&gt;
          .description {&lt;br /&gt;
          vertical-align:top; &lt;br /&gt;
          padding:10px;&lt;br /&gt;
          }&lt;br /&gt;
        &amp;lt;/style&amp;gt;&lt;br /&gt;
      &amp;lt;/head&amp;gt;&lt;br /&gt;
      &amp;lt;body&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;Trainings at SuperSportsClub&amp;lt;/h1&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;/Trainings/Styles/Style&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:sort select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:variable select=&amp;quot;.&amp;quot; name=&amp;quot;SelectedStyle&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;section&amp;quot; &amp;gt;&lt;br /&gt;
            &amp;lt;h2&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select=&amp;quot;$SelectedStyle&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/h2&amp;gt;&lt;br /&gt;
            &amp;lt;ul&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:for-each select=&amp;quot;/Trainings/Training&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:sort select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:variable name=&amp;quot;Training&amp;quot; select=&amp;quot;.&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:if test=&amp;quot;Styles/Style/@Id = $SelectedStyle/@Id&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;&lt;br /&gt;
                    &amp;lt;h3&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;$Training/Name&amp;quot; /&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:if test=&amp;quot;$Training/@Licence&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:text&amp;gt; (&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:value-of select=&amp;quot;$Training/@Licence&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:text&amp;gt;)&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
                    &amp;lt;/h3&amp;gt;&lt;br /&gt;
                    &amp;lt;table&amp;gt;&lt;br /&gt;
                      &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                      &amp;lt;/tr&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:for-each select=&amp;quot;$Training/Schedule/ScheduleItem&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:sort select=&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:variable name=&amp;quot;StartTime&amp;quot; select=&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:variable name=&amp;quot;Duration&amp;quot; select=&amp;quot;$StartTime/@Duration&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;tr&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;150&amp;quot; &amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;concat(&lt;br /&gt;
                                            substring($StartTime, 9, 2), &lt;br /&gt;
                                            &#039;.&#039;, &lt;br /&gt;
                                            substring($StartTime, 6, 2), &lt;br /&gt;
                                            &#039;.&#039;, &lt;br /&gt;
                                            substring($StartTime, 1, 4),&lt;br /&gt;
                                            &#039; &#039;,&lt;br /&gt;
                                            substring($StartTime, 12, 2),&lt;br /&gt;
                                            &#039;:&#039;,&lt;br /&gt;
                                            substring($StartTime, 15, 2))&lt;br /&gt;
                                            &amp;quot; /&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:if test=&amp;quot;Comment&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;br/&amp;gt;&lt;br /&gt;
                              &amp;lt;div style=&amp;quot;color:Green&amp;quot;&amp;gt;&lt;br /&gt;
                                &amp;lt;xsl:value-of select=&amp;quot;Comment&amp;quot;/&amp;gt;&lt;br /&gt;
                              &amp;lt;/div&amp;gt;&lt;br /&gt;
                            &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;substring($Duration, 3, 6)&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:variable name=&amp;quot;VenueId&amp;quot; select=&amp;quot;@VenueId&amp;quot;/&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;/Trainings/Venues/Venue[@Id=$VenueId]&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:for-each select=&amp;quot;Instructors/Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:variable name=&amp;quot;InstructorId&amp;quot; select=&amp;quot;@Id&amp;quot;&amp;gt;&amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:variable name=&amp;quot;SelectedInstructor&amp;quot; select=&amp;quot;/Trainings/Instructors/Instructor[@Id=$InstructorId]&amp;quot; /&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/Name&amp;quot;/&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:text&amp;gt; (&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/@Rating&amp;quot; /&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:text&amp;gt;)&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                              &amp;lt;br/&amp;gt;&lt;br /&gt;
                            &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;/tr&amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
                    &amp;lt;/table&amp;gt;&lt;br /&gt;
                    &amp;lt;br/&amp;gt;&lt;br /&gt;
                    &amp;lt;table&amp;gt;&lt;br /&gt;
                      &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                          &amp;lt;xsl:variable name=&amp;quot;VideoUrl&amp;quot; select=&amp;quot;$Training/VideoUrl&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;{$VideoUrl}&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                          &amp;lt;p&amp;gt;&lt;br /&gt;
                            &amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&lt;br /&gt;
                          &amp;lt;/p&amp;gt;&lt;br /&gt;
                          &amp;lt;p&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;$Training/Description&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                      &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;/table&amp;gt;&lt;br /&gt;
                  &amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
            &amp;lt;/ul&amp;gt;&lt;br /&gt;
          &amp;lt;/div&amp;gt;&lt;br /&gt;
          &amp;lt;br/&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
      &amp;lt;/body&amp;gt;&lt;br /&gt;
    &amp;lt;/html&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== HTML (transformeeritud) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/trainings.html Vaata eelneva transformatsiooni tulemust.]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;META http-equiv=&amp;quot;Content-Type&amp;quot; content=&amp;quot;text/html; charset=utf-8&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;SuperSportsClub - Trainings&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;style&amp;gt;&lt;br /&gt;
        body {&lt;br /&gt;
            background: BurlyWood;&lt;br /&gt;
            text-align: center;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        .section {&lt;br /&gt;
            text-align: left;&lt;br /&gt;
            width: 1000px;&lt;br /&gt;
            padding: 20px;&lt;br /&gt;
            background: Chocolate;&lt;br /&gt;
            margin: auto;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        table, th, td, .section {&lt;br /&gt;
            border: 1px solid black;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        th {&lt;br /&gt;
            text-align: left;&lt;br /&gt;
            padding-left: 10px;&lt;br /&gt;
            padding-right: 10px;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        td {&lt;br /&gt;
            text-align: center;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        p {&lt;br /&gt;
            text-align: justify;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        .description {&lt;br /&gt;
            vertical-align: top;&lt;br /&gt;
            padding: 10px;&lt;br /&gt;
        }&lt;br /&gt;
    &amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
    &amp;lt;h1&amp;gt;Trainings at SuperSportsClub&amp;lt;/h1&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Body&amp;amp;amp;Mind&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyBalance™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 13:30&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;1H15M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 2&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Minnie Mouse (4.6)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;31.03.2017 12:15&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;1H15M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 3&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Mickey Mouse (4.7)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/jJxA6vBjUqY&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                BODYBALANCE™ is the Yoga, Tai Chi, Pilates workout that builds flexibility and strength and leaves you feeling centered and calm. Based on a carefully structured series of stretches, moves and poses to music it creates a holistic workout that brings the body into a state of harmony and balance. This class will heighten your flexibility and inner strength creating a strong supple body from the inside out. Burn on average 390cals per hour.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;Yoga&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;25.03.2017 14:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Yoga Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Minnie Yogafier (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
                            28.03.2017 14:00&amp;lt;br&amp;gt;&amp;lt;div style=&amp;quot;color:Green&amp;quot;&amp;gt;&lt;br /&gt;
                                Special class!&lt;br /&gt;
                            &amp;lt;/div&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;1H20M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Yoga Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Minnie Yogafier (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/Nvlxn0EnmbM&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                Yoga is a group of physical, mental, and spiritual practices or disciplines which originated in ancient India.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Cardio&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyJam™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 16:10&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 3&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Donald Duck (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;01.04.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;45M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 5&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Goofy (3.9)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/8PTXyg9si_4&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                The Body Jam program is an addictive fusion of the latest dance styles to the hottest new sounds. This class isn’t just for dancers, it’s for everyone because the emphasis is put on not only having fun but also breaking a sweat. So grab a friend, get front and centre … you bring the attitude and we’ll bring the moves!&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Dance&amp;amp;amp;Fun&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyJam™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 16:10&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 3&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Donald Duck (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;01.04.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;45M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 5&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Goofy (3.9)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/8PTXyg9si_4&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                The Body Jam program is an addictive fusion of the latest dance styles to the hottest new sounds. This class isn’t just for dancers, it’s for everyone because the emphasis is put on not only having fun but also breaking a sweat. So grab a friend, get front and centre … you bring the attitude and we’ll bring the moves!&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;Zumba®&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;26.03.2017 15:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;55M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 2&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Zumbaschnegger (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;28.03.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 4&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Zumbaschnegger (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 2&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Zumbaschnegger (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/-ZB6XIkfxnQ&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                Zumba involves dance and aerobic movements performed to energetic music. The choreography incorporates hip-hop, soca, samba, salsa, merengue and mambo. Squats and lunges are also included.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Strength&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyPump™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;23.03.2017 13:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Main Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Schwarzenegger (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 13:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Main Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Schwarzenegger (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/zU_0XrdO3wo&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                BodyPump classes are 59 minutes long and contain eight separate muscle-group specific songs or &amp;quot;tracks&amp;quot; along with an opening warm up track and closing cool-down track. There are also 45-minute and 30-minute class formats. The classes are performed to music using free weights-plates, barbells and an aerobic step. Participants choose their weights based on the exercise and their personal goals. Major muscle groups are worked via series of compound and isolation-based exercises including squats, presses, dead lifts. The focus is towards muscle endurance by moving light weights at high repetitions, what Les Mills calls the Rep Effect.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;CoreStrength&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
                            23.03.2017 12:00&amp;lt;br&amp;gt;&amp;lt;div style=&amp;quot;color:Green&amp;quot;&amp;gt;&lt;br /&gt;
                                Special challenge!&lt;br /&gt;
                            &amp;lt;/div&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;2H&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Area 6&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Margaret Strengthener (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Area 6&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Kayla Weightlifter (4.8)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;05.04.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Area 6&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Kayla Weightlifter (4.8)&amp;lt;br&amp;gt;Margaret Strengthener (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/ZxTVmpvyUt8&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                CoreStrenght is a very hard workout! Not for beginners.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSLT (xml) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Selle transformatsiooniga luuakse uus [http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/schedule.xml XML fail], milles on treeningute andmed esitatud ühtse tunniplaani kujul. Algses failis erinevate elementide alla paigutatud andmed on nüüd tunniplaani alamelemendis kokku viidud. Sidumine on teostatud id-atribuutide abil. Tunniplaanis on ühes kohas kirjas treeningu nimi, stiil(id), koht, algusaeg, kestus, rühma suurus, instruktorid ja muu täiendav info.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&lt;br /&gt;
    xmlns:msxsl=&amp;quot;urn:schemas-microsoft-com:xslt&amp;quot; exclude-result-prefixes=&amp;quot;msxsl&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:output method=&amp;quot;xml&amp;quot; indent=&amp;quot;yes&amp;quot; cdata-section-elements=&amp;quot;Name Style Comment&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;/Trainings/Training&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:sort select=&amp;quot;Name&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:variable name=&amp;quot;SelectedTraining&amp;quot; select=&amp;quot;.&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;Schedule/ScheduleItem&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:sort select=&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;ScheduleItem&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:variable name=&amp;quot;VenueId&amp;quot; select=&amp;quot;@VenueId&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:variable name=&amp;quot;SelectedVenue&amp;quot; select=&amp;quot;/Trainings/Venues/Venue[@Id=$VenueId]&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:attribute name=&amp;quot;GroupSize&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;@GroupSize&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:value-of select=&amp;quot;@GroupSize&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:value-of select=&amp;quot;$SelectedVenue/@GroupSize&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
            &amp;lt;Venue&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$VenueId&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select=&amp;quot;$SelectedVenue&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/Venue&amp;gt;&lt;br /&gt;
            &amp;lt;Training&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$SelectedTraining/@Id&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:if test=&amp;quot;$SelectedTraining/@Licence&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:attribute name=&amp;quot;Licence&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:value-of select=&amp;quot;$SelectedTraining/@Licence&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
              &amp;lt;Name&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$SelectedTraining/Name&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/Name&amp;gt;&lt;br /&gt;
              &amp;lt;Styles&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:for-each select=&amp;quot;$SelectedTraining/Styles/Style&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:variable name=&amp;quot;StyleId&amp;quot; select=&amp;quot;@Id&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;Style&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:attribute name=&amp;quot;StyleId&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;$StyleId&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;/Trainings/Styles/Style[@Id=$StyleId]&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/Style&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
              &amp;lt;/Styles&amp;gt;&lt;br /&gt;
            &amp;lt;/Training&amp;gt;&lt;br /&gt;
            &amp;lt;Time&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:attribute name=&amp;quot;Duration&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;Time/@Duration&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select =&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/Time&amp;gt;&lt;br /&gt;
            &amp;lt;Instructors&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:for-each select=&amp;quot;Instructors/Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:variable name=&amp;quot;InstructorId&amp;quot; select=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:variable name=&amp;quot;SelectedInstructor&amp;quot; select=&amp;quot;/Trainings/Instructors/Instructor[@Id=$InstructorId]&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;Instructor&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;$InstructorId&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:attribute name=&amp;quot;Rating&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/@Rating&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                  &amp;lt;Name&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/Name&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/Name&amp;gt;&lt;br /&gt;
                &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
            &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:if test=&amp;quot;Comment&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;Comment&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;Comment&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/Comment&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
          &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XML (transformeeritud) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/schedule.xml Vaata eelneva transformatsiooni tulemust.]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Schedule&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;3&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot;&amp;gt;Hall 2&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;2&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyBalance™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-30T13:30:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;3&amp;quot; Rating=&amp;quot;4.6&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;2&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;3&amp;quot;&amp;gt;Hall 3&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;2&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyBalance™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-31T12:15:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;2&amp;quot; Rating=&amp;quot;4.7&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Mickey Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;4&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;3&amp;quot;&amp;gt;Hall 3&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;3&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyJam™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;![CDATA[Cardio]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T16:10:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;4&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Donald Duck]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;5&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;5&amp;quot;&amp;gt;Hall 5&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;3&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyJam™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;![CDATA[Cardio]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT45M&amp;quot;&amp;gt;2017-04-01T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;5&amp;quot; Rating=&amp;quot;3.9&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Goofy]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;7&amp;quot; GroupSize=&amp;quot;45&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;1&amp;quot;&amp;gt;Main Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;4&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyPump™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-23T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;6&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Schwarzenegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;6&amp;quot; GroupSize=&amp;quot;45&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;1&amp;quot;&amp;gt;Main Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;4&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyPump™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;6&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Schwarzenegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;8&amp;quot; GroupSize=&amp;quot;10&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot;&amp;gt;Area 6&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT2H&amp;quot;&amp;gt;2017-03-23T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;9&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Margaret Strengthener]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
    &amp;lt;Comment&amp;gt;&amp;lt;![CDATA[&lt;br /&gt;
          Special challenge!&lt;br /&gt;
        ]]&amp;gt;&amp;lt;/Comment&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;9&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot;&amp;gt;Area 6&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;8&amp;quot; Rating=&amp;quot;4.8&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Kayla Weightlifter]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;10&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot;&amp;gt;Area 6&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-04-05T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;8&amp;quot; Rating=&amp;quot;4.8&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Kayla Weightlifter]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;9&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Margaret Strengthener]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;11&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot;&amp;gt;Hall 2&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT55M&amp;quot;&amp;gt;2017-03-26T15:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;12&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;4&amp;quot;&amp;gt;Hall 4&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-28T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;13&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot;&amp;gt;Hall 2&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;1&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;7&amp;quot;&amp;gt;Yoga Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Yoga]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-25T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;1&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Yogafier]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;14&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;7&amp;quot;&amp;gt;Yoga Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Yoga]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT1H20M&amp;quot;&amp;gt;2017-03-28T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;1&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Yogafier]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
    &amp;lt;Comment&amp;gt;&amp;lt;![CDATA[&lt;br /&gt;
          Special class!&lt;br /&gt;
        ]]&amp;gt;&amp;lt;/Comment&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
&amp;lt;/Schedule&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus ==&lt;br /&gt;
Angular JS &#039;&#039;single page application&#039;&#039; eelnevalt kirjeldatud veebiteenusele. Sisse logimata saab kuvada spordiklubi tunniplaani nädalate kaupa, treeninguliike stiilide kaupa ja treenereid. Võimalik on liituda teenusega ja registreeruda treeningutele, samuti registreeringuid tühistada nii otse tunniplaanist kui ka registreeringute lehel. Esialgu põhineb süsteem ühel spordiklubil. Kasutamise eelduseks on tunniplaani olemasolu andmebaasis.&lt;br /&gt;
&lt;br /&gt;
Autentimine on lahendatud tokenipõhiselt. Eeskuju ja põhjana kasutasime näidisrakendust, mille juhend ja lähtekood on leitav [http://bitoftech.net/2014/06/09/angularjs-token-authentication-using-asp-net-web-api-2-owin-asp-net-identity/ siit].&lt;br /&gt;
&lt;br /&gt;
== Lähtekood ==&lt;br /&gt;
Eksamiks valminud veebiteenuse ja klientrakenduse kokkupakitult allalaadimiseks klõpsa [https://drive.google.com/open?id=0B84njRSbVLUtTWx5ZkZsdDBJZDQ sellel lingil]. WebApi ja Angular JS klient on eraldi lahendustes. Kliendi testimiseks brauseris (Chrome, Firefox vm) tuleb eelnevalt käivitada ka veebiteenus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;NB! Võib juhtuda, et WebApi esmakordsel käivitamisel loodavasse andmebaasi kõiki andmeid (tunniplaani ja registreerimisi jooksvasse nädalasse) ei lisandu. Sellisel juhul kustuta tekkinud andmebaas ja käivita kõigepealt samas lahenduses olev konsoolirakendus.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Retsensioonid ==&lt;br /&gt;
&lt;br /&gt;
# [https://wiki.itcollege.ee/index.php/Talk:JRT#Hinnang_meeskonna_JRT_esitatud_XML-failidele JRT meeskonna XML/XSD/XSLT retsensioon ]&lt;br /&gt;
# [https://wiki.itcollege.ee/index.php/Talk:JRT#Hinnang_meeskonna_JRT_esitatud_veebiteenusele JRT meeskonna veebiteenuse retsensioon ]&lt;br /&gt;
# [https://wiki.itcollege.ee/index.php/Talk:JRT#Hinnang_meeskonna_JRT_esitatud_klientrakendusele JRT meeskonna klientrakenduse retsensioon ]&lt;br /&gt;
&lt;br /&gt;
== Log ==&lt;br /&gt;
* 03.03.17 Esimene kohtumine. Idee.&lt;br /&gt;
* 17.03.17 Osa XMList valmis, osa XSLT-st valmis.&lt;br /&gt;
* 18.03.17 Teine kohtumine. XMLi täiendamine, esimene ülekäimine XSD-s.&lt;br /&gt;
* 19.03.17 XML/XSLT/XSD täiendamine ja lõpetamine.&lt;br /&gt;
* 20.03.17 XML fail, skeemifail ja stiilifailid esitatud. Projekti esimese etapi lõpp. Kevade algus.&lt;br /&gt;
* 26.03.17 XML/XSLT/XSD retsensioon esitatud.&lt;br /&gt;
* 16.04.17 Veebiteenuse analüüsi koostamine.&lt;br /&gt;
* 17.04.17 Esialgne veebiteenuse analüüs ja kavand valmis.&lt;br /&gt;
* 19.04.17 Alustasime veebiteenusega, koostegemine: Domain, DAL, Interfaces, Repostitories. Testimine konsoolis.&lt;br /&gt;
* 24.04.17 Veebiteenuse koostegemine, 2. kord: Domaini täiendamine.&lt;br /&gt;
* 29.04.17 Veebiteenuse koostegemine, 3. kord: Interfaces, Repositories, Factory + UOW. Testimine konsoolis.&lt;br /&gt;
* 01.05.17 Andmebaasi täitmine testandmetega varasemas faasis loodud XML failist.&lt;br /&gt;
* 02.05.17 Veebiteenuse koostegemine, 4. kord: alustasime BLi ja WebApi ehitamist. GET päringud.&lt;br /&gt;
* 09.05.17 Veebiteenuse koostegemine, 5. kord: lisasime Identity.&lt;br /&gt;
* 11.05.17 Veebiteenuse koostegemine, 6. kord: WebApi arendamine. POST, PUT ja DELETE päringud.&lt;br /&gt;
* 15.05.17 Veebiteenuse koostegemine, 7. kord: WebApi arendamine. Lisasime  api kontrollereid.&lt;br /&gt;
* 16.05.17 Veebiteenuse koostegemine, 8. kord: WebApi arendamine. Identity kontroll Fiddleri ja Postmaniga.&lt;br /&gt;
* 20.05.17 Klientrakenduse koostegemine, 1. kord. Testklient.&lt;br /&gt;
* 25.05.17 Klientrakenduse koostegemine, 2. kord. Klientrakenduse arendamine. Angular JS NgApp (katse MVC kontrolleritega).&lt;br /&gt;
* 01.06.17 Klientrakenduse koostegemine, 3. kord. Klientrakenduse arendamine. Angular JS NgSPA (üheleherakenduse katsetamine).&lt;br /&gt;
* 03.06.17 - 11.06.17 Klientrakenduse arendamine. Tokenipõhine autentimine. Veebiteenuse viimistlemine.&lt;br /&gt;
* 11.06.17 Lõpptähtaeg. Projekti esitlemine eksamil.&lt;br /&gt;
* 12.06.17 Teiste lahenduste retsenseerimine.&lt;br /&gt;
* 13.06.17 Veebiteenuse ja klientrakenduse retsensioonid esitatud. Selleks korraks kõik.&lt;/div&gt;</summary>
		<author><name>Otiks</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Team_SPOT&amp;diff=123584</id>
		<title>Team SPOT</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Team_SPOT&amp;diff=123584"/>
		<updated>2017-06-13T20:52:44Z</updated>

		<summary type="html">&lt;p&gt;Otiks: /* Log */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://wiki.itcollege.ee/index.php/Kodut%C3%B6%C3%B6_aines_%22V%C3%B5rgurakendused_II:_hajuss%C3%BCsteemide_ehitamine%22_2017 Kodutöö aines &amp;quot;Võrgurakendused II: hajussüsteemide ehitamine&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
[https://projectspot.visualstudio.com/PROJECTSPOT Projekti repositoorium (avaneb ainult liikmetele)]&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==Liikmed==&lt;br /&gt;
*Sigrid Pachel&lt;br /&gt;
*Oliver Tiks&lt;br /&gt;
&lt;br /&gt;
==Idee==&lt;br /&gt;
Mõttes on luua spordiklubi(de) veebiteenus ja klientrakendus, mis võimaldaks saada infot pakutavate treeningute kohta, sisestada ja kuvada tunniplaani andmeid, registreerida osalejaid tundidesse ning teha muid asjakohaseid tegevusi nii klubi(de) personalil, liikmetel kui ka juhukasutajatel.&lt;br /&gt;
&lt;br /&gt;
==Veebiteenuse analüüs==&lt;br /&gt;
SPOTi veebiteenus võimaldab saada infot erinevate klubide treeningute kohta ja end neisse registreerida. Kasutaja saab teavet, kus ja millal treeningud toimuvad (tunniplaan), mida treeningus täpsemalt tehakse, mis stiiliga on tegemist, kes on treener, kui palju üks kord maksab jms info. Kasutajakontoga liikmel on võimalik end registreerida soovitud tundi ja hallata oma registreeringuid (muuta, tühistada).&lt;br /&gt;
&lt;br /&gt;
Spordiklubide infot haldavad süsteemi administraatorid, kes saavad lisada, muuta ja kustutada kõike sprodiklubiga seonduvat. Erinevaid treeninguid ja nendega seotud konkreetset infot saavad lisada ja hallata treenerid või spordiklubi esindajad.&lt;br /&gt;
&lt;br /&gt;
Projekti realiseerimiseks kasutame REST arhitektuuri ja ASP.NET MVC Web API tehnoloogiat.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Üldine plaan:&#039;&#039;&#039;&lt;br /&gt;
* esialgu üks kett (laienemise võimalusega)&lt;br /&gt;
* mitu klubi (asukoht, saalid-treeningualad, võimalikud lisatingimused)&lt;br /&gt;
* treeningute info (stiilid ehk kontseptid, litsentsid, …)&lt;br /&gt;
* tunniplaan (aeg, koht, instruktorid, max osalejate arv, ühe korra hind)&lt;br /&gt;
* registratuur (treeningutest osavõtjad)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kasutajad (rollid):&#039;&#039;&#039;&lt;br /&gt;
* administraatorid (saavad teha muudatusi)&lt;br /&gt;
* treenerid (info kvalifikatsiooni, litsentside kohta, õigus treeninguid lisada) &lt;br /&gt;
* liikmed (saavad treeningutele registreeruda)&lt;br /&gt;
* ülejäänud (näevad klubide ja treeningute infot ning tunniplaani)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Peaks olema:&#039;&#039;&#039;&lt;br /&gt;
* kasutajate loomine&lt;br /&gt;
* kasutajate tuvastamine ja haldamine&lt;br /&gt;
* kasutajate ja kasutusstatistika logimine&lt;br /&gt;
* teenuse poole pöördumiste arvu piiramine ja piirangute haldamine&lt;br /&gt;
* klubide, treenerite ja treeningute info väljastamine&lt;br /&gt;
* tunniplaani info väljastamine&lt;br /&gt;
* treeningutesse registreerimine&lt;br /&gt;
* registreeringu tühistamine&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Võiks olla:&#039;&#039;&#039;&lt;br /&gt;
* klubide, treenerite, treeningute lisamine ja muutmine&lt;br /&gt;
* tunniplaanis treeningute tühistamine&lt;br /&gt;
* sisestatud andmete kustutamine (pehmelt)&lt;br /&gt;
* rollide-õiguste määramine (admin)&lt;br /&gt;
* asukohad mitmes riigis&lt;br /&gt;
* kliendipaketid, arveldus&lt;br /&gt;
* kontaktide tsentraliseeritud haldus&lt;br /&gt;
* sisselogimine läbi Google’i, Facebooki vmt teenuse&lt;br /&gt;
&lt;br /&gt;
===Andmebaasi skeem (lihtsustatud)===&lt;br /&gt;
&lt;br /&gt;
[[File:SPOTService ERD.JPG|border|SPOT Service ERD]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Märkus: olemite atribuutidest on välja toodud ainult peamised.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====Tabelite kirjeldused====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kasutajahaldus*:&#039;&#039;&#039;&lt;br /&gt;
* User - kasutajate andmed&lt;br /&gt;
* Role - rollid, millega määratakse kasutajate õigused (&amp;quot;Admin&amp;quot;, &amp;quot;Trainer&amp;quot;, ...)&lt;br /&gt;
* UserRole - kasutajate sidumine rolli(de)ga&lt;br /&gt;
* UserLogin - muu teenuse kaudu sisselogimiseks&lt;br /&gt;
* UserClaim - muu teenuse kaudu sisselogimiseks&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;&#039;&#039;Kasutajahalduse süsteem toetub Asp.Net Identity valmislahendusele, mida on täiendanud A. Käver.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Klubid:&#039;&#039;&#039;&lt;br /&gt;
* Chain (optional) - spordiklubikettide info&lt;br /&gt;
* Location - spordiklubi/-rajatise asukoht linna/asula täpsusega&lt;br /&gt;
* Facility - spordiklubi/-rajatise andmed, seotud asukohaga ja vajadusel ketiga.&lt;br /&gt;
* Venue - spordiklubis/-rajatises kasutatavad saalid ja muud treeningualad&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Treeningud:&#039;&#039;&#039;&lt;br /&gt;
* Concept (Style) - treeningustiilid ehk kontseptid&lt;br /&gt;
* Licenser (optional) - treeninguliikide litsentsid (kui on)&lt;br /&gt;
* Training - treeninguliikide andmed, seotud stiili ja vajadusel litsentsiga&lt;br /&gt;
* Trainer (User (role: Trainer) + Training) - treeninguliikide sidumine treeneritega&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tunniplaan:&#039;&#039;&#039;&lt;br /&gt;
* ScheduleItem - treeningud tunniplaanis&lt;br /&gt;
* Instructor (User (role: Trainer) + ScheduleItem) - tundide juhendajad (võib olla mitu)&lt;br /&gt;
* Registration (ScheduleItem + User (role: any)) - tundidesse tehtud registreeringud&lt;br /&gt;
&lt;br /&gt;
== XML / XSD / XSLT==&lt;br /&gt;
Projekti esimeses etapis sai loodud XML andmefail, mille ülesehitus on paika pandud XSD skeemifailis. Lisaks on olemas kaks stiilifaili: esimene neist transformeerib andmed HTML-kujule, et kuvada infot  veebilehel, teine tekitab samade andmete esitamiseks uue struktuuriga XML faili.&lt;br /&gt;
&lt;br /&gt;
[https://drive.google.com/open?id=0B84njRSbVLUtd0U4aEJXOUhOTG8 Lae failid alla.] &lt;br /&gt;
&lt;br /&gt;
=== XML ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Fail sisaldab andmeid ühes spordiklubis pakutavate treeningute kohta. Andmed on esitatud treeninguliikide kaupa, mille juurde on lisatud ka vastava treeninguliigi tunniplaan. Treeninguliikidel on nimi ja kirjeldus ning vajadusel ära märgitud ka litsents. Failis on eraldi välja toodud treeningustiilid, instruktorid ja ruumid, kus treeningud toimuvad. Iga treeninguliik kuulub ühe või mitme stiili alla. Instruktoritel on tagasiside põhjal saadud hinne. Treeninguruumidel on vaikimisi määratud mahutavus. Tunniplaanis on ära toodud treeningu koht, algusaeg ja kestus ning instruktorid. Vajadusel saab eraldi määrata ka treeningurühma suuruse, kui see erineb tavalisest ruumi mahutavusest. Ka on võimalik treeningutunnile lisada kommentaar. Erinevate elementide andmed on omavahel seotud id-atribuutidega.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;?xml-stylesheet type=&amp;quot;text/xsl&amp;quot; href=&amp;quot;trainingsToHtml.xslt&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Trainings&amp;gt;&lt;br /&gt;
  &amp;lt;Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;![CDATA[Cardio]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
  &amp;lt;/Styles&amp;gt;&lt;br /&gt;
  &amp;lt;Instructors&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;1&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Yogafier]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;2&amp;quot; Rating=&amp;quot;4.7&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Mickey Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;3&amp;quot; Rating=&amp;quot;4.6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;4&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Donald Duck]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;5&amp;quot; Rating=&amp;quot;3.9&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Goofy]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;6&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Schwarzenegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;8&amp;quot; Rating=&amp;quot;4.8&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Kayla Weightlifter]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;9&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Margaret Strengthener]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
  &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;Venues&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;1&amp;quot; GroupSize=&amp;quot;45&amp;quot;&amp;gt;&amp;lt;![CDATA[Main Hall]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 2]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;3&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 3]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;4&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 4]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;5&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 5]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&amp;lt;![CDATA[Area 6]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;7&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&amp;lt;![CDATA[Yoga Hall]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
  &amp;lt;/Venues&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Yoga]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[Yoga is a group of physical, mental, and spiritual practices or disciplines which originated in ancient India. ]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;1&amp;quot; VenueId=&amp;quot;7&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-25T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;14&amp;quot; VenueId=&amp;quot;7&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT1H20M&amp;quot;&amp;gt;2017-03-28T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Comment&amp;gt;&lt;br /&gt;
          &amp;lt;![CDATA[Special class!]]&amp;gt;&lt;br /&gt;
        &amp;lt;/Comment&amp;gt; &lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/Nvlxn0EnmbM&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;  &lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;2&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyBalance™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[BODYBALANCE™ is the Yoga, Tai Chi, Pilates workout that builds flexibility and strength and leaves you feeling centered and calm. Based on a carefully structured series of stretches, moves and poses to music it creates a holistic workout that brings the body into a state of harmony and balance. This class will heighten your flexibility and inner strength creating a strong supple body from the inside out. Burn on average 390cals per hour.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;2&amp;quot; VenueId=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-31T12:15:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;3&amp;quot; VenueId=&amp;quot;2&amp;quot; &amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-30T13:30:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;3&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/jJxA6vBjUqY&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;3&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyJam™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;4&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[The Body Jam program is an addictive fusion of the latest dance styles to the hottest new sounds. This class isn’t just for dancers, it’s for everyone because the emphasis is put on not only having fun but also breaking a sweat. So grab a friend, get front and centre … you bring the attitude and we’ll bring the moves!]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;4&amp;quot;  VenueId=&amp;quot;3&amp;quot; &amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T16:10:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;4&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;5&amp;quot; VenueId=&amp;quot;5&amp;quot; &amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT45M&amp;quot;&amp;gt;2017-04-01T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;5&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/8PTXyg9si_4&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;4&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyPump™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[BodyPump classes are 59 minutes long and contain eight separate muscle-group specific songs or &amp;quot;tracks&amp;quot; along with an opening warm up track and closing cool-down track. There are also 45-minute and 30-minute class formats. The classes are performed to music using free weights-plates, barbells and an aerobic step. Participants choose their weights based on the exercise and their personal goals. Major muscle groups are worked via series of compound and isolation-based exercises including squats, presses, dead lifts. The focus is towards muscle endurance by moving light weights at high repetitions, what Les Mills calls the Rep Effect.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;3&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;6&amp;quot; VenueId=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;6&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;7&amp;quot; VenueId=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-23T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;6&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/zU_0XrdO3wo&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[CoreStrenght is a very hard workout! Not for beginners.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;3&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;8&amp;quot; VenueId=&amp;quot;6&amp;quot; GroupSize=&amp;quot;10&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT2H&amp;quot;&amp;gt;2017-03-23T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;9&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Comment&amp;gt;&lt;br /&gt;
          &amp;lt;![CDATA[Special challenge!]]&amp;gt;&lt;br /&gt;
        &amp;lt;/Comment&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;9&amp;quot; VenueId=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;8&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;10&amp;quot; VenueId=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-04-05T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;8&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;9&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/ZxTVmpvyUt8&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[Zumba involves dance and aerobic movements performed to energetic music. The choreography incorporates hip-hop, soca, samba, salsa, merengue and mambo. Squats and lunges are also included.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;4&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;11&amp;quot; VenueId=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT55M&amp;quot;&amp;gt;2017-03-26T15:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;12&amp;quot; VenueId=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-28T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;13&amp;quot; VenueId=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/-ZB6XIkfxnQ&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
&amp;lt;/Trainings&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSD ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Skeemifail kontrollib eelnevas andmefailis esitatud andmete vastavust kokkulepitud formaadile, samuti õigete andmetüüpide kasutamist. Alamelemendi id-atribuudi väärtus peab olema iga elemendirühma lõikes unikaalne. Kohustuslike elementide ja atribuutide kõrval on ka mõned (nt kommentaar), mille olemasolu pole alati tarvilik. Teatud puhkudel on piiratud maksimaalset elementide arvu (nt treeningutunni algusaeg). Faili üldine struktuur on kindel, aga alati pole alamelementide järjekord oluline (nt treeninguliigi puhul).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xs:schema attributeFormDefault=&amp;quot;unqualified&amp;quot; elementFormDefault=&amp;quot;qualified&amp;quot; xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xs:element name=&amp;quot;Trainings&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Styles&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Style&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
          &amp;lt;xs:unique name=&amp;quot;UniqueStyleId&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xs:selector xpath=&amp;quot;Style&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Instructors&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;Name&amp;quot; type=&amp;quot;xs:string&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:attribute name=&amp;quot;Rating&amp;quot; type=&amp;quot;xs:decimal&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
          &amp;lt;xs:unique name=&amp;quot;UniqueInstructorId&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xs:selector xpath=&amp;quot;Instructor&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Venues&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Venue&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:attribute name=&amp;quot;GroupSize&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
          &amp;lt;xs:unique name=&amp;quot;UniqueVenueId&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xs:selector xpath=&amp;quot;Venue&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Training&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:all&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Description&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Styles&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Style&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Schedule&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;ScheduleItem&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:all&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element  maxOccurs=&amp;quot;1&amp;quot; name=&amp;quot;Time&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:extension base=&amp;quot;xs:dateTime&amp;quot;&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:attribute name=&amp;quot;Duration&amp;quot; type=&amp;quot;xs:duration&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element name=&amp;quot;Instructors&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                    &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                                      &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                                        &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                                      &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                                    &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                                  &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; name=&amp;quot;Comment&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:all&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;VenueId&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;GroupSize&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;optional&amp;quot; /&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;VideoUrl&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:all&amp;gt;&lt;br /&gt;
            &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xs:attribute name=&amp;quot;Licence&amp;quot; type=&amp;quot;xs:string&amp;quot; use=&amp;quot;optional&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
    &amp;lt;xs:unique name=&amp;quot;UniqueTrainingId&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xs:selector xpath=&amp;quot;Training&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
    &amp;lt;xs:unique name=&amp;quot;UniqueScheduleItemId&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xs:selector xpath=&amp;quot;Training/Schedule/ScheduleItem&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSLT (html) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Selles transformatsioonifailis on kirjeldatud XML failis olevate andmete [http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/trainings.xml  kuvamise viis veebilehel]. Treeninguliigid on jaotatud stiiliblokkidesse (mõni treening kuulub mitme stiili alla). Iga treeninguliigi all on tabeli kujul esitatud tunniplaan ning lisatud näidisvideo ja kirjeldus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot; xmlns:msxsl=&amp;quot;urn:schemas-microsoft-com:xslt&amp;quot; exclude-result-prefixes=&amp;quot;msxsl&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:output method=&amp;quot;html&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;html&amp;gt;&lt;br /&gt;
      &amp;lt;head&amp;gt;&lt;br /&gt;
        &amp;lt;title&amp;gt;SuperSportsClub - Trainings&amp;lt;/title&amp;gt;&lt;br /&gt;
        &amp;lt;style&amp;gt;&lt;br /&gt;
          body {&lt;br /&gt;
          background:BurlyWood;&lt;br /&gt;
          text-align: center;&lt;br /&gt;
          }&lt;br /&gt;
          .section {&lt;br /&gt;
          text-align:left;&lt;br /&gt;
          width:1000px;&lt;br /&gt;
          padding:20px;&lt;br /&gt;
          background:Chocolate;&lt;br /&gt;
          margin: auto;&lt;br /&gt;
          }&lt;br /&gt;
          table, th, td, .section {&lt;br /&gt;
          border: 1px solid black;&lt;br /&gt;
          }&lt;br /&gt;
          th {&lt;br /&gt;
          text-align:left;&lt;br /&gt;
          padding-left: 10px;&lt;br /&gt;
          padding-right: 10px;&lt;br /&gt;
          }&lt;br /&gt;
          td {&lt;br /&gt;
          text-align:center;&lt;br /&gt;
          }&lt;br /&gt;
          p {&lt;br /&gt;
          text-align:justify;&lt;br /&gt;
          }&lt;br /&gt;
          .description {&lt;br /&gt;
          vertical-align:top; &lt;br /&gt;
          padding:10px;&lt;br /&gt;
          }&lt;br /&gt;
        &amp;lt;/style&amp;gt;&lt;br /&gt;
      &amp;lt;/head&amp;gt;&lt;br /&gt;
      &amp;lt;body&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;Trainings at SuperSportsClub&amp;lt;/h1&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;/Trainings/Styles/Style&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:sort select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:variable select=&amp;quot;.&amp;quot; name=&amp;quot;SelectedStyle&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;section&amp;quot; &amp;gt;&lt;br /&gt;
            &amp;lt;h2&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select=&amp;quot;$SelectedStyle&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/h2&amp;gt;&lt;br /&gt;
            &amp;lt;ul&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:for-each select=&amp;quot;/Trainings/Training&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:sort select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:variable name=&amp;quot;Training&amp;quot; select=&amp;quot;.&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:if test=&amp;quot;Styles/Style/@Id = $SelectedStyle/@Id&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;&lt;br /&gt;
                    &amp;lt;h3&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;$Training/Name&amp;quot; /&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:if test=&amp;quot;$Training/@Licence&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:text&amp;gt; (&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:value-of select=&amp;quot;$Training/@Licence&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:text&amp;gt;)&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
                    &amp;lt;/h3&amp;gt;&lt;br /&gt;
                    &amp;lt;table&amp;gt;&lt;br /&gt;
                      &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                      &amp;lt;/tr&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:for-each select=&amp;quot;$Training/Schedule/ScheduleItem&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:sort select=&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:variable name=&amp;quot;StartTime&amp;quot; select=&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:variable name=&amp;quot;Duration&amp;quot; select=&amp;quot;$StartTime/@Duration&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;tr&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;150&amp;quot; &amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;concat(&lt;br /&gt;
                                            substring($StartTime, 9, 2), &lt;br /&gt;
                                            &#039;.&#039;, &lt;br /&gt;
                                            substring($StartTime, 6, 2), &lt;br /&gt;
                                            &#039;.&#039;, &lt;br /&gt;
                                            substring($StartTime, 1, 4),&lt;br /&gt;
                                            &#039; &#039;,&lt;br /&gt;
                                            substring($StartTime, 12, 2),&lt;br /&gt;
                                            &#039;:&#039;,&lt;br /&gt;
                                            substring($StartTime, 15, 2))&lt;br /&gt;
                                            &amp;quot; /&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:if test=&amp;quot;Comment&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;br/&amp;gt;&lt;br /&gt;
                              &amp;lt;div style=&amp;quot;color:Green&amp;quot;&amp;gt;&lt;br /&gt;
                                &amp;lt;xsl:value-of select=&amp;quot;Comment&amp;quot;/&amp;gt;&lt;br /&gt;
                              &amp;lt;/div&amp;gt;&lt;br /&gt;
                            &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;substring($Duration, 3, 6)&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:variable name=&amp;quot;VenueId&amp;quot; select=&amp;quot;@VenueId&amp;quot;/&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;/Trainings/Venues/Venue[@Id=$VenueId]&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:for-each select=&amp;quot;Instructors/Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:variable name=&amp;quot;InstructorId&amp;quot; select=&amp;quot;@Id&amp;quot;&amp;gt;&amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:variable name=&amp;quot;SelectedInstructor&amp;quot; select=&amp;quot;/Trainings/Instructors/Instructor[@Id=$InstructorId]&amp;quot; /&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/Name&amp;quot;/&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:text&amp;gt; (&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/@Rating&amp;quot; /&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:text&amp;gt;)&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                              &amp;lt;br/&amp;gt;&lt;br /&gt;
                            &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;/tr&amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
                    &amp;lt;/table&amp;gt;&lt;br /&gt;
                    &amp;lt;br/&amp;gt;&lt;br /&gt;
                    &amp;lt;table&amp;gt;&lt;br /&gt;
                      &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                          &amp;lt;xsl:variable name=&amp;quot;VideoUrl&amp;quot; select=&amp;quot;$Training/VideoUrl&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;{$VideoUrl}&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                          &amp;lt;p&amp;gt;&lt;br /&gt;
                            &amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&lt;br /&gt;
                          &amp;lt;/p&amp;gt;&lt;br /&gt;
                          &amp;lt;p&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;$Training/Description&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                      &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;/table&amp;gt;&lt;br /&gt;
                  &amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
            &amp;lt;/ul&amp;gt;&lt;br /&gt;
          &amp;lt;/div&amp;gt;&lt;br /&gt;
          &amp;lt;br/&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
      &amp;lt;/body&amp;gt;&lt;br /&gt;
    &amp;lt;/html&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== HTML (transformeeritud) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/trainings.html Vaata eelneva transformatsiooni tulemust.]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;META http-equiv=&amp;quot;Content-Type&amp;quot; content=&amp;quot;text/html; charset=utf-8&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;SuperSportsClub - Trainings&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;style&amp;gt;&lt;br /&gt;
        body {&lt;br /&gt;
            background: BurlyWood;&lt;br /&gt;
            text-align: center;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        .section {&lt;br /&gt;
            text-align: left;&lt;br /&gt;
            width: 1000px;&lt;br /&gt;
            padding: 20px;&lt;br /&gt;
            background: Chocolate;&lt;br /&gt;
            margin: auto;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        table, th, td, .section {&lt;br /&gt;
            border: 1px solid black;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        th {&lt;br /&gt;
            text-align: left;&lt;br /&gt;
            padding-left: 10px;&lt;br /&gt;
            padding-right: 10px;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        td {&lt;br /&gt;
            text-align: center;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        p {&lt;br /&gt;
            text-align: justify;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        .description {&lt;br /&gt;
            vertical-align: top;&lt;br /&gt;
            padding: 10px;&lt;br /&gt;
        }&lt;br /&gt;
    &amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
    &amp;lt;h1&amp;gt;Trainings at SuperSportsClub&amp;lt;/h1&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Body&amp;amp;amp;Mind&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyBalance™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 13:30&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;1H15M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 2&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Minnie Mouse (4.6)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;31.03.2017 12:15&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;1H15M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 3&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Mickey Mouse (4.7)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/jJxA6vBjUqY&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                BODYBALANCE™ is the Yoga, Tai Chi, Pilates workout that builds flexibility and strength and leaves you feeling centered and calm. Based on a carefully structured series of stretches, moves and poses to music it creates a holistic workout that brings the body into a state of harmony and balance. This class will heighten your flexibility and inner strength creating a strong supple body from the inside out. Burn on average 390cals per hour.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;Yoga&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;25.03.2017 14:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Yoga Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Minnie Yogafier (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
                            28.03.2017 14:00&amp;lt;br&amp;gt;&amp;lt;div style=&amp;quot;color:Green&amp;quot;&amp;gt;&lt;br /&gt;
                                Special class!&lt;br /&gt;
                            &amp;lt;/div&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;1H20M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Yoga Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Minnie Yogafier (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/Nvlxn0EnmbM&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                Yoga is a group of physical, mental, and spiritual practices or disciplines which originated in ancient India.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Cardio&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyJam™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 16:10&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 3&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Donald Duck (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;01.04.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;45M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 5&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Goofy (3.9)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/8PTXyg9si_4&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                The Body Jam program is an addictive fusion of the latest dance styles to the hottest new sounds. This class isn’t just for dancers, it’s for everyone because the emphasis is put on not only having fun but also breaking a sweat. So grab a friend, get front and centre … you bring the attitude and we’ll bring the moves!&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Dance&amp;amp;amp;Fun&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyJam™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 16:10&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 3&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Donald Duck (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;01.04.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;45M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 5&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Goofy (3.9)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/8PTXyg9si_4&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                The Body Jam program is an addictive fusion of the latest dance styles to the hottest new sounds. This class isn’t just for dancers, it’s for everyone because the emphasis is put on not only having fun but also breaking a sweat. So grab a friend, get front and centre … you bring the attitude and we’ll bring the moves!&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;Zumba®&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;26.03.2017 15:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;55M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 2&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Zumbaschnegger (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;28.03.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 4&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Zumbaschnegger (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 2&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Zumbaschnegger (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/-ZB6XIkfxnQ&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                Zumba involves dance and aerobic movements performed to energetic music. The choreography incorporates hip-hop, soca, samba, salsa, merengue and mambo. Squats and lunges are also included.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Strength&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyPump™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;23.03.2017 13:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Main Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Schwarzenegger (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 13:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Main Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Schwarzenegger (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/zU_0XrdO3wo&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                BodyPump classes are 59 minutes long and contain eight separate muscle-group specific songs or &amp;quot;tracks&amp;quot; along with an opening warm up track and closing cool-down track. There are also 45-minute and 30-minute class formats. The classes are performed to music using free weights-plates, barbells and an aerobic step. Participants choose their weights based on the exercise and their personal goals. Major muscle groups are worked via series of compound and isolation-based exercises including squats, presses, dead lifts. The focus is towards muscle endurance by moving light weights at high repetitions, what Les Mills calls the Rep Effect.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;CoreStrength&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
                            23.03.2017 12:00&amp;lt;br&amp;gt;&amp;lt;div style=&amp;quot;color:Green&amp;quot;&amp;gt;&lt;br /&gt;
                                Special challenge!&lt;br /&gt;
                            &amp;lt;/div&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;2H&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Area 6&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Margaret Strengthener (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Area 6&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Kayla Weightlifter (4.8)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;05.04.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Area 6&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Kayla Weightlifter (4.8)&amp;lt;br&amp;gt;Margaret Strengthener (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/ZxTVmpvyUt8&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                CoreStrenght is a very hard workout! Not for beginners.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSLT (xml) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Selle transformatsiooniga luuakse uus [http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/schedule.xml XML fail], milles on treeningute andmed esitatud ühtse tunniplaani kujul. Algses failis erinevate elementide alla paigutatud andmed on nüüd tunniplaani alamelemendis kokku viidud. Sidumine on teostatud id-atribuutide abil. Tunniplaanis on ühes kohas kirjas treeningu nimi, stiil(id), koht, algusaeg, kestus, rühma suurus, instruktorid ja muu täiendav info.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&lt;br /&gt;
    xmlns:msxsl=&amp;quot;urn:schemas-microsoft-com:xslt&amp;quot; exclude-result-prefixes=&amp;quot;msxsl&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:output method=&amp;quot;xml&amp;quot; indent=&amp;quot;yes&amp;quot; cdata-section-elements=&amp;quot;Name Style Comment&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;/Trainings/Training&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:sort select=&amp;quot;Name&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:variable name=&amp;quot;SelectedTraining&amp;quot; select=&amp;quot;.&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;Schedule/ScheduleItem&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:sort select=&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;ScheduleItem&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:variable name=&amp;quot;VenueId&amp;quot; select=&amp;quot;@VenueId&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:variable name=&amp;quot;SelectedVenue&amp;quot; select=&amp;quot;/Trainings/Venues/Venue[@Id=$VenueId]&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:attribute name=&amp;quot;GroupSize&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;@GroupSize&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:value-of select=&amp;quot;@GroupSize&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:value-of select=&amp;quot;$SelectedVenue/@GroupSize&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
            &amp;lt;Venue&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$VenueId&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select=&amp;quot;$SelectedVenue&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/Venue&amp;gt;&lt;br /&gt;
            &amp;lt;Training&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$SelectedTraining/@Id&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:if test=&amp;quot;$SelectedTraining/@Licence&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:attribute name=&amp;quot;Licence&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:value-of select=&amp;quot;$SelectedTraining/@Licence&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
              &amp;lt;Name&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$SelectedTraining/Name&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/Name&amp;gt;&lt;br /&gt;
              &amp;lt;Styles&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:for-each select=&amp;quot;$SelectedTraining/Styles/Style&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:variable name=&amp;quot;StyleId&amp;quot; select=&amp;quot;@Id&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;Style&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:attribute name=&amp;quot;StyleId&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;$StyleId&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;/Trainings/Styles/Style[@Id=$StyleId]&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/Style&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
              &amp;lt;/Styles&amp;gt;&lt;br /&gt;
            &amp;lt;/Training&amp;gt;&lt;br /&gt;
            &amp;lt;Time&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:attribute name=&amp;quot;Duration&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;Time/@Duration&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select =&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/Time&amp;gt;&lt;br /&gt;
            &amp;lt;Instructors&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:for-each select=&amp;quot;Instructors/Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:variable name=&amp;quot;InstructorId&amp;quot; select=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:variable name=&amp;quot;SelectedInstructor&amp;quot; select=&amp;quot;/Trainings/Instructors/Instructor[@Id=$InstructorId]&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;Instructor&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;$InstructorId&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:attribute name=&amp;quot;Rating&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/@Rating&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                  &amp;lt;Name&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/Name&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/Name&amp;gt;&lt;br /&gt;
                &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
            &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:if test=&amp;quot;Comment&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;Comment&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;Comment&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/Comment&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
          &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XML (transformeeritud) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/schedule.xml Vaata eelneva transformatsiooni tulemust.]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Schedule&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;3&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot;&amp;gt;Hall 2&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;2&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyBalance™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-30T13:30:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;3&amp;quot; Rating=&amp;quot;4.6&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;2&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;3&amp;quot;&amp;gt;Hall 3&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;2&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyBalance™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-31T12:15:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;2&amp;quot; Rating=&amp;quot;4.7&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Mickey Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;4&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;3&amp;quot;&amp;gt;Hall 3&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;3&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyJam™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;![CDATA[Cardio]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T16:10:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;4&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Donald Duck]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;5&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;5&amp;quot;&amp;gt;Hall 5&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;3&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyJam™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;![CDATA[Cardio]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT45M&amp;quot;&amp;gt;2017-04-01T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;5&amp;quot; Rating=&amp;quot;3.9&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Goofy]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;7&amp;quot; GroupSize=&amp;quot;45&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;1&amp;quot;&amp;gt;Main Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;4&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyPump™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-23T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;6&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Schwarzenegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;6&amp;quot; GroupSize=&amp;quot;45&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;1&amp;quot;&amp;gt;Main Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;4&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyPump™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;6&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Schwarzenegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;8&amp;quot; GroupSize=&amp;quot;10&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot;&amp;gt;Area 6&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT2H&amp;quot;&amp;gt;2017-03-23T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;9&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Margaret Strengthener]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
    &amp;lt;Comment&amp;gt;&amp;lt;![CDATA[&lt;br /&gt;
          Special challenge!&lt;br /&gt;
        ]]&amp;gt;&amp;lt;/Comment&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;9&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot;&amp;gt;Area 6&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;8&amp;quot; Rating=&amp;quot;4.8&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Kayla Weightlifter]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;10&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot;&amp;gt;Area 6&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-04-05T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;8&amp;quot; Rating=&amp;quot;4.8&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Kayla Weightlifter]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;9&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Margaret Strengthener]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;11&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot;&amp;gt;Hall 2&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT55M&amp;quot;&amp;gt;2017-03-26T15:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;12&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;4&amp;quot;&amp;gt;Hall 4&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-28T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;13&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot;&amp;gt;Hall 2&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;1&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;7&amp;quot;&amp;gt;Yoga Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Yoga]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-25T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;1&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Yogafier]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;14&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;7&amp;quot;&amp;gt;Yoga Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Yoga]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT1H20M&amp;quot;&amp;gt;2017-03-28T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;1&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Yogafier]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
    &amp;lt;Comment&amp;gt;&amp;lt;![CDATA[&lt;br /&gt;
          Special class!&lt;br /&gt;
        ]]&amp;gt;&amp;lt;/Comment&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
&amp;lt;/Schedule&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus ==&lt;br /&gt;
Angular JS &#039;&#039;single page application&#039;&#039; eelnevalt kirjeldatud veebiteenusele. Sisse logimata saab kuvada spordiklubi tunniplaani nädalate kaupa, treeninguliike stiilide kaupa ja treenereid. Võimalik on liituda teenusega ja registreeruda treeningutele, samuti registreeringuid tühistada nii otse tunniplaanist kui ka registreeringute lehel. Esialgu põhineb süsteem ühel spordiklubil. Kasutamise eelduseks on tunniplaani olemasolu andmebaasis.&lt;br /&gt;
&lt;br /&gt;
Autentimine on lahendatud tokenipõhiselt. Eeskuju ja põhjana kasutasime näidisrakendust, mille juhend ja lähtekood on leitav [http://bitoftech.net/2014/06/09/angularjs-token-authentication-using-asp-net-web-api-2-owin-asp-net-identity/ siit].&lt;br /&gt;
&lt;br /&gt;
== Lähtekood ==&lt;br /&gt;
Eksamiks valminud veebiteenuse ja klientrakenduse kokkupakitult allalaadimiseks klõpsa [https://drive.google.com/open?id=0B84njRSbVLUtTWx5ZkZsdDBJZDQ sellel lingil]. WebApi ja Angular JS klient on eraldi lahendustes. Kliendi testimiseks brauseris (Chrome, Firefox vm) tuleb eelnevalt käivitada ka veebiteenus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;NB! Võib juhtuda, et WebApi esmakordsel käivitamisel loodavasse andmebaasi kõiki andmeid (tunniplaani ja registreerimisi jooksvasse nädalasse) ei lisandu. Sellisel juhul kustuta tekkinud andmebaas ja käivita kõigepealt samas lahenduses olev konsoolirakendus.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Retsensioonid ==&lt;br /&gt;
&lt;br /&gt;
# [https://wiki.itcollege.ee/index.php/Talk:JRT#Hinnang_meeskonna_JRT_esitatud_XML-failidele JRT meeskonna XML/XSD/XSLT retsensioon ]&lt;br /&gt;
# [https://wiki.itcollege.ee/index.php/Talk:JRT#Hinnang_meeskonna_JRT_esitatud_veebiteenusele JRT meeskonna veebiteenuse retsensioon ]&lt;br /&gt;
# [https://wiki.itcollege.ee/index.php/Talk:JRT#Hinnang_meeskonna_JRT_esitatud_klientrakendusele JRT meeskonna klientrakenduse retsensioon ]&lt;br /&gt;
&lt;br /&gt;
== Log ==&lt;br /&gt;
* 03.03.17 Esimene kohtumine. Idee.&lt;br /&gt;
* 17.03.17 Osa XMList valmis, osa XSLT-st valmis.&lt;br /&gt;
* 18.03.17 Teine kohtumine. XMLi täiendamine, esimene ülekäimine XSD-s.&lt;br /&gt;
* 19.03.17 XML/XSLT/XSD täiendamine ja lõpetamine.&lt;br /&gt;
* 20.03.17 XML fail, skeemifail ja stiilifailid esitatud. Projekti esimese etapi lõpp. Kevade algus.&lt;br /&gt;
* 26.03.17 XML/XSLT/XSD retsensioon esitatud.&lt;br /&gt;
* 16.04.17 Veebiteenuse analüüsi koostamine.&lt;br /&gt;
* 17.04.17 Esialgne veebiteenuse analüüs ja kavand valmis.&lt;br /&gt;
* 19.04.17 Alustasime veebiteenusega, koostegemine: Domain, DAL, Interfaces, Repostitories. Testimine konsoolis.&lt;br /&gt;
* 24.04.17 Veebiteenuse koostegemine, 2. kord: Domaini täiendamine.&lt;br /&gt;
* 29.04.17 Veebiteenuse koostegemine, 3. kord: Interfaces, Repositories, Factory + UOW. Testimine konsoolis.&lt;br /&gt;
* 01.05.17 Andmebaasi täitmine testandmetega varasemas faasis loodud XML failist.&lt;br /&gt;
* 02.05.17 Veebiteenuse koostegemine, 4. kord: alustasime BLi ja WebApi ehitamist. GET päringud.&lt;br /&gt;
* 09.05.17 Veebiteenuse koostegemine, 5. kord: lisasime Identity.&lt;br /&gt;
* 11.05.17 Veebiteenuse koostegemine, 6. kord: WebApi arendamine. POST, PUT ja DELETE päringud.&lt;br /&gt;
* 15.05.17 Veebiteenuse koostegemine, 7. kord: WebApi arendamine. Lisasime  api kontrollereid.&lt;br /&gt;
* 16.05.17 Veebiteenuse koostegemine, 8. kord: WebApi arendamine. Identity kontroll Fiddleri ja Postmaniga.&lt;br /&gt;
* 20.05.17 Klientrakenduse koostegemine, 1. kord. Testklient.&lt;br /&gt;
* 25.05.17 Klientrakenduse koostegemine, 2. kord. Klientrakenduse arendamine. Angular JS NgApp (MVC kontrolleritega).&lt;br /&gt;
* 01.06.17 Klientrakenduse koostegemine, 3. kord. Klientrakenduse arendamine. Angular JS NgSPA (üheleherakenduse katsetamine).&lt;br /&gt;
* 03.06.17 - 11.06.17 Klientrakenduse arendamine. Tokenipõhine autentimine. Veebiteenuse viimistlemine.&lt;br /&gt;
* 11.06.17 Lõpptähtaeg. Projekti esitlemine eksamil.&lt;br /&gt;
* 12.06.17 Teiste lahenduste retsenseerimine.&lt;br /&gt;
* 13.06.17 Veebiteenuse ja klientrakenduse retsensioonid esitatud. Selleks korraks kõik.&lt;/div&gt;</summary>
		<author><name>Otiks</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Team_SPOT&amp;diff=123583</id>
		<title>Team SPOT</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Team_SPOT&amp;diff=123583"/>
		<updated>2017-06-13T20:52:01Z</updated>

		<summary type="html">&lt;p&gt;Otiks: /* Log */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://wiki.itcollege.ee/index.php/Kodut%C3%B6%C3%B6_aines_%22V%C3%B5rgurakendused_II:_hajuss%C3%BCsteemide_ehitamine%22_2017 Kodutöö aines &amp;quot;Võrgurakendused II: hajussüsteemide ehitamine&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
[https://projectspot.visualstudio.com/PROJECTSPOT Projekti repositoorium (avaneb ainult liikmetele)]&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==Liikmed==&lt;br /&gt;
*Sigrid Pachel&lt;br /&gt;
*Oliver Tiks&lt;br /&gt;
&lt;br /&gt;
==Idee==&lt;br /&gt;
Mõttes on luua spordiklubi(de) veebiteenus ja klientrakendus, mis võimaldaks saada infot pakutavate treeningute kohta, sisestada ja kuvada tunniplaani andmeid, registreerida osalejaid tundidesse ning teha muid asjakohaseid tegevusi nii klubi(de) personalil, liikmetel kui ka juhukasutajatel.&lt;br /&gt;
&lt;br /&gt;
==Veebiteenuse analüüs==&lt;br /&gt;
SPOTi veebiteenus võimaldab saada infot erinevate klubide treeningute kohta ja end neisse registreerida. Kasutaja saab teavet, kus ja millal treeningud toimuvad (tunniplaan), mida treeningus täpsemalt tehakse, mis stiiliga on tegemist, kes on treener, kui palju üks kord maksab jms info. Kasutajakontoga liikmel on võimalik end registreerida soovitud tundi ja hallata oma registreeringuid (muuta, tühistada).&lt;br /&gt;
&lt;br /&gt;
Spordiklubide infot haldavad süsteemi administraatorid, kes saavad lisada, muuta ja kustutada kõike sprodiklubiga seonduvat. Erinevaid treeninguid ja nendega seotud konkreetset infot saavad lisada ja hallata treenerid või spordiklubi esindajad.&lt;br /&gt;
&lt;br /&gt;
Projekti realiseerimiseks kasutame REST arhitektuuri ja ASP.NET MVC Web API tehnoloogiat.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Üldine plaan:&#039;&#039;&#039;&lt;br /&gt;
* esialgu üks kett (laienemise võimalusega)&lt;br /&gt;
* mitu klubi (asukoht, saalid-treeningualad, võimalikud lisatingimused)&lt;br /&gt;
* treeningute info (stiilid ehk kontseptid, litsentsid, …)&lt;br /&gt;
* tunniplaan (aeg, koht, instruktorid, max osalejate arv, ühe korra hind)&lt;br /&gt;
* registratuur (treeningutest osavõtjad)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kasutajad (rollid):&#039;&#039;&#039;&lt;br /&gt;
* administraatorid (saavad teha muudatusi)&lt;br /&gt;
* treenerid (info kvalifikatsiooni, litsentside kohta, õigus treeninguid lisada) &lt;br /&gt;
* liikmed (saavad treeningutele registreeruda)&lt;br /&gt;
* ülejäänud (näevad klubide ja treeningute infot ning tunniplaani)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Peaks olema:&#039;&#039;&#039;&lt;br /&gt;
* kasutajate loomine&lt;br /&gt;
* kasutajate tuvastamine ja haldamine&lt;br /&gt;
* kasutajate ja kasutusstatistika logimine&lt;br /&gt;
* teenuse poole pöördumiste arvu piiramine ja piirangute haldamine&lt;br /&gt;
* klubide, treenerite ja treeningute info väljastamine&lt;br /&gt;
* tunniplaani info väljastamine&lt;br /&gt;
* treeningutesse registreerimine&lt;br /&gt;
* registreeringu tühistamine&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Võiks olla:&#039;&#039;&#039;&lt;br /&gt;
* klubide, treenerite, treeningute lisamine ja muutmine&lt;br /&gt;
* tunniplaanis treeningute tühistamine&lt;br /&gt;
* sisestatud andmete kustutamine (pehmelt)&lt;br /&gt;
* rollide-õiguste määramine (admin)&lt;br /&gt;
* asukohad mitmes riigis&lt;br /&gt;
* kliendipaketid, arveldus&lt;br /&gt;
* kontaktide tsentraliseeritud haldus&lt;br /&gt;
* sisselogimine läbi Google’i, Facebooki vmt teenuse&lt;br /&gt;
&lt;br /&gt;
===Andmebaasi skeem (lihtsustatud)===&lt;br /&gt;
&lt;br /&gt;
[[File:SPOTService ERD.JPG|border|SPOT Service ERD]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Märkus: olemite atribuutidest on välja toodud ainult peamised.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====Tabelite kirjeldused====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kasutajahaldus*:&#039;&#039;&#039;&lt;br /&gt;
* User - kasutajate andmed&lt;br /&gt;
* Role - rollid, millega määratakse kasutajate õigused (&amp;quot;Admin&amp;quot;, &amp;quot;Trainer&amp;quot;, ...)&lt;br /&gt;
* UserRole - kasutajate sidumine rolli(de)ga&lt;br /&gt;
* UserLogin - muu teenuse kaudu sisselogimiseks&lt;br /&gt;
* UserClaim - muu teenuse kaudu sisselogimiseks&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;&#039;&#039;Kasutajahalduse süsteem toetub Asp.Net Identity valmislahendusele, mida on täiendanud A. Käver.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Klubid:&#039;&#039;&#039;&lt;br /&gt;
* Chain (optional) - spordiklubikettide info&lt;br /&gt;
* Location - spordiklubi/-rajatise asukoht linna/asula täpsusega&lt;br /&gt;
* Facility - spordiklubi/-rajatise andmed, seotud asukohaga ja vajadusel ketiga.&lt;br /&gt;
* Venue - spordiklubis/-rajatises kasutatavad saalid ja muud treeningualad&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Treeningud:&#039;&#039;&#039;&lt;br /&gt;
* Concept (Style) - treeningustiilid ehk kontseptid&lt;br /&gt;
* Licenser (optional) - treeninguliikide litsentsid (kui on)&lt;br /&gt;
* Training - treeninguliikide andmed, seotud stiili ja vajadusel litsentsiga&lt;br /&gt;
* Trainer (User (role: Trainer) + Training) - treeninguliikide sidumine treeneritega&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tunniplaan:&#039;&#039;&#039;&lt;br /&gt;
* ScheduleItem - treeningud tunniplaanis&lt;br /&gt;
* Instructor (User (role: Trainer) + ScheduleItem) - tundide juhendajad (võib olla mitu)&lt;br /&gt;
* Registration (ScheduleItem + User (role: any)) - tundidesse tehtud registreeringud&lt;br /&gt;
&lt;br /&gt;
== XML / XSD / XSLT==&lt;br /&gt;
Projekti esimeses etapis sai loodud XML andmefail, mille ülesehitus on paika pandud XSD skeemifailis. Lisaks on olemas kaks stiilifaili: esimene neist transformeerib andmed HTML-kujule, et kuvada infot  veebilehel, teine tekitab samade andmete esitamiseks uue struktuuriga XML faili.&lt;br /&gt;
&lt;br /&gt;
[https://drive.google.com/open?id=0B84njRSbVLUtd0U4aEJXOUhOTG8 Lae failid alla.] &lt;br /&gt;
&lt;br /&gt;
=== XML ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Fail sisaldab andmeid ühes spordiklubis pakutavate treeningute kohta. Andmed on esitatud treeninguliikide kaupa, mille juurde on lisatud ka vastava treeninguliigi tunniplaan. Treeninguliikidel on nimi ja kirjeldus ning vajadusel ära märgitud ka litsents. Failis on eraldi välja toodud treeningustiilid, instruktorid ja ruumid, kus treeningud toimuvad. Iga treeninguliik kuulub ühe või mitme stiili alla. Instruktoritel on tagasiside põhjal saadud hinne. Treeninguruumidel on vaikimisi määratud mahutavus. Tunniplaanis on ära toodud treeningu koht, algusaeg ja kestus ning instruktorid. Vajadusel saab eraldi määrata ka treeningurühma suuruse, kui see erineb tavalisest ruumi mahutavusest. Ka on võimalik treeningutunnile lisada kommentaar. Erinevate elementide andmed on omavahel seotud id-atribuutidega.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;?xml-stylesheet type=&amp;quot;text/xsl&amp;quot; href=&amp;quot;trainingsToHtml.xslt&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Trainings&amp;gt;&lt;br /&gt;
  &amp;lt;Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;![CDATA[Cardio]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
  &amp;lt;/Styles&amp;gt;&lt;br /&gt;
  &amp;lt;Instructors&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;1&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Yogafier]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;2&amp;quot; Rating=&amp;quot;4.7&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Mickey Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;3&amp;quot; Rating=&amp;quot;4.6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;4&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Donald Duck]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;5&amp;quot; Rating=&amp;quot;3.9&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Goofy]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;6&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Schwarzenegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;8&amp;quot; Rating=&amp;quot;4.8&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Kayla Weightlifter]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;9&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Margaret Strengthener]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
  &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;Venues&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;1&amp;quot; GroupSize=&amp;quot;45&amp;quot;&amp;gt;&amp;lt;![CDATA[Main Hall]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 2]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;3&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 3]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;4&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 4]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;5&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 5]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&amp;lt;![CDATA[Area 6]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;7&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&amp;lt;![CDATA[Yoga Hall]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
  &amp;lt;/Venues&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Yoga]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[Yoga is a group of physical, mental, and spiritual practices or disciplines which originated in ancient India. ]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;1&amp;quot; VenueId=&amp;quot;7&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-25T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;14&amp;quot; VenueId=&amp;quot;7&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT1H20M&amp;quot;&amp;gt;2017-03-28T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Comment&amp;gt;&lt;br /&gt;
          &amp;lt;![CDATA[Special class!]]&amp;gt;&lt;br /&gt;
        &amp;lt;/Comment&amp;gt; &lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/Nvlxn0EnmbM&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;  &lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;2&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyBalance™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[BODYBALANCE™ is the Yoga, Tai Chi, Pilates workout that builds flexibility and strength and leaves you feeling centered and calm. Based on a carefully structured series of stretches, moves and poses to music it creates a holistic workout that brings the body into a state of harmony and balance. This class will heighten your flexibility and inner strength creating a strong supple body from the inside out. Burn on average 390cals per hour.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;2&amp;quot; VenueId=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-31T12:15:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;3&amp;quot; VenueId=&amp;quot;2&amp;quot; &amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-30T13:30:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;3&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/jJxA6vBjUqY&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;3&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyJam™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;4&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[The Body Jam program is an addictive fusion of the latest dance styles to the hottest new sounds. This class isn’t just for dancers, it’s for everyone because the emphasis is put on not only having fun but also breaking a sweat. So grab a friend, get front and centre … you bring the attitude and we’ll bring the moves!]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;4&amp;quot;  VenueId=&amp;quot;3&amp;quot; &amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T16:10:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;4&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;5&amp;quot; VenueId=&amp;quot;5&amp;quot; &amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT45M&amp;quot;&amp;gt;2017-04-01T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;5&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/8PTXyg9si_4&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;4&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyPump™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[BodyPump classes are 59 minutes long and contain eight separate muscle-group specific songs or &amp;quot;tracks&amp;quot; along with an opening warm up track and closing cool-down track. There are also 45-minute and 30-minute class formats. The classes are performed to music using free weights-plates, barbells and an aerobic step. Participants choose their weights based on the exercise and their personal goals. Major muscle groups are worked via series of compound and isolation-based exercises including squats, presses, dead lifts. The focus is towards muscle endurance by moving light weights at high repetitions, what Les Mills calls the Rep Effect.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;3&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;6&amp;quot; VenueId=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;6&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;7&amp;quot; VenueId=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-23T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;6&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/zU_0XrdO3wo&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[CoreStrenght is a very hard workout! Not for beginners.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;3&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;8&amp;quot; VenueId=&amp;quot;6&amp;quot; GroupSize=&amp;quot;10&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT2H&amp;quot;&amp;gt;2017-03-23T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;9&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Comment&amp;gt;&lt;br /&gt;
          &amp;lt;![CDATA[Special challenge!]]&amp;gt;&lt;br /&gt;
        &amp;lt;/Comment&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;9&amp;quot; VenueId=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;8&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;10&amp;quot; VenueId=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-04-05T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;8&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;9&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/ZxTVmpvyUt8&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[Zumba involves dance and aerobic movements performed to energetic music. The choreography incorporates hip-hop, soca, samba, salsa, merengue and mambo. Squats and lunges are also included.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;4&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;11&amp;quot; VenueId=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT55M&amp;quot;&amp;gt;2017-03-26T15:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;12&amp;quot; VenueId=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-28T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;13&amp;quot; VenueId=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/-ZB6XIkfxnQ&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
&amp;lt;/Trainings&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSD ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Skeemifail kontrollib eelnevas andmefailis esitatud andmete vastavust kokkulepitud formaadile, samuti õigete andmetüüpide kasutamist. Alamelemendi id-atribuudi väärtus peab olema iga elemendirühma lõikes unikaalne. Kohustuslike elementide ja atribuutide kõrval on ka mõned (nt kommentaar), mille olemasolu pole alati tarvilik. Teatud puhkudel on piiratud maksimaalset elementide arvu (nt treeningutunni algusaeg). Faili üldine struktuur on kindel, aga alati pole alamelementide järjekord oluline (nt treeninguliigi puhul).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xs:schema attributeFormDefault=&amp;quot;unqualified&amp;quot; elementFormDefault=&amp;quot;qualified&amp;quot; xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xs:element name=&amp;quot;Trainings&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Styles&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Style&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
          &amp;lt;xs:unique name=&amp;quot;UniqueStyleId&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xs:selector xpath=&amp;quot;Style&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Instructors&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;Name&amp;quot; type=&amp;quot;xs:string&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:attribute name=&amp;quot;Rating&amp;quot; type=&amp;quot;xs:decimal&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
          &amp;lt;xs:unique name=&amp;quot;UniqueInstructorId&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xs:selector xpath=&amp;quot;Instructor&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Venues&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Venue&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:attribute name=&amp;quot;GroupSize&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
          &amp;lt;xs:unique name=&amp;quot;UniqueVenueId&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xs:selector xpath=&amp;quot;Venue&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Training&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:all&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Description&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Styles&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Style&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Schedule&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;ScheduleItem&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:all&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element  maxOccurs=&amp;quot;1&amp;quot; name=&amp;quot;Time&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:extension base=&amp;quot;xs:dateTime&amp;quot;&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:attribute name=&amp;quot;Duration&amp;quot; type=&amp;quot;xs:duration&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element name=&amp;quot;Instructors&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                    &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                                      &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                                        &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                                      &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                                    &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                                  &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; name=&amp;quot;Comment&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:all&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;VenueId&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;GroupSize&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;optional&amp;quot; /&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;VideoUrl&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:all&amp;gt;&lt;br /&gt;
            &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xs:attribute name=&amp;quot;Licence&amp;quot; type=&amp;quot;xs:string&amp;quot; use=&amp;quot;optional&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
    &amp;lt;xs:unique name=&amp;quot;UniqueTrainingId&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xs:selector xpath=&amp;quot;Training&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
    &amp;lt;xs:unique name=&amp;quot;UniqueScheduleItemId&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xs:selector xpath=&amp;quot;Training/Schedule/ScheduleItem&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSLT (html) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Selles transformatsioonifailis on kirjeldatud XML failis olevate andmete [http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/trainings.xml  kuvamise viis veebilehel]. Treeninguliigid on jaotatud stiiliblokkidesse (mõni treening kuulub mitme stiili alla). Iga treeninguliigi all on tabeli kujul esitatud tunniplaan ning lisatud näidisvideo ja kirjeldus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot; xmlns:msxsl=&amp;quot;urn:schemas-microsoft-com:xslt&amp;quot; exclude-result-prefixes=&amp;quot;msxsl&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:output method=&amp;quot;html&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;html&amp;gt;&lt;br /&gt;
      &amp;lt;head&amp;gt;&lt;br /&gt;
        &amp;lt;title&amp;gt;SuperSportsClub - Trainings&amp;lt;/title&amp;gt;&lt;br /&gt;
        &amp;lt;style&amp;gt;&lt;br /&gt;
          body {&lt;br /&gt;
          background:BurlyWood;&lt;br /&gt;
          text-align: center;&lt;br /&gt;
          }&lt;br /&gt;
          .section {&lt;br /&gt;
          text-align:left;&lt;br /&gt;
          width:1000px;&lt;br /&gt;
          padding:20px;&lt;br /&gt;
          background:Chocolate;&lt;br /&gt;
          margin: auto;&lt;br /&gt;
          }&lt;br /&gt;
          table, th, td, .section {&lt;br /&gt;
          border: 1px solid black;&lt;br /&gt;
          }&lt;br /&gt;
          th {&lt;br /&gt;
          text-align:left;&lt;br /&gt;
          padding-left: 10px;&lt;br /&gt;
          padding-right: 10px;&lt;br /&gt;
          }&lt;br /&gt;
          td {&lt;br /&gt;
          text-align:center;&lt;br /&gt;
          }&lt;br /&gt;
          p {&lt;br /&gt;
          text-align:justify;&lt;br /&gt;
          }&lt;br /&gt;
          .description {&lt;br /&gt;
          vertical-align:top; &lt;br /&gt;
          padding:10px;&lt;br /&gt;
          }&lt;br /&gt;
        &amp;lt;/style&amp;gt;&lt;br /&gt;
      &amp;lt;/head&amp;gt;&lt;br /&gt;
      &amp;lt;body&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;Trainings at SuperSportsClub&amp;lt;/h1&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;/Trainings/Styles/Style&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:sort select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:variable select=&amp;quot;.&amp;quot; name=&amp;quot;SelectedStyle&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;section&amp;quot; &amp;gt;&lt;br /&gt;
            &amp;lt;h2&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select=&amp;quot;$SelectedStyle&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/h2&amp;gt;&lt;br /&gt;
            &amp;lt;ul&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:for-each select=&amp;quot;/Trainings/Training&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:sort select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:variable name=&amp;quot;Training&amp;quot; select=&amp;quot;.&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:if test=&amp;quot;Styles/Style/@Id = $SelectedStyle/@Id&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;&lt;br /&gt;
                    &amp;lt;h3&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;$Training/Name&amp;quot; /&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:if test=&amp;quot;$Training/@Licence&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:text&amp;gt; (&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:value-of select=&amp;quot;$Training/@Licence&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:text&amp;gt;)&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
                    &amp;lt;/h3&amp;gt;&lt;br /&gt;
                    &amp;lt;table&amp;gt;&lt;br /&gt;
                      &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                      &amp;lt;/tr&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:for-each select=&amp;quot;$Training/Schedule/ScheduleItem&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:sort select=&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:variable name=&amp;quot;StartTime&amp;quot; select=&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:variable name=&amp;quot;Duration&amp;quot; select=&amp;quot;$StartTime/@Duration&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;tr&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;150&amp;quot; &amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;concat(&lt;br /&gt;
                                            substring($StartTime, 9, 2), &lt;br /&gt;
                                            &#039;.&#039;, &lt;br /&gt;
                                            substring($StartTime, 6, 2), &lt;br /&gt;
                                            &#039;.&#039;, &lt;br /&gt;
                                            substring($StartTime, 1, 4),&lt;br /&gt;
                                            &#039; &#039;,&lt;br /&gt;
                                            substring($StartTime, 12, 2),&lt;br /&gt;
                                            &#039;:&#039;,&lt;br /&gt;
                                            substring($StartTime, 15, 2))&lt;br /&gt;
                                            &amp;quot; /&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:if test=&amp;quot;Comment&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;br/&amp;gt;&lt;br /&gt;
                              &amp;lt;div style=&amp;quot;color:Green&amp;quot;&amp;gt;&lt;br /&gt;
                                &amp;lt;xsl:value-of select=&amp;quot;Comment&amp;quot;/&amp;gt;&lt;br /&gt;
                              &amp;lt;/div&amp;gt;&lt;br /&gt;
                            &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;substring($Duration, 3, 6)&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:variable name=&amp;quot;VenueId&amp;quot; select=&amp;quot;@VenueId&amp;quot;/&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;/Trainings/Venues/Venue[@Id=$VenueId]&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:for-each select=&amp;quot;Instructors/Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:variable name=&amp;quot;InstructorId&amp;quot; select=&amp;quot;@Id&amp;quot;&amp;gt;&amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:variable name=&amp;quot;SelectedInstructor&amp;quot; select=&amp;quot;/Trainings/Instructors/Instructor[@Id=$InstructorId]&amp;quot; /&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/Name&amp;quot;/&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:text&amp;gt; (&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/@Rating&amp;quot; /&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:text&amp;gt;)&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                              &amp;lt;br/&amp;gt;&lt;br /&gt;
                            &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;/tr&amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
                    &amp;lt;/table&amp;gt;&lt;br /&gt;
                    &amp;lt;br/&amp;gt;&lt;br /&gt;
                    &amp;lt;table&amp;gt;&lt;br /&gt;
                      &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                          &amp;lt;xsl:variable name=&amp;quot;VideoUrl&amp;quot; select=&amp;quot;$Training/VideoUrl&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;{$VideoUrl}&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                          &amp;lt;p&amp;gt;&lt;br /&gt;
                            &amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&lt;br /&gt;
                          &amp;lt;/p&amp;gt;&lt;br /&gt;
                          &amp;lt;p&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;$Training/Description&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                      &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;/table&amp;gt;&lt;br /&gt;
                  &amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
            &amp;lt;/ul&amp;gt;&lt;br /&gt;
          &amp;lt;/div&amp;gt;&lt;br /&gt;
          &amp;lt;br/&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
      &amp;lt;/body&amp;gt;&lt;br /&gt;
    &amp;lt;/html&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== HTML (transformeeritud) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/trainings.html Vaata eelneva transformatsiooni tulemust.]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;META http-equiv=&amp;quot;Content-Type&amp;quot; content=&amp;quot;text/html; charset=utf-8&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;SuperSportsClub - Trainings&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;style&amp;gt;&lt;br /&gt;
        body {&lt;br /&gt;
            background: BurlyWood;&lt;br /&gt;
            text-align: center;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        .section {&lt;br /&gt;
            text-align: left;&lt;br /&gt;
            width: 1000px;&lt;br /&gt;
            padding: 20px;&lt;br /&gt;
            background: Chocolate;&lt;br /&gt;
            margin: auto;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        table, th, td, .section {&lt;br /&gt;
            border: 1px solid black;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        th {&lt;br /&gt;
            text-align: left;&lt;br /&gt;
            padding-left: 10px;&lt;br /&gt;
            padding-right: 10px;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        td {&lt;br /&gt;
            text-align: center;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        p {&lt;br /&gt;
            text-align: justify;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        .description {&lt;br /&gt;
            vertical-align: top;&lt;br /&gt;
            padding: 10px;&lt;br /&gt;
        }&lt;br /&gt;
    &amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
    &amp;lt;h1&amp;gt;Trainings at SuperSportsClub&amp;lt;/h1&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Body&amp;amp;amp;Mind&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyBalance™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 13:30&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;1H15M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 2&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Minnie Mouse (4.6)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;31.03.2017 12:15&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;1H15M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 3&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Mickey Mouse (4.7)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/jJxA6vBjUqY&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                BODYBALANCE™ is the Yoga, Tai Chi, Pilates workout that builds flexibility and strength and leaves you feeling centered and calm. Based on a carefully structured series of stretches, moves and poses to music it creates a holistic workout that brings the body into a state of harmony and balance. This class will heighten your flexibility and inner strength creating a strong supple body from the inside out. Burn on average 390cals per hour.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;Yoga&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;25.03.2017 14:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Yoga Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Minnie Yogafier (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
                            28.03.2017 14:00&amp;lt;br&amp;gt;&amp;lt;div style=&amp;quot;color:Green&amp;quot;&amp;gt;&lt;br /&gt;
                                Special class!&lt;br /&gt;
                            &amp;lt;/div&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;1H20M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Yoga Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Minnie Yogafier (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/Nvlxn0EnmbM&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                Yoga is a group of physical, mental, and spiritual practices or disciplines which originated in ancient India.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Cardio&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyJam™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 16:10&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 3&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Donald Duck (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;01.04.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;45M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 5&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Goofy (3.9)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/8PTXyg9si_4&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                The Body Jam program is an addictive fusion of the latest dance styles to the hottest new sounds. This class isn’t just for dancers, it’s for everyone because the emphasis is put on not only having fun but also breaking a sweat. So grab a friend, get front and centre … you bring the attitude and we’ll bring the moves!&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Dance&amp;amp;amp;Fun&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyJam™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 16:10&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 3&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Donald Duck (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;01.04.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;45M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 5&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Goofy (3.9)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/8PTXyg9si_4&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                The Body Jam program is an addictive fusion of the latest dance styles to the hottest new sounds. This class isn’t just for dancers, it’s for everyone because the emphasis is put on not only having fun but also breaking a sweat. So grab a friend, get front and centre … you bring the attitude and we’ll bring the moves!&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;Zumba®&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;26.03.2017 15:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;55M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 2&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Zumbaschnegger (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;28.03.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 4&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Zumbaschnegger (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 2&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Zumbaschnegger (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/-ZB6XIkfxnQ&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                Zumba involves dance and aerobic movements performed to energetic music. The choreography incorporates hip-hop, soca, samba, salsa, merengue and mambo. Squats and lunges are also included.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Strength&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyPump™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;23.03.2017 13:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Main Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Schwarzenegger (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 13:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Main Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Schwarzenegger (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/zU_0XrdO3wo&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                BodyPump classes are 59 minutes long and contain eight separate muscle-group specific songs or &amp;quot;tracks&amp;quot; along with an opening warm up track and closing cool-down track. There are also 45-minute and 30-minute class formats. The classes are performed to music using free weights-plates, barbells and an aerobic step. Participants choose their weights based on the exercise and their personal goals. Major muscle groups are worked via series of compound and isolation-based exercises including squats, presses, dead lifts. The focus is towards muscle endurance by moving light weights at high repetitions, what Les Mills calls the Rep Effect.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;CoreStrength&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
                            23.03.2017 12:00&amp;lt;br&amp;gt;&amp;lt;div style=&amp;quot;color:Green&amp;quot;&amp;gt;&lt;br /&gt;
                                Special challenge!&lt;br /&gt;
                            &amp;lt;/div&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;2H&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Area 6&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Margaret Strengthener (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Area 6&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Kayla Weightlifter (4.8)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;05.04.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Area 6&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Kayla Weightlifter (4.8)&amp;lt;br&amp;gt;Margaret Strengthener (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/ZxTVmpvyUt8&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                CoreStrenght is a very hard workout! Not for beginners.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSLT (xml) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Selle transformatsiooniga luuakse uus [http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/schedule.xml XML fail], milles on treeningute andmed esitatud ühtse tunniplaani kujul. Algses failis erinevate elementide alla paigutatud andmed on nüüd tunniplaani alamelemendis kokku viidud. Sidumine on teostatud id-atribuutide abil. Tunniplaanis on ühes kohas kirjas treeningu nimi, stiil(id), koht, algusaeg, kestus, rühma suurus, instruktorid ja muu täiendav info.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&lt;br /&gt;
    xmlns:msxsl=&amp;quot;urn:schemas-microsoft-com:xslt&amp;quot; exclude-result-prefixes=&amp;quot;msxsl&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:output method=&amp;quot;xml&amp;quot; indent=&amp;quot;yes&amp;quot; cdata-section-elements=&amp;quot;Name Style Comment&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;/Trainings/Training&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:sort select=&amp;quot;Name&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:variable name=&amp;quot;SelectedTraining&amp;quot; select=&amp;quot;.&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;Schedule/ScheduleItem&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:sort select=&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;ScheduleItem&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:variable name=&amp;quot;VenueId&amp;quot; select=&amp;quot;@VenueId&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:variable name=&amp;quot;SelectedVenue&amp;quot; select=&amp;quot;/Trainings/Venues/Venue[@Id=$VenueId]&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:attribute name=&amp;quot;GroupSize&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;@GroupSize&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:value-of select=&amp;quot;@GroupSize&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:value-of select=&amp;quot;$SelectedVenue/@GroupSize&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
            &amp;lt;Venue&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$VenueId&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select=&amp;quot;$SelectedVenue&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/Venue&amp;gt;&lt;br /&gt;
            &amp;lt;Training&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$SelectedTraining/@Id&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:if test=&amp;quot;$SelectedTraining/@Licence&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:attribute name=&amp;quot;Licence&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:value-of select=&amp;quot;$SelectedTraining/@Licence&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
              &amp;lt;Name&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$SelectedTraining/Name&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/Name&amp;gt;&lt;br /&gt;
              &amp;lt;Styles&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:for-each select=&amp;quot;$SelectedTraining/Styles/Style&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:variable name=&amp;quot;StyleId&amp;quot; select=&amp;quot;@Id&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;Style&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:attribute name=&amp;quot;StyleId&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;$StyleId&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;/Trainings/Styles/Style[@Id=$StyleId]&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/Style&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
              &amp;lt;/Styles&amp;gt;&lt;br /&gt;
            &amp;lt;/Training&amp;gt;&lt;br /&gt;
            &amp;lt;Time&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:attribute name=&amp;quot;Duration&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;Time/@Duration&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select =&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/Time&amp;gt;&lt;br /&gt;
            &amp;lt;Instructors&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:for-each select=&amp;quot;Instructors/Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:variable name=&amp;quot;InstructorId&amp;quot; select=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:variable name=&amp;quot;SelectedInstructor&amp;quot; select=&amp;quot;/Trainings/Instructors/Instructor[@Id=$InstructorId]&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;Instructor&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;$InstructorId&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:attribute name=&amp;quot;Rating&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/@Rating&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                  &amp;lt;Name&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/Name&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/Name&amp;gt;&lt;br /&gt;
                &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
            &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:if test=&amp;quot;Comment&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;Comment&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;Comment&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/Comment&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
          &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XML (transformeeritud) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/schedule.xml Vaata eelneva transformatsiooni tulemust.]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Schedule&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;3&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot;&amp;gt;Hall 2&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;2&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyBalance™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-30T13:30:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;3&amp;quot; Rating=&amp;quot;4.6&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;2&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;3&amp;quot;&amp;gt;Hall 3&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;2&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyBalance™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-31T12:15:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;2&amp;quot; Rating=&amp;quot;4.7&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Mickey Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;4&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;3&amp;quot;&amp;gt;Hall 3&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;3&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyJam™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;![CDATA[Cardio]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T16:10:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;4&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Donald Duck]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;5&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;5&amp;quot;&amp;gt;Hall 5&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;3&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyJam™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;![CDATA[Cardio]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT45M&amp;quot;&amp;gt;2017-04-01T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;5&amp;quot; Rating=&amp;quot;3.9&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Goofy]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;7&amp;quot; GroupSize=&amp;quot;45&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;1&amp;quot;&amp;gt;Main Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;4&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyPump™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-23T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;6&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Schwarzenegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;6&amp;quot; GroupSize=&amp;quot;45&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;1&amp;quot;&amp;gt;Main Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;4&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyPump™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;6&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Schwarzenegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;8&amp;quot; GroupSize=&amp;quot;10&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot;&amp;gt;Area 6&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT2H&amp;quot;&amp;gt;2017-03-23T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;9&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Margaret Strengthener]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
    &amp;lt;Comment&amp;gt;&amp;lt;![CDATA[&lt;br /&gt;
          Special challenge!&lt;br /&gt;
        ]]&amp;gt;&amp;lt;/Comment&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;9&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot;&amp;gt;Area 6&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;8&amp;quot; Rating=&amp;quot;4.8&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Kayla Weightlifter]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;10&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot;&amp;gt;Area 6&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-04-05T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;8&amp;quot; Rating=&amp;quot;4.8&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Kayla Weightlifter]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;9&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Margaret Strengthener]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;11&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot;&amp;gt;Hall 2&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT55M&amp;quot;&amp;gt;2017-03-26T15:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;12&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;4&amp;quot;&amp;gt;Hall 4&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-28T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;13&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot;&amp;gt;Hall 2&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;1&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;7&amp;quot;&amp;gt;Yoga Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Yoga]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-25T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;1&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Yogafier]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;14&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;7&amp;quot;&amp;gt;Yoga Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Yoga]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT1H20M&amp;quot;&amp;gt;2017-03-28T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;1&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Yogafier]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
    &amp;lt;Comment&amp;gt;&amp;lt;![CDATA[&lt;br /&gt;
          Special class!&lt;br /&gt;
        ]]&amp;gt;&amp;lt;/Comment&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
&amp;lt;/Schedule&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus ==&lt;br /&gt;
Angular JS &#039;&#039;single page application&#039;&#039; eelnevalt kirjeldatud veebiteenusele. Sisse logimata saab kuvada spordiklubi tunniplaani nädalate kaupa, treeninguliike stiilide kaupa ja treenereid. Võimalik on liituda teenusega ja registreeruda treeningutele, samuti registreeringuid tühistada nii otse tunniplaanist kui ka registreeringute lehel. Esialgu põhineb süsteem ühel spordiklubil. Kasutamise eelduseks on tunniplaani olemasolu andmebaasis.&lt;br /&gt;
&lt;br /&gt;
Autentimine on lahendatud tokenipõhiselt. Eeskuju ja põhjana kasutasime näidisrakendust, mille juhend ja lähtekood on leitav [http://bitoftech.net/2014/06/09/angularjs-token-authentication-using-asp-net-web-api-2-owin-asp-net-identity/ siit].&lt;br /&gt;
&lt;br /&gt;
== Lähtekood ==&lt;br /&gt;
Eksamiks valminud veebiteenuse ja klientrakenduse kokkupakitult allalaadimiseks klõpsa [https://drive.google.com/open?id=0B84njRSbVLUtTWx5ZkZsdDBJZDQ sellel lingil]. WebApi ja Angular JS klient on eraldi lahendustes. Kliendi testimiseks brauseris (Chrome, Firefox vm) tuleb eelnevalt käivitada ka veebiteenus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;NB! Võib juhtuda, et WebApi esmakordsel käivitamisel loodavasse andmebaasi kõiki andmeid (tunniplaani ja registreerimisi jooksvasse nädalasse) ei lisandu. Sellisel juhul kustuta tekkinud andmebaas ja käivita kõigepealt samas lahenduses olev konsoolirakendus.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Retsensioonid ==&lt;br /&gt;
&lt;br /&gt;
# [https://wiki.itcollege.ee/index.php/Talk:JRT#Hinnang_meeskonna_JRT_esitatud_XML-failidele JRT meeskonna XML/XSD/XSLT retsensioon ]&lt;br /&gt;
# [https://wiki.itcollege.ee/index.php/Talk:JRT#Hinnang_meeskonna_JRT_esitatud_veebiteenusele JRT meeskonna veebiteenuse retsensioon ]&lt;br /&gt;
# [https://wiki.itcollege.ee/index.php/Talk:JRT#Hinnang_meeskonna_JRT_esitatud_klientrakendusele JRT meeskonna klientrakenduse retsensioon ]&lt;br /&gt;
&lt;br /&gt;
== Log ==&lt;br /&gt;
* 03.03.17 Esimene kohtumine. Idee.&lt;br /&gt;
* 17.03.17 Osa XMList valmis, osa XSLT-st valmis.&lt;br /&gt;
* 18.03.17 Teine kohtumine. XMLi täiendamine, esimene ülekäimine XSD-s.&lt;br /&gt;
* 19.03.17 XML/XSLT/XSD täiendamine ja lõpetamine.&lt;br /&gt;
* 20.03.17 XML fail, skeemifail ja stiilifailid esitatud. Projekti esimese etapi lõpp. Kevade algus.&lt;br /&gt;
* 26.03.17 XML/XSLT/XSD retsensioon esitatud.&lt;br /&gt;
* 16.04.17 Veebiteenuse analüüsi koostamine.&lt;br /&gt;
* 17.04.17 Esialgne veebiteenuse analüüs ja kavand valmis.&lt;br /&gt;
* 19.04.17 Alustasime veebiteenusega, koostegemine: Domain, DAL, Interfaces, Repostitories. Testimine konsoolis.&lt;br /&gt;
* 24.04.17 Veebiteenuse koostegemine, 2. kord: Domaini täiendamine.&lt;br /&gt;
* 29.04.17 Veebiteenuse koostegemine, 3. kord: Interfaces, Repositories, Factory + UOW. Testimine konsoolis.&lt;br /&gt;
* 01.05.17 Andmebaasi täitmine testandmetega varasemas faasis loodud XML failist.&lt;br /&gt;
* 02.05.17 Veebiteenuse koostegemine, 4. kord: alustasime BLi ja WebApi ehitamist. GET päringud.&lt;br /&gt;
* 09.05.17 Veebiteenuse koostegemine, 5. kord: lisasime Identity.&lt;br /&gt;
* 11.05.17 Veebiteenuse koostegemine, 6. kord: WebApi arendamine. POST, PUT ja DELETE päringud.&lt;br /&gt;
* 15.05.17 Veebiteenuse koostegemine, 7. kord: WebApi arendamine. Lisasime  api kontrollereid.&lt;br /&gt;
* 16.05.17 Veebiteenuse koostegemine, 8. kord: WebApi arendamine. Identity kontroll Fiddleri ja Postmaniga.&lt;br /&gt;
* 20.05.17 Klientrakenduse koostegemine, 1. kord. Testklient.&lt;br /&gt;
* 25.05.17 Klientrakenduse koostegemine, 2. kord. Klientrakenduse arendamine. Angular JS NgApp (MVC kontrolleritega).&lt;br /&gt;
* 01.06.17 Klientrakenduse koostegemine, 3. kord. Klientrakenduse arendamine. Angular JS NgSPA (üheleherakendus).&lt;br /&gt;
* 03.06.17 - 11.06.17 Klientrakenduse arendamine. Tokenipõhine autentimine. Veebiteenuse viimistlemine.&lt;br /&gt;
* 11.06.17 Lõpptähtaeg. Projekti esitlemine eksamil.&lt;br /&gt;
* 12.06.17 Teiste lahenduste retsenseerimine.&lt;br /&gt;
* 13.06.17 Veebiteenuse ja klientrakenduse retsensioonid esitatud. Selleks korraks kõik.&lt;/div&gt;</summary>
		<author><name>Otiks</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Team_SPOT&amp;diff=123581</id>
		<title>Team SPOT</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Team_SPOT&amp;diff=123581"/>
		<updated>2017-06-13T20:42:01Z</updated>

		<summary type="html">&lt;p&gt;Otiks: /* Log */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://wiki.itcollege.ee/index.php/Kodut%C3%B6%C3%B6_aines_%22V%C3%B5rgurakendused_II:_hajuss%C3%BCsteemide_ehitamine%22_2017 Kodutöö aines &amp;quot;Võrgurakendused II: hajussüsteemide ehitamine&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
[https://projectspot.visualstudio.com/PROJECTSPOT Projekti repositoorium (avaneb ainult liikmetele)]&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==Liikmed==&lt;br /&gt;
*Sigrid Pachel&lt;br /&gt;
*Oliver Tiks&lt;br /&gt;
&lt;br /&gt;
==Idee==&lt;br /&gt;
Mõttes on luua spordiklubi(de) veebiteenus ja klientrakendus, mis võimaldaks saada infot pakutavate treeningute kohta, sisestada ja kuvada tunniplaani andmeid, registreerida osalejaid tundidesse ning teha muid asjakohaseid tegevusi nii klubi(de) personalil, liikmetel kui ka juhukasutajatel.&lt;br /&gt;
&lt;br /&gt;
==Veebiteenuse analüüs==&lt;br /&gt;
SPOTi veebiteenus võimaldab saada infot erinevate klubide treeningute kohta ja end neisse registreerida. Kasutaja saab teavet, kus ja millal treeningud toimuvad (tunniplaan), mida treeningus täpsemalt tehakse, mis stiiliga on tegemist, kes on treener, kui palju üks kord maksab jms info. Kasutajakontoga liikmel on võimalik end registreerida soovitud tundi ja hallata oma registreeringuid (muuta, tühistada).&lt;br /&gt;
&lt;br /&gt;
Spordiklubide infot haldavad süsteemi administraatorid, kes saavad lisada, muuta ja kustutada kõike sprodiklubiga seonduvat. Erinevaid treeninguid ja nendega seotud konkreetset infot saavad lisada ja hallata treenerid või spordiklubi esindajad.&lt;br /&gt;
&lt;br /&gt;
Projekti realiseerimiseks kasutame REST arhitektuuri ja ASP.NET MVC Web API tehnoloogiat.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Üldine plaan:&#039;&#039;&#039;&lt;br /&gt;
* esialgu üks kett (laienemise võimalusega)&lt;br /&gt;
* mitu klubi (asukoht, saalid-treeningualad, võimalikud lisatingimused)&lt;br /&gt;
* treeningute info (stiilid ehk kontseptid, litsentsid, …)&lt;br /&gt;
* tunniplaan (aeg, koht, instruktorid, max osalejate arv, ühe korra hind)&lt;br /&gt;
* registratuur (treeningutest osavõtjad)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kasutajad (rollid):&#039;&#039;&#039;&lt;br /&gt;
* administraatorid (saavad teha muudatusi)&lt;br /&gt;
* treenerid (info kvalifikatsiooni, litsentside kohta, õigus treeninguid lisada) &lt;br /&gt;
* liikmed (saavad treeningutele registreeruda)&lt;br /&gt;
* ülejäänud (näevad klubide ja treeningute infot ning tunniplaani)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Peaks olema:&#039;&#039;&#039;&lt;br /&gt;
* kasutajate loomine&lt;br /&gt;
* kasutajate tuvastamine ja haldamine&lt;br /&gt;
* kasutajate ja kasutusstatistika logimine&lt;br /&gt;
* teenuse poole pöördumiste arvu piiramine ja piirangute haldamine&lt;br /&gt;
* klubide, treenerite ja treeningute info väljastamine&lt;br /&gt;
* tunniplaani info väljastamine&lt;br /&gt;
* treeningutesse registreerimine&lt;br /&gt;
* registreeringu tühistamine&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Võiks olla:&#039;&#039;&#039;&lt;br /&gt;
* klubide, treenerite, treeningute lisamine ja muutmine&lt;br /&gt;
* tunniplaanis treeningute tühistamine&lt;br /&gt;
* sisestatud andmete kustutamine (pehmelt)&lt;br /&gt;
* rollide-õiguste määramine (admin)&lt;br /&gt;
* asukohad mitmes riigis&lt;br /&gt;
* kliendipaketid, arveldus&lt;br /&gt;
* kontaktide tsentraliseeritud haldus&lt;br /&gt;
* sisselogimine läbi Google’i, Facebooki vmt teenuse&lt;br /&gt;
&lt;br /&gt;
===Andmebaasi skeem (lihtsustatud)===&lt;br /&gt;
&lt;br /&gt;
[[File:SPOTService ERD.JPG|border|SPOT Service ERD]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Märkus: olemite atribuutidest on välja toodud ainult peamised.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====Tabelite kirjeldused====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kasutajahaldus*:&#039;&#039;&#039;&lt;br /&gt;
* User - kasutajate andmed&lt;br /&gt;
* Role - rollid, millega määratakse kasutajate õigused (&amp;quot;Admin&amp;quot;, &amp;quot;Trainer&amp;quot;, ...)&lt;br /&gt;
* UserRole - kasutajate sidumine rolli(de)ga&lt;br /&gt;
* UserLogin - muu teenuse kaudu sisselogimiseks&lt;br /&gt;
* UserClaim - muu teenuse kaudu sisselogimiseks&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;&#039;&#039;Kasutajahalduse süsteem toetub Asp.Net Identity valmislahendusele, mida on täiendanud A. Käver.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Klubid:&#039;&#039;&#039;&lt;br /&gt;
* Chain (optional) - spordiklubikettide info&lt;br /&gt;
* Location - spordiklubi/-rajatise asukoht linna/asula täpsusega&lt;br /&gt;
* Facility - spordiklubi/-rajatise andmed, seotud asukohaga ja vajadusel ketiga.&lt;br /&gt;
* Venue - spordiklubis/-rajatises kasutatavad saalid ja muud treeningualad&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Treeningud:&#039;&#039;&#039;&lt;br /&gt;
* Concept (Style) - treeningustiilid ehk kontseptid&lt;br /&gt;
* Licenser (optional) - treeninguliikide litsentsid (kui on)&lt;br /&gt;
* Training - treeninguliikide andmed, seotud stiili ja vajadusel litsentsiga&lt;br /&gt;
* Trainer (User (role: Trainer) + Training) - treeninguliikide sidumine treeneritega&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tunniplaan:&#039;&#039;&#039;&lt;br /&gt;
* ScheduleItem - treeningud tunniplaanis&lt;br /&gt;
* Instructor (User (role: Trainer) + ScheduleItem) - tundide juhendajad (võib olla mitu)&lt;br /&gt;
* Registration (ScheduleItem + User (role: any)) - tundidesse tehtud registreeringud&lt;br /&gt;
&lt;br /&gt;
== XML / XSD / XSLT==&lt;br /&gt;
Projekti esimeses etapis sai loodud XML andmefail, mille ülesehitus on paika pandud XSD skeemifailis. Lisaks on olemas kaks stiilifaili: esimene neist transformeerib andmed HTML-kujule, et kuvada infot  veebilehel, teine tekitab samade andmete esitamiseks uue struktuuriga XML faili.&lt;br /&gt;
&lt;br /&gt;
[https://drive.google.com/open?id=0B84njRSbVLUtd0U4aEJXOUhOTG8 Lae failid alla.] &lt;br /&gt;
&lt;br /&gt;
=== XML ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Fail sisaldab andmeid ühes spordiklubis pakutavate treeningute kohta. Andmed on esitatud treeninguliikide kaupa, mille juurde on lisatud ka vastava treeninguliigi tunniplaan. Treeninguliikidel on nimi ja kirjeldus ning vajadusel ära märgitud ka litsents. Failis on eraldi välja toodud treeningustiilid, instruktorid ja ruumid, kus treeningud toimuvad. Iga treeninguliik kuulub ühe või mitme stiili alla. Instruktoritel on tagasiside põhjal saadud hinne. Treeninguruumidel on vaikimisi määratud mahutavus. Tunniplaanis on ära toodud treeningu koht, algusaeg ja kestus ning instruktorid. Vajadusel saab eraldi määrata ka treeningurühma suuruse, kui see erineb tavalisest ruumi mahutavusest. Ka on võimalik treeningutunnile lisada kommentaar. Erinevate elementide andmed on omavahel seotud id-atribuutidega.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;?xml-stylesheet type=&amp;quot;text/xsl&amp;quot; href=&amp;quot;trainingsToHtml.xslt&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Trainings&amp;gt;&lt;br /&gt;
  &amp;lt;Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;![CDATA[Cardio]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
  &amp;lt;/Styles&amp;gt;&lt;br /&gt;
  &amp;lt;Instructors&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;1&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Yogafier]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;2&amp;quot; Rating=&amp;quot;4.7&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Mickey Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;3&amp;quot; Rating=&amp;quot;4.6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;4&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Donald Duck]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;5&amp;quot; Rating=&amp;quot;3.9&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Goofy]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;6&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Schwarzenegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;8&amp;quot; Rating=&amp;quot;4.8&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Kayla Weightlifter]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;9&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Margaret Strengthener]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
  &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;Venues&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;1&amp;quot; GroupSize=&amp;quot;45&amp;quot;&amp;gt;&amp;lt;![CDATA[Main Hall]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 2]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;3&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 3]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;4&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 4]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;5&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 5]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&amp;lt;![CDATA[Area 6]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;7&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&amp;lt;![CDATA[Yoga Hall]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
  &amp;lt;/Venues&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Yoga]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[Yoga is a group of physical, mental, and spiritual practices or disciplines which originated in ancient India. ]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;1&amp;quot; VenueId=&amp;quot;7&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-25T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;14&amp;quot; VenueId=&amp;quot;7&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT1H20M&amp;quot;&amp;gt;2017-03-28T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Comment&amp;gt;&lt;br /&gt;
          &amp;lt;![CDATA[Special class!]]&amp;gt;&lt;br /&gt;
        &amp;lt;/Comment&amp;gt; &lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/Nvlxn0EnmbM&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;  &lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;2&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyBalance™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[BODYBALANCE™ is the Yoga, Tai Chi, Pilates workout that builds flexibility and strength and leaves you feeling centered and calm. Based on a carefully structured series of stretches, moves and poses to music it creates a holistic workout that brings the body into a state of harmony and balance. This class will heighten your flexibility and inner strength creating a strong supple body from the inside out. Burn on average 390cals per hour.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;2&amp;quot; VenueId=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-31T12:15:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;3&amp;quot; VenueId=&amp;quot;2&amp;quot; &amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-30T13:30:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;3&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/jJxA6vBjUqY&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;3&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyJam™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;4&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[The Body Jam program is an addictive fusion of the latest dance styles to the hottest new sounds. This class isn’t just for dancers, it’s for everyone because the emphasis is put on not only having fun but also breaking a sweat. So grab a friend, get front and centre … you bring the attitude and we’ll bring the moves!]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;4&amp;quot;  VenueId=&amp;quot;3&amp;quot; &amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T16:10:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;4&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;5&amp;quot; VenueId=&amp;quot;5&amp;quot; &amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT45M&amp;quot;&amp;gt;2017-04-01T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;5&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/8PTXyg9si_4&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;4&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyPump™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[BodyPump classes are 59 minutes long and contain eight separate muscle-group specific songs or &amp;quot;tracks&amp;quot; along with an opening warm up track and closing cool-down track. There are also 45-minute and 30-minute class formats. The classes are performed to music using free weights-plates, barbells and an aerobic step. Participants choose their weights based on the exercise and their personal goals. Major muscle groups are worked via series of compound and isolation-based exercises including squats, presses, dead lifts. The focus is towards muscle endurance by moving light weights at high repetitions, what Les Mills calls the Rep Effect.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;3&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;6&amp;quot; VenueId=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;6&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;7&amp;quot; VenueId=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-23T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;6&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/zU_0XrdO3wo&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[CoreStrenght is a very hard workout! Not for beginners.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;3&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;8&amp;quot; VenueId=&amp;quot;6&amp;quot; GroupSize=&amp;quot;10&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT2H&amp;quot;&amp;gt;2017-03-23T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;9&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Comment&amp;gt;&lt;br /&gt;
          &amp;lt;![CDATA[Special challenge!]]&amp;gt;&lt;br /&gt;
        &amp;lt;/Comment&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;9&amp;quot; VenueId=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;8&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;10&amp;quot; VenueId=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-04-05T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;8&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;9&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/ZxTVmpvyUt8&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[Zumba involves dance and aerobic movements performed to energetic music. The choreography incorporates hip-hop, soca, samba, salsa, merengue and mambo. Squats and lunges are also included.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;4&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;11&amp;quot; VenueId=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT55M&amp;quot;&amp;gt;2017-03-26T15:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;12&amp;quot; VenueId=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-28T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;13&amp;quot; VenueId=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/-ZB6XIkfxnQ&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
&amp;lt;/Trainings&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSD ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Skeemifail kontrollib eelnevas andmefailis esitatud andmete vastavust kokkulepitud formaadile, samuti õigete andmetüüpide kasutamist. Alamelemendi id-atribuudi väärtus peab olema iga elemendirühma lõikes unikaalne. Kohustuslike elementide ja atribuutide kõrval on ka mõned (nt kommentaar), mille olemasolu pole alati tarvilik. Teatud puhkudel on piiratud maksimaalset elementide arvu (nt treeningutunni algusaeg). Faili üldine struktuur on kindel, aga alati pole alamelementide järjekord oluline (nt treeninguliigi puhul).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xs:schema attributeFormDefault=&amp;quot;unqualified&amp;quot; elementFormDefault=&amp;quot;qualified&amp;quot; xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xs:element name=&amp;quot;Trainings&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Styles&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Style&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
          &amp;lt;xs:unique name=&amp;quot;UniqueStyleId&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xs:selector xpath=&amp;quot;Style&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Instructors&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;Name&amp;quot; type=&amp;quot;xs:string&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:attribute name=&amp;quot;Rating&amp;quot; type=&amp;quot;xs:decimal&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
          &amp;lt;xs:unique name=&amp;quot;UniqueInstructorId&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xs:selector xpath=&amp;quot;Instructor&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Venues&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Venue&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:attribute name=&amp;quot;GroupSize&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
          &amp;lt;xs:unique name=&amp;quot;UniqueVenueId&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xs:selector xpath=&amp;quot;Venue&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Training&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:all&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Description&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Styles&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Style&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Schedule&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;ScheduleItem&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:all&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element  maxOccurs=&amp;quot;1&amp;quot; name=&amp;quot;Time&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:extension base=&amp;quot;xs:dateTime&amp;quot;&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:attribute name=&amp;quot;Duration&amp;quot; type=&amp;quot;xs:duration&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element name=&amp;quot;Instructors&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                    &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                                      &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                                        &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                                      &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                                    &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                                  &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; name=&amp;quot;Comment&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:all&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;VenueId&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;GroupSize&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;optional&amp;quot; /&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;VideoUrl&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:all&amp;gt;&lt;br /&gt;
            &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xs:attribute name=&amp;quot;Licence&amp;quot; type=&amp;quot;xs:string&amp;quot; use=&amp;quot;optional&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
    &amp;lt;xs:unique name=&amp;quot;UniqueTrainingId&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xs:selector xpath=&amp;quot;Training&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
    &amp;lt;xs:unique name=&amp;quot;UniqueScheduleItemId&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xs:selector xpath=&amp;quot;Training/Schedule/ScheduleItem&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSLT (html) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Selles transformatsioonifailis on kirjeldatud XML failis olevate andmete [http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/trainings.xml  kuvamise viis veebilehel]. Treeninguliigid on jaotatud stiiliblokkidesse (mõni treening kuulub mitme stiili alla). Iga treeninguliigi all on tabeli kujul esitatud tunniplaan ning lisatud näidisvideo ja kirjeldus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot; xmlns:msxsl=&amp;quot;urn:schemas-microsoft-com:xslt&amp;quot; exclude-result-prefixes=&amp;quot;msxsl&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:output method=&amp;quot;html&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;html&amp;gt;&lt;br /&gt;
      &amp;lt;head&amp;gt;&lt;br /&gt;
        &amp;lt;title&amp;gt;SuperSportsClub - Trainings&amp;lt;/title&amp;gt;&lt;br /&gt;
        &amp;lt;style&amp;gt;&lt;br /&gt;
          body {&lt;br /&gt;
          background:BurlyWood;&lt;br /&gt;
          text-align: center;&lt;br /&gt;
          }&lt;br /&gt;
          .section {&lt;br /&gt;
          text-align:left;&lt;br /&gt;
          width:1000px;&lt;br /&gt;
          padding:20px;&lt;br /&gt;
          background:Chocolate;&lt;br /&gt;
          margin: auto;&lt;br /&gt;
          }&lt;br /&gt;
          table, th, td, .section {&lt;br /&gt;
          border: 1px solid black;&lt;br /&gt;
          }&lt;br /&gt;
          th {&lt;br /&gt;
          text-align:left;&lt;br /&gt;
          padding-left: 10px;&lt;br /&gt;
          padding-right: 10px;&lt;br /&gt;
          }&lt;br /&gt;
          td {&lt;br /&gt;
          text-align:center;&lt;br /&gt;
          }&lt;br /&gt;
          p {&lt;br /&gt;
          text-align:justify;&lt;br /&gt;
          }&lt;br /&gt;
          .description {&lt;br /&gt;
          vertical-align:top; &lt;br /&gt;
          padding:10px;&lt;br /&gt;
          }&lt;br /&gt;
        &amp;lt;/style&amp;gt;&lt;br /&gt;
      &amp;lt;/head&amp;gt;&lt;br /&gt;
      &amp;lt;body&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;Trainings at SuperSportsClub&amp;lt;/h1&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;/Trainings/Styles/Style&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:sort select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:variable select=&amp;quot;.&amp;quot; name=&amp;quot;SelectedStyle&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;section&amp;quot; &amp;gt;&lt;br /&gt;
            &amp;lt;h2&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select=&amp;quot;$SelectedStyle&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/h2&amp;gt;&lt;br /&gt;
            &amp;lt;ul&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:for-each select=&amp;quot;/Trainings/Training&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:sort select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:variable name=&amp;quot;Training&amp;quot; select=&amp;quot;.&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:if test=&amp;quot;Styles/Style/@Id = $SelectedStyle/@Id&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;&lt;br /&gt;
                    &amp;lt;h3&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;$Training/Name&amp;quot; /&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:if test=&amp;quot;$Training/@Licence&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:text&amp;gt; (&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:value-of select=&amp;quot;$Training/@Licence&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:text&amp;gt;)&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
                    &amp;lt;/h3&amp;gt;&lt;br /&gt;
                    &amp;lt;table&amp;gt;&lt;br /&gt;
                      &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                      &amp;lt;/tr&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:for-each select=&amp;quot;$Training/Schedule/ScheduleItem&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:sort select=&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:variable name=&amp;quot;StartTime&amp;quot; select=&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:variable name=&amp;quot;Duration&amp;quot; select=&amp;quot;$StartTime/@Duration&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;tr&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;150&amp;quot; &amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;concat(&lt;br /&gt;
                                            substring($StartTime, 9, 2), &lt;br /&gt;
                                            &#039;.&#039;, &lt;br /&gt;
                                            substring($StartTime, 6, 2), &lt;br /&gt;
                                            &#039;.&#039;, &lt;br /&gt;
                                            substring($StartTime, 1, 4),&lt;br /&gt;
                                            &#039; &#039;,&lt;br /&gt;
                                            substring($StartTime, 12, 2),&lt;br /&gt;
                                            &#039;:&#039;,&lt;br /&gt;
                                            substring($StartTime, 15, 2))&lt;br /&gt;
                                            &amp;quot; /&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:if test=&amp;quot;Comment&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;br/&amp;gt;&lt;br /&gt;
                              &amp;lt;div style=&amp;quot;color:Green&amp;quot;&amp;gt;&lt;br /&gt;
                                &amp;lt;xsl:value-of select=&amp;quot;Comment&amp;quot;/&amp;gt;&lt;br /&gt;
                              &amp;lt;/div&amp;gt;&lt;br /&gt;
                            &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;substring($Duration, 3, 6)&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:variable name=&amp;quot;VenueId&amp;quot; select=&amp;quot;@VenueId&amp;quot;/&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;/Trainings/Venues/Venue[@Id=$VenueId]&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:for-each select=&amp;quot;Instructors/Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:variable name=&amp;quot;InstructorId&amp;quot; select=&amp;quot;@Id&amp;quot;&amp;gt;&amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:variable name=&amp;quot;SelectedInstructor&amp;quot; select=&amp;quot;/Trainings/Instructors/Instructor[@Id=$InstructorId]&amp;quot; /&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/Name&amp;quot;/&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:text&amp;gt; (&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/@Rating&amp;quot; /&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:text&amp;gt;)&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                              &amp;lt;br/&amp;gt;&lt;br /&gt;
                            &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;/tr&amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
                    &amp;lt;/table&amp;gt;&lt;br /&gt;
                    &amp;lt;br/&amp;gt;&lt;br /&gt;
                    &amp;lt;table&amp;gt;&lt;br /&gt;
                      &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                          &amp;lt;xsl:variable name=&amp;quot;VideoUrl&amp;quot; select=&amp;quot;$Training/VideoUrl&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;{$VideoUrl}&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                          &amp;lt;p&amp;gt;&lt;br /&gt;
                            &amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&lt;br /&gt;
                          &amp;lt;/p&amp;gt;&lt;br /&gt;
                          &amp;lt;p&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;$Training/Description&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                      &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;/table&amp;gt;&lt;br /&gt;
                  &amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
            &amp;lt;/ul&amp;gt;&lt;br /&gt;
          &amp;lt;/div&amp;gt;&lt;br /&gt;
          &amp;lt;br/&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
      &amp;lt;/body&amp;gt;&lt;br /&gt;
    &amp;lt;/html&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== HTML (transformeeritud) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/trainings.html Vaata eelneva transformatsiooni tulemust.]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;META http-equiv=&amp;quot;Content-Type&amp;quot; content=&amp;quot;text/html; charset=utf-8&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;SuperSportsClub - Trainings&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;style&amp;gt;&lt;br /&gt;
        body {&lt;br /&gt;
            background: BurlyWood;&lt;br /&gt;
            text-align: center;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        .section {&lt;br /&gt;
            text-align: left;&lt;br /&gt;
            width: 1000px;&lt;br /&gt;
            padding: 20px;&lt;br /&gt;
            background: Chocolate;&lt;br /&gt;
            margin: auto;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        table, th, td, .section {&lt;br /&gt;
            border: 1px solid black;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        th {&lt;br /&gt;
            text-align: left;&lt;br /&gt;
            padding-left: 10px;&lt;br /&gt;
            padding-right: 10px;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        td {&lt;br /&gt;
            text-align: center;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        p {&lt;br /&gt;
            text-align: justify;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        .description {&lt;br /&gt;
            vertical-align: top;&lt;br /&gt;
            padding: 10px;&lt;br /&gt;
        }&lt;br /&gt;
    &amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
    &amp;lt;h1&amp;gt;Trainings at SuperSportsClub&amp;lt;/h1&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Body&amp;amp;amp;Mind&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyBalance™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 13:30&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;1H15M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 2&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Minnie Mouse (4.6)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;31.03.2017 12:15&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;1H15M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 3&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Mickey Mouse (4.7)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/jJxA6vBjUqY&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                BODYBALANCE™ is the Yoga, Tai Chi, Pilates workout that builds flexibility and strength and leaves you feeling centered and calm. Based on a carefully structured series of stretches, moves and poses to music it creates a holistic workout that brings the body into a state of harmony and balance. This class will heighten your flexibility and inner strength creating a strong supple body from the inside out. Burn on average 390cals per hour.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;Yoga&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;25.03.2017 14:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Yoga Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Minnie Yogafier (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
                            28.03.2017 14:00&amp;lt;br&amp;gt;&amp;lt;div style=&amp;quot;color:Green&amp;quot;&amp;gt;&lt;br /&gt;
                                Special class!&lt;br /&gt;
                            &amp;lt;/div&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;1H20M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Yoga Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Minnie Yogafier (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/Nvlxn0EnmbM&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                Yoga is a group of physical, mental, and spiritual practices or disciplines which originated in ancient India.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Cardio&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyJam™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 16:10&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 3&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Donald Duck (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;01.04.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;45M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 5&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Goofy (3.9)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/8PTXyg9si_4&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                The Body Jam program is an addictive fusion of the latest dance styles to the hottest new sounds. This class isn’t just for dancers, it’s for everyone because the emphasis is put on not only having fun but also breaking a sweat. So grab a friend, get front and centre … you bring the attitude and we’ll bring the moves!&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Dance&amp;amp;amp;Fun&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyJam™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 16:10&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 3&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Donald Duck (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;01.04.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;45M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 5&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Goofy (3.9)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/8PTXyg9si_4&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                The Body Jam program is an addictive fusion of the latest dance styles to the hottest new sounds. This class isn’t just for dancers, it’s for everyone because the emphasis is put on not only having fun but also breaking a sweat. So grab a friend, get front and centre … you bring the attitude and we’ll bring the moves!&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;Zumba®&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;26.03.2017 15:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;55M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 2&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Zumbaschnegger (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;28.03.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 4&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Zumbaschnegger (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 2&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Zumbaschnegger (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/-ZB6XIkfxnQ&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                Zumba involves dance and aerobic movements performed to energetic music. The choreography incorporates hip-hop, soca, samba, salsa, merengue and mambo. Squats and lunges are also included.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Strength&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyPump™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;23.03.2017 13:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Main Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Schwarzenegger (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 13:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Main Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Schwarzenegger (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/zU_0XrdO3wo&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                BodyPump classes are 59 minutes long and contain eight separate muscle-group specific songs or &amp;quot;tracks&amp;quot; along with an opening warm up track and closing cool-down track. There are also 45-minute and 30-minute class formats. The classes are performed to music using free weights-plates, barbells and an aerobic step. Participants choose their weights based on the exercise and their personal goals. Major muscle groups are worked via series of compound and isolation-based exercises including squats, presses, dead lifts. The focus is towards muscle endurance by moving light weights at high repetitions, what Les Mills calls the Rep Effect.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;CoreStrength&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
                            23.03.2017 12:00&amp;lt;br&amp;gt;&amp;lt;div style=&amp;quot;color:Green&amp;quot;&amp;gt;&lt;br /&gt;
                                Special challenge!&lt;br /&gt;
                            &amp;lt;/div&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;2H&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Area 6&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Margaret Strengthener (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Area 6&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Kayla Weightlifter (4.8)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;05.04.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Area 6&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Kayla Weightlifter (4.8)&amp;lt;br&amp;gt;Margaret Strengthener (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/ZxTVmpvyUt8&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                CoreStrenght is a very hard workout! Not for beginners.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSLT (xml) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Selle transformatsiooniga luuakse uus [http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/schedule.xml XML fail], milles on treeningute andmed esitatud ühtse tunniplaani kujul. Algses failis erinevate elementide alla paigutatud andmed on nüüd tunniplaani alamelemendis kokku viidud. Sidumine on teostatud id-atribuutide abil. Tunniplaanis on ühes kohas kirjas treeningu nimi, stiil(id), koht, algusaeg, kestus, rühma suurus, instruktorid ja muu täiendav info.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&lt;br /&gt;
    xmlns:msxsl=&amp;quot;urn:schemas-microsoft-com:xslt&amp;quot; exclude-result-prefixes=&amp;quot;msxsl&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:output method=&amp;quot;xml&amp;quot; indent=&amp;quot;yes&amp;quot; cdata-section-elements=&amp;quot;Name Style Comment&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;/Trainings/Training&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:sort select=&amp;quot;Name&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:variable name=&amp;quot;SelectedTraining&amp;quot; select=&amp;quot;.&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;Schedule/ScheduleItem&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:sort select=&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;ScheduleItem&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:variable name=&amp;quot;VenueId&amp;quot; select=&amp;quot;@VenueId&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:variable name=&amp;quot;SelectedVenue&amp;quot; select=&amp;quot;/Trainings/Venues/Venue[@Id=$VenueId]&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:attribute name=&amp;quot;GroupSize&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;@GroupSize&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:value-of select=&amp;quot;@GroupSize&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:value-of select=&amp;quot;$SelectedVenue/@GroupSize&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
            &amp;lt;Venue&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$VenueId&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select=&amp;quot;$SelectedVenue&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/Venue&amp;gt;&lt;br /&gt;
            &amp;lt;Training&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$SelectedTraining/@Id&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:if test=&amp;quot;$SelectedTraining/@Licence&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:attribute name=&amp;quot;Licence&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:value-of select=&amp;quot;$SelectedTraining/@Licence&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
              &amp;lt;Name&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$SelectedTraining/Name&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/Name&amp;gt;&lt;br /&gt;
              &amp;lt;Styles&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:for-each select=&amp;quot;$SelectedTraining/Styles/Style&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:variable name=&amp;quot;StyleId&amp;quot; select=&amp;quot;@Id&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;Style&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:attribute name=&amp;quot;StyleId&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;$StyleId&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;/Trainings/Styles/Style[@Id=$StyleId]&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/Style&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
              &amp;lt;/Styles&amp;gt;&lt;br /&gt;
            &amp;lt;/Training&amp;gt;&lt;br /&gt;
            &amp;lt;Time&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:attribute name=&amp;quot;Duration&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;Time/@Duration&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select =&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/Time&amp;gt;&lt;br /&gt;
            &amp;lt;Instructors&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:for-each select=&amp;quot;Instructors/Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:variable name=&amp;quot;InstructorId&amp;quot; select=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:variable name=&amp;quot;SelectedInstructor&amp;quot; select=&amp;quot;/Trainings/Instructors/Instructor[@Id=$InstructorId]&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;Instructor&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;$InstructorId&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:attribute name=&amp;quot;Rating&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/@Rating&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                  &amp;lt;Name&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/Name&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/Name&amp;gt;&lt;br /&gt;
                &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
            &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:if test=&amp;quot;Comment&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;Comment&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;Comment&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/Comment&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
          &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XML (transformeeritud) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/schedule.xml Vaata eelneva transformatsiooni tulemust.]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Schedule&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;3&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot;&amp;gt;Hall 2&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;2&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyBalance™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-30T13:30:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;3&amp;quot; Rating=&amp;quot;4.6&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;2&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;3&amp;quot;&amp;gt;Hall 3&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;2&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyBalance™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-31T12:15:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;2&amp;quot; Rating=&amp;quot;4.7&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Mickey Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;4&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;3&amp;quot;&amp;gt;Hall 3&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;3&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyJam™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;![CDATA[Cardio]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T16:10:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;4&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Donald Duck]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;5&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;5&amp;quot;&amp;gt;Hall 5&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;3&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyJam™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;![CDATA[Cardio]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT45M&amp;quot;&amp;gt;2017-04-01T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;5&amp;quot; Rating=&amp;quot;3.9&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Goofy]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;7&amp;quot; GroupSize=&amp;quot;45&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;1&amp;quot;&amp;gt;Main Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;4&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyPump™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-23T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;6&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Schwarzenegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;6&amp;quot; GroupSize=&amp;quot;45&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;1&amp;quot;&amp;gt;Main Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;4&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyPump™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;6&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Schwarzenegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;8&amp;quot; GroupSize=&amp;quot;10&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot;&amp;gt;Area 6&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT2H&amp;quot;&amp;gt;2017-03-23T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;9&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Margaret Strengthener]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
    &amp;lt;Comment&amp;gt;&amp;lt;![CDATA[&lt;br /&gt;
          Special challenge!&lt;br /&gt;
        ]]&amp;gt;&amp;lt;/Comment&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;9&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot;&amp;gt;Area 6&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;8&amp;quot; Rating=&amp;quot;4.8&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Kayla Weightlifter]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;10&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot;&amp;gt;Area 6&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-04-05T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;8&amp;quot; Rating=&amp;quot;4.8&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Kayla Weightlifter]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;9&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Margaret Strengthener]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;11&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot;&amp;gt;Hall 2&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT55M&amp;quot;&amp;gt;2017-03-26T15:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;12&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;4&amp;quot;&amp;gt;Hall 4&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-28T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;13&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot;&amp;gt;Hall 2&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;1&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;7&amp;quot;&amp;gt;Yoga Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Yoga]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-25T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;1&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Yogafier]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;14&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;7&amp;quot;&amp;gt;Yoga Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Yoga]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT1H20M&amp;quot;&amp;gt;2017-03-28T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;1&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Yogafier]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
    &amp;lt;Comment&amp;gt;&amp;lt;![CDATA[&lt;br /&gt;
          Special class!&lt;br /&gt;
        ]]&amp;gt;&amp;lt;/Comment&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
&amp;lt;/Schedule&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus ==&lt;br /&gt;
Angular JS &#039;&#039;single page application&#039;&#039; eelnevalt kirjeldatud veebiteenusele. Sisse logimata saab kuvada spordiklubi tunniplaani nädalate kaupa, treeninguliike stiilide kaupa ja treenereid. Võimalik on liituda teenusega ja registreeruda treeningutele, samuti registreeringuid tühistada nii otse tunniplaanist kui ka registreeringute lehel. Esialgu põhineb süsteem ühel spordiklubil. Kasutamise eelduseks on tunniplaani olemasolu andmebaasis.&lt;br /&gt;
&lt;br /&gt;
Autentimine on lahendatud tokenipõhiselt. Eeskuju ja põhjana kasutasime näidisrakendust, mille juhend ja lähtekood on leitav [http://bitoftech.net/2014/06/09/angularjs-token-authentication-using-asp-net-web-api-2-owin-asp-net-identity/ siit].&lt;br /&gt;
&lt;br /&gt;
== Lähtekood ==&lt;br /&gt;
Eksamiks valminud veebiteenuse ja klientrakenduse kokkupakitult allalaadimiseks klõpsa [https://drive.google.com/open?id=0B84njRSbVLUtTWx5ZkZsdDBJZDQ sellel lingil]. WebApi ja Angular JS klient on eraldi lahendustes. Kliendi testimiseks brauseris (Chrome, Firefox vm) tuleb eelnevalt käivitada ka veebiteenus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;NB! Võib juhtuda, et WebApi esmakordsel käivitamisel loodavasse andmebaasi kõiki andmeid (tunniplaani ja registreerimisi jooksvasse nädalasse) ei lisandu. Sellisel juhul kustuta tekkinud andmebaas ja käivita kõigepealt samas lahenduses olev konsoolirakendus.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Retsensioonid ==&lt;br /&gt;
&lt;br /&gt;
# [https://wiki.itcollege.ee/index.php/Talk:JRT#Hinnang_meeskonna_JRT_esitatud_XML-failidele JRT meeskonna XML/XSD/XSLT retsensioon ]&lt;br /&gt;
# [https://wiki.itcollege.ee/index.php/Talk:JRT#Hinnang_meeskonna_JRT_esitatud_veebiteenusele JRT meeskonna veebiteenuse retsensioon ]&lt;br /&gt;
# [https://wiki.itcollege.ee/index.php/Talk:JRT#Hinnang_meeskonna_JRT_esitatud_klientrakendusele JRT meeskonna klientrakenduse retsensioon ]&lt;br /&gt;
&lt;br /&gt;
== Log ==&lt;br /&gt;
* 03.03.17 Esimene kohtumine. Idee.&lt;br /&gt;
* 17.03.17 Osa XMList valmis, osa XSLT-st valmis.&lt;br /&gt;
* 18.03.17 Teine kohtumine. XMLi täiendamine, esimene ülekäimine XSD-s.&lt;br /&gt;
* 19.03.17 XML/XSLT/XSD täiendamine ja lõpetamine.&lt;br /&gt;
* 20.03.17 XML fail, skeemifail ja stiilifailid esitatud. Projekti esimese etapi lõpp. Kevade algus.&lt;br /&gt;
* 26.03.17 XML/XSLT/XSD retsensioon esitatud.&lt;br /&gt;
* 16.04.17 Veebiteenuse analüüsi koostamine.&lt;br /&gt;
* 17.04.17 Esialgne veebiteenuse analüüs ja kavand valmis.&lt;br /&gt;
* 19.04.17 Alustasime veebiteenusega, koostegemine: Domain, DAL, Interfaces, Repostitories. Testimine konsoolis.&lt;br /&gt;
* 24.04.17 Veebiteenuse koostegemine, 2. kord: Domaini täiendamine.&lt;br /&gt;
* 29.04.17 Veebiteenuse koostegemine, 3. kord: Interfaces, Repositories, Factory + UOW. Testimine konsoolis.&lt;br /&gt;
* 01.05.17 Andmebaasi täitmine testandmetega varasemas faasis loodud XML failist.&lt;br /&gt;
* 02.05.17 Veebiteenuse koostegemine, 4. kord: alustasime BLi ja WebApi ehitamist. GET päringud.&lt;br /&gt;
* 09.05.17 Veebiteenuse koostegemine, 5. kord: lisasime Identity.&lt;br /&gt;
* 11.05.17 Veebiteenuse koostegemine, 6. kord: WebApi arendamine. POST, PUT ja DELETE päringud.&lt;br /&gt;
* 15.05.17 Veebiteenuse koostegemine, 7. kord: WebApi arendamine. Lisasime  api kontrollereid.&lt;br /&gt;
* 16.05.17 Veebiteenuse koostegemine, 8. kord: WebApi arendamine. Identity kontroll Fiddleri ja Postmaniga.&lt;br /&gt;
* 20.05.17 Klientrakenduse koostegemine, 1. kord. Testklient.&lt;br /&gt;
* 25.05.17 Klientrakenduse koostegemine, 2. kord. Klientrakenduse arendamine.&lt;br /&gt;
* 01.06.17 Klientrakenduse koostegemine, 3. kord. Klientrakenduse arendamine. Angular JS.&lt;br /&gt;
* 03.06.17 - 11.06.17 Klientrakenduse arendamine. Tokenipõhine autentimine. Veebiteenuse viimistlemine.&lt;br /&gt;
* 11.06.17 Lõpptähtaeg. Projekti esitlemine eksamil.&lt;br /&gt;
* 12.06.17 Teiste lahenduste retsenseerimine.&lt;br /&gt;
* 13.06.17 Veebiteenuse ja klientrakenduse retsensioonid esitatud. Selleks korraks kõik.&lt;/div&gt;</summary>
		<author><name>Otiks</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Team_SPOT&amp;diff=123579</id>
		<title>Team SPOT</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Team_SPOT&amp;diff=123579"/>
		<updated>2017-06-13T20:41:29Z</updated>

		<summary type="html">&lt;p&gt;Otiks: /* Log */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://wiki.itcollege.ee/index.php/Kodut%C3%B6%C3%B6_aines_%22V%C3%B5rgurakendused_II:_hajuss%C3%BCsteemide_ehitamine%22_2017 Kodutöö aines &amp;quot;Võrgurakendused II: hajussüsteemide ehitamine&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
[https://projectspot.visualstudio.com/PROJECTSPOT Projekti repositoorium (avaneb ainult liikmetele)]&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==Liikmed==&lt;br /&gt;
*Sigrid Pachel&lt;br /&gt;
*Oliver Tiks&lt;br /&gt;
&lt;br /&gt;
==Idee==&lt;br /&gt;
Mõttes on luua spordiklubi(de) veebiteenus ja klientrakendus, mis võimaldaks saada infot pakutavate treeningute kohta, sisestada ja kuvada tunniplaani andmeid, registreerida osalejaid tundidesse ning teha muid asjakohaseid tegevusi nii klubi(de) personalil, liikmetel kui ka juhukasutajatel.&lt;br /&gt;
&lt;br /&gt;
==Veebiteenuse analüüs==&lt;br /&gt;
SPOTi veebiteenus võimaldab saada infot erinevate klubide treeningute kohta ja end neisse registreerida. Kasutaja saab teavet, kus ja millal treeningud toimuvad (tunniplaan), mida treeningus täpsemalt tehakse, mis stiiliga on tegemist, kes on treener, kui palju üks kord maksab jms info. Kasutajakontoga liikmel on võimalik end registreerida soovitud tundi ja hallata oma registreeringuid (muuta, tühistada).&lt;br /&gt;
&lt;br /&gt;
Spordiklubide infot haldavad süsteemi administraatorid, kes saavad lisada, muuta ja kustutada kõike sprodiklubiga seonduvat. Erinevaid treeninguid ja nendega seotud konkreetset infot saavad lisada ja hallata treenerid või spordiklubi esindajad.&lt;br /&gt;
&lt;br /&gt;
Projekti realiseerimiseks kasutame REST arhitektuuri ja ASP.NET MVC Web API tehnoloogiat.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Üldine plaan:&#039;&#039;&#039;&lt;br /&gt;
* esialgu üks kett (laienemise võimalusega)&lt;br /&gt;
* mitu klubi (asukoht, saalid-treeningualad, võimalikud lisatingimused)&lt;br /&gt;
* treeningute info (stiilid ehk kontseptid, litsentsid, …)&lt;br /&gt;
* tunniplaan (aeg, koht, instruktorid, max osalejate arv, ühe korra hind)&lt;br /&gt;
* registratuur (treeningutest osavõtjad)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kasutajad (rollid):&#039;&#039;&#039;&lt;br /&gt;
* administraatorid (saavad teha muudatusi)&lt;br /&gt;
* treenerid (info kvalifikatsiooni, litsentside kohta, õigus treeninguid lisada) &lt;br /&gt;
* liikmed (saavad treeningutele registreeruda)&lt;br /&gt;
* ülejäänud (näevad klubide ja treeningute infot ning tunniplaani)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Peaks olema:&#039;&#039;&#039;&lt;br /&gt;
* kasutajate loomine&lt;br /&gt;
* kasutajate tuvastamine ja haldamine&lt;br /&gt;
* kasutajate ja kasutusstatistika logimine&lt;br /&gt;
* teenuse poole pöördumiste arvu piiramine ja piirangute haldamine&lt;br /&gt;
* klubide, treenerite ja treeningute info väljastamine&lt;br /&gt;
* tunniplaani info väljastamine&lt;br /&gt;
* treeningutesse registreerimine&lt;br /&gt;
* registreeringu tühistamine&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Võiks olla:&#039;&#039;&#039;&lt;br /&gt;
* klubide, treenerite, treeningute lisamine ja muutmine&lt;br /&gt;
* tunniplaanis treeningute tühistamine&lt;br /&gt;
* sisestatud andmete kustutamine (pehmelt)&lt;br /&gt;
* rollide-õiguste määramine (admin)&lt;br /&gt;
* asukohad mitmes riigis&lt;br /&gt;
* kliendipaketid, arveldus&lt;br /&gt;
* kontaktide tsentraliseeritud haldus&lt;br /&gt;
* sisselogimine läbi Google’i, Facebooki vmt teenuse&lt;br /&gt;
&lt;br /&gt;
===Andmebaasi skeem (lihtsustatud)===&lt;br /&gt;
&lt;br /&gt;
[[File:SPOTService ERD.JPG|border|SPOT Service ERD]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Märkus: olemite atribuutidest on välja toodud ainult peamised.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====Tabelite kirjeldused====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kasutajahaldus*:&#039;&#039;&#039;&lt;br /&gt;
* User - kasutajate andmed&lt;br /&gt;
* Role - rollid, millega määratakse kasutajate õigused (&amp;quot;Admin&amp;quot;, &amp;quot;Trainer&amp;quot;, ...)&lt;br /&gt;
* UserRole - kasutajate sidumine rolli(de)ga&lt;br /&gt;
* UserLogin - muu teenuse kaudu sisselogimiseks&lt;br /&gt;
* UserClaim - muu teenuse kaudu sisselogimiseks&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;&#039;&#039;Kasutajahalduse süsteem toetub Asp.Net Identity valmislahendusele, mida on täiendanud A. Käver.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Klubid:&#039;&#039;&#039;&lt;br /&gt;
* Chain (optional) - spordiklubikettide info&lt;br /&gt;
* Location - spordiklubi/-rajatise asukoht linna/asula täpsusega&lt;br /&gt;
* Facility - spordiklubi/-rajatise andmed, seotud asukohaga ja vajadusel ketiga.&lt;br /&gt;
* Venue - spordiklubis/-rajatises kasutatavad saalid ja muud treeningualad&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Treeningud:&#039;&#039;&#039;&lt;br /&gt;
* Concept (Style) - treeningustiilid ehk kontseptid&lt;br /&gt;
* Licenser (optional) - treeninguliikide litsentsid (kui on)&lt;br /&gt;
* Training - treeninguliikide andmed, seotud stiili ja vajadusel litsentsiga&lt;br /&gt;
* Trainer (User (role: Trainer) + Training) - treeninguliikide sidumine treeneritega&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tunniplaan:&#039;&#039;&#039;&lt;br /&gt;
* ScheduleItem - treeningud tunniplaanis&lt;br /&gt;
* Instructor (User (role: Trainer) + ScheduleItem) - tundide juhendajad (võib olla mitu)&lt;br /&gt;
* Registration (ScheduleItem + User (role: any)) - tundidesse tehtud registreeringud&lt;br /&gt;
&lt;br /&gt;
== XML / XSD / XSLT==&lt;br /&gt;
Projekti esimeses etapis sai loodud XML andmefail, mille ülesehitus on paika pandud XSD skeemifailis. Lisaks on olemas kaks stiilifaili: esimene neist transformeerib andmed HTML-kujule, et kuvada infot  veebilehel, teine tekitab samade andmete esitamiseks uue struktuuriga XML faili.&lt;br /&gt;
&lt;br /&gt;
[https://drive.google.com/open?id=0B84njRSbVLUtd0U4aEJXOUhOTG8 Lae failid alla.] &lt;br /&gt;
&lt;br /&gt;
=== XML ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Fail sisaldab andmeid ühes spordiklubis pakutavate treeningute kohta. Andmed on esitatud treeninguliikide kaupa, mille juurde on lisatud ka vastava treeninguliigi tunniplaan. Treeninguliikidel on nimi ja kirjeldus ning vajadusel ära märgitud ka litsents. Failis on eraldi välja toodud treeningustiilid, instruktorid ja ruumid, kus treeningud toimuvad. Iga treeninguliik kuulub ühe või mitme stiili alla. Instruktoritel on tagasiside põhjal saadud hinne. Treeninguruumidel on vaikimisi määratud mahutavus. Tunniplaanis on ära toodud treeningu koht, algusaeg ja kestus ning instruktorid. Vajadusel saab eraldi määrata ka treeningurühma suuruse, kui see erineb tavalisest ruumi mahutavusest. Ka on võimalik treeningutunnile lisada kommentaar. Erinevate elementide andmed on omavahel seotud id-atribuutidega.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;?xml-stylesheet type=&amp;quot;text/xsl&amp;quot; href=&amp;quot;trainingsToHtml.xslt&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Trainings&amp;gt;&lt;br /&gt;
  &amp;lt;Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;![CDATA[Cardio]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
  &amp;lt;/Styles&amp;gt;&lt;br /&gt;
  &amp;lt;Instructors&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;1&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Yogafier]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;2&amp;quot; Rating=&amp;quot;4.7&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Mickey Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;3&amp;quot; Rating=&amp;quot;4.6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;4&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Donald Duck]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;5&amp;quot; Rating=&amp;quot;3.9&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Goofy]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;6&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Schwarzenegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;8&amp;quot; Rating=&amp;quot;4.8&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Kayla Weightlifter]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;9&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Margaret Strengthener]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
  &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;Venues&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;1&amp;quot; GroupSize=&amp;quot;45&amp;quot;&amp;gt;&amp;lt;![CDATA[Main Hall]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 2]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;3&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 3]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;4&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 4]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;5&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 5]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&amp;lt;![CDATA[Area 6]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;7&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&amp;lt;![CDATA[Yoga Hall]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
  &amp;lt;/Venues&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Yoga]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[Yoga is a group of physical, mental, and spiritual practices or disciplines which originated in ancient India. ]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;1&amp;quot; VenueId=&amp;quot;7&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-25T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;14&amp;quot; VenueId=&amp;quot;7&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT1H20M&amp;quot;&amp;gt;2017-03-28T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Comment&amp;gt;&lt;br /&gt;
          &amp;lt;![CDATA[Special class!]]&amp;gt;&lt;br /&gt;
        &amp;lt;/Comment&amp;gt; &lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/Nvlxn0EnmbM&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;  &lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;2&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyBalance™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[BODYBALANCE™ is the Yoga, Tai Chi, Pilates workout that builds flexibility and strength and leaves you feeling centered and calm. Based on a carefully structured series of stretches, moves and poses to music it creates a holistic workout that brings the body into a state of harmony and balance. This class will heighten your flexibility and inner strength creating a strong supple body from the inside out. Burn on average 390cals per hour.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;2&amp;quot; VenueId=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-31T12:15:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;3&amp;quot; VenueId=&amp;quot;2&amp;quot; &amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-30T13:30:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;3&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/jJxA6vBjUqY&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;3&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyJam™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;4&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[The Body Jam program is an addictive fusion of the latest dance styles to the hottest new sounds. This class isn’t just for dancers, it’s for everyone because the emphasis is put on not only having fun but also breaking a sweat. So grab a friend, get front and centre … you bring the attitude and we’ll bring the moves!]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;4&amp;quot;  VenueId=&amp;quot;3&amp;quot; &amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T16:10:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;4&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;5&amp;quot; VenueId=&amp;quot;5&amp;quot; &amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT45M&amp;quot;&amp;gt;2017-04-01T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;5&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/8PTXyg9si_4&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;4&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyPump™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[BodyPump classes are 59 minutes long and contain eight separate muscle-group specific songs or &amp;quot;tracks&amp;quot; along with an opening warm up track and closing cool-down track. There are also 45-minute and 30-minute class formats. The classes are performed to music using free weights-plates, barbells and an aerobic step. Participants choose their weights based on the exercise and their personal goals. Major muscle groups are worked via series of compound and isolation-based exercises including squats, presses, dead lifts. The focus is towards muscle endurance by moving light weights at high repetitions, what Les Mills calls the Rep Effect.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;3&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;6&amp;quot; VenueId=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;6&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;7&amp;quot; VenueId=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-23T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;6&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/zU_0XrdO3wo&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[CoreStrenght is a very hard workout! Not for beginners.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;3&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;8&amp;quot; VenueId=&amp;quot;6&amp;quot; GroupSize=&amp;quot;10&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT2H&amp;quot;&amp;gt;2017-03-23T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;9&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Comment&amp;gt;&lt;br /&gt;
          &amp;lt;![CDATA[Special challenge!]]&amp;gt;&lt;br /&gt;
        &amp;lt;/Comment&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;9&amp;quot; VenueId=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;8&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;10&amp;quot; VenueId=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-04-05T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;8&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;9&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/ZxTVmpvyUt8&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[Zumba involves dance and aerobic movements performed to energetic music. The choreography incorporates hip-hop, soca, samba, salsa, merengue and mambo. Squats and lunges are also included.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;4&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;11&amp;quot; VenueId=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT55M&amp;quot;&amp;gt;2017-03-26T15:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;12&amp;quot; VenueId=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-28T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;13&amp;quot; VenueId=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/-ZB6XIkfxnQ&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
&amp;lt;/Trainings&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSD ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Skeemifail kontrollib eelnevas andmefailis esitatud andmete vastavust kokkulepitud formaadile, samuti õigete andmetüüpide kasutamist. Alamelemendi id-atribuudi väärtus peab olema iga elemendirühma lõikes unikaalne. Kohustuslike elementide ja atribuutide kõrval on ka mõned (nt kommentaar), mille olemasolu pole alati tarvilik. Teatud puhkudel on piiratud maksimaalset elementide arvu (nt treeningutunni algusaeg). Faili üldine struktuur on kindel, aga alati pole alamelementide järjekord oluline (nt treeninguliigi puhul).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xs:schema attributeFormDefault=&amp;quot;unqualified&amp;quot; elementFormDefault=&amp;quot;qualified&amp;quot; xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xs:element name=&amp;quot;Trainings&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Styles&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Style&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
          &amp;lt;xs:unique name=&amp;quot;UniqueStyleId&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xs:selector xpath=&amp;quot;Style&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Instructors&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;Name&amp;quot; type=&amp;quot;xs:string&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:attribute name=&amp;quot;Rating&amp;quot; type=&amp;quot;xs:decimal&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
          &amp;lt;xs:unique name=&amp;quot;UniqueInstructorId&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xs:selector xpath=&amp;quot;Instructor&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Venues&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Venue&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:attribute name=&amp;quot;GroupSize&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
          &amp;lt;xs:unique name=&amp;quot;UniqueVenueId&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xs:selector xpath=&amp;quot;Venue&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Training&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:all&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Description&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Styles&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Style&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Schedule&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;ScheduleItem&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:all&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element  maxOccurs=&amp;quot;1&amp;quot; name=&amp;quot;Time&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:extension base=&amp;quot;xs:dateTime&amp;quot;&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:attribute name=&amp;quot;Duration&amp;quot; type=&amp;quot;xs:duration&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element name=&amp;quot;Instructors&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                    &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                                      &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                                        &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                                      &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                                    &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                                  &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; name=&amp;quot;Comment&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:all&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;VenueId&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;GroupSize&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;optional&amp;quot; /&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;VideoUrl&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:all&amp;gt;&lt;br /&gt;
            &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xs:attribute name=&amp;quot;Licence&amp;quot; type=&amp;quot;xs:string&amp;quot; use=&amp;quot;optional&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
    &amp;lt;xs:unique name=&amp;quot;UniqueTrainingId&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xs:selector xpath=&amp;quot;Training&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
    &amp;lt;xs:unique name=&amp;quot;UniqueScheduleItemId&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xs:selector xpath=&amp;quot;Training/Schedule/ScheduleItem&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSLT (html) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Selles transformatsioonifailis on kirjeldatud XML failis olevate andmete [http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/trainings.xml  kuvamise viis veebilehel]. Treeninguliigid on jaotatud stiiliblokkidesse (mõni treening kuulub mitme stiili alla). Iga treeninguliigi all on tabeli kujul esitatud tunniplaan ning lisatud näidisvideo ja kirjeldus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot; xmlns:msxsl=&amp;quot;urn:schemas-microsoft-com:xslt&amp;quot; exclude-result-prefixes=&amp;quot;msxsl&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:output method=&amp;quot;html&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;html&amp;gt;&lt;br /&gt;
      &amp;lt;head&amp;gt;&lt;br /&gt;
        &amp;lt;title&amp;gt;SuperSportsClub - Trainings&amp;lt;/title&amp;gt;&lt;br /&gt;
        &amp;lt;style&amp;gt;&lt;br /&gt;
          body {&lt;br /&gt;
          background:BurlyWood;&lt;br /&gt;
          text-align: center;&lt;br /&gt;
          }&lt;br /&gt;
          .section {&lt;br /&gt;
          text-align:left;&lt;br /&gt;
          width:1000px;&lt;br /&gt;
          padding:20px;&lt;br /&gt;
          background:Chocolate;&lt;br /&gt;
          margin: auto;&lt;br /&gt;
          }&lt;br /&gt;
          table, th, td, .section {&lt;br /&gt;
          border: 1px solid black;&lt;br /&gt;
          }&lt;br /&gt;
          th {&lt;br /&gt;
          text-align:left;&lt;br /&gt;
          padding-left: 10px;&lt;br /&gt;
          padding-right: 10px;&lt;br /&gt;
          }&lt;br /&gt;
          td {&lt;br /&gt;
          text-align:center;&lt;br /&gt;
          }&lt;br /&gt;
          p {&lt;br /&gt;
          text-align:justify;&lt;br /&gt;
          }&lt;br /&gt;
          .description {&lt;br /&gt;
          vertical-align:top; &lt;br /&gt;
          padding:10px;&lt;br /&gt;
          }&lt;br /&gt;
        &amp;lt;/style&amp;gt;&lt;br /&gt;
      &amp;lt;/head&amp;gt;&lt;br /&gt;
      &amp;lt;body&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;Trainings at SuperSportsClub&amp;lt;/h1&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;/Trainings/Styles/Style&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:sort select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:variable select=&amp;quot;.&amp;quot; name=&amp;quot;SelectedStyle&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;section&amp;quot; &amp;gt;&lt;br /&gt;
            &amp;lt;h2&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select=&amp;quot;$SelectedStyle&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/h2&amp;gt;&lt;br /&gt;
            &amp;lt;ul&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:for-each select=&amp;quot;/Trainings/Training&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:sort select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:variable name=&amp;quot;Training&amp;quot; select=&amp;quot;.&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:if test=&amp;quot;Styles/Style/@Id = $SelectedStyle/@Id&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;&lt;br /&gt;
                    &amp;lt;h3&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;$Training/Name&amp;quot; /&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:if test=&amp;quot;$Training/@Licence&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:text&amp;gt; (&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:value-of select=&amp;quot;$Training/@Licence&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:text&amp;gt;)&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
                    &amp;lt;/h3&amp;gt;&lt;br /&gt;
                    &amp;lt;table&amp;gt;&lt;br /&gt;
                      &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                      &amp;lt;/tr&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:for-each select=&amp;quot;$Training/Schedule/ScheduleItem&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:sort select=&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:variable name=&amp;quot;StartTime&amp;quot; select=&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:variable name=&amp;quot;Duration&amp;quot; select=&amp;quot;$StartTime/@Duration&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;tr&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;150&amp;quot; &amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;concat(&lt;br /&gt;
                                            substring($StartTime, 9, 2), &lt;br /&gt;
                                            &#039;.&#039;, &lt;br /&gt;
                                            substring($StartTime, 6, 2), &lt;br /&gt;
                                            &#039;.&#039;, &lt;br /&gt;
                                            substring($StartTime, 1, 4),&lt;br /&gt;
                                            &#039; &#039;,&lt;br /&gt;
                                            substring($StartTime, 12, 2),&lt;br /&gt;
                                            &#039;:&#039;,&lt;br /&gt;
                                            substring($StartTime, 15, 2))&lt;br /&gt;
                                            &amp;quot; /&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:if test=&amp;quot;Comment&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;br/&amp;gt;&lt;br /&gt;
                              &amp;lt;div style=&amp;quot;color:Green&amp;quot;&amp;gt;&lt;br /&gt;
                                &amp;lt;xsl:value-of select=&amp;quot;Comment&amp;quot;/&amp;gt;&lt;br /&gt;
                              &amp;lt;/div&amp;gt;&lt;br /&gt;
                            &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;substring($Duration, 3, 6)&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:variable name=&amp;quot;VenueId&amp;quot; select=&amp;quot;@VenueId&amp;quot;/&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;/Trainings/Venues/Venue[@Id=$VenueId]&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:for-each select=&amp;quot;Instructors/Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:variable name=&amp;quot;InstructorId&amp;quot; select=&amp;quot;@Id&amp;quot;&amp;gt;&amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:variable name=&amp;quot;SelectedInstructor&amp;quot; select=&amp;quot;/Trainings/Instructors/Instructor[@Id=$InstructorId]&amp;quot; /&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/Name&amp;quot;/&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:text&amp;gt; (&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/@Rating&amp;quot; /&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:text&amp;gt;)&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                              &amp;lt;br/&amp;gt;&lt;br /&gt;
                            &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;/tr&amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
                    &amp;lt;/table&amp;gt;&lt;br /&gt;
                    &amp;lt;br/&amp;gt;&lt;br /&gt;
                    &amp;lt;table&amp;gt;&lt;br /&gt;
                      &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                          &amp;lt;xsl:variable name=&amp;quot;VideoUrl&amp;quot; select=&amp;quot;$Training/VideoUrl&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;{$VideoUrl}&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                          &amp;lt;p&amp;gt;&lt;br /&gt;
                            &amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&lt;br /&gt;
                          &amp;lt;/p&amp;gt;&lt;br /&gt;
                          &amp;lt;p&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;$Training/Description&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                      &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;/table&amp;gt;&lt;br /&gt;
                  &amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
            &amp;lt;/ul&amp;gt;&lt;br /&gt;
          &amp;lt;/div&amp;gt;&lt;br /&gt;
          &amp;lt;br/&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
      &amp;lt;/body&amp;gt;&lt;br /&gt;
    &amp;lt;/html&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== HTML (transformeeritud) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/trainings.html Vaata eelneva transformatsiooni tulemust.]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;META http-equiv=&amp;quot;Content-Type&amp;quot; content=&amp;quot;text/html; charset=utf-8&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;SuperSportsClub - Trainings&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;style&amp;gt;&lt;br /&gt;
        body {&lt;br /&gt;
            background: BurlyWood;&lt;br /&gt;
            text-align: center;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        .section {&lt;br /&gt;
            text-align: left;&lt;br /&gt;
            width: 1000px;&lt;br /&gt;
            padding: 20px;&lt;br /&gt;
            background: Chocolate;&lt;br /&gt;
            margin: auto;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        table, th, td, .section {&lt;br /&gt;
            border: 1px solid black;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        th {&lt;br /&gt;
            text-align: left;&lt;br /&gt;
            padding-left: 10px;&lt;br /&gt;
            padding-right: 10px;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        td {&lt;br /&gt;
            text-align: center;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        p {&lt;br /&gt;
            text-align: justify;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        .description {&lt;br /&gt;
            vertical-align: top;&lt;br /&gt;
            padding: 10px;&lt;br /&gt;
        }&lt;br /&gt;
    &amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
    &amp;lt;h1&amp;gt;Trainings at SuperSportsClub&amp;lt;/h1&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Body&amp;amp;amp;Mind&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyBalance™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 13:30&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;1H15M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 2&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Minnie Mouse (4.6)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;31.03.2017 12:15&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;1H15M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 3&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Mickey Mouse (4.7)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/jJxA6vBjUqY&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                BODYBALANCE™ is the Yoga, Tai Chi, Pilates workout that builds flexibility and strength and leaves you feeling centered and calm. Based on a carefully structured series of stretches, moves and poses to music it creates a holistic workout that brings the body into a state of harmony and balance. This class will heighten your flexibility and inner strength creating a strong supple body from the inside out. Burn on average 390cals per hour.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;Yoga&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;25.03.2017 14:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Yoga Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Minnie Yogafier (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
                            28.03.2017 14:00&amp;lt;br&amp;gt;&amp;lt;div style=&amp;quot;color:Green&amp;quot;&amp;gt;&lt;br /&gt;
                                Special class!&lt;br /&gt;
                            &amp;lt;/div&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;1H20M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Yoga Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Minnie Yogafier (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/Nvlxn0EnmbM&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                Yoga is a group of physical, mental, and spiritual practices or disciplines which originated in ancient India.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Cardio&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyJam™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 16:10&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 3&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Donald Duck (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;01.04.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;45M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 5&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Goofy (3.9)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/8PTXyg9si_4&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                The Body Jam program is an addictive fusion of the latest dance styles to the hottest new sounds. This class isn’t just for dancers, it’s for everyone because the emphasis is put on not only having fun but also breaking a sweat. So grab a friend, get front and centre … you bring the attitude and we’ll bring the moves!&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Dance&amp;amp;amp;Fun&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyJam™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 16:10&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 3&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Donald Duck (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;01.04.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;45M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 5&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Goofy (3.9)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/8PTXyg9si_4&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                The Body Jam program is an addictive fusion of the latest dance styles to the hottest new sounds. This class isn’t just for dancers, it’s for everyone because the emphasis is put on not only having fun but also breaking a sweat. So grab a friend, get front and centre … you bring the attitude and we’ll bring the moves!&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;Zumba®&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;26.03.2017 15:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;55M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 2&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Zumbaschnegger (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;28.03.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 4&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Zumbaschnegger (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 2&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Zumbaschnegger (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/-ZB6XIkfxnQ&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                Zumba involves dance and aerobic movements performed to energetic music. The choreography incorporates hip-hop, soca, samba, salsa, merengue and mambo. Squats and lunges are also included.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Strength&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyPump™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;23.03.2017 13:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Main Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Schwarzenegger (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 13:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Main Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Schwarzenegger (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/zU_0XrdO3wo&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                BodyPump classes are 59 minutes long and contain eight separate muscle-group specific songs or &amp;quot;tracks&amp;quot; along with an opening warm up track and closing cool-down track. There are also 45-minute and 30-minute class formats. The classes are performed to music using free weights-plates, barbells and an aerobic step. Participants choose their weights based on the exercise and their personal goals. Major muscle groups are worked via series of compound and isolation-based exercises including squats, presses, dead lifts. The focus is towards muscle endurance by moving light weights at high repetitions, what Les Mills calls the Rep Effect.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;CoreStrength&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
                            23.03.2017 12:00&amp;lt;br&amp;gt;&amp;lt;div style=&amp;quot;color:Green&amp;quot;&amp;gt;&lt;br /&gt;
                                Special challenge!&lt;br /&gt;
                            &amp;lt;/div&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;2H&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Area 6&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Margaret Strengthener (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Area 6&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Kayla Weightlifter (4.8)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;05.04.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Area 6&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Kayla Weightlifter (4.8)&amp;lt;br&amp;gt;Margaret Strengthener (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/ZxTVmpvyUt8&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                CoreStrenght is a very hard workout! Not for beginners.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSLT (xml) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Selle transformatsiooniga luuakse uus [http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/schedule.xml XML fail], milles on treeningute andmed esitatud ühtse tunniplaani kujul. Algses failis erinevate elementide alla paigutatud andmed on nüüd tunniplaani alamelemendis kokku viidud. Sidumine on teostatud id-atribuutide abil. Tunniplaanis on ühes kohas kirjas treeningu nimi, stiil(id), koht, algusaeg, kestus, rühma suurus, instruktorid ja muu täiendav info.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&lt;br /&gt;
    xmlns:msxsl=&amp;quot;urn:schemas-microsoft-com:xslt&amp;quot; exclude-result-prefixes=&amp;quot;msxsl&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:output method=&amp;quot;xml&amp;quot; indent=&amp;quot;yes&amp;quot; cdata-section-elements=&amp;quot;Name Style Comment&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;/Trainings/Training&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:sort select=&amp;quot;Name&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:variable name=&amp;quot;SelectedTraining&amp;quot; select=&amp;quot;.&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;Schedule/ScheduleItem&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:sort select=&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;ScheduleItem&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:variable name=&amp;quot;VenueId&amp;quot; select=&amp;quot;@VenueId&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:variable name=&amp;quot;SelectedVenue&amp;quot; select=&amp;quot;/Trainings/Venues/Venue[@Id=$VenueId]&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:attribute name=&amp;quot;GroupSize&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;@GroupSize&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:value-of select=&amp;quot;@GroupSize&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:value-of select=&amp;quot;$SelectedVenue/@GroupSize&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
            &amp;lt;Venue&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$VenueId&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select=&amp;quot;$SelectedVenue&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/Venue&amp;gt;&lt;br /&gt;
            &amp;lt;Training&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$SelectedTraining/@Id&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:if test=&amp;quot;$SelectedTraining/@Licence&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:attribute name=&amp;quot;Licence&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:value-of select=&amp;quot;$SelectedTraining/@Licence&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
              &amp;lt;Name&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$SelectedTraining/Name&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/Name&amp;gt;&lt;br /&gt;
              &amp;lt;Styles&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:for-each select=&amp;quot;$SelectedTraining/Styles/Style&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:variable name=&amp;quot;StyleId&amp;quot; select=&amp;quot;@Id&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;Style&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:attribute name=&amp;quot;StyleId&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;$StyleId&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;/Trainings/Styles/Style[@Id=$StyleId]&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/Style&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
              &amp;lt;/Styles&amp;gt;&lt;br /&gt;
            &amp;lt;/Training&amp;gt;&lt;br /&gt;
            &amp;lt;Time&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:attribute name=&amp;quot;Duration&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;Time/@Duration&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select =&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/Time&amp;gt;&lt;br /&gt;
            &amp;lt;Instructors&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:for-each select=&amp;quot;Instructors/Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:variable name=&amp;quot;InstructorId&amp;quot; select=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:variable name=&amp;quot;SelectedInstructor&amp;quot; select=&amp;quot;/Trainings/Instructors/Instructor[@Id=$InstructorId]&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;Instructor&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;$InstructorId&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:attribute name=&amp;quot;Rating&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/@Rating&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                  &amp;lt;Name&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/Name&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/Name&amp;gt;&lt;br /&gt;
                &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
            &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:if test=&amp;quot;Comment&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;Comment&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;Comment&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/Comment&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
          &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XML (transformeeritud) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/schedule.xml Vaata eelneva transformatsiooni tulemust.]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Schedule&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;3&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot;&amp;gt;Hall 2&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;2&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyBalance™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-30T13:30:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;3&amp;quot; Rating=&amp;quot;4.6&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;2&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;3&amp;quot;&amp;gt;Hall 3&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;2&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyBalance™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-31T12:15:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;2&amp;quot; Rating=&amp;quot;4.7&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Mickey Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;4&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;3&amp;quot;&amp;gt;Hall 3&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;3&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyJam™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;![CDATA[Cardio]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T16:10:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;4&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Donald Duck]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;5&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;5&amp;quot;&amp;gt;Hall 5&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;3&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyJam™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;![CDATA[Cardio]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT45M&amp;quot;&amp;gt;2017-04-01T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;5&amp;quot; Rating=&amp;quot;3.9&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Goofy]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;7&amp;quot; GroupSize=&amp;quot;45&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;1&amp;quot;&amp;gt;Main Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;4&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyPump™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-23T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;6&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Schwarzenegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;6&amp;quot; GroupSize=&amp;quot;45&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;1&amp;quot;&amp;gt;Main Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;4&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyPump™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;6&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Schwarzenegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;8&amp;quot; GroupSize=&amp;quot;10&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot;&amp;gt;Area 6&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT2H&amp;quot;&amp;gt;2017-03-23T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;9&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Margaret Strengthener]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
    &amp;lt;Comment&amp;gt;&amp;lt;![CDATA[&lt;br /&gt;
          Special challenge!&lt;br /&gt;
        ]]&amp;gt;&amp;lt;/Comment&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;9&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot;&amp;gt;Area 6&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;8&amp;quot; Rating=&amp;quot;4.8&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Kayla Weightlifter]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;10&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot;&amp;gt;Area 6&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-04-05T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;8&amp;quot; Rating=&amp;quot;4.8&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Kayla Weightlifter]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;9&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Margaret Strengthener]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;11&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot;&amp;gt;Hall 2&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT55M&amp;quot;&amp;gt;2017-03-26T15:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;12&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;4&amp;quot;&amp;gt;Hall 4&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-28T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;13&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot;&amp;gt;Hall 2&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;1&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;7&amp;quot;&amp;gt;Yoga Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Yoga]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-25T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;1&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Yogafier]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;14&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;7&amp;quot;&amp;gt;Yoga Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Yoga]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT1H20M&amp;quot;&amp;gt;2017-03-28T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;1&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Yogafier]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
    &amp;lt;Comment&amp;gt;&amp;lt;![CDATA[&lt;br /&gt;
          Special class!&lt;br /&gt;
        ]]&amp;gt;&amp;lt;/Comment&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
&amp;lt;/Schedule&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus ==&lt;br /&gt;
Angular JS &#039;&#039;single page application&#039;&#039; eelnevalt kirjeldatud veebiteenusele. Sisse logimata saab kuvada spordiklubi tunniplaani nädalate kaupa, treeninguliike stiilide kaupa ja treenereid. Võimalik on liituda teenusega ja registreeruda treeningutele, samuti registreeringuid tühistada nii otse tunniplaanist kui ka registreeringute lehel. Esialgu põhineb süsteem ühel spordiklubil. Kasutamise eelduseks on tunniplaani olemasolu andmebaasis.&lt;br /&gt;
&lt;br /&gt;
Autentimine on lahendatud tokenipõhiselt. Eeskuju ja põhjana kasutasime näidisrakendust, mille juhend ja lähtekood on leitav [http://bitoftech.net/2014/06/09/angularjs-token-authentication-using-asp-net-web-api-2-owin-asp-net-identity/ siit].&lt;br /&gt;
&lt;br /&gt;
== Lähtekood ==&lt;br /&gt;
Eksamiks valminud veebiteenuse ja klientrakenduse kokkupakitult allalaadimiseks klõpsa [https://drive.google.com/open?id=0B84njRSbVLUtTWx5ZkZsdDBJZDQ sellel lingil]. WebApi ja Angular JS klient on eraldi lahendustes. Kliendi testimiseks brauseris (Chrome, Firefox vm) tuleb eelnevalt käivitada ka veebiteenus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;NB! Võib juhtuda, et WebApi esmakordsel käivitamisel loodavasse andmebaasi kõiki andmeid (tunniplaani ja registreerimisi jooksvasse nädalasse) ei lisandu. Sellisel juhul kustuta tekkinud andmebaas ja käivita kõigepealt samas lahenduses olev konsoolirakendus.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Retsensioonid ==&lt;br /&gt;
&lt;br /&gt;
# [https://wiki.itcollege.ee/index.php/Talk:JRT#Hinnang_meeskonna_JRT_esitatud_XML-failidele JRT meeskonna XML/XSD/XSLT retsensioon ]&lt;br /&gt;
# [https://wiki.itcollege.ee/index.php/Talk:JRT#Hinnang_meeskonna_JRT_esitatud_veebiteenusele JRT meeskonna veebiteenuse retsensioon ]&lt;br /&gt;
# [https://wiki.itcollege.ee/index.php/Talk:JRT#Hinnang_meeskonna_JRT_esitatud_klientrakendusele JRT meeskonna klientrakenduse retsensioon ]&lt;br /&gt;
&lt;br /&gt;
== Log ==&lt;br /&gt;
* 03.03.17 Esimene kohtumine. Idee.&lt;br /&gt;
* 17.03.17 Osa XMList valmis, osa XSLT-st valmis.&lt;br /&gt;
* 18.03.17 Teine kohtumine. XMLi täiendamine, esimene ülekäimine XSD-s.&lt;br /&gt;
* 19.03.17 XML/XSLT/XSD täiendamine ja lõpetamine.&lt;br /&gt;
* 20.03.17 XML fail, skeemifail ja stiilifailid esitatud. Projekti esimese etapi lõpp. Kevade algus.&lt;br /&gt;
* 26.03.17 XML/XSLT/XSD retsensioon esitatud.&lt;br /&gt;
* 16.04.17 Veebiteenuse analüüsi koostamine.&lt;br /&gt;
* 17.04.17 Esialgne veebiteenuse analüüs ja kavand valmis.&lt;br /&gt;
* 19.04.17 Alustasime veebiteenusega, koostegemine: Domain, DAL, Interfaces, Repostitories. Testimine konsoolis.&lt;br /&gt;
* 24.04.17 Veebiteenuse koostegemine, 2. kord: Domaini täiendamine.&lt;br /&gt;
* 29.04.17 Veebiteenuse koostegemine, 3. kord: Interfaces, Repositories, Factory + UOW. Testimine konsoolis.&lt;br /&gt;
* 01.05.17 Andmebaasi täitmine testandmetega varasemas faasis loodud XML failist.&lt;br /&gt;
* 02.05.17 Veebiteenuse koostegemine, 4. kord: alustasime BLi ja WebApi ehitamist. GET päringud.&lt;br /&gt;
* 09.05.17 Veebiteenuse koostegemine, 5. kord: lisasime Identity.&lt;br /&gt;
* 11.05.17 Veebiteenuse koostegemine, 6. kord: WebApi arendamine. POST, PUT ja DELETE päringud.&lt;br /&gt;
* 15.05.17 Veebiteenuse koostegemine, 7. kord: WebApi arendamine. Lisasime  api kontrollereid.&lt;br /&gt;
* 16.05.17 Veebiteenuse koostegemine, 8. kord: WebApi arendamine. Identity kontroll Fiddleri ja Postmaniga.&lt;br /&gt;
* 20.05.17 Klientrakenduse koostegemine, 1. kord. Testklient.&lt;br /&gt;
* 25.05.17 Klientrakenduse koostegemine, 2. kord. Klientrakenduse arendamine.&lt;br /&gt;
* 01.06.17 Klientrakenduse koostegemine, 3. kord. Klientrakenduse arendamine. Angular JS.&lt;br /&gt;
* 03.06.17 - 11.06.17 Klientrakenduse arendamine. Tokenipõhine autentimine. Veebiteenuse viimistlemine.&lt;br /&gt;
* 11.06.17 Lõpptähtaeg. Projekti esitlemine eksamil.&lt;br /&gt;
* 12.06.17 Teiste lahenduste retsenseerimine.&lt;br /&gt;
* 13.06.17 Veebiteenuse ja klientrakenduse retsensioonid esitatud.&lt;/div&gt;</summary>
		<author><name>Otiks</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Team_SPOT&amp;diff=123578</id>
		<title>Team SPOT</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Team_SPOT&amp;diff=123578"/>
		<updated>2017-06-13T20:41:16Z</updated>

		<summary type="html">&lt;p&gt;Otiks: /* Log */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://wiki.itcollege.ee/index.php/Kodut%C3%B6%C3%B6_aines_%22V%C3%B5rgurakendused_II:_hajuss%C3%BCsteemide_ehitamine%22_2017 Kodutöö aines &amp;quot;Võrgurakendused II: hajussüsteemide ehitamine&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
[https://projectspot.visualstudio.com/PROJECTSPOT Projekti repositoorium (avaneb ainult liikmetele)]&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==Liikmed==&lt;br /&gt;
*Sigrid Pachel&lt;br /&gt;
*Oliver Tiks&lt;br /&gt;
&lt;br /&gt;
==Idee==&lt;br /&gt;
Mõttes on luua spordiklubi(de) veebiteenus ja klientrakendus, mis võimaldaks saada infot pakutavate treeningute kohta, sisestada ja kuvada tunniplaani andmeid, registreerida osalejaid tundidesse ning teha muid asjakohaseid tegevusi nii klubi(de) personalil, liikmetel kui ka juhukasutajatel.&lt;br /&gt;
&lt;br /&gt;
==Veebiteenuse analüüs==&lt;br /&gt;
SPOTi veebiteenus võimaldab saada infot erinevate klubide treeningute kohta ja end neisse registreerida. Kasutaja saab teavet, kus ja millal treeningud toimuvad (tunniplaan), mida treeningus täpsemalt tehakse, mis stiiliga on tegemist, kes on treener, kui palju üks kord maksab jms info. Kasutajakontoga liikmel on võimalik end registreerida soovitud tundi ja hallata oma registreeringuid (muuta, tühistada).&lt;br /&gt;
&lt;br /&gt;
Spordiklubide infot haldavad süsteemi administraatorid, kes saavad lisada, muuta ja kustutada kõike sprodiklubiga seonduvat. Erinevaid treeninguid ja nendega seotud konkreetset infot saavad lisada ja hallata treenerid või spordiklubi esindajad.&lt;br /&gt;
&lt;br /&gt;
Projekti realiseerimiseks kasutame REST arhitektuuri ja ASP.NET MVC Web API tehnoloogiat.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Üldine plaan:&#039;&#039;&#039;&lt;br /&gt;
* esialgu üks kett (laienemise võimalusega)&lt;br /&gt;
* mitu klubi (asukoht, saalid-treeningualad, võimalikud lisatingimused)&lt;br /&gt;
* treeningute info (stiilid ehk kontseptid, litsentsid, …)&lt;br /&gt;
* tunniplaan (aeg, koht, instruktorid, max osalejate arv, ühe korra hind)&lt;br /&gt;
* registratuur (treeningutest osavõtjad)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kasutajad (rollid):&#039;&#039;&#039;&lt;br /&gt;
* administraatorid (saavad teha muudatusi)&lt;br /&gt;
* treenerid (info kvalifikatsiooni, litsentside kohta, õigus treeninguid lisada) &lt;br /&gt;
* liikmed (saavad treeningutele registreeruda)&lt;br /&gt;
* ülejäänud (näevad klubide ja treeningute infot ning tunniplaani)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Peaks olema:&#039;&#039;&#039;&lt;br /&gt;
* kasutajate loomine&lt;br /&gt;
* kasutajate tuvastamine ja haldamine&lt;br /&gt;
* kasutajate ja kasutusstatistika logimine&lt;br /&gt;
* teenuse poole pöördumiste arvu piiramine ja piirangute haldamine&lt;br /&gt;
* klubide, treenerite ja treeningute info väljastamine&lt;br /&gt;
* tunniplaani info väljastamine&lt;br /&gt;
* treeningutesse registreerimine&lt;br /&gt;
* registreeringu tühistamine&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Võiks olla:&#039;&#039;&#039;&lt;br /&gt;
* klubide, treenerite, treeningute lisamine ja muutmine&lt;br /&gt;
* tunniplaanis treeningute tühistamine&lt;br /&gt;
* sisestatud andmete kustutamine (pehmelt)&lt;br /&gt;
* rollide-õiguste määramine (admin)&lt;br /&gt;
* asukohad mitmes riigis&lt;br /&gt;
* kliendipaketid, arveldus&lt;br /&gt;
* kontaktide tsentraliseeritud haldus&lt;br /&gt;
* sisselogimine läbi Google’i, Facebooki vmt teenuse&lt;br /&gt;
&lt;br /&gt;
===Andmebaasi skeem (lihtsustatud)===&lt;br /&gt;
&lt;br /&gt;
[[File:SPOTService ERD.JPG|border|SPOT Service ERD]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Märkus: olemite atribuutidest on välja toodud ainult peamised.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====Tabelite kirjeldused====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kasutajahaldus*:&#039;&#039;&#039;&lt;br /&gt;
* User - kasutajate andmed&lt;br /&gt;
* Role - rollid, millega määratakse kasutajate õigused (&amp;quot;Admin&amp;quot;, &amp;quot;Trainer&amp;quot;, ...)&lt;br /&gt;
* UserRole - kasutajate sidumine rolli(de)ga&lt;br /&gt;
* UserLogin - muu teenuse kaudu sisselogimiseks&lt;br /&gt;
* UserClaim - muu teenuse kaudu sisselogimiseks&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;&#039;&#039;Kasutajahalduse süsteem toetub Asp.Net Identity valmislahendusele, mida on täiendanud A. Käver.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Klubid:&#039;&#039;&#039;&lt;br /&gt;
* Chain (optional) - spordiklubikettide info&lt;br /&gt;
* Location - spordiklubi/-rajatise asukoht linna/asula täpsusega&lt;br /&gt;
* Facility - spordiklubi/-rajatise andmed, seotud asukohaga ja vajadusel ketiga.&lt;br /&gt;
* Venue - spordiklubis/-rajatises kasutatavad saalid ja muud treeningualad&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Treeningud:&#039;&#039;&#039;&lt;br /&gt;
* Concept (Style) - treeningustiilid ehk kontseptid&lt;br /&gt;
* Licenser (optional) - treeninguliikide litsentsid (kui on)&lt;br /&gt;
* Training - treeninguliikide andmed, seotud stiili ja vajadusel litsentsiga&lt;br /&gt;
* Trainer (User (role: Trainer) + Training) - treeninguliikide sidumine treeneritega&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tunniplaan:&#039;&#039;&#039;&lt;br /&gt;
* ScheduleItem - treeningud tunniplaanis&lt;br /&gt;
* Instructor (User (role: Trainer) + ScheduleItem) - tundide juhendajad (võib olla mitu)&lt;br /&gt;
* Registration (ScheduleItem + User (role: any)) - tundidesse tehtud registreeringud&lt;br /&gt;
&lt;br /&gt;
== XML / XSD / XSLT==&lt;br /&gt;
Projekti esimeses etapis sai loodud XML andmefail, mille ülesehitus on paika pandud XSD skeemifailis. Lisaks on olemas kaks stiilifaili: esimene neist transformeerib andmed HTML-kujule, et kuvada infot  veebilehel, teine tekitab samade andmete esitamiseks uue struktuuriga XML faili.&lt;br /&gt;
&lt;br /&gt;
[https://drive.google.com/open?id=0B84njRSbVLUtd0U4aEJXOUhOTG8 Lae failid alla.] &lt;br /&gt;
&lt;br /&gt;
=== XML ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Fail sisaldab andmeid ühes spordiklubis pakutavate treeningute kohta. Andmed on esitatud treeninguliikide kaupa, mille juurde on lisatud ka vastava treeninguliigi tunniplaan. Treeninguliikidel on nimi ja kirjeldus ning vajadusel ära märgitud ka litsents. Failis on eraldi välja toodud treeningustiilid, instruktorid ja ruumid, kus treeningud toimuvad. Iga treeninguliik kuulub ühe või mitme stiili alla. Instruktoritel on tagasiside põhjal saadud hinne. Treeninguruumidel on vaikimisi määratud mahutavus. Tunniplaanis on ära toodud treeningu koht, algusaeg ja kestus ning instruktorid. Vajadusel saab eraldi määrata ka treeningurühma suuruse, kui see erineb tavalisest ruumi mahutavusest. Ka on võimalik treeningutunnile lisada kommentaar. Erinevate elementide andmed on omavahel seotud id-atribuutidega.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;?xml-stylesheet type=&amp;quot;text/xsl&amp;quot; href=&amp;quot;trainingsToHtml.xslt&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Trainings&amp;gt;&lt;br /&gt;
  &amp;lt;Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;![CDATA[Cardio]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
  &amp;lt;/Styles&amp;gt;&lt;br /&gt;
  &amp;lt;Instructors&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;1&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Yogafier]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;2&amp;quot; Rating=&amp;quot;4.7&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Mickey Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;3&amp;quot; Rating=&amp;quot;4.6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;4&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Donald Duck]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;5&amp;quot; Rating=&amp;quot;3.9&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Goofy]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;6&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Schwarzenegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;8&amp;quot; Rating=&amp;quot;4.8&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Kayla Weightlifter]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;9&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Margaret Strengthener]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
  &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;Venues&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;1&amp;quot; GroupSize=&amp;quot;45&amp;quot;&amp;gt;&amp;lt;![CDATA[Main Hall]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 2]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;3&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 3]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;4&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 4]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;5&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 5]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&amp;lt;![CDATA[Area 6]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;7&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&amp;lt;![CDATA[Yoga Hall]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
  &amp;lt;/Venues&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Yoga]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[Yoga is a group of physical, mental, and spiritual practices or disciplines which originated in ancient India. ]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;1&amp;quot; VenueId=&amp;quot;7&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-25T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;14&amp;quot; VenueId=&amp;quot;7&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT1H20M&amp;quot;&amp;gt;2017-03-28T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Comment&amp;gt;&lt;br /&gt;
          &amp;lt;![CDATA[Special class!]]&amp;gt;&lt;br /&gt;
        &amp;lt;/Comment&amp;gt; &lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/Nvlxn0EnmbM&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;  &lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;2&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyBalance™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[BODYBALANCE™ is the Yoga, Tai Chi, Pilates workout that builds flexibility and strength and leaves you feeling centered and calm. Based on a carefully structured series of stretches, moves and poses to music it creates a holistic workout that brings the body into a state of harmony and balance. This class will heighten your flexibility and inner strength creating a strong supple body from the inside out. Burn on average 390cals per hour.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;2&amp;quot; VenueId=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-31T12:15:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;3&amp;quot; VenueId=&amp;quot;2&amp;quot; &amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-30T13:30:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;3&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/jJxA6vBjUqY&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;3&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyJam™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;4&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[The Body Jam program is an addictive fusion of the latest dance styles to the hottest new sounds. This class isn’t just for dancers, it’s for everyone because the emphasis is put on not only having fun but also breaking a sweat. So grab a friend, get front and centre … you bring the attitude and we’ll bring the moves!]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;4&amp;quot;  VenueId=&amp;quot;3&amp;quot; &amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T16:10:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;4&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;5&amp;quot; VenueId=&amp;quot;5&amp;quot; &amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT45M&amp;quot;&amp;gt;2017-04-01T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;5&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/8PTXyg9si_4&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;4&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyPump™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[BodyPump classes are 59 minutes long and contain eight separate muscle-group specific songs or &amp;quot;tracks&amp;quot; along with an opening warm up track and closing cool-down track. There are also 45-minute and 30-minute class formats. The classes are performed to music using free weights-plates, barbells and an aerobic step. Participants choose their weights based on the exercise and their personal goals. Major muscle groups are worked via series of compound and isolation-based exercises including squats, presses, dead lifts. The focus is towards muscle endurance by moving light weights at high repetitions, what Les Mills calls the Rep Effect.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;3&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;6&amp;quot; VenueId=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;6&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;7&amp;quot; VenueId=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-23T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;6&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/zU_0XrdO3wo&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[CoreStrenght is a very hard workout! Not for beginners.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;3&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;8&amp;quot; VenueId=&amp;quot;6&amp;quot; GroupSize=&amp;quot;10&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT2H&amp;quot;&amp;gt;2017-03-23T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;9&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Comment&amp;gt;&lt;br /&gt;
          &amp;lt;![CDATA[Special challenge!]]&amp;gt;&lt;br /&gt;
        &amp;lt;/Comment&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;9&amp;quot; VenueId=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;8&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;10&amp;quot; VenueId=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-04-05T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;8&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;9&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/ZxTVmpvyUt8&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[Zumba involves dance and aerobic movements performed to energetic music. The choreography incorporates hip-hop, soca, samba, salsa, merengue and mambo. Squats and lunges are also included.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;4&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;11&amp;quot; VenueId=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT55M&amp;quot;&amp;gt;2017-03-26T15:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;12&amp;quot; VenueId=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-28T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;13&amp;quot; VenueId=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/-ZB6XIkfxnQ&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
&amp;lt;/Trainings&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSD ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Skeemifail kontrollib eelnevas andmefailis esitatud andmete vastavust kokkulepitud formaadile, samuti õigete andmetüüpide kasutamist. Alamelemendi id-atribuudi väärtus peab olema iga elemendirühma lõikes unikaalne. Kohustuslike elementide ja atribuutide kõrval on ka mõned (nt kommentaar), mille olemasolu pole alati tarvilik. Teatud puhkudel on piiratud maksimaalset elementide arvu (nt treeningutunni algusaeg). Faili üldine struktuur on kindel, aga alati pole alamelementide järjekord oluline (nt treeninguliigi puhul).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xs:schema attributeFormDefault=&amp;quot;unqualified&amp;quot; elementFormDefault=&amp;quot;qualified&amp;quot; xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xs:element name=&amp;quot;Trainings&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Styles&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Style&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
          &amp;lt;xs:unique name=&amp;quot;UniqueStyleId&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xs:selector xpath=&amp;quot;Style&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Instructors&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;Name&amp;quot; type=&amp;quot;xs:string&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:attribute name=&amp;quot;Rating&amp;quot; type=&amp;quot;xs:decimal&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
          &amp;lt;xs:unique name=&amp;quot;UniqueInstructorId&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xs:selector xpath=&amp;quot;Instructor&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Venues&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Venue&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:attribute name=&amp;quot;GroupSize&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
          &amp;lt;xs:unique name=&amp;quot;UniqueVenueId&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xs:selector xpath=&amp;quot;Venue&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Training&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:all&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Description&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Styles&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Style&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Schedule&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;ScheduleItem&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:all&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element  maxOccurs=&amp;quot;1&amp;quot; name=&amp;quot;Time&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:extension base=&amp;quot;xs:dateTime&amp;quot;&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:attribute name=&amp;quot;Duration&amp;quot; type=&amp;quot;xs:duration&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element name=&amp;quot;Instructors&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                    &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                                      &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                                        &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                                      &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                                    &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                                  &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; name=&amp;quot;Comment&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:all&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;VenueId&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;GroupSize&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;optional&amp;quot; /&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;VideoUrl&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:all&amp;gt;&lt;br /&gt;
            &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xs:attribute name=&amp;quot;Licence&amp;quot; type=&amp;quot;xs:string&amp;quot; use=&amp;quot;optional&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
    &amp;lt;xs:unique name=&amp;quot;UniqueTrainingId&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xs:selector xpath=&amp;quot;Training&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
    &amp;lt;xs:unique name=&amp;quot;UniqueScheduleItemId&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xs:selector xpath=&amp;quot;Training/Schedule/ScheduleItem&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSLT (html) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Selles transformatsioonifailis on kirjeldatud XML failis olevate andmete [http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/trainings.xml  kuvamise viis veebilehel]. Treeninguliigid on jaotatud stiiliblokkidesse (mõni treening kuulub mitme stiili alla). Iga treeninguliigi all on tabeli kujul esitatud tunniplaan ning lisatud näidisvideo ja kirjeldus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot; xmlns:msxsl=&amp;quot;urn:schemas-microsoft-com:xslt&amp;quot; exclude-result-prefixes=&amp;quot;msxsl&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:output method=&amp;quot;html&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;html&amp;gt;&lt;br /&gt;
      &amp;lt;head&amp;gt;&lt;br /&gt;
        &amp;lt;title&amp;gt;SuperSportsClub - Trainings&amp;lt;/title&amp;gt;&lt;br /&gt;
        &amp;lt;style&amp;gt;&lt;br /&gt;
          body {&lt;br /&gt;
          background:BurlyWood;&lt;br /&gt;
          text-align: center;&lt;br /&gt;
          }&lt;br /&gt;
          .section {&lt;br /&gt;
          text-align:left;&lt;br /&gt;
          width:1000px;&lt;br /&gt;
          padding:20px;&lt;br /&gt;
          background:Chocolate;&lt;br /&gt;
          margin: auto;&lt;br /&gt;
          }&lt;br /&gt;
          table, th, td, .section {&lt;br /&gt;
          border: 1px solid black;&lt;br /&gt;
          }&lt;br /&gt;
          th {&lt;br /&gt;
          text-align:left;&lt;br /&gt;
          padding-left: 10px;&lt;br /&gt;
          padding-right: 10px;&lt;br /&gt;
          }&lt;br /&gt;
          td {&lt;br /&gt;
          text-align:center;&lt;br /&gt;
          }&lt;br /&gt;
          p {&lt;br /&gt;
          text-align:justify;&lt;br /&gt;
          }&lt;br /&gt;
          .description {&lt;br /&gt;
          vertical-align:top; &lt;br /&gt;
          padding:10px;&lt;br /&gt;
          }&lt;br /&gt;
        &amp;lt;/style&amp;gt;&lt;br /&gt;
      &amp;lt;/head&amp;gt;&lt;br /&gt;
      &amp;lt;body&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;Trainings at SuperSportsClub&amp;lt;/h1&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;/Trainings/Styles/Style&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:sort select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:variable select=&amp;quot;.&amp;quot; name=&amp;quot;SelectedStyle&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;section&amp;quot; &amp;gt;&lt;br /&gt;
            &amp;lt;h2&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select=&amp;quot;$SelectedStyle&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/h2&amp;gt;&lt;br /&gt;
            &amp;lt;ul&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:for-each select=&amp;quot;/Trainings/Training&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:sort select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:variable name=&amp;quot;Training&amp;quot; select=&amp;quot;.&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:if test=&amp;quot;Styles/Style/@Id = $SelectedStyle/@Id&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;&lt;br /&gt;
                    &amp;lt;h3&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;$Training/Name&amp;quot; /&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:if test=&amp;quot;$Training/@Licence&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:text&amp;gt; (&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:value-of select=&amp;quot;$Training/@Licence&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:text&amp;gt;)&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
                    &amp;lt;/h3&amp;gt;&lt;br /&gt;
                    &amp;lt;table&amp;gt;&lt;br /&gt;
                      &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                      &amp;lt;/tr&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:for-each select=&amp;quot;$Training/Schedule/ScheduleItem&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:sort select=&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:variable name=&amp;quot;StartTime&amp;quot; select=&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:variable name=&amp;quot;Duration&amp;quot; select=&amp;quot;$StartTime/@Duration&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;tr&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;150&amp;quot; &amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;concat(&lt;br /&gt;
                                            substring($StartTime, 9, 2), &lt;br /&gt;
                                            &#039;.&#039;, &lt;br /&gt;
                                            substring($StartTime, 6, 2), &lt;br /&gt;
                                            &#039;.&#039;, &lt;br /&gt;
                                            substring($StartTime, 1, 4),&lt;br /&gt;
                                            &#039; &#039;,&lt;br /&gt;
                                            substring($StartTime, 12, 2),&lt;br /&gt;
                                            &#039;:&#039;,&lt;br /&gt;
                                            substring($StartTime, 15, 2))&lt;br /&gt;
                                            &amp;quot; /&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:if test=&amp;quot;Comment&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;br/&amp;gt;&lt;br /&gt;
                              &amp;lt;div style=&amp;quot;color:Green&amp;quot;&amp;gt;&lt;br /&gt;
                                &amp;lt;xsl:value-of select=&amp;quot;Comment&amp;quot;/&amp;gt;&lt;br /&gt;
                              &amp;lt;/div&amp;gt;&lt;br /&gt;
                            &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;substring($Duration, 3, 6)&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:variable name=&amp;quot;VenueId&amp;quot; select=&amp;quot;@VenueId&amp;quot;/&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;/Trainings/Venues/Venue[@Id=$VenueId]&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:for-each select=&amp;quot;Instructors/Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:variable name=&amp;quot;InstructorId&amp;quot; select=&amp;quot;@Id&amp;quot;&amp;gt;&amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:variable name=&amp;quot;SelectedInstructor&amp;quot; select=&amp;quot;/Trainings/Instructors/Instructor[@Id=$InstructorId]&amp;quot; /&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/Name&amp;quot;/&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:text&amp;gt; (&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/@Rating&amp;quot; /&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:text&amp;gt;)&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                              &amp;lt;br/&amp;gt;&lt;br /&gt;
                            &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;/tr&amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
                    &amp;lt;/table&amp;gt;&lt;br /&gt;
                    &amp;lt;br/&amp;gt;&lt;br /&gt;
                    &amp;lt;table&amp;gt;&lt;br /&gt;
                      &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                          &amp;lt;xsl:variable name=&amp;quot;VideoUrl&amp;quot; select=&amp;quot;$Training/VideoUrl&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;{$VideoUrl}&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                          &amp;lt;p&amp;gt;&lt;br /&gt;
                            &amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&lt;br /&gt;
                          &amp;lt;/p&amp;gt;&lt;br /&gt;
                          &amp;lt;p&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;$Training/Description&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                      &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;/table&amp;gt;&lt;br /&gt;
                  &amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
            &amp;lt;/ul&amp;gt;&lt;br /&gt;
          &amp;lt;/div&amp;gt;&lt;br /&gt;
          &amp;lt;br/&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
      &amp;lt;/body&amp;gt;&lt;br /&gt;
    &amp;lt;/html&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== HTML (transformeeritud) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/trainings.html Vaata eelneva transformatsiooni tulemust.]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;META http-equiv=&amp;quot;Content-Type&amp;quot; content=&amp;quot;text/html; charset=utf-8&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;SuperSportsClub - Trainings&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;style&amp;gt;&lt;br /&gt;
        body {&lt;br /&gt;
            background: BurlyWood;&lt;br /&gt;
            text-align: center;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        .section {&lt;br /&gt;
            text-align: left;&lt;br /&gt;
            width: 1000px;&lt;br /&gt;
            padding: 20px;&lt;br /&gt;
            background: Chocolate;&lt;br /&gt;
            margin: auto;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        table, th, td, .section {&lt;br /&gt;
            border: 1px solid black;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        th {&lt;br /&gt;
            text-align: left;&lt;br /&gt;
            padding-left: 10px;&lt;br /&gt;
            padding-right: 10px;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        td {&lt;br /&gt;
            text-align: center;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        p {&lt;br /&gt;
            text-align: justify;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        .description {&lt;br /&gt;
            vertical-align: top;&lt;br /&gt;
            padding: 10px;&lt;br /&gt;
        }&lt;br /&gt;
    &amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
    &amp;lt;h1&amp;gt;Trainings at SuperSportsClub&amp;lt;/h1&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Body&amp;amp;amp;Mind&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyBalance™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 13:30&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;1H15M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 2&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Minnie Mouse (4.6)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;31.03.2017 12:15&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;1H15M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 3&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Mickey Mouse (4.7)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/jJxA6vBjUqY&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                BODYBALANCE™ is the Yoga, Tai Chi, Pilates workout that builds flexibility and strength and leaves you feeling centered and calm. Based on a carefully structured series of stretches, moves and poses to music it creates a holistic workout that brings the body into a state of harmony and balance. This class will heighten your flexibility and inner strength creating a strong supple body from the inside out. Burn on average 390cals per hour.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;Yoga&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;25.03.2017 14:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Yoga Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Minnie Yogafier (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
                            28.03.2017 14:00&amp;lt;br&amp;gt;&amp;lt;div style=&amp;quot;color:Green&amp;quot;&amp;gt;&lt;br /&gt;
                                Special class!&lt;br /&gt;
                            &amp;lt;/div&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;1H20M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Yoga Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Minnie Yogafier (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/Nvlxn0EnmbM&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                Yoga is a group of physical, mental, and spiritual practices or disciplines which originated in ancient India.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Cardio&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyJam™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 16:10&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 3&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Donald Duck (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;01.04.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;45M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 5&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Goofy (3.9)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/8PTXyg9si_4&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                The Body Jam program is an addictive fusion of the latest dance styles to the hottest new sounds. This class isn’t just for dancers, it’s for everyone because the emphasis is put on not only having fun but also breaking a sweat. So grab a friend, get front and centre … you bring the attitude and we’ll bring the moves!&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Dance&amp;amp;amp;Fun&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyJam™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 16:10&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 3&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Donald Duck (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;01.04.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;45M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 5&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Goofy (3.9)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/8PTXyg9si_4&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                The Body Jam program is an addictive fusion of the latest dance styles to the hottest new sounds. This class isn’t just for dancers, it’s for everyone because the emphasis is put on not only having fun but also breaking a sweat. So grab a friend, get front and centre … you bring the attitude and we’ll bring the moves!&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;Zumba®&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;26.03.2017 15:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;55M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 2&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Zumbaschnegger (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;28.03.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 4&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Zumbaschnegger (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 2&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Zumbaschnegger (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/-ZB6XIkfxnQ&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                Zumba involves dance and aerobic movements performed to energetic music. The choreography incorporates hip-hop, soca, samba, salsa, merengue and mambo. Squats and lunges are also included.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Strength&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyPump™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;23.03.2017 13:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Main Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Schwarzenegger (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 13:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Main Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Schwarzenegger (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/zU_0XrdO3wo&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                BodyPump classes are 59 minutes long and contain eight separate muscle-group specific songs or &amp;quot;tracks&amp;quot; along with an opening warm up track and closing cool-down track. There are also 45-minute and 30-minute class formats. The classes are performed to music using free weights-plates, barbells and an aerobic step. Participants choose their weights based on the exercise and their personal goals. Major muscle groups are worked via series of compound and isolation-based exercises including squats, presses, dead lifts. The focus is towards muscle endurance by moving light weights at high repetitions, what Les Mills calls the Rep Effect.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;CoreStrength&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
                            23.03.2017 12:00&amp;lt;br&amp;gt;&amp;lt;div style=&amp;quot;color:Green&amp;quot;&amp;gt;&lt;br /&gt;
                                Special challenge!&lt;br /&gt;
                            &amp;lt;/div&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;2H&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Area 6&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Margaret Strengthener (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Area 6&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Kayla Weightlifter (4.8)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;05.04.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Area 6&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Kayla Weightlifter (4.8)&amp;lt;br&amp;gt;Margaret Strengthener (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/ZxTVmpvyUt8&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                CoreStrenght is a very hard workout! Not for beginners.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSLT (xml) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Selle transformatsiooniga luuakse uus [http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/schedule.xml XML fail], milles on treeningute andmed esitatud ühtse tunniplaani kujul. Algses failis erinevate elementide alla paigutatud andmed on nüüd tunniplaani alamelemendis kokku viidud. Sidumine on teostatud id-atribuutide abil. Tunniplaanis on ühes kohas kirjas treeningu nimi, stiil(id), koht, algusaeg, kestus, rühma suurus, instruktorid ja muu täiendav info.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&lt;br /&gt;
    xmlns:msxsl=&amp;quot;urn:schemas-microsoft-com:xslt&amp;quot; exclude-result-prefixes=&amp;quot;msxsl&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:output method=&amp;quot;xml&amp;quot; indent=&amp;quot;yes&amp;quot; cdata-section-elements=&amp;quot;Name Style Comment&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;/Trainings/Training&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:sort select=&amp;quot;Name&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:variable name=&amp;quot;SelectedTraining&amp;quot; select=&amp;quot;.&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;Schedule/ScheduleItem&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:sort select=&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;ScheduleItem&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:variable name=&amp;quot;VenueId&amp;quot; select=&amp;quot;@VenueId&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:variable name=&amp;quot;SelectedVenue&amp;quot; select=&amp;quot;/Trainings/Venues/Venue[@Id=$VenueId]&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:attribute name=&amp;quot;GroupSize&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;@GroupSize&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:value-of select=&amp;quot;@GroupSize&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:value-of select=&amp;quot;$SelectedVenue/@GroupSize&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
            &amp;lt;Venue&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$VenueId&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select=&amp;quot;$SelectedVenue&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/Venue&amp;gt;&lt;br /&gt;
            &amp;lt;Training&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$SelectedTraining/@Id&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:if test=&amp;quot;$SelectedTraining/@Licence&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:attribute name=&amp;quot;Licence&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:value-of select=&amp;quot;$SelectedTraining/@Licence&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
              &amp;lt;Name&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$SelectedTraining/Name&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/Name&amp;gt;&lt;br /&gt;
              &amp;lt;Styles&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:for-each select=&amp;quot;$SelectedTraining/Styles/Style&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:variable name=&amp;quot;StyleId&amp;quot; select=&amp;quot;@Id&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;Style&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:attribute name=&amp;quot;StyleId&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;$StyleId&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;/Trainings/Styles/Style[@Id=$StyleId]&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/Style&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
              &amp;lt;/Styles&amp;gt;&lt;br /&gt;
            &amp;lt;/Training&amp;gt;&lt;br /&gt;
            &amp;lt;Time&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:attribute name=&amp;quot;Duration&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;Time/@Duration&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select =&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/Time&amp;gt;&lt;br /&gt;
            &amp;lt;Instructors&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:for-each select=&amp;quot;Instructors/Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:variable name=&amp;quot;InstructorId&amp;quot; select=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:variable name=&amp;quot;SelectedInstructor&amp;quot; select=&amp;quot;/Trainings/Instructors/Instructor[@Id=$InstructorId]&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;Instructor&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;$InstructorId&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:attribute name=&amp;quot;Rating&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/@Rating&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                  &amp;lt;Name&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/Name&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/Name&amp;gt;&lt;br /&gt;
                &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
            &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:if test=&amp;quot;Comment&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;Comment&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;Comment&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/Comment&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
          &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XML (transformeeritud) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/schedule.xml Vaata eelneva transformatsiooni tulemust.]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Schedule&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;3&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot;&amp;gt;Hall 2&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;2&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyBalance™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-30T13:30:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;3&amp;quot; Rating=&amp;quot;4.6&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;2&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;3&amp;quot;&amp;gt;Hall 3&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;2&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyBalance™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-31T12:15:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;2&amp;quot; Rating=&amp;quot;4.7&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Mickey Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;4&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;3&amp;quot;&amp;gt;Hall 3&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;3&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyJam™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;![CDATA[Cardio]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T16:10:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;4&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Donald Duck]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;5&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;5&amp;quot;&amp;gt;Hall 5&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;3&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyJam™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;![CDATA[Cardio]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT45M&amp;quot;&amp;gt;2017-04-01T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;5&amp;quot; Rating=&amp;quot;3.9&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Goofy]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;7&amp;quot; GroupSize=&amp;quot;45&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;1&amp;quot;&amp;gt;Main Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;4&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyPump™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-23T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;6&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Schwarzenegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;6&amp;quot; GroupSize=&amp;quot;45&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;1&amp;quot;&amp;gt;Main Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;4&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyPump™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;6&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Schwarzenegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;8&amp;quot; GroupSize=&amp;quot;10&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot;&amp;gt;Area 6&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT2H&amp;quot;&amp;gt;2017-03-23T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;9&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Margaret Strengthener]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
    &amp;lt;Comment&amp;gt;&amp;lt;![CDATA[&lt;br /&gt;
          Special challenge!&lt;br /&gt;
        ]]&amp;gt;&amp;lt;/Comment&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;9&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot;&amp;gt;Area 6&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;8&amp;quot; Rating=&amp;quot;4.8&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Kayla Weightlifter]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;10&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot;&amp;gt;Area 6&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-04-05T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;8&amp;quot; Rating=&amp;quot;4.8&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Kayla Weightlifter]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;9&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Margaret Strengthener]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;11&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot;&amp;gt;Hall 2&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT55M&amp;quot;&amp;gt;2017-03-26T15:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;12&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;4&amp;quot;&amp;gt;Hall 4&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-28T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;13&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot;&amp;gt;Hall 2&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;1&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;7&amp;quot;&amp;gt;Yoga Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Yoga]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-25T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;1&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Yogafier]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;14&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;7&amp;quot;&amp;gt;Yoga Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Yoga]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT1H20M&amp;quot;&amp;gt;2017-03-28T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;1&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Yogafier]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
    &amp;lt;Comment&amp;gt;&amp;lt;![CDATA[&lt;br /&gt;
          Special class!&lt;br /&gt;
        ]]&amp;gt;&amp;lt;/Comment&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
&amp;lt;/Schedule&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus ==&lt;br /&gt;
Angular JS &#039;&#039;single page application&#039;&#039; eelnevalt kirjeldatud veebiteenusele. Sisse logimata saab kuvada spordiklubi tunniplaani nädalate kaupa, treeninguliike stiilide kaupa ja treenereid. Võimalik on liituda teenusega ja registreeruda treeningutele, samuti registreeringuid tühistada nii otse tunniplaanist kui ka registreeringute lehel. Esialgu põhineb süsteem ühel spordiklubil. Kasutamise eelduseks on tunniplaani olemasolu andmebaasis.&lt;br /&gt;
&lt;br /&gt;
Autentimine on lahendatud tokenipõhiselt. Eeskuju ja põhjana kasutasime näidisrakendust, mille juhend ja lähtekood on leitav [http://bitoftech.net/2014/06/09/angularjs-token-authentication-using-asp-net-web-api-2-owin-asp-net-identity/ siit].&lt;br /&gt;
&lt;br /&gt;
== Lähtekood ==&lt;br /&gt;
Eksamiks valminud veebiteenuse ja klientrakenduse kokkupakitult allalaadimiseks klõpsa [https://drive.google.com/open?id=0B84njRSbVLUtTWx5ZkZsdDBJZDQ sellel lingil]. WebApi ja Angular JS klient on eraldi lahendustes. Kliendi testimiseks brauseris (Chrome, Firefox vm) tuleb eelnevalt käivitada ka veebiteenus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;NB! Võib juhtuda, et WebApi esmakordsel käivitamisel loodavasse andmebaasi kõiki andmeid (tunniplaani ja registreerimisi jooksvasse nädalasse) ei lisandu. Sellisel juhul kustuta tekkinud andmebaas ja käivita kõigepealt samas lahenduses olev konsoolirakendus.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Retsensioonid ==&lt;br /&gt;
&lt;br /&gt;
# [https://wiki.itcollege.ee/index.php/Talk:JRT#Hinnang_meeskonna_JRT_esitatud_XML-failidele JRT meeskonna XML/XSD/XSLT retsensioon ]&lt;br /&gt;
# [https://wiki.itcollege.ee/index.php/Talk:JRT#Hinnang_meeskonna_JRT_esitatud_veebiteenusele JRT meeskonna veebiteenuse retsensioon ]&lt;br /&gt;
# [https://wiki.itcollege.ee/index.php/Talk:JRT#Hinnang_meeskonna_JRT_esitatud_klientrakendusele JRT meeskonna klientrakenduse retsensioon ]&lt;br /&gt;
&lt;br /&gt;
== Log ==&lt;br /&gt;
* 03.03.17 Esimene kohtumine. Idee.&lt;br /&gt;
* 17.03.17 Osa XMList valmis, osa XSLT-st valmis.&lt;br /&gt;
* 18.03.17 Teine kohtumine. XMLi täiendamine, esimene ülekäimine XSD-s.&lt;br /&gt;
* 19.03.17 XML/XSLT/XSD täiendamine ja lõpetamine.&lt;br /&gt;
* 20.03.17 XML fail, skeemifail ja stiilifailid esitatud. Projekti esimese etapi lõpp. Kevade algus.&lt;br /&gt;
* 26.03.17 XML/XSLT/XSD retsensioon esitatud.&lt;br /&gt;
* 16.04.17 Veebiteenuse analüüsi koostamine.&lt;br /&gt;
* 17.04.17 Esialgne veebiteenuse analüüs ja kavand valmis.&lt;br /&gt;
* 19.04.17 Alustasime veebiteenusega, koostegemine: Domain, DAL, Interfaces, Repostitories. Testimine konsoolis.&lt;br /&gt;
* 24.04.17 Veebiteenuse koostegemine, 2. kord: Domaini täiendamine.&lt;br /&gt;
* 29.04.17 Veebiteenuse koostegemine, 3. kord: Interfaces, Repositories, Factory + UOW. Testimine konsoolis.&lt;br /&gt;
* 01.05.17 Andmebaasi täitmine testandmetega varasemas faasis loodud XML failist.&lt;br /&gt;
* 02.05.17 Veebiteenuse koostegemine, 4. kord: alustasime BLi ja WebApi ehitamist. GET päringud.&lt;br /&gt;
* 09.05.17 Veebiteenuse koostegemine, 5. kord: lisasime Identity.&lt;br /&gt;
* 11.05.17 Veebiteenuse koostegemine, 6. kord: WebApi arendamine. POST, PUT ja DELETE päringud.&lt;br /&gt;
* 15.05.17 Veebiteenuse koostegemine, 7. kord: WebApi arendamine. Lisasime  api kontrollereid.&lt;br /&gt;
* 16.05.17 Veebiteenuse koostegemine, 8. kord: WebApi arendamine. Identity kontroll Fiddleri ja Postmaniga.&lt;br /&gt;
* 20.05.17 Klientrakenduse koostegemine, 1. kord. Testklient.&lt;br /&gt;
* 25.05.17 Klientrakenduse koostegemine, 2. kord. Klientrakenduse arendamine.&lt;br /&gt;
* 01.06.17 Klientrakenduse koostegemine, 3. kord. Klientrakenduse arendamine. Angular JS.&lt;br /&gt;
* 03.06.17 - 11.06.17 Klientrakenduse arendamine. Tokenipõhine autentimine. Veebiteenuse viimistlemine.&lt;br /&gt;
* 11.06.17 Lõpptähtaeg. Projekti esitlemine eksamil.&lt;br /&gt;
* 12.06.17 Teiste lahenduste retsenseerimine.&lt;br /&gt;
* 13.06.17 Veebiteenuse ja klientrakenduse retsensioonid esitatud. The End.&lt;/div&gt;</summary>
		<author><name>Otiks</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Team_SPOT&amp;diff=123577</id>
		<title>Team SPOT</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Team_SPOT&amp;diff=123577"/>
		<updated>2017-06-13T20:40:57Z</updated>

		<summary type="html">&lt;p&gt;Otiks: /* Log */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://wiki.itcollege.ee/index.php/Kodut%C3%B6%C3%B6_aines_%22V%C3%B5rgurakendused_II:_hajuss%C3%BCsteemide_ehitamine%22_2017 Kodutöö aines &amp;quot;Võrgurakendused II: hajussüsteemide ehitamine&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
[https://projectspot.visualstudio.com/PROJECTSPOT Projekti repositoorium (avaneb ainult liikmetele)]&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==Liikmed==&lt;br /&gt;
*Sigrid Pachel&lt;br /&gt;
*Oliver Tiks&lt;br /&gt;
&lt;br /&gt;
==Idee==&lt;br /&gt;
Mõttes on luua spordiklubi(de) veebiteenus ja klientrakendus, mis võimaldaks saada infot pakutavate treeningute kohta, sisestada ja kuvada tunniplaani andmeid, registreerida osalejaid tundidesse ning teha muid asjakohaseid tegevusi nii klubi(de) personalil, liikmetel kui ka juhukasutajatel.&lt;br /&gt;
&lt;br /&gt;
==Veebiteenuse analüüs==&lt;br /&gt;
SPOTi veebiteenus võimaldab saada infot erinevate klubide treeningute kohta ja end neisse registreerida. Kasutaja saab teavet, kus ja millal treeningud toimuvad (tunniplaan), mida treeningus täpsemalt tehakse, mis stiiliga on tegemist, kes on treener, kui palju üks kord maksab jms info. Kasutajakontoga liikmel on võimalik end registreerida soovitud tundi ja hallata oma registreeringuid (muuta, tühistada).&lt;br /&gt;
&lt;br /&gt;
Spordiklubide infot haldavad süsteemi administraatorid, kes saavad lisada, muuta ja kustutada kõike sprodiklubiga seonduvat. Erinevaid treeninguid ja nendega seotud konkreetset infot saavad lisada ja hallata treenerid või spordiklubi esindajad.&lt;br /&gt;
&lt;br /&gt;
Projekti realiseerimiseks kasutame REST arhitektuuri ja ASP.NET MVC Web API tehnoloogiat.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Üldine plaan:&#039;&#039;&#039;&lt;br /&gt;
* esialgu üks kett (laienemise võimalusega)&lt;br /&gt;
* mitu klubi (asukoht, saalid-treeningualad, võimalikud lisatingimused)&lt;br /&gt;
* treeningute info (stiilid ehk kontseptid, litsentsid, …)&lt;br /&gt;
* tunniplaan (aeg, koht, instruktorid, max osalejate arv, ühe korra hind)&lt;br /&gt;
* registratuur (treeningutest osavõtjad)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kasutajad (rollid):&#039;&#039;&#039;&lt;br /&gt;
* administraatorid (saavad teha muudatusi)&lt;br /&gt;
* treenerid (info kvalifikatsiooni, litsentside kohta, õigus treeninguid lisada) &lt;br /&gt;
* liikmed (saavad treeningutele registreeruda)&lt;br /&gt;
* ülejäänud (näevad klubide ja treeningute infot ning tunniplaani)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Peaks olema:&#039;&#039;&#039;&lt;br /&gt;
* kasutajate loomine&lt;br /&gt;
* kasutajate tuvastamine ja haldamine&lt;br /&gt;
* kasutajate ja kasutusstatistika logimine&lt;br /&gt;
* teenuse poole pöördumiste arvu piiramine ja piirangute haldamine&lt;br /&gt;
* klubide, treenerite ja treeningute info väljastamine&lt;br /&gt;
* tunniplaani info väljastamine&lt;br /&gt;
* treeningutesse registreerimine&lt;br /&gt;
* registreeringu tühistamine&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Võiks olla:&#039;&#039;&#039;&lt;br /&gt;
* klubide, treenerite, treeningute lisamine ja muutmine&lt;br /&gt;
* tunniplaanis treeningute tühistamine&lt;br /&gt;
* sisestatud andmete kustutamine (pehmelt)&lt;br /&gt;
* rollide-õiguste määramine (admin)&lt;br /&gt;
* asukohad mitmes riigis&lt;br /&gt;
* kliendipaketid, arveldus&lt;br /&gt;
* kontaktide tsentraliseeritud haldus&lt;br /&gt;
* sisselogimine läbi Google’i, Facebooki vmt teenuse&lt;br /&gt;
&lt;br /&gt;
===Andmebaasi skeem (lihtsustatud)===&lt;br /&gt;
&lt;br /&gt;
[[File:SPOTService ERD.JPG|border|SPOT Service ERD]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Märkus: olemite atribuutidest on välja toodud ainult peamised.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====Tabelite kirjeldused====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kasutajahaldus*:&#039;&#039;&#039;&lt;br /&gt;
* User - kasutajate andmed&lt;br /&gt;
* Role - rollid, millega määratakse kasutajate õigused (&amp;quot;Admin&amp;quot;, &amp;quot;Trainer&amp;quot;, ...)&lt;br /&gt;
* UserRole - kasutajate sidumine rolli(de)ga&lt;br /&gt;
* UserLogin - muu teenuse kaudu sisselogimiseks&lt;br /&gt;
* UserClaim - muu teenuse kaudu sisselogimiseks&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;&#039;&#039;Kasutajahalduse süsteem toetub Asp.Net Identity valmislahendusele, mida on täiendanud A. Käver.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Klubid:&#039;&#039;&#039;&lt;br /&gt;
* Chain (optional) - spordiklubikettide info&lt;br /&gt;
* Location - spordiklubi/-rajatise asukoht linna/asula täpsusega&lt;br /&gt;
* Facility - spordiklubi/-rajatise andmed, seotud asukohaga ja vajadusel ketiga.&lt;br /&gt;
* Venue - spordiklubis/-rajatises kasutatavad saalid ja muud treeningualad&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Treeningud:&#039;&#039;&#039;&lt;br /&gt;
* Concept (Style) - treeningustiilid ehk kontseptid&lt;br /&gt;
* Licenser (optional) - treeninguliikide litsentsid (kui on)&lt;br /&gt;
* Training - treeninguliikide andmed, seotud stiili ja vajadusel litsentsiga&lt;br /&gt;
* Trainer (User (role: Trainer) + Training) - treeninguliikide sidumine treeneritega&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tunniplaan:&#039;&#039;&#039;&lt;br /&gt;
* ScheduleItem - treeningud tunniplaanis&lt;br /&gt;
* Instructor (User (role: Trainer) + ScheduleItem) - tundide juhendajad (võib olla mitu)&lt;br /&gt;
* Registration (ScheduleItem + User (role: any)) - tundidesse tehtud registreeringud&lt;br /&gt;
&lt;br /&gt;
== XML / XSD / XSLT==&lt;br /&gt;
Projekti esimeses etapis sai loodud XML andmefail, mille ülesehitus on paika pandud XSD skeemifailis. Lisaks on olemas kaks stiilifaili: esimene neist transformeerib andmed HTML-kujule, et kuvada infot  veebilehel, teine tekitab samade andmete esitamiseks uue struktuuriga XML faili.&lt;br /&gt;
&lt;br /&gt;
[https://drive.google.com/open?id=0B84njRSbVLUtd0U4aEJXOUhOTG8 Lae failid alla.] &lt;br /&gt;
&lt;br /&gt;
=== XML ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Fail sisaldab andmeid ühes spordiklubis pakutavate treeningute kohta. Andmed on esitatud treeninguliikide kaupa, mille juurde on lisatud ka vastava treeninguliigi tunniplaan. Treeninguliikidel on nimi ja kirjeldus ning vajadusel ära märgitud ka litsents. Failis on eraldi välja toodud treeningustiilid, instruktorid ja ruumid, kus treeningud toimuvad. Iga treeninguliik kuulub ühe või mitme stiili alla. Instruktoritel on tagasiside põhjal saadud hinne. Treeninguruumidel on vaikimisi määratud mahutavus. Tunniplaanis on ära toodud treeningu koht, algusaeg ja kestus ning instruktorid. Vajadusel saab eraldi määrata ka treeningurühma suuruse, kui see erineb tavalisest ruumi mahutavusest. Ka on võimalik treeningutunnile lisada kommentaar. Erinevate elementide andmed on omavahel seotud id-atribuutidega.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;?xml-stylesheet type=&amp;quot;text/xsl&amp;quot; href=&amp;quot;trainingsToHtml.xslt&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Trainings&amp;gt;&lt;br /&gt;
  &amp;lt;Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;![CDATA[Cardio]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
  &amp;lt;/Styles&amp;gt;&lt;br /&gt;
  &amp;lt;Instructors&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;1&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Yogafier]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;2&amp;quot; Rating=&amp;quot;4.7&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Mickey Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;3&amp;quot; Rating=&amp;quot;4.6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;4&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Donald Duck]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;5&amp;quot; Rating=&amp;quot;3.9&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Goofy]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;6&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Schwarzenegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;8&amp;quot; Rating=&amp;quot;4.8&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Kayla Weightlifter]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;9&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Margaret Strengthener]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
  &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;Venues&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;1&amp;quot; GroupSize=&amp;quot;45&amp;quot;&amp;gt;&amp;lt;![CDATA[Main Hall]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 2]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;3&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 3]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;4&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 4]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;5&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 5]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&amp;lt;![CDATA[Area 6]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;7&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&amp;lt;![CDATA[Yoga Hall]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
  &amp;lt;/Venues&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Yoga]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[Yoga is a group of physical, mental, and spiritual practices or disciplines which originated in ancient India. ]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;1&amp;quot; VenueId=&amp;quot;7&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-25T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;14&amp;quot; VenueId=&amp;quot;7&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT1H20M&amp;quot;&amp;gt;2017-03-28T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Comment&amp;gt;&lt;br /&gt;
          &amp;lt;![CDATA[Special class!]]&amp;gt;&lt;br /&gt;
        &amp;lt;/Comment&amp;gt; &lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/Nvlxn0EnmbM&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;  &lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;2&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyBalance™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[BODYBALANCE™ is the Yoga, Tai Chi, Pilates workout that builds flexibility and strength and leaves you feeling centered and calm. Based on a carefully structured series of stretches, moves and poses to music it creates a holistic workout that brings the body into a state of harmony and balance. This class will heighten your flexibility and inner strength creating a strong supple body from the inside out. Burn on average 390cals per hour.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;2&amp;quot; VenueId=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-31T12:15:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;3&amp;quot; VenueId=&amp;quot;2&amp;quot; &amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-30T13:30:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;3&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/jJxA6vBjUqY&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;3&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyJam™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;4&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[The Body Jam program is an addictive fusion of the latest dance styles to the hottest new sounds. This class isn’t just for dancers, it’s for everyone because the emphasis is put on not only having fun but also breaking a sweat. So grab a friend, get front and centre … you bring the attitude and we’ll bring the moves!]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;4&amp;quot;  VenueId=&amp;quot;3&amp;quot; &amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T16:10:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;4&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;5&amp;quot; VenueId=&amp;quot;5&amp;quot; &amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT45M&amp;quot;&amp;gt;2017-04-01T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;5&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/8PTXyg9si_4&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;4&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyPump™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[BodyPump classes are 59 minutes long and contain eight separate muscle-group specific songs or &amp;quot;tracks&amp;quot; along with an opening warm up track and closing cool-down track. There are also 45-minute and 30-minute class formats. The classes are performed to music using free weights-plates, barbells and an aerobic step. Participants choose their weights based on the exercise and their personal goals. Major muscle groups are worked via series of compound and isolation-based exercises including squats, presses, dead lifts. The focus is towards muscle endurance by moving light weights at high repetitions, what Les Mills calls the Rep Effect.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;3&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;6&amp;quot; VenueId=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;6&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;7&amp;quot; VenueId=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-23T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;6&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/zU_0XrdO3wo&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[CoreStrenght is a very hard workout! Not for beginners.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;3&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;8&amp;quot; VenueId=&amp;quot;6&amp;quot; GroupSize=&amp;quot;10&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT2H&amp;quot;&amp;gt;2017-03-23T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;9&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Comment&amp;gt;&lt;br /&gt;
          &amp;lt;![CDATA[Special challenge!]]&amp;gt;&lt;br /&gt;
        &amp;lt;/Comment&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;9&amp;quot; VenueId=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;8&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;10&amp;quot; VenueId=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-04-05T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;8&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;9&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/ZxTVmpvyUt8&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[Zumba involves dance and aerobic movements performed to energetic music. The choreography incorporates hip-hop, soca, samba, salsa, merengue and mambo. Squats and lunges are also included.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;4&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;11&amp;quot; VenueId=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT55M&amp;quot;&amp;gt;2017-03-26T15:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;12&amp;quot; VenueId=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-28T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;13&amp;quot; VenueId=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/-ZB6XIkfxnQ&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
&amp;lt;/Trainings&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSD ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Skeemifail kontrollib eelnevas andmefailis esitatud andmete vastavust kokkulepitud formaadile, samuti õigete andmetüüpide kasutamist. Alamelemendi id-atribuudi väärtus peab olema iga elemendirühma lõikes unikaalne. Kohustuslike elementide ja atribuutide kõrval on ka mõned (nt kommentaar), mille olemasolu pole alati tarvilik. Teatud puhkudel on piiratud maksimaalset elementide arvu (nt treeningutunni algusaeg). Faili üldine struktuur on kindel, aga alati pole alamelementide järjekord oluline (nt treeninguliigi puhul).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xs:schema attributeFormDefault=&amp;quot;unqualified&amp;quot; elementFormDefault=&amp;quot;qualified&amp;quot; xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xs:element name=&amp;quot;Trainings&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Styles&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Style&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
          &amp;lt;xs:unique name=&amp;quot;UniqueStyleId&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xs:selector xpath=&amp;quot;Style&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Instructors&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;Name&amp;quot; type=&amp;quot;xs:string&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:attribute name=&amp;quot;Rating&amp;quot; type=&amp;quot;xs:decimal&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
          &amp;lt;xs:unique name=&amp;quot;UniqueInstructorId&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xs:selector xpath=&amp;quot;Instructor&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Venues&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Venue&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:attribute name=&amp;quot;GroupSize&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
          &amp;lt;xs:unique name=&amp;quot;UniqueVenueId&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xs:selector xpath=&amp;quot;Venue&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Training&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:all&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Description&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Styles&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Style&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Schedule&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;ScheduleItem&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:all&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element  maxOccurs=&amp;quot;1&amp;quot; name=&amp;quot;Time&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:extension base=&amp;quot;xs:dateTime&amp;quot;&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:attribute name=&amp;quot;Duration&amp;quot; type=&amp;quot;xs:duration&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element name=&amp;quot;Instructors&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                    &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                                      &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                                        &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                                      &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                                    &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                                  &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; name=&amp;quot;Comment&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:all&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;VenueId&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;GroupSize&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;optional&amp;quot; /&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;VideoUrl&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:all&amp;gt;&lt;br /&gt;
            &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xs:attribute name=&amp;quot;Licence&amp;quot; type=&amp;quot;xs:string&amp;quot; use=&amp;quot;optional&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
    &amp;lt;xs:unique name=&amp;quot;UniqueTrainingId&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xs:selector xpath=&amp;quot;Training&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
    &amp;lt;xs:unique name=&amp;quot;UniqueScheduleItemId&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xs:selector xpath=&amp;quot;Training/Schedule/ScheduleItem&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSLT (html) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Selles transformatsioonifailis on kirjeldatud XML failis olevate andmete [http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/trainings.xml  kuvamise viis veebilehel]. Treeninguliigid on jaotatud stiiliblokkidesse (mõni treening kuulub mitme stiili alla). Iga treeninguliigi all on tabeli kujul esitatud tunniplaan ning lisatud näidisvideo ja kirjeldus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot; xmlns:msxsl=&amp;quot;urn:schemas-microsoft-com:xslt&amp;quot; exclude-result-prefixes=&amp;quot;msxsl&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:output method=&amp;quot;html&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;html&amp;gt;&lt;br /&gt;
      &amp;lt;head&amp;gt;&lt;br /&gt;
        &amp;lt;title&amp;gt;SuperSportsClub - Trainings&amp;lt;/title&amp;gt;&lt;br /&gt;
        &amp;lt;style&amp;gt;&lt;br /&gt;
          body {&lt;br /&gt;
          background:BurlyWood;&lt;br /&gt;
          text-align: center;&lt;br /&gt;
          }&lt;br /&gt;
          .section {&lt;br /&gt;
          text-align:left;&lt;br /&gt;
          width:1000px;&lt;br /&gt;
          padding:20px;&lt;br /&gt;
          background:Chocolate;&lt;br /&gt;
          margin: auto;&lt;br /&gt;
          }&lt;br /&gt;
          table, th, td, .section {&lt;br /&gt;
          border: 1px solid black;&lt;br /&gt;
          }&lt;br /&gt;
          th {&lt;br /&gt;
          text-align:left;&lt;br /&gt;
          padding-left: 10px;&lt;br /&gt;
          padding-right: 10px;&lt;br /&gt;
          }&lt;br /&gt;
          td {&lt;br /&gt;
          text-align:center;&lt;br /&gt;
          }&lt;br /&gt;
          p {&lt;br /&gt;
          text-align:justify;&lt;br /&gt;
          }&lt;br /&gt;
          .description {&lt;br /&gt;
          vertical-align:top; &lt;br /&gt;
          padding:10px;&lt;br /&gt;
          }&lt;br /&gt;
        &amp;lt;/style&amp;gt;&lt;br /&gt;
      &amp;lt;/head&amp;gt;&lt;br /&gt;
      &amp;lt;body&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;Trainings at SuperSportsClub&amp;lt;/h1&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;/Trainings/Styles/Style&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:sort select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:variable select=&amp;quot;.&amp;quot; name=&amp;quot;SelectedStyle&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;section&amp;quot; &amp;gt;&lt;br /&gt;
            &amp;lt;h2&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select=&amp;quot;$SelectedStyle&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/h2&amp;gt;&lt;br /&gt;
            &amp;lt;ul&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:for-each select=&amp;quot;/Trainings/Training&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:sort select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:variable name=&amp;quot;Training&amp;quot; select=&amp;quot;.&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:if test=&amp;quot;Styles/Style/@Id = $SelectedStyle/@Id&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;&lt;br /&gt;
                    &amp;lt;h3&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;$Training/Name&amp;quot; /&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:if test=&amp;quot;$Training/@Licence&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:text&amp;gt; (&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:value-of select=&amp;quot;$Training/@Licence&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:text&amp;gt;)&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
                    &amp;lt;/h3&amp;gt;&lt;br /&gt;
                    &amp;lt;table&amp;gt;&lt;br /&gt;
                      &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                      &amp;lt;/tr&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:for-each select=&amp;quot;$Training/Schedule/ScheduleItem&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:sort select=&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:variable name=&amp;quot;StartTime&amp;quot; select=&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:variable name=&amp;quot;Duration&amp;quot; select=&amp;quot;$StartTime/@Duration&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;tr&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;150&amp;quot; &amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;concat(&lt;br /&gt;
                                            substring($StartTime, 9, 2), &lt;br /&gt;
                                            &#039;.&#039;, &lt;br /&gt;
                                            substring($StartTime, 6, 2), &lt;br /&gt;
                                            &#039;.&#039;, &lt;br /&gt;
                                            substring($StartTime, 1, 4),&lt;br /&gt;
                                            &#039; &#039;,&lt;br /&gt;
                                            substring($StartTime, 12, 2),&lt;br /&gt;
                                            &#039;:&#039;,&lt;br /&gt;
                                            substring($StartTime, 15, 2))&lt;br /&gt;
                                            &amp;quot; /&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:if test=&amp;quot;Comment&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;br/&amp;gt;&lt;br /&gt;
                              &amp;lt;div style=&amp;quot;color:Green&amp;quot;&amp;gt;&lt;br /&gt;
                                &amp;lt;xsl:value-of select=&amp;quot;Comment&amp;quot;/&amp;gt;&lt;br /&gt;
                              &amp;lt;/div&amp;gt;&lt;br /&gt;
                            &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;substring($Duration, 3, 6)&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:variable name=&amp;quot;VenueId&amp;quot; select=&amp;quot;@VenueId&amp;quot;/&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;/Trainings/Venues/Venue[@Id=$VenueId]&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:for-each select=&amp;quot;Instructors/Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:variable name=&amp;quot;InstructorId&amp;quot; select=&amp;quot;@Id&amp;quot;&amp;gt;&amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:variable name=&amp;quot;SelectedInstructor&amp;quot; select=&amp;quot;/Trainings/Instructors/Instructor[@Id=$InstructorId]&amp;quot; /&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/Name&amp;quot;/&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:text&amp;gt; (&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/@Rating&amp;quot; /&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:text&amp;gt;)&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                              &amp;lt;br/&amp;gt;&lt;br /&gt;
                            &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;/tr&amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
                    &amp;lt;/table&amp;gt;&lt;br /&gt;
                    &amp;lt;br/&amp;gt;&lt;br /&gt;
                    &amp;lt;table&amp;gt;&lt;br /&gt;
                      &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                          &amp;lt;xsl:variable name=&amp;quot;VideoUrl&amp;quot; select=&amp;quot;$Training/VideoUrl&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;{$VideoUrl}&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                          &amp;lt;p&amp;gt;&lt;br /&gt;
                            &amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&lt;br /&gt;
                          &amp;lt;/p&amp;gt;&lt;br /&gt;
                          &amp;lt;p&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;$Training/Description&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                      &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;/table&amp;gt;&lt;br /&gt;
                  &amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
            &amp;lt;/ul&amp;gt;&lt;br /&gt;
          &amp;lt;/div&amp;gt;&lt;br /&gt;
          &amp;lt;br/&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
      &amp;lt;/body&amp;gt;&lt;br /&gt;
    &amp;lt;/html&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== HTML (transformeeritud) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/trainings.html Vaata eelneva transformatsiooni tulemust.]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;META http-equiv=&amp;quot;Content-Type&amp;quot; content=&amp;quot;text/html; charset=utf-8&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;SuperSportsClub - Trainings&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;style&amp;gt;&lt;br /&gt;
        body {&lt;br /&gt;
            background: BurlyWood;&lt;br /&gt;
            text-align: center;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        .section {&lt;br /&gt;
            text-align: left;&lt;br /&gt;
            width: 1000px;&lt;br /&gt;
            padding: 20px;&lt;br /&gt;
            background: Chocolate;&lt;br /&gt;
            margin: auto;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        table, th, td, .section {&lt;br /&gt;
            border: 1px solid black;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        th {&lt;br /&gt;
            text-align: left;&lt;br /&gt;
            padding-left: 10px;&lt;br /&gt;
            padding-right: 10px;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        td {&lt;br /&gt;
            text-align: center;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        p {&lt;br /&gt;
            text-align: justify;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        .description {&lt;br /&gt;
            vertical-align: top;&lt;br /&gt;
            padding: 10px;&lt;br /&gt;
        }&lt;br /&gt;
    &amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
    &amp;lt;h1&amp;gt;Trainings at SuperSportsClub&amp;lt;/h1&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Body&amp;amp;amp;Mind&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyBalance™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 13:30&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;1H15M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 2&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Minnie Mouse (4.6)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;31.03.2017 12:15&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;1H15M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 3&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Mickey Mouse (4.7)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/jJxA6vBjUqY&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                BODYBALANCE™ is the Yoga, Tai Chi, Pilates workout that builds flexibility and strength and leaves you feeling centered and calm. Based on a carefully structured series of stretches, moves and poses to music it creates a holistic workout that brings the body into a state of harmony and balance. This class will heighten your flexibility and inner strength creating a strong supple body from the inside out. Burn on average 390cals per hour.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;Yoga&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;25.03.2017 14:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Yoga Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Minnie Yogafier (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
                            28.03.2017 14:00&amp;lt;br&amp;gt;&amp;lt;div style=&amp;quot;color:Green&amp;quot;&amp;gt;&lt;br /&gt;
                                Special class!&lt;br /&gt;
                            &amp;lt;/div&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;1H20M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Yoga Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Minnie Yogafier (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/Nvlxn0EnmbM&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                Yoga is a group of physical, mental, and spiritual practices or disciplines which originated in ancient India.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Cardio&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyJam™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 16:10&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 3&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Donald Duck (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;01.04.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;45M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 5&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Goofy (3.9)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/8PTXyg9si_4&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                The Body Jam program is an addictive fusion of the latest dance styles to the hottest new sounds. This class isn’t just for dancers, it’s for everyone because the emphasis is put on not only having fun but also breaking a sweat. So grab a friend, get front and centre … you bring the attitude and we’ll bring the moves!&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Dance&amp;amp;amp;Fun&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyJam™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 16:10&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 3&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Donald Duck (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;01.04.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;45M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 5&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Goofy (3.9)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/8PTXyg9si_4&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                The Body Jam program is an addictive fusion of the latest dance styles to the hottest new sounds. This class isn’t just for dancers, it’s for everyone because the emphasis is put on not only having fun but also breaking a sweat. So grab a friend, get front and centre … you bring the attitude and we’ll bring the moves!&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;Zumba®&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;26.03.2017 15:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;55M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 2&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Zumbaschnegger (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;28.03.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 4&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Zumbaschnegger (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 2&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Zumbaschnegger (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/-ZB6XIkfxnQ&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                Zumba involves dance and aerobic movements performed to energetic music. The choreography incorporates hip-hop, soca, samba, salsa, merengue and mambo. Squats and lunges are also included.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Strength&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyPump™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;23.03.2017 13:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Main Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Schwarzenegger (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 13:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Main Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Schwarzenegger (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/zU_0XrdO3wo&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                BodyPump classes are 59 minutes long and contain eight separate muscle-group specific songs or &amp;quot;tracks&amp;quot; along with an opening warm up track and closing cool-down track. There are also 45-minute and 30-minute class formats. The classes are performed to music using free weights-plates, barbells and an aerobic step. Participants choose their weights based on the exercise and their personal goals. Major muscle groups are worked via series of compound and isolation-based exercises including squats, presses, dead lifts. The focus is towards muscle endurance by moving light weights at high repetitions, what Les Mills calls the Rep Effect.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;CoreStrength&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
                            23.03.2017 12:00&amp;lt;br&amp;gt;&amp;lt;div style=&amp;quot;color:Green&amp;quot;&amp;gt;&lt;br /&gt;
                                Special challenge!&lt;br /&gt;
                            &amp;lt;/div&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;2H&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Area 6&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Margaret Strengthener (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Area 6&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Kayla Weightlifter (4.8)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;05.04.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Area 6&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Kayla Weightlifter (4.8)&amp;lt;br&amp;gt;Margaret Strengthener (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/ZxTVmpvyUt8&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                CoreStrenght is a very hard workout! Not for beginners.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSLT (xml) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Selle transformatsiooniga luuakse uus [http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/schedule.xml XML fail], milles on treeningute andmed esitatud ühtse tunniplaani kujul. Algses failis erinevate elementide alla paigutatud andmed on nüüd tunniplaani alamelemendis kokku viidud. Sidumine on teostatud id-atribuutide abil. Tunniplaanis on ühes kohas kirjas treeningu nimi, stiil(id), koht, algusaeg, kestus, rühma suurus, instruktorid ja muu täiendav info.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&lt;br /&gt;
    xmlns:msxsl=&amp;quot;urn:schemas-microsoft-com:xslt&amp;quot; exclude-result-prefixes=&amp;quot;msxsl&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:output method=&amp;quot;xml&amp;quot; indent=&amp;quot;yes&amp;quot; cdata-section-elements=&amp;quot;Name Style Comment&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;/Trainings/Training&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:sort select=&amp;quot;Name&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:variable name=&amp;quot;SelectedTraining&amp;quot; select=&amp;quot;.&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;Schedule/ScheduleItem&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:sort select=&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;ScheduleItem&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:variable name=&amp;quot;VenueId&amp;quot; select=&amp;quot;@VenueId&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:variable name=&amp;quot;SelectedVenue&amp;quot; select=&amp;quot;/Trainings/Venues/Venue[@Id=$VenueId]&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:attribute name=&amp;quot;GroupSize&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;@GroupSize&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:value-of select=&amp;quot;@GroupSize&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:value-of select=&amp;quot;$SelectedVenue/@GroupSize&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
            &amp;lt;Venue&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$VenueId&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select=&amp;quot;$SelectedVenue&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/Venue&amp;gt;&lt;br /&gt;
            &amp;lt;Training&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$SelectedTraining/@Id&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:if test=&amp;quot;$SelectedTraining/@Licence&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:attribute name=&amp;quot;Licence&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:value-of select=&amp;quot;$SelectedTraining/@Licence&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
              &amp;lt;Name&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$SelectedTraining/Name&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/Name&amp;gt;&lt;br /&gt;
              &amp;lt;Styles&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:for-each select=&amp;quot;$SelectedTraining/Styles/Style&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:variable name=&amp;quot;StyleId&amp;quot; select=&amp;quot;@Id&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;Style&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:attribute name=&amp;quot;StyleId&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;$StyleId&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;/Trainings/Styles/Style[@Id=$StyleId]&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/Style&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
              &amp;lt;/Styles&amp;gt;&lt;br /&gt;
            &amp;lt;/Training&amp;gt;&lt;br /&gt;
            &amp;lt;Time&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:attribute name=&amp;quot;Duration&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;Time/@Duration&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select =&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/Time&amp;gt;&lt;br /&gt;
            &amp;lt;Instructors&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:for-each select=&amp;quot;Instructors/Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:variable name=&amp;quot;InstructorId&amp;quot; select=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:variable name=&amp;quot;SelectedInstructor&amp;quot; select=&amp;quot;/Trainings/Instructors/Instructor[@Id=$InstructorId]&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;Instructor&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;$InstructorId&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:attribute name=&amp;quot;Rating&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/@Rating&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                  &amp;lt;Name&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/Name&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/Name&amp;gt;&lt;br /&gt;
                &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
            &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:if test=&amp;quot;Comment&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;Comment&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;Comment&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/Comment&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
          &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XML (transformeeritud) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/schedule.xml Vaata eelneva transformatsiooni tulemust.]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Schedule&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;3&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot;&amp;gt;Hall 2&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;2&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyBalance™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-30T13:30:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;3&amp;quot; Rating=&amp;quot;4.6&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;2&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;3&amp;quot;&amp;gt;Hall 3&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;2&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyBalance™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-31T12:15:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;2&amp;quot; Rating=&amp;quot;4.7&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Mickey Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;4&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;3&amp;quot;&amp;gt;Hall 3&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;3&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyJam™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;![CDATA[Cardio]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T16:10:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;4&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Donald Duck]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;5&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;5&amp;quot;&amp;gt;Hall 5&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;3&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyJam™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;![CDATA[Cardio]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT45M&amp;quot;&amp;gt;2017-04-01T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;5&amp;quot; Rating=&amp;quot;3.9&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Goofy]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;7&amp;quot; GroupSize=&amp;quot;45&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;1&amp;quot;&amp;gt;Main Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;4&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyPump™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-23T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;6&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Schwarzenegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;6&amp;quot; GroupSize=&amp;quot;45&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;1&amp;quot;&amp;gt;Main Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;4&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyPump™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;6&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Schwarzenegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;8&amp;quot; GroupSize=&amp;quot;10&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot;&amp;gt;Area 6&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT2H&amp;quot;&amp;gt;2017-03-23T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;9&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Margaret Strengthener]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
    &amp;lt;Comment&amp;gt;&amp;lt;![CDATA[&lt;br /&gt;
          Special challenge!&lt;br /&gt;
        ]]&amp;gt;&amp;lt;/Comment&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;9&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot;&amp;gt;Area 6&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;8&amp;quot; Rating=&amp;quot;4.8&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Kayla Weightlifter]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;10&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot;&amp;gt;Area 6&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-04-05T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;8&amp;quot; Rating=&amp;quot;4.8&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Kayla Weightlifter]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;9&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Margaret Strengthener]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;11&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot;&amp;gt;Hall 2&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT55M&amp;quot;&amp;gt;2017-03-26T15:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;12&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;4&amp;quot;&amp;gt;Hall 4&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-28T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;13&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot;&amp;gt;Hall 2&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;1&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;7&amp;quot;&amp;gt;Yoga Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Yoga]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-25T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;1&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Yogafier]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;14&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;7&amp;quot;&amp;gt;Yoga Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Yoga]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT1H20M&amp;quot;&amp;gt;2017-03-28T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;1&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Yogafier]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
    &amp;lt;Comment&amp;gt;&amp;lt;![CDATA[&lt;br /&gt;
          Special class!&lt;br /&gt;
        ]]&amp;gt;&amp;lt;/Comment&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
&amp;lt;/Schedule&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus ==&lt;br /&gt;
Angular JS &#039;&#039;single page application&#039;&#039; eelnevalt kirjeldatud veebiteenusele. Sisse logimata saab kuvada spordiklubi tunniplaani nädalate kaupa, treeninguliike stiilide kaupa ja treenereid. Võimalik on liituda teenusega ja registreeruda treeningutele, samuti registreeringuid tühistada nii otse tunniplaanist kui ka registreeringute lehel. Esialgu põhineb süsteem ühel spordiklubil. Kasutamise eelduseks on tunniplaani olemasolu andmebaasis.&lt;br /&gt;
&lt;br /&gt;
Autentimine on lahendatud tokenipõhiselt. Eeskuju ja põhjana kasutasime näidisrakendust, mille juhend ja lähtekood on leitav [http://bitoftech.net/2014/06/09/angularjs-token-authentication-using-asp-net-web-api-2-owin-asp-net-identity/ siit].&lt;br /&gt;
&lt;br /&gt;
== Lähtekood ==&lt;br /&gt;
Eksamiks valminud veebiteenuse ja klientrakenduse kokkupakitult allalaadimiseks klõpsa [https://drive.google.com/open?id=0B84njRSbVLUtTWx5ZkZsdDBJZDQ sellel lingil]. WebApi ja Angular JS klient on eraldi lahendustes. Kliendi testimiseks brauseris (Chrome, Firefox vm) tuleb eelnevalt käivitada ka veebiteenus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;NB! Võib juhtuda, et WebApi esmakordsel käivitamisel loodavasse andmebaasi kõiki andmeid (tunniplaani ja registreerimisi jooksvasse nädalasse) ei lisandu. Sellisel juhul kustuta tekkinud andmebaas ja käivita kõigepealt samas lahenduses olev konsoolirakendus.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Retsensioonid ==&lt;br /&gt;
&lt;br /&gt;
# [https://wiki.itcollege.ee/index.php/Talk:JRT#Hinnang_meeskonna_JRT_esitatud_XML-failidele JRT meeskonna XML/XSD/XSLT retsensioon ]&lt;br /&gt;
# [https://wiki.itcollege.ee/index.php/Talk:JRT#Hinnang_meeskonna_JRT_esitatud_veebiteenusele JRT meeskonna veebiteenuse retsensioon ]&lt;br /&gt;
# [https://wiki.itcollege.ee/index.php/Talk:JRT#Hinnang_meeskonna_JRT_esitatud_klientrakendusele JRT meeskonna klientrakenduse retsensioon ]&lt;br /&gt;
&lt;br /&gt;
== Log ==&lt;br /&gt;
* 03.03.17 Esimene kohtumine. Idee.&lt;br /&gt;
* 17.03.17 Osa XMList valmis, osa XSLT-st valmis.&lt;br /&gt;
* 18.03.17 Teine kohtumine. XMLi täiendamine, esimene ülekäimine XSD-s.&lt;br /&gt;
* 19.03.17 XML/XSLT/XSD täiendamine ja lõpetamine.&lt;br /&gt;
* 20.03.17 XML fail, skeemifail ja stiilifailid esitatud. Projekti esimese etapi lõpp. Kevade algus.&lt;br /&gt;
* 26.03.17 XML/XSLT/XSD retsensioon esitatud.&lt;br /&gt;
* 16.04.17 Veebiteenuse analüüsi koostamine.&lt;br /&gt;
* 17.04.17 Esialgne veebiteenuse analüüs ja kavand valmis.&lt;br /&gt;
* 19.04.17 Alustasime veebiteenusega, koostegemine: Domain, DAL, Interfaces, Repostitories. Testimine konsoolis.&lt;br /&gt;
* 24.04.17 Veebiteenuse koostegemine, 2. kord: Domaini täiendamine.&lt;br /&gt;
* 29.04.17 Veebiteenuse koostegemine, 3. kord: Interfaces, Repositories, Factory + UOW. Testimine konsoolis.&lt;br /&gt;
* 01.05.17 Andmebaasi täitmine testandmetega varasemas faasis loodud XML failist.&lt;br /&gt;
* 02.05.17 Veebiteenuse koostegemine, 4. kord: alustasime BLi ja WebApi ehitamist. GET päringud.&lt;br /&gt;
* 09.05.17 Veebiteenuse koostegemine, 5. kord: lisasime Identity.&lt;br /&gt;
* 11.05.17 Veebiteenuse koostegemine, 6. kord: WebApi arendamine. POST, PUT ja DELETE päringud.&lt;br /&gt;
* 15.05.17 Veebiteenuse koostegemine, 7. kord: WebApi arendamine. Lisasime  api kontrollereid.&lt;br /&gt;
* 16.05.17 Veebiteenuse koostegemine, 8. kord: WebApi arendamine. Identity kontroll Fiddleri ja Postmaniga.&lt;br /&gt;
* 20.05.17 Klientrakenduse koostegemine, 1. kord. Testklient.&lt;br /&gt;
* 25.05.17 Klientrakenduse koostegemine, 2. kord. Klientrakenduse arendamine.&lt;br /&gt;
* 01.06.17 Klientrakenduse koostegemine, 3. kord. Klientrakenduse arendamine. Angular JS.&lt;br /&gt;
* 03.06.17 - 11.06.17 Klientrakenduse arendamine. Tokenipõhine autentimine. Veebiteenuse viimistlemine.&lt;br /&gt;
* 11.06.17 Lõpptähtaeg. Projekti esitlemine eksamil.&lt;br /&gt;
* 12.06.17 Teiste lahenduste retsenseerimine.&lt;br /&gt;
* 13.06.17 Veebiteenuse ja klientrakenduse retsensioonid esitatud.&lt;/div&gt;</summary>
		<author><name>Otiks</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Talk:JRT&amp;diff=123576</id>
		<title>Talk:JRT</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Talk:JRT&amp;diff=123576"/>
		<updated>2017-06-13T20:33:33Z</updated>

		<summary type="html">&lt;p&gt;Otiks: /* Hinnang meeskonna JRT esitatud klientrakendusele */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Hinnang meeskonna JRT esitatud XML-failidele==&lt;br /&gt;
&lt;br /&gt;
Koostaja: [https://wiki.itcollege.ee/index.php/Team_SPOT Team SPOT]&lt;br /&gt;
&lt;br /&gt;
Meeskond JRT on esitanud XML-faili, skeemifaili ja kaks XSLT-faili andmete transformeerimiseks HTML- ja XML-formaati. Transformatsioonid sisaldavad enam kui ühte &#039;&#039;for-each&#039;&#039;-klauslit. HTML-väljundiga transformatsioonis on kasutatud nelja &#039;&#039;for-each&#039;&#039;i ja kolme &#039;&#039;if&#039;&#039;-tingimust. XML-väljundiga transformatsioonis on kasutatud viite &#039;&#039;for-each&#039;&#039;i ja kolme &#039;&#039;if&#039;&#039;-tingimust. XML valideerub ja loogilisi dimensioone on viis. Neljal dimensioonil on kasutatud atribuute, mis on enam kui lihtsalt ID. Töö põhinõuded on täidetud.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Märkused XMLi/XSD kohta:&#039;&#039;&#039;&lt;br /&gt;
* elemendi &amp;lt;user&amp;gt; &#039;&#039;id&#039;&#039;-atribuudi väärtuse unikaalsus ei ole tagatud&lt;br /&gt;
* elemendile &amp;lt;user&amp;gt; saab lisada piiramatul arvul sama alamelementi: &amp;lt;firstName&amp;gt;, &amp;lt;lastName&amp;gt;, &amp;lt;born&amp;gt;, &amp;lt;sex&amp;gt;, …&lt;br /&gt;
* elemendil &amp;lt;user&amp;gt; on kõigi &amp;lt;subscription&amp;gt;-elementide &#039;&#039;type&#039;&#039; määratud kõige ülemisel tasemel &#039;&#039;status&#039;&#039;-atribuudiga, aga see võiks olla &amp;lt;subscription&amp;gt;-tasemel, et võimaldada rohkem paindlikkust&lt;br /&gt;
* atribuuti &#039;&#039;id&#039;&#039; (unikaalset) võiks kasutada ka teiste “liigielementide” puhul, sest:&lt;br /&gt;
**  elemente &amp;lt;subscription&amp;gt; saab sama &#039;&#039;name&#039;&#039;-atribuudiga lisada piiramatul arvul&lt;br /&gt;
**  elemendi &amp;lt;subscription&amp;gt; alla saab lisada piiramatul arvul &amp;lt;price&amp;gt;-elemente samade &#039;&#039;type&#039;&#039;- ja &#039;&#039;currency&#039;&#039;-atribuutide väärtustega&lt;br /&gt;
* elemendi &amp;lt;subscription&amp;gt; &#039;&#039;name&#039;&#039;-atribuudiga võib tekkida probleeme, kui atribuuti pandud nimi sisaldaks erimärke, seega oleks mõistlikum &#039;&#039;name&#039;&#039;-atribuut asendada eraldi alamelemendiga &amp;lt;name&amp;gt;&amp;lt;/name&amp;gt;, kus saaks kasutada CDATAt.&lt;br /&gt;
&lt;br /&gt;
Tööga on nähtud vaeva, XSLTd on koostatud arusaadavalt, kuid XSD ja XML vajaksid täiendamist, et vältida võimalikke ohukohti andmete saatmisel. Vastasel korral võivad ka transformatsioonid ootamatusi toota (vt näidet). Põhiline oleks XSDs ära märkida, kui palju mingit elementi esineda võib ning tagada ka &#039;&#039;id&#039;&#039;-atribuudi unikaalsus. XMLi koostamise puhul tuleks läbi mõelda kas atribuudid on mõistlikult valitud või saaks neid esitada paremini alamelementidena. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Näide:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;background-color: whitesmoke; border: solid thin grey; display: inline-block; padding:10px&amp;quot;&amp;gt;&lt;br /&gt;
Name: Peeter Banaan&amp;lt;br&amp;gt;Member status: gold&amp;lt;br&amp;gt;Workouts and prices: &lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;     Balance: 39.99EUR&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;     Balance: 39.99EUR&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;     Balance: 39.99EUR&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;     Gym: 69.99EUR&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;     Yoga: 39.99EURYoga: 39.99EURYoga: 39.99EUR&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
JRT esitatud töö asub [https://wiki.itcollege.ee/index.php/JRT#XML siin].&lt;br /&gt;
&lt;br /&gt;
==Hinnang meeskonna JRT esitatud veebiteenusele==&lt;br /&gt;
&lt;br /&gt;
Koostaja: [https://wiki.itcollege.ee/index.php/Team_SPOT Team SPOT]&lt;br /&gt;
&lt;br /&gt;
JRT veebiteenus on mõeldud jõusaali külastajale, kes näevad erinevatele kehaosadele mõeldud harjutusi, treeningukavasid ning ja saavad üles märkida oma saavutusi. Projekti realiseerimiseks on kasutatud REST arhitektuuri ja ASP.NET MVC Web API tehnoloogiat. Andmebaas luuakse Entity Frameworki abil. Lahendusele on lisatud Asp.Net Identity (Individual User Accounts) funktsionaalsuse võimalus.&lt;br /&gt;
 &lt;br /&gt;
Teenuse lähtekood on jagatud kihtidesse: BL (äriloogika, andmeobjektid, teenused), DAL (suhtlus andmebaasiga, repositooriumid), Domain (olemid), Web (kontrollerid), eraldi teek on ka liidestele (Interfaces). Samuti on kasutatud sõltuvuste süstimist (Ninject) ning repositooriumide puhul Factory ja UOW mustrit. Web projektis on koos, aga eraldi kaustades, nii teenuse API kontrollerid kui ka veebikliendi MVC kontrollerid ja AngularJS kontrollerid.&lt;br /&gt;
 &lt;br /&gt;
Meeskonna lehel avaldatud veebiteenuse analüüsis endale eesmärgiks seatud kohustuslike funktsionaalsuste hulka kuuluvad: kasutajagrupid, konto loomise võimalus, isiklike andmete ja kavade salvestamise võimalus, treenerite info ja kontaktandmed. Lisavõimalusena sooviti luua ka kasutusstatistika ja -analüüsi tuge ning administraatori liidest.&lt;br /&gt;
 &lt;br /&gt;
Praeguse seisuga esitatud teenuse kohta pole meeskond kommentaare lisanud, mistõttu on keeruline kõigest ülevaadet saada ja tehtut adekvaatselt hinnata. Andmebaasi skeemi juures võiks olla ka tabelite kirjeldused ja olemite omavaheliste seoste selgitused. Esimese hooga on raske skeemi loogikast aru saada. &lt;br /&gt;
 &lt;br /&gt;
Eelnevalt mainitud põhifunktsionaalsused on ühel või teisel kujul ka realiseeritud: teenusest on võimalik kätte saada infot erinevatele kehaosadele mõeldud harjutuste, erinevate treeningühikute, treeningkavade ja päevaplaanide kohta, samuti kasutajate andmeid. Ka uute kasutajate lisamine on võimalik. Täiendavate funktsionaalsuste realiseerimiseni pole jõutud.&lt;br /&gt;
 &lt;br /&gt;
Andmebaasi migratsioone pole projekti selles faasis lisatud. Andmebaasi kustutamise või olemites tehtud muudatuste korral luuakse uus andmebaas, mis populeeritakse DAL kihis asuva DBInitializer klassi Seed() meetodis olevate andmetega.&lt;br /&gt;
 &lt;br /&gt;
Küsimusi tekitab kasutajate haldus. Nimelt on tehtud andmebaasi teenuse kasutajatele eraldi olem AppUser, kuhu saab lisada kasutajaid ilma Asp.Net Identity funktsionaalsust kasutamata. Sealt on ilma autentimiseta võimalik kätte saada kõigi kasutajate isikuandmeid. Paralleelselt on alles jäetud ka UserInt olem, kuhu saab samuti kasutajaid lisada, viimaseid on võimalik autentida läbi Web projektis asuva Account kontrolleri. AppUserit on võimalik siduda UserInt olemiga, aga see ei kajastu meeskonna lehel esitatud andmebaasi skeemis.&lt;br /&gt;
 &lt;br /&gt;
Account mudelid on samas ümber kolitud BL kihis asuvasse DTO-de kausta. Kas see on ikka õige koht? Pigem võiks need ju asuda Web projektis, kus asub vastav kontroller ja kus autentimine ja autoriseerimine tegelikult peaks toimuma. Silma jäi seegi, et nii Asp.Net Identity kui ka mõned teised paketid (näiteks Ninject) on lisatud alamprojektidesse, kus neid vaja ei lähe. &lt;br /&gt;
 &lt;br /&gt;
Asp.Net Identity funktsionaalsust tegelikult siiski kuskil ei kasutatagi. Autentimist pole üheski kontrolleris peale AccountControlleri rakendatud, aga see pole praegu muu teenusega seotud. Kõigile andmetele pääseb takistusteta ligi otse brauserist. Samuti on võimalik näiteks Fiddleri abil andmeid muuta ja kustutada.&lt;br /&gt;
 &lt;br /&gt;
Andmebaasiga suhtlemine käib läbi DAL kihis asuvate repositooriumide, kuid kasutusel on ainult standardsed meetodid: All(), Find() / GetById(), Remove(), Add(), Update(), SaveChanges(). Ühtegi kohandatud viisi andmete kättesaamiseks või muutmiseks pole repositooriumidesse lisatud - need on kõik tühjad. Sama lugu on ka BL Services kihiga. &lt;br /&gt;
 &lt;br /&gt;
Web projekti kontrollerites pole hetkel samuti ühtegi kohandatud IHttpActionResult meetodit realiseeritud. Ka on puudu mõned tavapärased meetodid. Bodyparts ja RoutineWorkouts kontrollerid ei võimalda ID järgi objekti kätte saada. Konkreetse objekti selekteerimine on nende andmete puhul seega jäetud kliendi mureks. &lt;br /&gt;
 &lt;br /&gt;
Nagu juba eelnevalt mainitud, siis ühegi kontrolleri kasutamist pole praegu autentimisega piiratud ja kasutajarolle ei rakendata.&lt;br /&gt;
 &lt;br /&gt;
Service kihis tuleks üle vaadata Edit() meetodid, sest need ei tööta olemite puhul, millel on suubuvaid seoseid teiste olemitega. DTO klassides on tehtud osa atribuute kohustuslikeks, mistõttu on ka seotud olemite loomine ja muutmine läbi teenuse keerulisem kui ehk peaks. Lisaks id-atribuudile tuleb mõnel puhul kaasa anda ka objekti nimi. ProgramDTO puhul puudub aga näiteks id-atribuut sootuks. &lt;br /&gt;
 &lt;br /&gt;
Domeeni kihis on rohkem olemeid, kui praegu teenuses ära kasutatakse, aga kõiki funktsionaalsusi polegi jõutud veel realiseerida. Annotatsioonid on olemas. Vajalikud atribuudid on muudetud kohustuslikuks ning stringide pikkused piiratud. Küll on domeeni tasemel jäetud kohustuslikuks tegemata AppUseri ees- ja perenimi. Need piirangud on lisatud Account mudelites.&lt;br /&gt;
 &lt;br /&gt;
Üldkokkuvõttes võib siiski öelda, et kui autentimine ja autoriseerimine välja jätta, siis on nõutud põhifunktsionaalsused veebiteenuses lahendatud. Lahendus on jagatud kihtidesse ning äriloogika on kontrolleritest välja jäetud. Andmebaasis on olemeid piisavalt ja neid andmeid on võimalik läbi API kätte saada. Projekt on piisavalt keeruline ja selle lõplik realiseerimine nõuab ilmselt rohkem aega ja pühendumist, mida käesoleva aine sisu, mahtu ja ajakava arvesse võttes oleks ülekohtune nõuda.&lt;br /&gt;
&lt;br /&gt;
JRT esitatud töö asub [https://wiki.itcollege.ee/index.php/JRT#J.C3.B5usaali_infos.C3.BCsteemi_anal.C3.BC.C3.BCs siin].&lt;br /&gt;
&lt;br /&gt;
==Hinnang meeskonna JRT esitatud klientrakendusele==&lt;br /&gt;
&lt;br /&gt;
Koostaja: [https://wiki.itcollege.ee/index.php/JRT#J.C3.B5usaali_infos.C3.BCsteemi_anal.C3.BC.C3.BCs Team SPOT]&lt;br /&gt;
&lt;br /&gt;
JRT veebiteenuse vastu töötava klientrakenduse loomisel on kasutatud Angular JS raamistikku koos Asp.Net MVC kontrollerite ja vaadetega (Razor). Angulari osa on eraldatud App kausta. Koodis on kasutatud ka jQueryt. MVC kontrollerid ja vaated on tekitatud scaffoldingiga. Seega pole pidanud eraldi vaeva nägema ruutimisega. Kuna klient on lisatud samasse projekti, kus asuvad ka API kontrollerid, siis pole pidanud kliendi jaoks eraldi salvestama teenuse baasaadressi, mille vastu päringuid tehakse.&lt;br /&gt;
 &lt;br /&gt;
Meeskonna lehel avaldatud teenuse analüüsis on välja toodud kaks liidest, mida soovitakse arendada. Administraatoriliideses peaks administraatoril olema võimalus hallata kõiki andmeid (näiteks lisada ja kustutada: kasutajaid, harjutusi, treenigukavasid jne). Kasutajaliideses peaks tavakasutaja saama sisestada oma keha kohta viimaseid andmeid, panna kirja infot viimase treeningu kohta ning lisada omale kontaktandmeid, valida treeningukavasid ja paigutada need soovitud päevadele.&lt;br /&gt;
 &lt;br /&gt;
Mingisuguseid kommentaare avaldatud klientrakenduse kohta meeskonna lehelt leida ei õnnestunud. Lisaks leidub lähtekoodis lõpuni realiseerimata osasid, mis tegelikult rakenduse tööd ei mõjuta. See tegi retsenseerimise keerulisemaks, aga üldjoontes on kõigest hoolimata võimalik lahenduse tööpõhimõttest aru saada, kui rakendust natuke testida ja lähtekoodi uurida.&lt;br /&gt;
 &lt;br /&gt;
Praeguse seisuga on veebikliendis osaliselt teostatud administraatorile mõeldud funktsionaalsus. Kasutajaid hallata veel ei saa, aga harjutusi ja treeningukavasid on võimalik lisada. Realiseerida on proovitud ka tokenipõhist autentimist, kuid see ei tööta, mis on arusaadav, kuna kasutajahaldus ja autentimine / autoriseerimine on jäänud praeguse seisuga realiseerimata ka teenuse API poolel. Ilmselgelt on näha, et töö jäi pooleli.&lt;br /&gt;
 &lt;br /&gt;
Angulari rakenduse kontrolleritega on veebikliendis tööle pandud neli vaadet: Exercises, Units, BodyParts, Routines. Neile pääseb ligi menüüribale lisatud linkide kaudu. Users vaade on ka olemas, aga ilma Angulari kontrollerita - andmeid ei laeta. Sellele vaatele pääseb ligi, kui lisada brauseri aadressiribal domeeni lõppu “/Users”. Tokenipõhise autentimise jaoks on tehtud ka MainAngular vaade (domeen/MainAngular), kuid see ei toimi.&lt;br /&gt;
 &lt;br /&gt;
Kõik olemasolevad vaated on sama ülesehitusega - kuvatakse nimekirja koos Edit ja Delete nuppudega. Filtreid andmete sorteerimiseks ei ole. Igal vaatel on olemas on ka Add New nupp. Andmete lisamiseks ja muutmiseks avaneb hüpikaken (modal), kuhu laetakse kõik objekti jaoks vajalikud input-väljad - ja seotud olemite puhul valiku tegemiseks ripploetelud. Objektide kustutamisel küsitakse kasutajalt kinnitust. Kõik pakutud funktsionaalsused paraku veel ei tööta. Probleeme on eeskätt teiste olemitega seotud olemite muutmise ja kustutamisega.&lt;br /&gt;
 &lt;br /&gt;
Funktsionaalsused vaadete kaupa:&lt;br /&gt;
*Units  - andmete kuvamine, lisamine, muutmine ja kustutamine töötavad&lt;br /&gt;
*Exercises - andmete kuvamine, lisamine ja kustutamine töötavad, ent muutmine töötab ainult osaliselt: kui muuta harjutuse mõõtühikut, siis veast ei teavitata, aga muudatus andmebaasi ei jõua (Fiddleriga otse teenuse API poole pöördudes lisandus andmebaasi uus kirje) &lt;br /&gt;
*BodyParts - andmete kuvamine, lisamine ja kustutamine töötavad, aga muutmine ei õnnestu (ka Fiddleriga otse teenuse API poole pöördudes). Kui üritada muuta kehaosa alla kuuluvate harjutuste nimekirja, siis tuleb vastuseks Http status 400 (Bad request!)&lt;br /&gt;
*Routines - andmete kuvamine ja lisamine töötavad, muutmine (ReferenceError: bodyPart is not defined) ja kustutamine ei õnnestu (Bad request)! &lt;br /&gt;
 &lt;br /&gt;
Vaadete puhul võib nuriseda selle üle, et iga kontrolleri kohta on tehtud ainult Index vaatefail, mis sisaldab endas nii põhiakna kui ka hüpikakende html-koodi. Need oleks võinud parema arusaadavuse huvides ju lahutada, isegi kui andmete laadimine toimub läbi sama kontrolleri. &lt;br /&gt;
 &lt;br /&gt;
Lähtekoodist ilmneb veel, et iga töötava vaate jaoks on tehtud eraldi moodul oma kontrolleriga, mis registreeritakse vastavas vaates. Keskne moodul failis app.js ei tööta, see on mõeldud tokenipõhise autentimise realiseerimiseks ja eeldab üheleherakendust (ruutimisinfo on ka samas). Kõiki autentimise töölesaamiseks vajalikke mooduleid ei ole samas projekti lisatud (authService, authInterceptorService).&lt;br /&gt;
 &lt;br /&gt;
Praeguse lahenduse üheks puuduseks on veel see, et kõik Http-päringud veebiteenusele tehakse otse Angulari kontrolleritest, puudub vahepealne service-kiht. Selle tagajärjel on päringud ja vaadete loogika koodis läbisegi. Hüpikaknas objektide muutmiseks ei pärita andmeid uuesti teenusest, vaid muudetakse juba varem põhiaknasse laetud andmeid. Lisaks on Angulari raamistiku kõrval kasutatud ka tavalisi jQuery võtteid, mis teeb üldpildi võrdlemisi kirjuks. Mõned funktsioonid ei tööta korrektselt ja nii on üsna keeruline aru saada, kus viga täpselt asub: kontrolleris või teenuse API poolel.&lt;br /&gt;
 &lt;br /&gt;
Kokkuvõttes võib tõdeda, et olemasolevate vaadetega on siiski vaeva nähtud ja suhtlus teenusega tööle saadud, mis selle aine puhul on ilmselt peamine. Mõned funktsionaalsused vajavad veel viimistlemist ja projekti üldine ülesehitus korrastamist. MVC kontrolleritega autentimise tööle saamiseks tuleks lisada eespool mainitud puuduvad teenused, siduda olemasolevad kontrollerid keskse app-mooduliga ning see omakorda jagatud Layout vaatega, millele tuleks ka lisada eraldi kontroller.&lt;br /&gt;
&lt;br /&gt;
JRT esitatud töö asub [https://wiki.itcollege.ee/index.php/JRT#J.C3.B5usaali_infos.C3.BCsteemi_anal.C3.BC.C3.BCs siin].&lt;/div&gt;</summary>
		<author><name>Otiks</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Talk:JRT&amp;diff=123575</id>
		<title>Talk:JRT</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Talk:JRT&amp;diff=123575"/>
		<updated>2017-06-13T20:28:10Z</updated>

		<summary type="html">&lt;p&gt;Otiks: /* Hinnang meeskonna JRT esitatud klientrakendusele */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Hinnang meeskonna JRT esitatud XML-failidele==&lt;br /&gt;
&lt;br /&gt;
Koostaja: [https://wiki.itcollege.ee/index.php/Team_SPOT Team SPOT]&lt;br /&gt;
&lt;br /&gt;
Meeskond JRT on esitanud XML-faili, skeemifaili ja kaks XSLT-faili andmete transformeerimiseks HTML- ja XML-formaati. Transformatsioonid sisaldavad enam kui ühte &#039;&#039;for-each&#039;&#039;-klauslit. HTML-väljundiga transformatsioonis on kasutatud nelja &#039;&#039;for-each&#039;&#039;i ja kolme &#039;&#039;if&#039;&#039;-tingimust. XML-väljundiga transformatsioonis on kasutatud viite &#039;&#039;for-each&#039;&#039;i ja kolme &#039;&#039;if&#039;&#039;-tingimust. XML valideerub ja loogilisi dimensioone on viis. Neljal dimensioonil on kasutatud atribuute, mis on enam kui lihtsalt ID. Töö põhinõuded on täidetud.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Märkused XMLi/XSD kohta:&#039;&#039;&#039;&lt;br /&gt;
* elemendi &amp;lt;user&amp;gt; &#039;&#039;id&#039;&#039;-atribuudi väärtuse unikaalsus ei ole tagatud&lt;br /&gt;
* elemendile &amp;lt;user&amp;gt; saab lisada piiramatul arvul sama alamelementi: &amp;lt;firstName&amp;gt;, &amp;lt;lastName&amp;gt;, &amp;lt;born&amp;gt;, &amp;lt;sex&amp;gt;, …&lt;br /&gt;
* elemendil &amp;lt;user&amp;gt; on kõigi &amp;lt;subscription&amp;gt;-elementide &#039;&#039;type&#039;&#039; määratud kõige ülemisel tasemel &#039;&#039;status&#039;&#039;-atribuudiga, aga see võiks olla &amp;lt;subscription&amp;gt;-tasemel, et võimaldada rohkem paindlikkust&lt;br /&gt;
* atribuuti &#039;&#039;id&#039;&#039; (unikaalset) võiks kasutada ka teiste “liigielementide” puhul, sest:&lt;br /&gt;
**  elemente &amp;lt;subscription&amp;gt; saab sama &#039;&#039;name&#039;&#039;-atribuudiga lisada piiramatul arvul&lt;br /&gt;
**  elemendi &amp;lt;subscription&amp;gt; alla saab lisada piiramatul arvul &amp;lt;price&amp;gt;-elemente samade &#039;&#039;type&#039;&#039;- ja &#039;&#039;currency&#039;&#039;-atribuutide väärtustega&lt;br /&gt;
* elemendi &amp;lt;subscription&amp;gt; &#039;&#039;name&#039;&#039;-atribuudiga võib tekkida probleeme, kui atribuuti pandud nimi sisaldaks erimärke, seega oleks mõistlikum &#039;&#039;name&#039;&#039;-atribuut asendada eraldi alamelemendiga &amp;lt;name&amp;gt;&amp;lt;/name&amp;gt;, kus saaks kasutada CDATAt.&lt;br /&gt;
&lt;br /&gt;
Tööga on nähtud vaeva, XSLTd on koostatud arusaadavalt, kuid XSD ja XML vajaksid täiendamist, et vältida võimalikke ohukohti andmete saatmisel. Vastasel korral võivad ka transformatsioonid ootamatusi toota (vt näidet). Põhiline oleks XSDs ära märkida, kui palju mingit elementi esineda võib ning tagada ka &#039;&#039;id&#039;&#039;-atribuudi unikaalsus. XMLi koostamise puhul tuleks läbi mõelda kas atribuudid on mõistlikult valitud või saaks neid esitada paremini alamelementidena. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Näide:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;background-color: whitesmoke; border: solid thin grey; display: inline-block; padding:10px&amp;quot;&amp;gt;&lt;br /&gt;
Name: Peeter Banaan&amp;lt;br&amp;gt;Member status: gold&amp;lt;br&amp;gt;Workouts and prices: &lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;     Balance: 39.99EUR&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;     Balance: 39.99EUR&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;     Balance: 39.99EUR&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;     Gym: 69.99EUR&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;     Yoga: 39.99EURYoga: 39.99EURYoga: 39.99EUR&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
JRT esitatud töö asub [https://wiki.itcollege.ee/index.php/JRT#XML siin].&lt;br /&gt;
&lt;br /&gt;
==Hinnang meeskonna JRT esitatud veebiteenusele==&lt;br /&gt;
&lt;br /&gt;
Koostaja: [https://wiki.itcollege.ee/index.php/Team_SPOT Team SPOT]&lt;br /&gt;
&lt;br /&gt;
JRT veebiteenus on mõeldud jõusaali külastajale, kes näevad erinevatele kehaosadele mõeldud harjutusi, treeningukavasid ning ja saavad üles märkida oma saavutusi. Projekti realiseerimiseks on kasutatud REST arhitektuuri ja ASP.NET MVC Web API tehnoloogiat. Andmebaas luuakse Entity Frameworki abil. Lahendusele on lisatud Asp.Net Identity (Individual User Accounts) funktsionaalsuse võimalus.&lt;br /&gt;
 &lt;br /&gt;
Teenuse lähtekood on jagatud kihtidesse: BL (äriloogika, andmeobjektid, teenused), DAL (suhtlus andmebaasiga, repositooriumid), Domain (olemid), Web (kontrollerid), eraldi teek on ka liidestele (Interfaces). Samuti on kasutatud sõltuvuste süstimist (Ninject) ning repositooriumide puhul Factory ja UOW mustrit. Web projektis on koos, aga eraldi kaustades, nii teenuse API kontrollerid kui ka veebikliendi MVC kontrollerid ja AngularJS kontrollerid.&lt;br /&gt;
 &lt;br /&gt;
Meeskonna lehel avaldatud veebiteenuse analüüsis endale eesmärgiks seatud kohustuslike funktsionaalsuste hulka kuuluvad: kasutajagrupid, konto loomise võimalus, isiklike andmete ja kavade salvestamise võimalus, treenerite info ja kontaktandmed. Lisavõimalusena sooviti luua ka kasutusstatistika ja -analüüsi tuge ning administraatori liidest.&lt;br /&gt;
 &lt;br /&gt;
Praeguse seisuga esitatud teenuse kohta pole meeskond kommentaare lisanud, mistõttu on keeruline kõigest ülevaadet saada ja tehtut adekvaatselt hinnata. Andmebaasi skeemi juures võiks olla ka tabelite kirjeldused ja olemite omavaheliste seoste selgitused. Esimese hooga on raske skeemi loogikast aru saada. &lt;br /&gt;
 &lt;br /&gt;
Eelnevalt mainitud põhifunktsionaalsused on ühel või teisel kujul ka realiseeritud: teenusest on võimalik kätte saada infot erinevatele kehaosadele mõeldud harjutuste, erinevate treeningühikute, treeningkavade ja päevaplaanide kohta, samuti kasutajate andmeid. Ka uute kasutajate lisamine on võimalik. Täiendavate funktsionaalsuste realiseerimiseni pole jõutud.&lt;br /&gt;
 &lt;br /&gt;
Andmebaasi migratsioone pole projekti selles faasis lisatud. Andmebaasi kustutamise või olemites tehtud muudatuste korral luuakse uus andmebaas, mis populeeritakse DAL kihis asuva DBInitializer klassi Seed() meetodis olevate andmetega.&lt;br /&gt;
 &lt;br /&gt;
Küsimusi tekitab kasutajate haldus. Nimelt on tehtud andmebaasi teenuse kasutajatele eraldi olem AppUser, kuhu saab lisada kasutajaid ilma Asp.Net Identity funktsionaalsust kasutamata. Sealt on ilma autentimiseta võimalik kätte saada kõigi kasutajate isikuandmeid. Paralleelselt on alles jäetud ka UserInt olem, kuhu saab samuti kasutajaid lisada, viimaseid on võimalik autentida läbi Web projektis asuva Account kontrolleri. AppUserit on võimalik siduda UserInt olemiga, aga see ei kajastu meeskonna lehel esitatud andmebaasi skeemis.&lt;br /&gt;
 &lt;br /&gt;
Account mudelid on samas ümber kolitud BL kihis asuvasse DTO-de kausta. Kas see on ikka õige koht? Pigem võiks need ju asuda Web projektis, kus asub vastav kontroller ja kus autentimine ja autoriseerimine tegelikult peaks toimuma. Silma jäi seegi, et nii Asp.Net Identity kui ka mõned teised paketid (näiteks Ninject) on lisatud alamprojektidesse, kus neid vaja ei lähe. &lt;br /&gt;
 &lt;br /&gt;
Asp.Net Identity funktsionaalsust tegelikult siiski kuskil ei kasutatagi. Autentimist pole üheski kontrolleris peale AccountControlleri rakendatud, aga see pole praegu muu teenusega seotud. Kõigile andmetele pääseb takistusteta ligi otse brauserist. Samuti on võimalik näiteks Fiddleri abil andmeid muuta ja kustutada.&lt;br /&gt;
 &lt;br /&gt;
Andmebaasiga suhtlemine käib läbi DAL kihis asuvate repositooriumide, kuid kasutusel on ainult standardsed meetodid: All(), Find() / GetById(), Remove(), Add(), Update(), SaveChanges(). Ühtegi kohandatud viisi andmete kättesaamiseks või muutmiseks pole repositooriumidesse lisatud - need on kõik tühjad. Sama lugu on ka BL Services kihiga. &lt;br /&gt;
 &lt;br /&gt;
Web projekti kontrollerites pole hetkel samuti ühtegi kohandatud IHttpActionResult meetodit realiseeritud. Ka on puudu mõned tavapärased meetodid. Bodyparts ja RoutineWorkouts kontrollerid ei võimalda ID järgi objekti kätte saada. Konkreetse objekti selekteerimine on nende andmete puhul seega jäetud kliendi mureks. &lt;br /&gt;
 &lt;br /&gt;
Nagu juba eelnevalt mainitud, siis ühegi kontrolleri kasutamist pole praegu autentimisega piiratud ja kasutajarolle ei rakendata.&lt;br /&gt;
 &lt;br /&gt;
Service kihis tuleks üle vaadata Edit() meetodid, sest need ei tööta olemite puhul, millel on suubuvaid seoseid teiste olemitega. DTO klassides on tehtud osa atribuute kohustuslikeks, mistõttu on ka seotud olemite loomine ja muutmine läbi teenuse keerulisem kui ehk peaks. Lisaks id-atribuudile tuleb mõnel puhul kaasa anda ka objekti nimi. ProgramDTO puhul puudub aga näiteks id-atribuut sootuks. &lt;br /&gt;
 &lt;br /&gt;
Domeeni kihis on rohkem olemeid, kui praegu teenuses ära kasutatakse, aga kõiki funktsionaalsusi polegi jõutud veel realiseerida. Annotatsioonid on olemas. Vajalikud atribuudid on muudetud kohustuslikuks ning stringide pikkused piiratud. Küll on domeeni tasemel jäetud kohustuslikuks tegemata AppUseri ees- ja perenimi. Need piirangud on lisatud Account mudelites.&lt;br /&gt;
 &lt;br /&gt;
Üldkokkuvõttes võib siiski öelda, et kui autentimine ja autoriseerimine välja jätta, siis on nõutud põhifunktsionaalsused veebiteenuses lahendatud. Lahendus on jagatud kihtidesse ning äriloogika on kontrolleritest välja jäetud. Andmebaasis on olemeid piisavalt ja neid andmeid on võimalik läbi API kätte saada. Projekt on piisavalt keeruline ja selle lõplik realiseerimine nõuab ilmselt rohkem aega ja pühendumist, mida käesoleva aine sisu, mahtu ja ajakava arvesse võttes oleks ülekohtune nõuda.&lt;br /&gt;
&lt;br /&gt;
JRT esitatud töö asub [https://wiki.itcollege.ee/index.php/JRT#J.C3.B5usaali_infos.C3.BCsteemi_anal.C3.BC.C3.BCs siin].&lt;br /&gt;
&lt;br /&gt;
==Hinnang meeskonna JRT esitatud klientrakendusele==&lt;br /&gt;
&lt;br /&gt;
Koostaja: [https://wiki.itcollege.ee/index.php/JRT#J.C3.B5usaali_infos.C3.BCsteemi_anal.C3.BC.C3.BCs Team SPOT]&lt;br /&gt;
&lt;br /&gt;
JRT veebiteenuse vastu töötava klientrakenduse loomisel on kasutatud Angular JS raamistikku koos Asp.Net MVC kontrollerite ja vaadetega (Razor). Angulari osa on eraldatud App kausta. Koodis on kasutatud ka jQueryt. MVC kontrollerid ja vaated on tekitatud scaffoldingiga. Seega pole pidanud eraldi vaeva nägema ruutimisega. Kuna klient on lisatud samasse projekti, kus asuvad ka API kontrollerid, siis pole pidanud kliendi jaoks eraldi salvestama teenuse baasaadressi, mille vastu päringuid tehakse.&lt;br /&gt;
 &lt;br /&gt;
Meeskonna lehel avaldatud teenuse analüüsis on välja toodud kaks liidest, mida soovitakse arendada. Administraatoriliideses peaks administraatoril olema võimalus hallata kõiki andmeid (näiteks lisada ja kustutada: kasutajaid, harjutusi, treenigukavasid jne). Kasutajaliideses peaks tavakasutaja saama sisestada oma keha kohta viimaseid andmeid, panna kirja infot viimase treeningu kohta ning lisada omale kontaktandmeid, valida treeningukavasid ja paigutada need soovitud päevadele.&lt;br /&gt;
 &lt;br /&gt;
Mingisuguseid kommentaare avaldatud klientrakenduse kohta meeskonna lehelt leida ei õnnestunud. Lisaks leidub lähtekoodis lõpuni realiseerimata osasid, mis tegelikult rakenduse tööd ei mõjuta. See tegi retsenseerimise keerulisemaks, aga üldjoontes on kõigest hoolimata võimalik lahenduse tööpõhimõttest aru saada, kui rakendust natuke testida ja lähtekoodi uurida.&lt;br /&gt;
 &lt;br /&gt;
Praeguse seisuga on veebikliendis osaliselt teostatud administraatorile mõeldud funktsionaalsus. Kasutajaid hallata veel ei saa, aga harjutusi ja treeningukavasid on võimalik lisada. Realiseerida on proovitud ka tokenipõhist autentimist, kuid see ei tööta, mis on arusaadav, kuna kasutajahaldus ja autentimine / autoriseerimine on jäänud praeguse seisuga realiseerimata ka teenuse API poolel. Ilmselgelt on näha, et töö jäi pooleli.&lt;br /&gt;
 &lt;br /&gt;
Angulari rakenduse kontrolleritega on veebikliendis tööle pandud neli vaadet: Exercises, Units, BodyParts, Routines. Neile pääseb ligi menüüribale lisatud linkide kaudu. Users vaade on ka olemas, aga ilma Angulari kontrollerita - andmeid ei laeta. Sellele vaatele pääseb ligi, kui lisada brauseri aadressiribal domeeni lõppu “/Users”. Tokenipõhise autentimise jaoks on tehtud ka MainAngular vaade (domeen/MainAngular), kuid see ei toimi.&lt;br /&gt;
 &lt;br /&gt;
Kõik olemasolevad vaated on sama ülesehitusega - kuvatakse nimekirja koos Edit ja Delete nuppudega. Filtreid andmete sorteerimiseks ei ole. Igal vaatel on olemas on ka Add New nupp. Andmete lisamiseks ja muutmiseks avaneb hüpikaken (modal), kuhu laetakse kõik objekti jaoks vajalikud input-väljad - ja seotud olemite puhul valiku tegemiseks ripploetelud. Objektide kustutamisel küsitakse kasutajalt kinnitust. Kõik pakutud funktsionaalsused paraku veel ei tööta. Probleeme on eeskätt teiste olemitega seotud olemite muutmise ja kustutamisega.&lt;br /&gt;
 &lt;br /&gt;
Funktsionaalsused vaadete kaupa:&lt;br /&gt;
*Units  - andmete kuvamine, lisamine, muutmine ja kustutamine töötavad&lt;br /&gt;
*Exercises - andmete kuvamine, lisamine ja kustutamine töötavad, ent muutmine töötab ainult osaliselt: kui muuta harjutuse mõõtühikut, siis veast ei teavitata, aga muudatus andmebaasi ei jõua (Fiddleriga otse teenuse API poole pöördudes lisandus andmebaasi uus kirje) &lt;br /&gt;
*BodyParts - andmete kuvamine, lisamine ja kustutamine töötavad, aga muutmine ei õnnestu (ka Fiddleriga otse teenuse API poole pöördudes). Kui üritada muuta kehaosa alla kuuluvate harjutuste nimekirja, siis tuleb vastuseks Http status 400 (Bad request!)&lt;br /&gt;
*Routines - andmete kuvamine ja lisamine töötavad, muutmine (ReferenceError: bodyPart is not defined) ja kustutamine ei õnnestu (Bad request)! &lt;br /&gt;
 &lt;br /&gt;
Vaadete puhul võib nuriseda selle üle, et iga kontrolleri kohta on tehtud ainult Index vaatefail, mis sisaldab endas nii põhiakna kui ka hüpikakende html-koodi. Need oleks võinud parema arusaadavuse huvides ju lahutada, isegi kui andmete laadimine toimub läbi sama kontrolleri. &lt;br /&gt;
 &lt;br /&gt;
Lähtekoodist ilmneb veel, et iga töötava vaate jaoks on tehtud eraldi moodul oma kontrolleriga, mis registreeritakse vastavas vaates. Keskne moodul failis app.js ei tööta, see on mõeldud tokenipõhise autentimise realiseerimiseks ja eeldab üheleherakendust (ruutimisinfo on ka samas). Kõiki autentimise töölesaamiseks vajalikke mooduleid ei ole samas projekti lisatud (authService, authInterceptorService).&lt;br /&gt;
 &lt;br /&gt;
Praeguse lahenduse üheks puuduseks on veel see, et kõik Http-päringud veebiteenusele tehakse otse Angulari kontrolleritest, puudub vahepealne service-kiht. Selle tagajärjel on päringud ja vaadete loogika koodis läbisegi. Hüpikaknas objektide muutmiseks ei pärita andmeid uuesti teenusest, vaid muudetakse juba varem põhiaknasse laetud andmeid. Lisaks on Angulari raamistiku kõrval kasutatud ka tavalisi jQuery võtteid, mis teeb üldpildi võrdlemisi kirjuks. Mõned funktsioonid ei tööta korrektselt ja nii on üsna keeruline aru saada, kus viga täpselt asub: kontrolleris või teenuse API poolel.&lt;br /&gt;
 &lt;br /&gt;
Kokkuvõttes võib tõdeda, et olemasolevate vaadetega on siiski vaeva nähtud ja suhtlus teenusega tööle saadud, mis selle aine puhul on ilmselt peamine. Mõned funktsionaalsused vajavad veel viimistlemist, projekti üldine ülesehitus korrastamist. MVC kontrolleritega autentimise tööle saamiseks tuleks olemasolevad kontrollerid siduda keskse app-mooduliga ning see omakorda jagatud Layout vaatega, millele tuleks ka lisada eraldi kontroller.&lt;br /&gt;
&lt;br /&gt;
JRT esitatud töö asub [https://wiki.itcollege.ee/index.php/JRT#J.C3.B5usaali_infos.C3.BCsteemi_anal.C3.BC.C3.BCs siin].&lt;/div&gt;</summary>
		<author><name>Otiks</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Team_SPOT&amp;diff=123574</id>
		<title>Team SPOT</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Team_SPOT&amp;diff=123574"/>
		<updated>2017-06-13T20:27:24Z</updated>

		<summary type="html">&lt;p&gt;Otiks: /* Retsensioonid */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://wiki.itcollege.ee/index.php/Kodut%C3%B6%C3%B6_aines_%22V%C3%B5rgurakendused_II:_hajuss%C3%BCsteemide_ehitamine%22_2017 Kodutöö aines &amp;quot;Võrgurakendused II: hajussüsteemide ehitamine&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
[https://projectspot.visualstudio.com/PROJECTSPOT Projekti repositoorium (avaneb ainult liikmetele)]&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==Liikmed==&lt;br /&gt;
*Sigrid Pachel&lt;br /&gt;
*Oliver Tiks&lt;br /&gt;
&lt;br /&gt;
==Idee==&lt;br /&gt;
Mõttes on luua spordiklubi(de) veebiteenus ja klientrakendus, mis võimaldaks saada infot pakutavate treeningute kohta, sisestada ja kuvada tunniplaani andmeid, registreerida osalejaid tundidesse ning teha muid asjakohaseid tegevusi nii klubi(de) personalil, liikmetel kui ka juhukasutajatel.&lt;br /&gt;
&lt;br /&gt;
==Veebiteenuse analüüs==&lt;br /&gt;
SPOTi veebiteenus võimaldab saada infot erinevate klubide treeningute kohta ja end neisse registreerida. Kasutaja saab teavet, kus ja millal treeningud toimuvad (tunniplaan), mida treeningus täpsemalt tehakse, mis stiiliga on tegemist, kes on treener, kui palju üks kord maksab jms info. Kasutajakontoga liikmel on võimalik end registreerida soovitud tundi ja hallata oma registreeringuid (muuta, tühistada).&lt;br /&gt;
&lt;br /&gt;
Spordiklubide infot haldavad süsteemi administraatorid, kes saavad lisada, muuta ja kustutada kõike sprodiklubiga seonduvat. Erinevaid treeninguid ja nendega seotud konkreetset infot saavad lisada ja hallata treenerid või spordiklubi esindajad.&lt;br /&gt;
&lt;br /&gt;
Projekti realiseerimiseks kasutame REST arhitektuuri ja ASP.NET MVC Web API tehnoloogiat.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Üldine plaan:&#039;&#039;&#039;&lt;br /&gt;
* esialgu üks kett (laienemise võimalusega)&lt;br /&gt;
* mitu klubi (asukoht, saalid-treeningualad, võimalikud lisatingimused)&lt;br /&gt;
* treeningute info (stiilid ehk kontseptid, litsentsid, …)&lt;br /&gt;
* tunniplaan (aeg, koht, instruktorid, max osalejate arv, ühe korra hind)&lt;br /&gt;
* registratuur (treeningutest osavõtjad)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kasutajad (rollid):&#039;&#039;&#039;&lt;br /&gt;
* administraatorid (saavad teha muudatusi)&lt;br /&gt;
* treenerid (info kvalifikatsiooni, litsentside kohta, õigus treeninguid lisada) &lt;br /&gt;
* liikmed (saavad treeningutele registreeruda)&lt;br /&gt;
* ülejäänud (näevad klubide ja treeningute infot ning tunniplaani)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Peaks olema:&#039;&#039;&#039;&lt;br /&gt;
* kasutajate loomine&lt;br /&gt;
* kasutajate tuvastamine ja haldamine&lt;br /&gt;
* kasutajate ja kasutusstatistika logimine&lt;br /&gt;
* teenuse poole pöördumiste arvu piiramine ja piirangute haldamine&lt;br /&gt;
* klubide, treenerite ja treeningute info väljastamine&lt;br /&gt;
* tunniplaani info väljastamine&lt;br /&gt;
* treeningutesse registreerimine&lt;br /&gt;
* registreeringu tühistamine&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Võiks olla:&#039;&#039;&#039;&lt;br /&gt;
* klubide, treenerite, treeningute lisamine ja muutmine&lt;br /&gt;
* tunniplaanis treeningute tühistamine&lt;br /&gt;
* sisestatud andmete kustutamine (pehmelt)&lt;br /&gt;
* rollide-õiguste määramine (admin)&lt;br /&gt;
* asukohad mitmes riigis&lt;br /&gt;
* kliendipaketid, arveldus&lt;br /&gt;
* kontaktide tsentraliseeritud haldus&lt;br /&gt;
* sisselogimine läbi Google’i, Facebooki vmt teenuse&lt;br /&gt;
&lt;br /&gt;
===Andmebaasi skeem (lihtsustatud)===&lt;br /&gt;
&lt;br /&gt;
[[File:SPOTService ERD.JPG|border|SPOT Service ERD]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Märkus: olemite atribuutidest on välja toodud ainult peamised.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====Tabelite kirjeldused====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kasutajahaldus*:&#039;&#039;&#039;&lt;br /&gt;
* User - kasutajate andmed&lt;br /&gt;
* Role - rollid, millega määratakse kasutajate õigused (&amp;quot;Admin&amp;quot;, &amp;quot;Trainer&amp;quot;, ...)&lt;br /&gt;
* UserRole - kasutajate sidumine rolli(de)ga&lt;br /&gt;
* UserLogin - muu teenuse kaudu sisselogimiseks&lt;br /&gt;
* UserClaim - muu teenuse kaudu sisselogimiseks&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;&#039;&#039;Kasutajahalduse süsteem toetub Asp.Net Identity valmislahendusele, mida on täiendanud A. Käver.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Klubid:&#039;&#039;&#039;&lt;br /&gt;
* Chain (optional) - spordiklubikettide info&lt;br /&gt;
* Location - spordiklubi/-rajatise asukoht linna/asula täpsusega&lt;br /&gt;
* Facility - spordiklubi/-rajatise andmed, seotud asukohaga ja vajadusel ketiga.&lt;br /&gt;
* Venue - spordiklubis/-rajatises kasutatavad saalid ja muud treeningualad&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Treeningud:&#039;&#039;&#039;&lt;br /&gt;
* Concept (Style) - treeningustiilid ehk kontseptid&lt;br /&gt;
* Licenser (optional) - treeninguliikide litsentsid (kui on)&lt;br /&gt;
* Training - treeninguliikide andmed, seotud stiili ja vajadusel litsentsiga&lt;br /&gt;
* Trainer (User (role: Trainer) + Training) - treeninguliikide sidumine treeneritega&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tunniplaan:&#039;&#039;&#039;&lt;br /&gt;
* ScheduleItem - treeningud tunniplaanis&lt;br /&gt;
* Instructor (User (role: Trainer) + ScheduleItem) - tundide juhendajad (võib olla mitu)&lt;br /&gt;
* Registration (ScheduleItem + User (role: any)) - tundidesse tehtud registreeringud&lt;br /&gt;
&lt;br /&gt;
== XML / XSD / XSLT==&lt;br /&gt;
Projekti esimeses etapis sai loodud XML andmefail, mille ülesehitus on paika pandud XSD skeemifailis. Lisaks on olemas kaks stiilifaili: esimene neist transformeerib andmed HTML-kujule, et kuvada infot  veebilehel, teine tekitab samade andmete esitamiseks uue struktuuriga XML faili.&lt;br /&gt;
&lt;br /&gt;
[https://drive.google.com/open?id=0B84njRSbVLUtd0U4aEJXOUhOTG8 Lae failid alla.] &lt;br /&gt;
&lt;br /&gt;
=== XML ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Fail sisaldab andmeid ühes spordiklubis pakutavate treeningute kohta. Andmed on esitatud treeninguliikide kaupa, mille juurde on lisatud ka vastava treeninguliigi tunniplaan. Treeninguliikidel on nimi ja kirjeldus ning vajadusel ära märgitud ka litsents. Failis on eraldi välja toodud treeningustiilid, instruktorid ja ruumid, kus treeningud toimuvad. Iga treeninguliik kuulub ühe või mitme stiili alla. Instruktoritel on tagasiside põhjal saadud hinne. Treeninguruumidel on vaikimisi määratud mahutavus. Tunniplaanis on ära toodud treeningu koht, algusaeg ja kestus ning instruktorid. Vajadusel saab eraldi määrata ka treeningurühma suuruse, kui see erineb tavalisest ruumi mahutavusest. Ka on võimalik treeningutunnile lisada kommentaar. Erinevate elementide andmed on omavahel seotud id-atribuutidega.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;?xml-stylesheet type=&amp;quot;text/xsl&amp;quot; href=&amp;quot;trainingsToHtml.xslt&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Trainings&amp;gt;&lt;br /&gt;
  &amp;lt;Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;![CDATA[Cardio]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
  &amp;lt;/Styles&amp;gt;&lt;br /&gt;
  &amp;lt;Instructors&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;1&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Yogafier]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;2&amp;quot; Rating=&amp;quot;4.7&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Mickey Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;3&amp;quot; Rating=&amp;quot;4.6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;4&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Donald Duck]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;5&amp;quot; Rating=&amp;quot;3.9&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Goofy]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;6&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Schwarzenegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;8&amp;quot; Rating=&amp;quot;4.8&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Kayla Weightlifter]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;9&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Margaret Strengthener]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
  &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;Venues&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;1&amp;quot; GroupSize=&amp;quot;45&amp;quot;&amp;gt;&amp;lt;![CDATA[Main Hall]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 2]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;3&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 3]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;4&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 4]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;5&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 5]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&amp;lt;![CDATA[Area 6]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;7&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&amp;lt;![CDATA[Yoga Hall]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
  &amp;lt;/Venues&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Yoga]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[Yoga is a group of physical, mental, and spiritual practices or disciplines which originated in ancient India. ]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;1&amp;quot; VenueId=&amp;quot;7&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-25T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;14&amp;quot; VenueId=&amp;quot;7&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT1H20M&amp;quot;&amp;gt;2017-03-28T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Comment&amp;gt;&lt;br /&gt;
          &amp;lt;![CDATA[Special class!]]&amp;gt;&lt;br /&gt;
        &amp;lt;/Comment&amp;gt; &lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/Nvlxn0EnmbM&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;  &lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;2&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyBalance™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[BODYBALANCE™ is the Yoga, Tai Chi, Pilates workout that builds flexibility and strength and leaves you feeling centered and calm. Based on a carefully structured series of stretches, moves and poses to music it creates a holistic workout that brings the body into a state of harmony and balance. This class will heighten your flexibility and inner strength creating a strong supple body from the inside out. Burn on average 390cals per hour.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;2&amp;quot; VenueId=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-31T12:15:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;3&amp;quot; VenueId=&amp;quot;2&amp;quot; &amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-30T13:30:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;3&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/jJxA6vBjUqY&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;3&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyJam™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;4&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[The Body Jam program is an addictive fusion of the latest dance styles to the hottest new sounds. This class isn’t just for dancers, it’s for everyone because the emphasis is put on not only having fun but also breaking a sweat. So grab a friend, get front and centre … you bring the attitude and we’ll bring the moves!]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;4&amp;quot;  VenueId=&amp;quot;3&amp;quot; &amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T16:10:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;4&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;5&amp;quot; VenueId=&amp;quot;5&amp;quot; &amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT45M&amp;quot;&amp;gt;2017-04-01T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;5&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/8PTXyg9si_4&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;4&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyPump™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[BodyPump classes are 59 minutes long and contain eight separate muscle-group specific songs or &amp;quot;tracks&amp;quot; along with an opening warm up track and closing cool-down track. There are also 45-minute and 30-minute class formats. The classes are performed to music using free weights-plates, barbells and an aerobic step. Participants choose their weights based on the exercise and their personal goals. Major muscle groups are worked via series of compound and isolation-based exercises including squats, presses, dead lifts. The focus is towards muscle endurance by moving light weights at high repetitions, what Les Mills calls the Rep Effect.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;3&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;6&amp;quot; VenueId=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;6&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;7&amp;quot; VenueId=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-23T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;6&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/zU_0XrdO3wo&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[CoreStrenght is a very hard workout! Not for beginners.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;3&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;8&amp;quot; VenueId=&amp;quot;6&amp;quot; GroupSize=&amp;quot;10&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT2H&amp;quot;&amp;gt;2017-03-23T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;9&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Comment&amp;gt;&lt;br /&gt;
          &amp;lt;![CDATA[Special challenge!]]&amp;gt;&lt;br /&gt;
        &amp;lt;/Comment&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;9&amp;quot; VenueId=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;8&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;10&amp;quot; VenueId=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-04-05T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;8&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;9&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/ZxTVmpvyUt8&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[Zumba involves dance and aerobic movements performed to energetic music. The choreography incorporates hip-hop, soca, samba, salsa, merengue and mambo. Squats and lunges are also included.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;4&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;11&amp;quot; VenueId=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT55M&amp;quot;&amp;gt;2017-03-26T15:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;12&amp;quot; VenueId=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-28T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;13&amp;quot; VenueId=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/-ZB6XIkfxnQ&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
&amp;lt;/Trainings&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSD ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Skeemifail kontrollib eelnevas andmefailis esitatud andmete vastavust kokkulepitud formaadile, samuti õigete andmetüüpide kasutamist. Alamelemendi id-atribuudi väärtus peab olema iga elemendirühma lõikes unikaalne. Kohustuslike elementide ja atribuutide kõrval on ka mõned (nt kommentaar), mille olemasolu pole alati tarvilik. Teatud puhkudel on piiratud maksimaalset elementide arvu (nt treeningutunni algusaeg). Faili üldine struktuur on kindel, aga alati pole alamelementide järjekord oluline (nt treeninguliigi puhul).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xs:schema attributeFormDefault=&amp;quot;unqualified&amp;quot; elementFormDefault=&amp;quot;qualified&amp;quot; xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xs:element name=&amp;quot;Trainings&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Styles&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Style&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
          &amp;lt;xs:unique name=&amp;quot;UniqueStyleId&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xs:selector xpath=&amp;quot;Style&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Instructors&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;Name&amp;quot; type=&amp;quot;xs:string&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:attribute name=&amp;quot;Rating&amp;quot; type=&amp;quot;xs:decimal&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
          &amp;lt;xs:unique name=&amp;quot;UniqueInstructorId&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xs:selector xpath=&amp;quot;Instructor&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Venues&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Venue&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:attribute name=&amp;quot;GroupSize&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
          &amp;lt;xs:unique name=&amp;quot;UniqueVenueId&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xs:selector xpath=&amp;quot;Venue&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Training&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:all&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Description&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Styles&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Style&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Schedule&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;ScheduleItem&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:all&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element  maxOccurs=&amp;quot;1&amp;quot; name=&amp;quot;Time&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:extension base=&amp;quot;xs:dateTime&amp;quot;&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:attribute name=&amp;quot;Duration&amp;quot; type=&amp;quot;xs:duration&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element name=&amp;quot;Instructors&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                    &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                                      &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                                        &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                                      &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                                    &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                                  &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; name=&amp;quot;Comment&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:all&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;VenueId&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;GroupSize&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;optional&amp;quot; /&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;VideoUrl&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:all&amp;gt;&lt;br /&gt;
            &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xs:attribute name=&amp;quot;Licence&amp;quot; type=&amp;quot;xs:string&amp;quot; use=&amp;quot;optional&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
    &amp;lt;xs:unique name=&amp;quot;UniqueTrainingId&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xs:selector xpath=&amp;quot;Training&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
    &amp;lt;xs:unique name=&amp;quot;UniqueScheduleItemId&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xs:selector xpath=&amp;quot;Training/Schedule/ScheduleItem&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSLT (html) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Selles transformatsioonifailis on kirjeldatud XML failis olevate andmete [http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/trainings.xml  kuvamise viis veebilehel]. Treeninguliigid on jaotatud stiiliblokkidesse (mõni treening kuulub mitme stiili alla). Iga treeninguliigi all on tabeli kujul esitatud tunniplaan ning lisatud näidisvideo ja kirjeldus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot; xmlns:msxsl=&amp;quot;urn:schemas-microsoft-com:xslt&amp;quot; exclude-result-prefixes=&amp;quot;msxsl&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:output method=&amp;quot;html&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;html&amp;gt;&lt;br /&gt;
      &amp;lt;head&amp;gt;&lt;br /&gt;
        &amp;lt;title&amp;gt;SuperSportsClub - Trainings&amp;lt;/title&amp;gt;&lt;br /&gt;
        &amp;lt;style&amp;gt;&lt;br /&gt;
          body {&lt;br /&gt;
          background:BurlyWood;&lt;br /&gt;
          text-align: center;&lt;br /&gt;
          }&lt;br /&gt;
          .section {&lt;br /&gt;
          text-align:left;&lt;br /&gt;
          width:1000px;&lt;br /&gt;
          padding:20px;&lt;br /&gt;
          background:Chocolate;&lt;br /&gt;
          margin: auto;&lt;br /&gt;
          }&lt;br /&gt;
          table, th, td, .section {&lt;br /&gt;
          border: 1px solid black;&lt;br /&gt;
          }&lt;br /&gt;
          th {&lt;br /&gt;
          text-align:left;&lt;br /&gt;
          padding-left: 10px;&lt;br /&gt;
          padding-right: 10px;&lt;br /&gt;
          }&lt;br /&gt;
          td {&lt;br /&gt;
          text-align:center;&lt;br /&gt;
          }&lt;br /&gt;
          p {&lt;br /&gt;
          text-align:justify;&lt;br /&gt;
          }&lt;br /&gt;
          .description {&lt;br /&gt;
          vertical-align:top; &lt;br /&gt;
          padding:10px;&lt;br /&gt;
          }&lt;br /&gt;
        &amp;lt;/style&amp;gt;&lt;br /&gt;
      &amp;lt;/head&amp;gt;&lt;br /&gt;
      &amp;lt;body&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;Trainings at SuperSportsClub&amp;lt;/h1&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;/Trainings/Styles/Style&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:sort select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:variable select=&amp;quot;.&amp;quot; name=&amp;quot;SelectedStyle&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;section&amp;quot; &amp;gt;&lt;br /&gt;
            &amp;lt;h2&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select=&amp;quot;$SelectedStyle&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/h2&amp;gt;&lt;br /&gt;
            &amp;lt;ul&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:for-each select=&amp;quot;/Trainings/Training&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:sort select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:variable name=&amp;quot;Training&amp;quot; select=&amp;quot;.&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:if test=&amp;quot;Styles/Style/@Id = $SelectedStyle/@Id&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;&lt;br /&gt;
                    &amp;lt;h3&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;$Training/Name&amp;quot; /&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:if test=&amp;quot;$Training/@Licence&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:text&amp;gt; (&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:value-of select=&amp;quot;$Training/@Licence&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:text&amp;gt;)&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
                    &amp;lt;/h3&amp;gt;&lt;br /&gt;
                    &amp;lt;table&amp;gt;&lt;br /&gt;
                      &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                      &amp;lt;/tr&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:for-each select=&amp;quot;$Training/Schedule/ScheduleItem&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:sort select=&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:variable name=&amp;quot;StartTime&amp;quot; select=&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:variable name=&amp;quot;Duration&amp;quot; select=&amp;quot;$StartTime/@Duration&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;tr&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;150&amp;quot; &amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;concat(&lt;br /&gt;
                                            substring($StartTime, 9, 2), &lt;br /&gt;
                                            &#039;.&#039;, &lt;br /&gt;
                                            substring($StartTime, 6, 2), &lt;br /&gt;
                                            &#039;.&#039;, &lt;br /&gt;
                                            substring($StartTime, 1, 4),&lt;br /&gt;
                                            &#039; &#039;,&lt;br /&gt;
                                            substring($StartTime, 12, 2),&lt;br /&gt;
                                            &#039;:&#039;,&lt;br /&gt;
                                            substring($StartTime, 15, 2))&lt;br /&gt;
                                            &amp;quot; /&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:if test=&amp;quot;Comment&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;br/&amp;gt;&lt;br /&gt;
                              &amp;lt;div style=&amp;quot;color:Green&amp;quot;&amp;gt;&lt;br /&gt;
                                &amp;lt;xsl:value-of select=&amp;quot;Comment&amp;quot;/&amp;gt;&lt;br /&gt;
                              &amp;lt;/div&amp;gt;&lt;br /&gt;
                            &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;substring($Duration, 3, 6)&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:variable name=&amp;quot;VenueId&amp;quot; select=&amp;quot;@VenueId&amp;quot;/&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;/Trainings/Venues/Venue[@Id=$VenueId]&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:for-each select=&amp;quot;Instructors/Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:variable name=&amp;quot;InstructorId&amp;quot; select=&amp;quot;@Id&amp;quot;&amp;gt;&amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:variable name=&amp;quot;SelectedInstructor&amp;quot; select=&amp;quot;/Trainings/Instructors/Instructor[@Id=$InstructorId]&amp;quot; /&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/Name&amp;quot;/&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:text&amp;gt; (&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/@Rating&amp;quot; /&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:text&amp;gt;)&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                              &amp;lt;br/&amp;gt;&lt;br /&gt;
                            &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;/tr&amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
                    &amp;lt;/table&amp;gt;&lt;br /&gt;
                    &amp;lt;br/&amp;gt;&lt;br /&gt;
                    &amp;lt;table&amp;gt;&lt;br /&gt;
                      &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                          &amp;lt;xsl:variable name=&amp;quot;VideoUrl&amp;quot; select=&amp;quot;$Training/VideoUrl&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;{$VideoUrl}&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                          &amp;lt;p&amp;gt;&lt;br /&gt;
                            &amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&lt;br /&gt;
                          &amp;lt;/p&amp;gt;&lt;br /&gt;
                          &amp;lt;p&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;$Training/Description&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                      &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;/table&amp;gt;&lt;br /&gt;
                  &amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
            &amp;lt;/ul&amp;gt;&lt;br /&gt;
          &amp;lt;/div&amp;gt;&lt;br /&gt;
          &amp;lt;br/&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
      &amp;lt;/body&amp;gt;&lt;br /&gt;
    &amp;lt;/html&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== HTML (transformeeritud) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/trainings.html Vaata eelneva transformatsiooni tulemust.]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;META http-equiv=&amp;quot;Content-Type&amp;quot; content=&amp;quot;text/html; charset=utf-8&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;SuperSportsClub - Trainings&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;style&amp;gt;&lt;br /&gt;
        body {&lt;br /&gt;
            background: BurlyWood;&lt;br /&gt;
            text-align: center;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        .section {&lt;br /&gt;
            text-align: left;&lt;br /&gt;
            width: 1000px;&lt;br /&gt;
            padding: 20px;&lt;br /&gt;
            background: Chocolate;&lt;br /&gt;
            margin: auto;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        table, th, td, .section {&lt;br /&gt;
            border: 1px solid black;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        th {&lt;br /&gt;
            text-align: left;&lt;br /&gt;
            padding-left: 10px;&lt;br /&gt;
            padding-right: 10px;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        td {&lt;br /&gt;
            text-align: center;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        p {&lt;br /&gt;
            text-align: justify;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        .description {&lt;br /&gt;
            vertical-align: top;&lt;br /&gt;
            padding: 10px;&lt;br /&gt;
        }&lt;br /&gt;
    &amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
    &amp;lt;h1&amp;gt;Trainings at SuperSportsClub&amp;lt;/h1&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Body&amp;amp;amp;Mind&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyBalance™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 13:30&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;1H15M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 2&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Minnie Mouse (4.6)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;31.03.2017 12:15&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;1H15M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 3&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Mickey Mouse (4.7)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/jJxA6vBjUqY&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                BODYBALANCE™ is the Yoga, Tai Chi, Pilates workout that builds flexibility and strength and leaves you feeling centered and calm. Based on a carefully structured series of stretches, moves and poses to music it creates a holistic workout that brings the body into a state of harmony and balance. This class will heighten your flexibility and inner strength creating a strong supple body from the inside out. Burn on average 390cals per hour.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;Yoga&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;25.03.2017 14:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Yoga Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Minnie Yogafier (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
                            28.03.2017 14:00&amp;lt;br&amp;gt;&amp;lt;div style=&amp;quot;color:Green&amp;quot;&amp;gt;&lt;br /&gt;
                                Special class!&lt;br /&gt;
                            &amp;lt;/div&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;1H20M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Yoga Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Minnie Yogafier (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/Nvlxn0EnmbM&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                Yoga is a group of physical, mental, and spiritual practices or disciplines which originated in ancient India.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Cardio&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyJam™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 16:10&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 3&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Donald Duck (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;01.04.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;45M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 5&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Goofy (3.9)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/8PTXyg9si_4&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                The Body Jam program is an addictive fusion of the latest dance styles to the hottest new sounds. This class isn’t just for dancers, it’s for everyone because the emphasis is put on not only having fun but also breaking a sweat. So grab a friend, get front and centre … you bring the attitude and we’ll bring the moves!&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Dance&amp;amp;amp;Fun&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyJam™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 16:10&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 3&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Donald Duck (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;01.04.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;45M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 5&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Goofy (3.9)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/8PTXyg9si_4&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                The Body Jam program is an addictive fusion of the latest dance styles to the hottest new sounds. This class isn’t just for dancers, it’s for everyone because the emphasis is put on not only having fun but also breaking a sweat. So grab a friend, get front and centre … you bring the attitude and we’ll bring the moves!&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;Zumba®&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;26.03.2017 15:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;55M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 2&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Zumbaschnegger (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;28.03.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 4&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Zumbaschnegger (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 2&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Zumbaschnegger (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/-ZB6XIkfxnQ&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                Zumba involves dance and aerobic movements performed to energetic music. The choreography incorporates hip-hop, soca, samba, salsa, merengue and mambo. Squats and lunges are also included.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Strength&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyPump™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;23.03.2017 13:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Main Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Schwarzenegger (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 13:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Main Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Schwarzenegger (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/zU_0XrdO3wo&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                BodyPump classes are 59 minutes long and contain eight separate muscle-group specific songs or &amp;quot;tracks&amp;quot; along with an opening warm up track and closing cool-down track. There are also 45-minute and 30-minute class formats. The classes are performed to music using free weights-plates, barbells and an aerobic step. Participants choose their weights based on the exercise and their personal goals. Major muscle groups are worked via series of compound and isolation-based exercises including squats, presses, dead lifts. The focus is towards muscle endurance by moving light weights at high repetitions, what Les Mills calls the Rep Effect.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;CoreStrength&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
                            23.03.2017 12:00&amp;lt;br&amp;gt;&amp;lt;div style=&amp;quot;color:Green&amp;quot;&amp;gt;&lt;br /&gt;
                                Special challenge!&lt;br /&gt;
                            &amp;lt;/div&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;2H&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Area 6&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Margaret Strengthener (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Area 6&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Kayla Weightlifter (4.8)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;05.04.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Area 6&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Kayla Weightlifter (4.8)&amp;lt;br&amp;gt;Margaret Strengthener (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/ZxTVmpvyUt8&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                CoreStrenght is a very hard workout! Not for beginners.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSLT (xml) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Selle transformatsiooniga luuakse uus [http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/schedule.xml XML fail], milles on treeningute andmed esitatud ühtse tunniplaani kujul. Algses failis erinevate elementide alla paigutatud andmed on nüüd tunniplaani alamelemendis kokku viidud. Sidumine on teostatud id-atribuutide abil. Tunniplaanis on ühes kohas kirjas treeningu nimi, stiil(id), koht, algusaeg, kestus, rühma suurus, instruktorid ja muu täiendav info.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&lt;br /&gt;
    xmlns:msxsl=&amp;quot;urn:schemas-microsoft-com:xslt&amp;quot; exclude-result-prefixes=&amp;quot;msxsl&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:output method=&amp;quot;xml&amp;quot; indent=&amp;quot;yes&amp;quot; cdata-section-elements=&amp;quot;Name Style Comment&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;/Trainings/Training&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:sort select=&amp;quot;Name&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:variable name=&amp;quot;SelectedTraining&amp;quot; select=&amp;quot;.&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;Schedule/ScheduleItem&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:sort select=&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;ScheduleItem&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:variable name=&amp;quot;VenueId&amp;quot; select=&amp;quot;@VenueId&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:variable name=&amp;quot;SelectedVenue&amp;quot; select=&amp;quot;/Trainings/Venues/Venue[@Id=$VenueId]&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:attribute name=&amp;quot;GroupSize&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;@GroupSize&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:value-of select=&amp;quot;@GroupSize&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:value-of select=&amp;quot;$SelectedVenue/@GroupSize&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
            &amp;lt;Venue&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$VenueId&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select=&amp;quot;$SelectedVenue&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/Venue&amp;gt;&lt;br /&gt;
            &amp;lt;Training&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$SelectedTraining/@Id&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:if test=&amp;quot;$SelectedTraining/@Licence&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:attribute name=&amp;quot;Licence&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:value-of select=&amp;quot;$SelectedTraining/@Licence&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
              &amp;lt;Name&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$SelectedTraining/Name&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/Name&amp;gt;&lt;br /&gt;
              &amp;lt;Styles&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:for-each select=&amp;quot;$SelectedTraining/Styles/Style&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:variable name=&amp;quot;StyleId&amp;quot; select=&amp;quot;@Id&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;Style&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:attribute name=&amp;quot;StyleId&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;$StyleId&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;/Trainings/Styles/Style[@Id=$StyleId]&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/Style&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
              &amp;lt;/Styles&amp;gt;&lt;br /&gt;
            &amp;lt;/Training&amp;gt;&lt;br /&gt;
            &amp;lt;Time&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:attribute name=&amp;quot;Duration&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;Time/@Duration&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select =&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/Time&amp;gt;&lt;br /&gt;
            &amp;lt;Instructors&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:for-each select=&amp;quot;Instructors/Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:variable name=&amp;quot;InstructorId&amp;quot; select=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:variable name=&amp;quot;SelectedInstructor&amp;quot; select=&amp;quot;/Trainings/Instructors/Instructor[@Id=$InstructorId]&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;Instructor&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;$InstructorId&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:attribute name=&amp;quot;Rating&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/@Rating&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                  &amp;lt;Name&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/Name&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/Name&amp;gt;&lt;br /&gt;
                &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
            &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:if test=&amp;quot;Comment&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;Comment&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;Comment&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/Comment&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
          &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XML (transformeeritud) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/schedule.xml Vaata eelneva transformatsiooni tulemust.]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Schedule&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;3&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot;&amp;gt;Hall 2&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;2&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyBalance™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-30T13:30:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;3&amp;quot; Rating=&amp;quot;4.6&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;2&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;3&amp;quot;&amp;gt;Hall 3&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;2&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyBalance™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-31T12:15:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;2&amp;quot; Rating=&amp;quot;4.7&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Mickey Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;4&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;3&amp;quot;&amp;gt;Hall 3&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;3&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyJam™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;![CDATA[Cardio]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T16:10:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;4&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Donald Duck]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;5&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;5&amp;quot;&amp;gt;Hall 5&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;3&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyJam™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;![CDATA[Cardio]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT45M&amp;quot;&amp;gt;2017-04-01T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;5&amp;quot; Rating=&amp;quot;3.9&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Goofy]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;7&amp;quot; GroupSize=&amp;quot;45&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;1&amp;quot;&amp;gt;Main Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;4&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyPump™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-23T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;6&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Schwarzenegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;6&amp;quot; GroupSize=&amp;quot;45&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;1&amp;quot;&amp;gt;Main Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;4&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyPump™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;6&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Schwarzenegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;8&amp;quot; GroupSize=&amp;quot;10&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot;&amp;gt;Area 6&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT2H&amp;quot;&amp;gt;2017-03-23T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;9&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Margaret Strengthener]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
    &amp;lt;Comment&amp;gt;&amp;lt;![CDATA[&lt;br /&gt;
          Special challenge!&lt;br /&gt;
        ]]&amp;gt;&amp;lt;/Comment&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;9&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot;&amp;gt;Area 6&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;8&amp;quot; Rating=&amp;quot;4.8&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Kayla Weightlifter]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;10&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot;&amp;gt;Area 6&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-04-05T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;8&amp;quot; Rating=&amp;quot;4.8&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Kayla Weightlifter]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;9&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Margaret Strengthener]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;11&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot;&amp;gt;Hall 2&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT55M&amp;quot;&amp;gt;2017-03-26T15:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;12&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;4&amp;quot;&amp;gt;Hall 4&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-28T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;13&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot;&amp;gt;Hall 2&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;1&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;7&amp;quot;&amp;gt;Yoga Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Yoga]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-25T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;1&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Yogafier]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;14&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;7&amp;quot;&amp;gt;Yoga Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Yoga]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT1H20M&amp;quot;&amp;gt;2017-03-28T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;1&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Yogafier]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
    &amp;lt;Comment&amp;gt;&amp;lt;![CDATA[&lt;br /&gt;
          Special class!&lt;br /&gt;
        ]]&amp;gt;&amp;lt;/Comment&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
&amp;lt;/Schedule&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus ==&lt;br /&gt;
Angular JS &#039;&#039;single page application&#039;&#039; eelnevalt kirjeldatud veebiteenusele. Sisse logimata saab kuvada spordiklubi tunniplaani nädalate kaupa, treeninguliike stiilide kaupa ja treenereid. Võimalik on liituda teenusega ja registreeruda treeningutele, samuti registreeringuid tühistada nii otse tunniplaanist kui ka registreeringute lehel. Esialgu põhineb süsteem ühel spordiklubil. Kasutamise eelduseks on tunniplaani olemasolu andmebaasis.&lt;br /&gt;
&lt;br /&gt;
Autentimine on lahendatud tokenipõhiselt. Eeskuju ja põhjana kasutasime näidisrakendust, mille juhend ja lähtekood on leitav [http://bitoftech.net/2014/06/09/angularjs-token-authentication-using-asp-net-web-api-2-owin-asp-net-identity/ siit].&lt;br /&gt;
&lt;br /&gt;
== Lähtekood ==&lt;br /&gt;
Eksamiks valminud veebiteenuse ja klientrakenduse kokkupakitult allalaadimiseks klõpsa [https://drive.google.com/open?id=0B84njRSbVLUtTWx5ZkZsdDBJZDQ sellel lingil]. WebApi ja Angular JS klient on eraldi lahendustes. Kliendi testimiseks brauseris (Chrome, Firefox vm) tuleb eelnevalt käivitada ka veebiteenus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;NB! Võib juhtuda, et WebApi esmakordsel käivitamisel loodavasse andmebaasi kõiki andmeid (tunniplaani ja registreerimisi jooksvasse nädalasse) ei lisandu. Sellisel juhul kustuta tekkinud andmebaas ja käivita kõigepealt samas lahenduses olev konsoolirakendus.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Retsensioonid ==&lt;br /&gt;
&lt;br /&gt;
# [https://wiki.itcollege.ee/index.php/Talk:JRT#Hinnang_meeskonna_JRT_esitatud_XML-failidele JRT meeskonna XML/XSD/XSLT retsensioon ]&lt;br /&gt;
# [https://wiki.itcollege.ee/index.php/Talk:JRT#Hinnang_meeskonna_JRT_esitatud_veebiteenusele JRT meeskonna veebiteenuse retsensioon ]&lt;br /&gt;
# [https://wiki.itcollege.ee/index.php/Talk:JRT#Hinnang_meeskonna_JRT_esitatud_klientrakendusele JRT meeskonna klientrakenduse retsensioon ]&lt;br /&gt;
&lt;br /&gt;
== Log ==&lt;br /&gt;
* 03.03.17 Esimene kohtumine. Idee.&lt;br /&gt;
* 17.03.17 Osa XMList valmis, osa XSLT-st valmis.&lt;br /&gt;
* 18.03.17 Teine kohtumine. XMLi täiendamine, esimene ülekäimine XSD-s.&lt;br /&gt;
* 19.03.17 XML/XSLT/XSD täiendamine ja lõpetamine.&lt;br /&gt;
* 20.03.17 XML fail, skeemifail ja stiilifailid esitatud. Projekti esimese etapi lõpp. Kevade algus.&lt;br /&gt;
* 26.03.17 XML/XSLT/XSD retsensioon esitatud.&lt;br /&gt;
* 16.04.17 Veebiteenuse analüüsi koostamine.&lt;br /&gt;
* 17.04.17 Esialgne veebiteenuse analüüs ja kavand valmis.&lt;br /&gt;
* 19.04.17 Alustasime veebiteenusega, koostegemine: Domain, DAL, Interfaces, Repostitories. Testimine konsoolis.&lt;br /&gt;
* 24.04.17 Veebiteenuse koostegemine, 2. kord: Domaini täiendamine.&lt;br /&gt;
* 29.04.17 Veebiteenuse koostegemine, 3. kord: Interfaces, Repositories, Factory + UOW. Testimine konsoolis.&lt;br /&gt;
* 01.05.17 Andmebaasi täitmine testandmetega varasemas faasis loodud XML failist.&lt;br /&gt;
* 02.05.17 Veebiteenuse koostegemine, 4. kord: alustasime BLi ja WebApi ehitamist. GET päringud.&lt;br /&gt;
* 09.05.17 Veebiteenuse koostegemine, 5. kord: lisasime Identity.&lt;br /&gt;
* 11.05.17 Veebiteenuse koostegemine, 6. kord: WebApi arendamine. POST, PUT ja DELETE päringud.&lt;br /&gt;
* 15.05.17 Veebiteenuse koostegemine, 7. kord: WebApi arendamine. Lisasime  api kontrollereid.&lt;br /&gt;
* 16.05.17 Veebiteenuse koostegemine, 8. kord: WebApi arendamine. Identity kontroll Fiddleri ja Postmaniga.&lt;br /&gt;
* 20.05.17 Klientrakenduse koostegemine, 1. kord. Testklient.&lt;br /&gt;
* 25.05.17 Klientrakenduse koostegemine, 2. kord. Klientrakenduse arendamine.&lt;br /&gt;
* 01.06.17 Klientrakenduse koostegemine, 3. kord. Klientrakenduse arendamine. Angular JS.&lt;br /&gt;
* 03.06.17 - 11.06.17 Klientrakenduse arendamine. Tokenipõhine autentimine. Veebiteenuse viimistlemine.&lt;br /&gt;
* 11.06.17 Lõpptähtaeg. Projekti esitlemine eksamil.&lt;br /&gt;
* 12.06.17 Teiste lahenduste retsenseerimine.&lt;/div&gt;</summary>
		<author><name>Otiks</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Team_SPOT&amp;diff=123573</id>
		<title>Team SPOT</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Team_SPOT&amp;diff=123573"/>
		<updated>2017-06-13T20:26:53Z</updated>

		<summary type="html">&lt;p&gt;Otiks: /* Retsensioonid */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://wiki.itcollege.ee/index.php/Kodut%C3%B6%C3%B6_aines_%22V%C3%B5rgurakendused_II:_hajuss%C3%BCsteemide_ehitamine%22_2017 Kodutöö aines &amp;quot;Võrgurakendused II: hajussüsteemide ehitamine&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
[https://projectspot.visualstudio.com/PROJECTSPOT Projekti repositoorium (avaneb ainult liikmetele)]&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==Liikmed==&lt;br /&gt;
*Sigrid Pachel&lt;br /&gt;
*Oliver Tiks&lt;br /&gt;
&lt;br /&gt;
==Idee==&lt;br /&gt;
Mõttes on luua spordiklubi(de) veebiteenus ja klientrakendus, mis võimaldaks saada infot pakutavate treeningute kohta, sisestada ja kuvada tunniplaani andmeid, registreerida osalejaid tundidesse ning teha muid asjakohaseid tegevusi nii klubi(de) personalil, liikmetel kui ka juhukasutajatel.&lt;br /&gt;
&lt;br /&gt;
==Veebiteenuse analüüs==&lt;br /&gt;
SPOTi veebiteenus võimaldab saada infot erinevate klubide treeningute kohta ja end neisse registreerida. Kasutaja saab teavet, kus ja millal treeningud toimuvad (tunniplaan), mida treeningus täpsemalt tehakse, mis stiiliga on tegemist, kes on treener, kui palju üks kord maksab jms info. Kasutajakontoga liikmel on võimalik end registreerida soovitud tundi ja hallata oma registreeringuid (muuta, tühistada).&lt;br /&gt;
&lt;br /&gt;
Spordiklubide infot haldavad süsteemi administraatorid, kes saavad lisada, muuta ja kustutada kõike sprodiklubiga seonduvat. Erinevaid treeninguid ja nendega seotud konkreetset infot saavad lisada ja hallata treenerid või spordiklubi esindajad.&lt;br /&gt;
&lt;br /&gt;
Projekti realiseerimiseks kasutame REST arhitektuuri ja ASP.NET MVC Web API tehnoloogiat.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Üldine plaan:&#039;&#039;&#039;&lt;br /&gt;
* esialgu üks kett (laienemise võimalusega)&lt;br /&gt;
* mitu klubi (asukoht, saalid-treeningualad, võimalikud lisatingimused)&lt;br /&gt;
* treeningute info (stiilid ehk kontseptid, litsentsid, …)&lt;br /&gt;
* tunniplaan (aeg, koht, instruktorid, max osalejate arv, ühe korra hind)&lt;br /&gt;
* registratuur (treeningutest osavõtjad)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kasutajad (rollid):&#039;&#039;&#039;&lt;br /&gt;
* administraatorid (saavad teha muudatusi)&lt;br /&gt;
* treenerid (info kvalifikatsiooni, litsentside kohta, õigus treeninguid lisada) &lt;br /&gt;
* liikmed (saavad treeningutele registreeruda)&lt;br /&gt;
* ülejäänud (näevad klubide ja treeningute infot ning tunniplaani)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Peaks olema:&#039;&#039;&#039;&lt;br /&gt;
* kasutajate loomine&lt;br /&gt;
* kasutajate tuvastamine ja haldamine&lt;br /&gt;
* kasutajate ja kasutusstatistika logimine&lt;br /&gt;
* teenuse poole pöördumiste arvu piiramine ja piirangute haldamine&lt;br /&gt;
* klubide, treenerite ja treeningute info väljastamine&lt;br /&gt;
* tunniplaani info väljastamine&lt;br /&gt;
* treeningutesse registreerimine&lt;br /&gt;
* registreeringu tühistamine&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Võiks olla:&#039;&#039;&#039;&lt;br /&gt;
* klubide, treenerite, treeningute lisamine ja muutmine&lt;br /&gt;
* tunniplaanis treeningute tühistamine&lt;br /&gt;
* sisestatud andmete kustutamine (pehmelt)&lt;br /&gt;
* rollide-õiguste määramine (admin)&lt;br /&gt;
* asukohad mitmes riigis&lt;br /&gt;
* kliendipaketid, arveldus&lt;br /&gt;
* kontaktide tsentraliseeritud haldus&lt;br /&gt;
* sisselogimine läbi Google’i, Facebooki vmt teenuse&lt;br /&gt;
&lt;br /&gt;
===Andmebaasi skeem (lihtsustatud)===&lt;br /&gt;
&lt;br /&gt;
[[File:SPOTService ERD.JPG|border|SPOT Service ERD]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Märkus: olemite atribuutidest on välja toodud ainult peamised.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====Tabelite kirjeldused====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kasutajahaldus*:&#039;&#039;&#039;&lt;br /&gt;
* User - kasutajate andmed&lt;br /&gt;
* Role - rollid, millega määratakse kasutajate õigused (&amp;quot;Admin&amp;quot;, &amp;quot;Trainer&amp;quot;, ...)&lt;br /&gt;
* UserRole - kasutajate sidumine rolli(de)ga&lt;br /&gt;
* UserLogin - muu teenuse kaudu sisselogimiseks&lt;br /&gt;
* UserClaim - muu teenuse kaudu sisselogimiseks&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;&#039;&#039;Kasutajahalduse süsteem toetub Asp.Net Identity valmislahendusele, mida on täiendanud A. Käver.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Klubid:&#039;&#039;&#039;&lt;br /&gt;
* Chain (optional) - spordiklubikettide info&lt;br /&gt;
* Location - spordiklubi/-rajatise asukoht linna/asula täpsusega&lt;br /&gt;
* Facility - spordiklubi/-rajatise andmed, seotud asukohaga ja vajadusel ketiga.&lt;br /&gt;
* Venue - spordiklubis/-rajatises kasutatavad saalid ja muud treeningualad&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Treeningud:&#039;&#039;&#039;&lt;br /&gt;
* Concept (Style) - treeningustiilid ehk kontseptid&lt;br /&gt;
* Licenser (optional) - treeninguliikide litsentsid (kui on)&lt;br /&gt;
* Training - treeninguliikide andmed, seotud stiili ja vajadusel litsentsiga&lt;br /&gt;
* Trainer (User (role: Trainer) + Training) - treeninguliikide sidumine treeneritega&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tunniplaan:&#039;&#039;&#039;&lt;br /&gt;
* ScheduleItem - treeningud tunniplaanis&lt;br /&gt;
* Instructor (User (role: Trainer) + ScheduleItem) - tundide juhendajad (võib olla mitu)&lt;br /&gt;
* Registration (ScheduleItem + User (role: any)) - tundidesse tehtud registreeringud&lt;br /&gt;
&lt;br /&gt;
== XML / XSD / XSLT==&lt;br /&gt;
Projekti esimeses etapis sai loodud XML andmefail, mille ülesehitus on paika pandud XSD skeemifailis. Lisaks on olemas kaks stiilifaili: esimene neist transformeerib andmed HTML-kujule, et kuvada infot  veebilehel, teine tekitab samade andmete esitamiseks uue struktuuriga XML faili.&lt;br /&gt;
&lt;br /&gt;
[https://drive.google.com/open?id=0B84njRSbVLUtd0U4aEJXOUhOTG8 Lae failid alla.] &lt;br /&gt;
&lt;br /&gt;
=== XML ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Fail sisaldab andmeid ühes spordiklubis pakutavate treeningute kohta. Andmed on esitatud treeninguliikide kaupa, mille juurde on lisatud ka vastava treeninguliigi tunniplaan. Treeninguliikidel on nimi ja kirjeldus ning vajadusel ära märgitud ka litsents. Failis on eraldi välja toodud treeningustiilid, instruktorid ja ruumid, kus treeningud toimuvad. Iga treeninguliik kuulub ühe või mitme stiili alla. Instruktoritel on tagasiside põhjal saadud hinne. Treeninguruumidel on vaikimisi määratud mahutavus. Tunniplaanis on ära toodud treeningu koht, algusaeg ja kestus ning instruktorid. Vajadusel saab eraldi määrata ka treeningurühma suuruse, kui see erineb tavalisest ruumi mahutavusest. Ka on võimalik treeningutunnile lisada kommentaar. Erinevate elementide andmed on omavahel seotud id-atribuutidega.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;?xml-stylesheet type=&amp;quot;text/xsl&amp;quot; href=&amp;quot;trainingsToHtml.xslt&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Trainings&amp;gt;&lt;br /&gt;
  &amp;lt;Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;![CDATA[Cardio]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
  &amp;lt;/Styles&amp;gt;&lt;br /&gt;
  &amp;lt;Instructors&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;1&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Yogafier]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;2&amp;quot; Rating=&amp;quot;4.7&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Mickey Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;3&amp;quot; Rating=&amp;quot;4.6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;4&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Donald Duck]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;5&amp;quot; Rating=&amp;quot;3.9&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Goofy]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;6&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Schwarzenegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;8&amp;quot; Rating=&amp;quot;4.8&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Kayla Weightlifter]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;9&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Margaret Strengthener]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
  &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;Venues&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;1&amp;quot; GroupSize=&amp;quot;45&amp;quot;&amp;gt;&amp;lt;![CDATA[Main Hall]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 2]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;3&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 3]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;4&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 4]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;5&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 5]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&amp;lt;![CDATA[Area 6]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;7&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&amp;lt;![CDATA[Yoga Hall]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
  &amp;lt;/Venues&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Yoga]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[Yoga is a group of physical, mental, and spiritual practices or disciplines which originated in ancient India. ]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;1&amp;quot; VenueId=&amp;quot;7&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-25T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;14&amp;quot; VenueId=&amp;quot;7&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT1H20M&amp;quot;&amp;gt;2017-03-28T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Comment&amp;gt;&lt;br /&gt;
          &amp;lt;![CDATA[Special class!]]&amp;gt;&lt;br /&gt;
        &amp;lt;/Comment&amp;gt; &lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/Nvlxn0EnmbM&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;  &lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;2&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyBalance™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[BODYBALANCE™ is the Yoga, Tai Chi, Pilates workout that builds flexibility and strength and leaves you feeling centered and calm. Based on a carefully structured series of stretches, moves and poses to music it creates a holistic workout that brings the body into a state of harmony and balance. This class will heighten your flexibility and inner strength creating a strong supple body from the inside out. Burn on average 390cals per hour.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;2&amp;quot; VenueId=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-31T12:15:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;3&amp;quot; VenueId=&amp;quot;2&amp;quot; &amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-30T13:30:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;3&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/jJxA6vBjUqY&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;3&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyJam™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;4&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[The Body Jam program is an addictive fusion of the latest dance styles to the hottest new sounds. This class isn’t just for dancers, it’s for everyone because the emphasis is put on not only having fun but also breaking a sweat. So grab a friend, get front and centre … you bring the attitude and we’ll bring the moves!]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;4&amp;quot;  VenueId=&amp;quot;3&amp;quot; &amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T16:10:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;4&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;5&amp;quot; VenueId=&amp;quot;5&amp;quot; &amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT45M&amp;quot;&amp;gt;2017-04-01T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;5&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/8PTXyg9si_4&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;4&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyPump™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[BodyPump classes are 59 minutes long and contain eight separate muscle-group specific songs or &amp;quot;tracks&amp;quot; along with an opening warm up track and closing cool-down track. There are also 45-minute and 30-minute class formats. The classes are performed to music using free weights-plates, barbells and an aerobic step. Participants choose their weights based on the exercise and their personal goals. Major muscle groups are worked via series of compound and isolation-based exercises including squats, presses, dead lifts. The focus is towards muscle endurance by moving light weights at high repetitions, what Les Mills calls the Rep Effect.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;3&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;6&amp;quot; VenueId=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;6&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;7&amp;quot; VenueId=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-23T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;6&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/zU_0XrdO3wo&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[CoreStrenght is a very hard workout! Not for beginners.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;3&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;8&amp;quot; VenueId=&amp;quot;6&amp;quot; GroupSize=&amp;quot;10&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT2H&amp;quot;&amp;gt;2017-03-23T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;9&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Comment&amp;gt;&lt;br /&gt;
          &amp;lt;![CDATA[Special challenge!]]&amp;gt;&lt;br /&gt;
        &amp;lt;/Comment&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;9&amp;quot; VenueId=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;8&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;10&amp;quot; VenueId=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-04-05T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;8&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;9&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/ZxTVmpvyUt8&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[Zumba involves dance and aerobic movements performed to energetic music. The choreography incorporates hip-hop, soca, samba, salsa, merengue and mambo. Squats and lunges are also included.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;4&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;11&amp;quot; VenueId=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT55M&amp;quot;&amp;gt;2017-03-26T15:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;12&amp;quot; VenueId=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-28T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;13&amp;quot; VenueId=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/-ZB6XIkfxnQ&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
&amp;lt;/Trainings&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSD ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Skeemifail kontrollib eelnevas andmefailis esitatud andmete vastavust kokkulepitud formaadile, samuti õigete andmetüüpide kasutamist. Alamelemendi id-atribuudi väärtus peab olema iga elemendirühma lõikes unikaalne. Kohustuslike elementide ja atribuutide kõrval on ka mõned (nt kommentaar), mille olemasolu pole alati tarvilik. Teatud puhkudel on piiratud maksimaalset elementide arvu (nt treeningutunni algusaeg). Faili üldine struktuur on kindel, aga alati pole alamelementide järjekord oluline (nt treeninguliigi puhul).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xs:schema attributeFormDefault=&amp;quot;unqualified&amp;quot; elementFormDefault=&amp;quot;qualified&amp;quot; xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xs:element name=&amp;quot;Trainings&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Styles&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Style&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
          &amp;lt;xs:unique name=&amp;quot;UniqueStyleId&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xs:selector xpath=&amp;quot;Style&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Instructors&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;Name&amp;quot; type=&amp;quot;xs:string&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:attribute name=&amp;quot;Rating&amp;quot; type=&amp;quot;xs:decimal&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
          &amp;lt;xs:unique name=&amp;quot;UniqueInstructorId&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xs:selector xpath=&amp;quot;Instructor&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Venues&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Venue&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:attribute name=&amp;quot;GroupSize&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
          &amp;lt;xs:unique name=&amp;quot;UniqueVenueId&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xs:selector xpath=&amp;quot;Venue&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Training&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:all&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Description&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Styles&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Style&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Schedule&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;ScheduleItem&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:all&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element  maxOccurs=&amp;quot;1&amp;quot; name=&amp;quot;Time&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:extension base=&amp;quot;xs:dateTime&amp;quot;&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:attribute name=&amp;quot;Duration&amp;quot; type=&amp;quot;xs:duration&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element name=&amp;quot;Instructors&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                    &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                                      &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                                        &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                                      &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                                    &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                                  &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; name=&amp;quot;Comment&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:all&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;VenueId&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;GroupSize&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;optional&amp;quot; /&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;VideoUrl&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:all&amp;gt;&lt;br /&gt;
            &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xs:attribute name=&amp;quot;Licence&amp;quot; type=&amp;quot;xs:string&amp;quot; use=&amp;quot;optional&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
    &amp;lt;xs:unique name=&amp;quot;UniqueTrainingId&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xs:selector xpath=&amp;quot;Training&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
    &amp;lt;xs:unique name=&amp;quot;UniqueScheduleItemId&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xs:selector xpath=&amp;quot;Training/Schedule/ScheduleItem&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSLT (html) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Selles transformatsioonifailis on kirjeldatud XML failis olevate andmete [http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/trainings.xml  kuvamise viis veebilehel]. Treeninguliigid on jaotatud stiiliblokkidesse (mõni treening kuulub mitme stiili alla). Iga treeninguliigi all on tabeli kujul esitatud tunniplaan ning lisatud näidisvideo ja kirjeldus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot; xmlns:msxsl=&amp;quot;urn:schemas-microsoft-com:xslt&amp;quot; exclude-result-prefixes=&amp;quot;msxsl&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:output method=&amp;quot;html&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;html&amp;gt;&lt;br /&gt;
      &amp;lt;head&amp;gt;&lt;br /&gt;
        &amp;lt;title&amp;gt;SuperSportsClub - Trainings&amp;lt;/title&amp;gt;&lt;br /&gt;
        &amp;lt;style&amp;gt;&lt;br /&gt;
          body {&lt;br /&gt;
          background:BurlyWood;&lt;br /&gt;
          text-align: center;&lt;br /&gt;
          }&lt;br /&gt;
          .section {&lt;br /&gt;
          text-align:left;&lt;br /&gt;
          width:1000px;&lt;br /&gt;
          padding:20px;&lt;br /&gt;
          background:Chocolate;&lt;br /&gt;
          margin: auto;&lt;br /&gt;
          }&lt;br /&gt;
          table, th, td, .section {&lt;br /&gt;
          border: 1px solid black;&lt;br /&gt;
          }&lt;br /&gt;
          th {&lt;br /&gt;
          text-align:left;&lt;br /&gt;
          padding-left: 10px;&lt;br /&gt;
          padding-right: 10px;&lt;br /&gt;
          }&lt;br /&gt;
          td {&lt;br /&gt;
          text-align:center;&lt;br /&gt;
          }&lt;br /&gt;
          p {&lt;br /&gt;
          text-align:justify;&lt;br /&gt;
          }&lt;br /&gt;
          .description {&lt;br /&gt;
          vertical-align:top; &lt;br /&gt;
          padding:10px;&lt;br /&gt;
          }&lt;br /&gt;
        &amp;lt;/style&amp;gt;&lt;br /&gt;
      &amp;lt;/head&amp;gt;&lt;br /&gt;
      &amp;lt;body&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;Trainings at SuperSportsClub&amp;lt;/h1&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;/Trainings/Styles/Style&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:sort select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:variable select=&amp;quot;.&amp;quot; name=&amp;quot;SelectedStyle&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;section&amp;quot; &amp;gt;&lt;br /&gt;
            &amp;lt;h2&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select=&amp;quot;$SelectedStyle&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/h2&amp;gt;&lt;br /&gt;
            &amp;lt;ul&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:for-each select=&amp;quot;/Trainings/Training&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:sort select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:variable name=&amp;quot;Training&amp;quot; select=&amp;quot;.&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:if test=&amp;quot;Styles/Style/@Id = $SelectedStyle/@Id&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;&lt;br /&gt;
                    &amp;lt;h3&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;$Training/Name&amp;quot; /&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:if test=&amp;quot;$Training/@Licence&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:text&amp;gt; (&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:value-of select=&amp;quot;$Training/@Licence&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:text&amp;gt;)&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
                    &amp;lt;/h3&amp;gt;&lt;br /&gt;
                    &amp;lt;table&amp;gt;&lt;br /&gt;
                      &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                      &amp;lt;/tr&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:for-each select=&amp;quot;$Training/Schedule/ScheduleItem&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:sort select=&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:variable name=&amp;quot;StartTime&amp;quot; select=&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:variable name=&amp;quot;Duration&amp;quot; select=&amp;quot;$StartTime/@Duration&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;tr&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;150&amp;quot; &amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;concat(&lt;br /&gt;
                                            substring($StartTime, 9, 2), &lt;br /&gt;
                                            &#039;.&#039;, &lt;br /&gt;
                                            substring($StartTime, 6, 2), &lt;br /&gt;
                                            &#039;.&#039;, &lt;br /&gt;
                                            substring($StartTime, 1, 4),&lt;br /&gt;
                                            &#039; &#039;,&lt;br /&gt;
                                            substring($StartTime, 12, 2),&lt;br /&gt;
                                            &#039;:&#039;,&lt;br /&gt;
                                            substring($StartTime, 15, 2))&lt;br /&gt;
                                            &amp;quot; /&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:if test=&amp;quot;Comment&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;br/&amp;gt;&lt;br /&gt;
                              &amp;lt;div style=&amp;quot;color:Green&amp;quot;&amp;gt;&lt;br /&gt;
                                &amp;lt;xsl:value-of select=&amp;quot;Comment&amp;quot;/&amp;gt;&lt;br /&gt;
                              &amp;lt;/div&amp;gt;&lt;br /&gt;
                            &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;substring($Duration, 3, 6)&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:variable name=&amp;quot;VenueId&amp;quot; select=&amp;quot;@VenueId&amp;quot;/&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;/Trainings/Venues/Venue[@Id=$VenueId]&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:for-each select=&amp;quot;Instructors/Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:variable name=&amp;quot;InstructorId&amp;quot; select=&amp;quot;@Id&amp;quot;&amp;gt;&amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:variable name=&amp;quot;SelectedInstructor&amp;quot; select=&amp;quot;/Trainings/Instructors/Instructor[@Id=$InstructorId]&amp;quot; /&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/Name&amp;quot;/&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:text&amp;gt; (&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/@Rating&amp;quot; /&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:text&amp;gt;)&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                              &amp;lt;br/&amp;gt;&lt;br /&gt;
                            &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;/tr&amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
                    &amp;lt;/table&amp;gt;&lt;br /&gt;
                    &amp;lt;br/&amp;gt;&lt;br /&gt;
                    &amp;lt;table&amp;gt;&lt;br /&gt;
                      &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                          &amp;lt;xsl:variable name=&amp;quot;VideoUrl&amp;quot; select=&amp;quot;$Training/VideoUrl&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;{$VideoUrl}&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                          &amp;lt;p&amp;gt;&lt;br /&gt;
                            &amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&lt;br /&gt;
                          &amp;lt;/p&amp;gt;&lt;br /&gt;
                          &amp;lt;p&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;$Training/Description&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                      &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;/table&amp;gt;&lt;br /&gt;
                  &amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
            &amp;lt;/ul&amp;gt;&lt;br /&gt;
          &amp;lt;/div&amp;gt;&lt;br /&gt;
          &amp;lt;br/&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
      &amp;lt;/body&amp;gt;&lt;br /&gt;
    &amp;lt;/html&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== HTML (transformeeritud) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/trainings.html Vaata eelneva transformatsiooni tulemust.]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;META http-equiv=&amp;quot;Content-Type&amp;quot; content=&amp;quot;text/html; charset=utf-8&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;SuperSportsClub - Trainings&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;style&amp;gt;&lt;br /&gt;
        body {&lt;br /&gt;
            background: BurlyWood;&lt;br /&gt;
            text-align: center;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        .section {&lt;br /&gt;
            text-align: left;&lt;br /&gt;
            width: 1000px;&lt;br /&gt;
            padding: 20px;&lt;br /&gt;
            background: Chocolate;&lt;br /&gt;
            margin: auto;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        table, th, td, .section {&lt;br /&gt;
            border: 1px solid black;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        th {&lt;br /&gt;
            text-align: left;&lt;br /&gt;
            padding-left: 10px;&lt;br /&gt;
            padding-right: 10px;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        td {&lt;br /&gt;
            text-align: center;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        p {&lt;br /&gt;
            text-align: justify;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        .description {&lt;br /&gt;
            vertical-align: top;&lt;br /&gt;
            padding: 10px;&lt;br /&gt;
        }&lt;br /&gt;
    &amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
    &amp;lt;h1&amp;gt;Trainings at SuperSportsClub&amp;lt;/h1&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Body&amp;amp;amp;Mind&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyBalance™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 13:30&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;1H15M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 2&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Minnie Mouse (4.6)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;31.03.2017 12:15&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;1H15M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 3&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Mickey Mouse (4.7)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/jJxA6vBjUqY&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                BODYBALANCE™ is the Yoga, Tai Chi, Pilates workout that builds flexibility and strength and leaves you feeling centered and calm. Based on a carefully structured series of stretches, moves and poses to music it creates a holistic workout that brings the body into a state of harmony and balance. This class will heighten your flexibility and inner strength creating a strong supple body from the inside out. Burn on average 390cals per hour.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;Yoga&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;25.03.2017 14:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Yoga Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Minnie Yogafier (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
                            28.03.2017 14:00&amp;lt;br&amp;gt;&amp;lt;div style=&amp;quot;color:Green&amp;quot;&amp;gt;&lt;br /&gt;
                                Special class!&lt;br /&gt;
                            &amp;lt;/div&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;1H20M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Yoga Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Minnie Yogafier (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/Nvlxn0EnmbM&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                Yoga is a group of physical, mental, and spiritual practices or disciplines which originated in ancient India.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Cardio&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyJam™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 16:10&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 3&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Donald Duck (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;01.04.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;45M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 5&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Goofy (3.9)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/8PTXyg9si_4&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                The Body Jam program is an addictive fusion of the latest dance styles to the hottest new sounds. This class isn’t just for dancers, it’s for everyone because the emphasis is put on not only having fun but also breaking a sweat. So grab a friend, get front and centre … you bring the attitude and we’ll bring the moves!&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Dance&amp;amp;amp;Fun&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyJam™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 16:10&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 3&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Donald Duck (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;01.04.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;45M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 5&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Goofy (3.9)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/8PTXyg9si_4&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                The Body Jam program is an addictive fusion of the latest dance styles to the hottest new sounds. This class isn’t just for dancers, it’s for everyone because the emphasis is put on not only having fun but also breaking a sweat. So grab a friend, get front and centre … you bring the attitude and we’ll bring the moves!&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;Zumba®&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;26.03.2017 15:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;55M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 2&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Zumbaschnegger (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;28.03.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 4&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Zumbaschnegger (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 2&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Zumbaschnegger (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/-ZB6XIkfxnQ&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                Zumba involves dance and aerobic movements performed to energetic music. The choreography incorporates hip-hop, soca, samba, salsa, merengue and mambo. Squats and lunges are also included.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Strength&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyPump™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;23.03.2017 13:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Main Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Schwarzenegger (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 13:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Main Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Schwarzenegger (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/zU_0XrdO3wo&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                BodyPump classes are 59 minutes long and contain eight separate muscle-group specific songs or &amp;quot;tracks&amp;quot; along with an opening warm up track and closing cool-down track. There are also 45-minute and 30-minute class formats. The classes are performed to music using free weights-plates, barbells and an aerobic step. Participants choose their weights based on the exercise and their personal goals. Major muscle groups are worked via series of compound and isolation-based exercises including squats, presses, dead lifts. The focus is towards muscle endurance by moving light weights at high repetitions, what Les Mills calls the Rep Effect.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;CoreStrength&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
                            23.03.2017 12:00&amp;lt;br&amp;gt;&amp;lt;div style=&amp;quot;color:Green&amp;quot;&amp;gt;&lt;br /&gt;
                                Special challenge!&lt;br /&gt;
                            &amp;lt;/div&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;2H&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Area 6&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Margaret Strengthener (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Area 6&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Kayla Weightlifter (4.8)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;05.04.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Area 6&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Kayla Weightlifter (4.8)&amp;lt;br&amp;gt;Margaret Strengthener (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/ZxTVmpvyUt8&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                CoreStrenght is a very hard workout! Not for beginners.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSLT (xml) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Selle transformatsiooniga luuakse uus [http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/schedule.xml XML fail], milles on treeningute andmed esitatud ühtse tunniplaani kujul. Algses failis erinevate elementide alla paigutatud andmed on nüüd tunniplaani alamelemendis kokku viidud. Sidumine on teostatud id-atribuutide abil. Tunniplaanis on ühes kohas kirjas treeningu nimi, stiil(id), koht, algusaeg, kestus, rühma suurus, instruktorid ja muu täiendav info.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&lt;br /&gt;
    xmlns:msxsl=&amp;quot;urn:schemas-microsoft-com:xslt&amp;quot; exclude-result-prefixes=&amp;quot;msxsl&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:output method=&amp;quot;xml&amp;quot; indent=&amp;quot;yes&amp;quot; cdata-section-elements=&amp;quot;Name Style Comment&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;/Trainings/Training&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:sort select=&amp;quot;Name&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:variable name=&amp;quot;SelectedTraining&amp;quot; select=&amp;quot;.&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;Schedule/ScheduleItem&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:sort select=&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;ScheduleItem&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:variable name=&amp;quot;VenueId&amp;quot; select=&amp;quot;@VenueId&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:variable name=&amp;quot;SelectedVenue&amp;quot; select=&amp;quot;/Trainings/Venues/Venue[@Id=$VenueId]&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:attribute name=&amp;quot;GroupSize&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;@GroupSize&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:value-of select=&amp;quot;@GroupSize&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:value-of select=&amp;quot;$SelectedVenue/@GroupSize&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
            &amp;lt;Venue&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$VenueId&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select=&amp;quot;$SelectedVenue&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/Venue&amp;gt;&lt;br /&gt;
            &amp;lt;Training&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$SelectedTraining/@Id&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:if test=&amp;quot;$SelectedTraining/@Licence&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:attribute name=&amp;quot;Licence&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:value-of select=&amp;quot;$SelectedTraining/@Licence&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
              &amp;lt;Name&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$SelectedTraining/Name&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/Name&amp;gt;&lt;br /&gt;
              &amp;lt;Styles&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:for-each select=&amp;quot;$SelectedTraining/Styles/Style&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:variable name=&amp;quot;StyleId&amp;quot; select=&amp;quot;@Id&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;Style&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:attribute name=&amp;quot;StyleId&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;$StyleId&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;/Trainings/Styles/Style[@Id=$StyleId]&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/Style&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
              &amp;lt;/Styles&amp;gt;&lt;br /&gt;
            &amp;lt;/Training&amp;gt;&lt;br /&gt;
            &amp;lt;Time&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:attribute name=&amp;quot;Duration&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;Time/@Duration&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select =&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/Time&amp;gt;&lt;br /&gt;
            &amp;lt;Instructors&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:for-each select=&amp;quot;Instructors/Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:variable name=&amp;quot;InstructorId&amp;quot; select=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:variable name=&amp;quot;SelectedInstructor&amp;quot; select=&amp;quot;/Trainings/Instructors/Instructor[@Id=$InstructorId]&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;Instructor&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;$InstructorId&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:attribute name=&amp;quot;Rating&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/@Rating&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                  &amp;lt;Name&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/Name&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/Name&amp;gt;&lt;br /&gt;
                &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
            &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:if test=&amp;quot;Comment&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;Comment&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;Comment&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/Comment&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
          &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XML (transformeeritud) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/schedule.xml Vaata eelneva transformatsiooni tulemust.]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Schedule&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;3&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot;&amp;gt;Hall 2&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;2&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyBalance™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-30T13:30:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;3&amp;quot; Rating=&amp;quot;4.6&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;2&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;3&amp;quot;&amp;gt;Hall 3&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;2&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyBalance™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-31T12:15:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;2&amp;quot; Rating=&amp;quot;4.7&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Mickey Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;4&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;3&amp;quot;&amp;gt;Hall 3&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;3&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyJam™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;![CDATA[Cardio]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T16:10:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;4&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Donald Duck]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;5&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;5&amp;quot;&amp;gt;Hall 5&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;3&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyJam™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;![CDATA[Cardio]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT45M&amp;quot;&amp;gt;2017-04-01T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;5&amp;quot; Rating=&amp;quot;3.9&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Goofy]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;7&amp;quot; GroupSize=&amp;quot;45&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;1&amp;quot;&amp;gt;Main Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;4&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyPump™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-23T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;6&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Schwarzenegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;6&amp;quot; GroupSize=&amp;quot;45&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;1&amp;quot;&amp;gt;Main Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;4&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyPump™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;6&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Schwarzenegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;8&amp;quot; GroupSize=&amp;quot;10&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot;&amp;gt;Area 6&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT2H&amp;quot;&amp;gt;2017-03-23T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;9&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Margaret Strengthener]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
    &amp;lt;Comment&amp;gt;&amp;lt;![CDATA[&lt;br /&gt;
          Special challenge!&lt;br /&gt;
        ]]&amp;gt;&amp;lt;/Comment&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;9&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot;&amp;gt;Area 6&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;8&amp;quot; Rating=&amp;quot;4.8&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Kayla Weightlifter]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;10&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot;&amp;gt;Area 6&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-04-05T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;8&amp;quot; Rating=&amp;quot;4.8&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Kayla Weightlifter]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;9&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Margaret Strengthener]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;11&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot;&amp;gt;Hall 2&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT55M&amp;quot;&amp;gt;2017-03-26T15:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;12&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;4&amp;quot;&amp;gt;Hall 4&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-28T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;13&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot;&amp;gt;Hall 2&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;1&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;7&amp;quot;&amp;gt;Yoga Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Yoga]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-25T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;1&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Yogafier]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;14&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;7&amp;quot;&amp;gt;Yoga Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Yoga]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT1H20M&amp;quot;&amp;gt;2017-03-28T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;1&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Yogafier]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
    &amp;lt;Comment&amp;gt;&amp;lt;![CDATA[&lt;br /&gt;
          Special class!&lt;br /&gt;
        ]]&amp;gt;&amp;lt;/Comment&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
&amp;lt;/Schedule&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus ==&lt;br /&gt;
Angular JS &#039;&#039;single page application&#039;&#039; eelnevalt kirjeldatud veebiteenusele. Sisse logimata saab kuvada spordiklubi tunniplaani nädalate kaupa, treeninguliike stiilide kaupa ja treenereid. Võimalik on liituda teenusega ja registreeruda treeningutele, samuti registreeringuid tühistada nii otse tunniplaanist kui ka registreeringute lehel. Esialgu põhineb süsteem ühel spordiklubil. Kasutamise eelduseks on tunniplaani olemasolu andmebaasis.&lt;br /&gt;
&lt;br /&gt;
Autentimine on lahendatud tokenipõhiselt. Eeskuju ja põhjana kasutasime näidisrakendust, mille juhend ja lähtekood on leitav [http://bitoftech.net/2014/06/09/angularjs-token-authentication-using-asp-net-web-api-2-owin-asp-net-identity/ siit].&lt;br /&gt;
&lt;br /&gt;
== Lähtekood ==&lt;br /&gt;
Eksamiks valminud veebiteenuse ja klientrakenduse kokkupakitult allalaadimiseks klõpsa [https://drive.google.com/open?id=0B84njRSbVLUtTWx5ZkZsdDBJZDQ sellel lingil]. WebApi ja Angular JS klient on eraldi lahendustes. Kliendi testimiseks brauseris (Chrome, Firefox vm) tuleb eelnevalt käivitada ka veebiteenus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;NB! Võib juhtuda, et WebApi esmakordsel käivitamisel loodavasse andmebaasi kõiki andmeid (tunniplaani ja registreerimisi jooksvasse nädalasse) ei lisandu. Sellisel juhul kustuta tekkinud andmebaas ja käivita kõigepealt samas lahenduses olev konsoolirakendus.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Retsensioonid ==&lt;br /&gt;
&lt;br /&gt;
# [https://wiki.itcollege.ee/index.php/Talk:JRT JRT meeskonna XML/XSD/XSLT retsensioon ]&lt;br /&gt;
# [https://wiki.itcollege.ee/index.php/Talk:JRT#Hinnang_meeskonna_JRT_esitatud_veebiteenusele JRT meeskonna veebiteenuse retsensioon ]&lt;br /&gt;
# [https://wiki.itcollege.ee/index.php/Talk:JRT#Hinnang_meeskonna_JRT_esitatud_klientrakendusele JRT meeskonna klientrakenduse retsensioon ]&lt;br /&gt;
&lt;br /&gt;
== Log ==&lt;br /&gt;
* 03.03.17 Esimene kohtumine. Idee.&lt;br /&gt;
* 17.03.17 Osa XMList valmis, osa XSLT-st valmis.&lt;br /&gt;
* 18.03.17 Teine kohtumine. XMLi täiendamine, esimene ülekäimine XSD-s.&lt;br /&gt;
* 19.03.17 XML/XSLT/XSD täiendamine ja lõpetamine.&lt;br /&gt;
* 20.03.17 XML fail, skeemifail ja stiilifailid esitatud. Projekti esimese etapi lõpp. Kevade algus.&lt;br /&gt;
* 26.03.17 XML/XSLT/XSD retsensioon esitatud.&lt;br /&gt;
* 16.04.17 Veebiteenuse analüüsi koostamine.&lt;br /&gt;
* 17.04.17 Esialgne veebiteenuse analüüs ja kavand valmis.&lt;br /&gt;
* 19.04.17 Alustasime veebiteenusega, koostegemine: Domain, DAL, Interfaces, Repostitories. Testimine konsoolis.&lt;br /&gt;
* 24.04.17 Veebiteenuse koostegemine, 2. kord: Domaini täiendamine.&lt;br /&gt;
* 29.04.17 Veebiteenuse koostegemine, 3. kord: Interfaces, Repositories, Factory + UOW. Testimine konsoolis.&lt;br /&gt;
* 01.05.17 Andmebaasi täitmine testandmetega varasemas faasis loodud XML failist.&lt;br /&gt;
* 02.05.17 Veebiteenuse koostegemine, 4. kord: alustasime BLi ja WebApi ehitamist. GET päringud.&lt;br /&gt;
* 09.05.17 Veebiteenuse koostegemine, 5. kord: lisasime Identity.&lt;br /&gt;
* 11.05.17 Veebiteenuse koostegemine, 6. kord: WebApi arendamine. POST, PUT ja DELETE päringud.&lt;br /&gt;
* 15.05.17 Veebiteenuse koostegemine, 7. kord: WebApi arendamine. Lisasime  api kontrollereid.&lt;br /&gt;
* 16.05.17 Veebiteenuse koostegemine, 8. kord: WebApi arendamine. Identity kontroll Fiddleri ja Postmaniga.&lt;br /&gt;
* 20.05.17 Klientrakenduse koostegemine, 1. kord. Testklient.&lt;br /&gt;
* 25.05.17 Klientrakenduse koostegemine, 2. kord. Klientrakenduse arendamine.&lt;br /&gt;
* 01.06.17 Klientrakenduse koostegemine, 3. kord. Klientrakenduse arendamine. Angular JS.&lt;br /&gt;
* 03.06.17 - 11.06.17 Klientrakenduse arendamine. Tokenipõhine autentimine. Veebiteenuse viimistlemine.&lt;br /&gt;
* 11.06.17 Lõpptähtaeg. Projekti esitlemine eksamil.&lt;br /&gt;
* 12.06.17 Teiste lahenduste retsenseerimine.&lt;/div&gt;</summary>
		<author><name>Otiks</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Team_SPOT&amp;diff=123572</id>
		<title>Team SPOT</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Team_SPOT&amp;diff=123572"/>
		<updated>2017-06-13T20:26:20Z</updated>

		<summary type="html">&lt;p&gt;Otiks: /* Retsensioonid */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://wiki.itcollege.ee/index.php/Kodut%C3%B6%C3%B6_aines_%22V%C3%B5rgurakendused_II:_hajuss%C3%BCsteemide_ehitamine%22_2017 Kodutöö aines &amp;quot;Võrgurakendused II: hajussüsteemide ehitamine&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
[https://projectspot.visualstudio.com/PROJECTSPOT Projekti repositoorium (avaneb ainult liikmetele)]&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==Liikmed==&lt;br /&gt;
*Sigrid Pachel&lt;br /&gt;
*Oliver Tiks&lt;br /&gt;
&lt;br /&gt;
==Idee==&lt;br /&gt;
Mõttes on luua spordiklubi(de) veebiteenus ja klientrakendus, mis võimaldaks saada infot pakutavate treeningute kohta, sisestada ja kuvada tunniplaani andmeid, registreerida osalejaid tundidesse ning teha muid asjakohaseid tegevusi nii klubi(de) personalil, liikmetel kui ka juhukasutajatel.&lt;br /&gt;
&lt;br /&gt;
==Veebiteenuse analüüs==&lt;br /&gt;
SPOTi veebiteenus võimaldab saada infot erinevate klubide treeningute kohta ja end neisse registreerida. Kasutaja saab teavet, kus ja millal treeningud toimuvad (tunniplaan), mida treeningus täpsemalt tehakse, mis stiiliga on tegemist, kes on treener, kui palju üks kord maksab jms info. Kasutajakontoga liikmel on võimalik end registreerida soovitud tundi ja hallata oma registreeringuid (muuta, tühistada).&lt;br /&gt;
&lt;br /&gt;
Spordiklubide infot haldavad süsteemi administraatorid, kes saavad lisada, muuta ja kustutada kõike sprodiklubiga seonduvat. Erinevaid treeninguid ja nendega seotud konkreetset infot saavad lisada ja hallata treenerid või spordiklubi esindajad.&lt;br /&gt;
&lt;br /&gt;
Projekti realiseerimiseks kasutame REST arhitektuuri ja ASP.NET MVC Web API tehnoloogiat.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Üldine plaan:&#039;&#039;&#039;&lt;br /&gt;
* esialgu üks kett (laienemise võimalusega)&lt;br /&gt;
* mitu klubi (asukoht, saalid-treeningualad, võimalikud lisatingimused)&lt;br /&gt;
* treeningute info (stiilid ehk kontseptid, litsentsid, …)&lt;br /&gt;
* tunniplaan (aeg, koht, instruktorid, max osalejate arv, ühe korra hind)&lt;br /&gt;
* registratuur (treeningutest osavõtjad)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kasutajad (rollid):&#039;&#039;&#039;&lt;br /&gt;
* administraatorid (saavad teha muudatusi)&lt;br /&gt;
* treenerid (info kvalifikatsiooni, litsentside kohta, õigus treeninguid lisada) &lt;br /&gt;
* liikmed (saavad treeningutele registreeruda)&lt;br /&gt;
* ülejäänud (näevad klubide ja treeningute infot ning tunniplaani)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Peaks olema:&#039;&#039;&#039;&lt;br /&gt;
* kasutajate loomine&lt;br /&gt;
* kasutajate tuvastamine ja haldamine&lt;br /&gt;
* kasutajate ja kasutusstatistika logimine&lt;br /&gt;
* teenuse poole pöördumiste arvu piiramine ja piirangute haldamine&lt;br /&gt;
* klubide, treenerite ja treeningute info väljastamine&lt;br /&gt;
* tunniplaani info väljastamine&lt;br /&gt;
* treeningutesse registreerimine&lt;br /&gt;
* registreeringu tühistamine&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Võiks olla:&#039;&#039;&#039;&lt;br /&gt;
* klubide, treenerite, treeningute lisamine ja muutmine&lt;br /&gt;
* tunniplaanis treeningute tühistamine&lt;br /&gt;
* sisestatud andmete kustutamine (pehmelt)&lt;br /&gt;
* rollide-õiguste määramine (admin)&lt;br /&gt;
* asukohad mitmes riigis&lt;br /&gt;
* kliendipaketid, arveldus&lt;br /&gt;
* kontaktide tsentraliseeritud haldus&lt;br /&gt;
* sisselogimine läbi Google’i, Facebooki vmt teenuse&lt;br /&gt;
&lt;br /&gt;
===Andmebaasi skeem (lihtsustatud)===&lt;br /&gt;
&lt;br /&gt;
[[File:SPOTService ERD.JPG|border|SPOT Service ERD]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Märkus: olemite atribuutidest on välja toodud ainult peamised.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====Tabelite kirjeldused====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kasutajahaldus*:&#039;&#039;&#039;&lt;br /&gt;
* User - kasutajate andmed&lt;br /&gt;
* Role - rollid, millega määratakse kasutajate õigused (&amp;quot;Admin&amp;quot;, &amp;quot;Trainer&amp;quot;, ...)&lt;br /&gt;
* UserRole - kasutajate sidumine rolli(de)ga&lt;br /&gt;
* UserLogin - muu teenuse kaudu sisselogimiseks&lt;br /&gt;
* UserClaim - muu teenuse kaudu sisselogimiseks&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;&#039;&#039;Kasutajahalduse süsteem toetub Asp.Net Identity valmislahendusele, mida on täiendanud A. Käver.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Klubid:&#039;&#039;&#039;&lt;br /&gt;
* Chain (optional) - spordiklubikettide info&lt;br /&gt;
* Location - spordiklubi/-rajatise asukoht linna/asula täpsusega&lt;br /&gt;
* Facility - spordiklubi/-rajatise andmed, seotud asukohaga ja vajadusel ketiga.&lt;br /&gt;
* Venue - spordiklubis/-rajatises kasutatavad saalid ja muud treeningualad&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Treeningud:&#039;&#039;&#039;&lt;br /&gt;
* Concept (Style) - treeningustiilid ehk kontseptid&lt;br /&gt;
* Licenser (optional) - treeninguliikide litsentsid (kui on)&lt;br /&gt;
* Training - treeninguliikide andmed, seotud stiili ja vajadusel litsentsiga&lt;br /&gt;
* Trainer (User (role: Trainer) + Training) - treeninguliikide sidumine treeneritega&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tunniplaan:&#039;&#039;&#039;&lt;br /&gt;
* ScheduleItem - treeningud tunniplaanis&lt;br /&gt;
* Instructor (User (role: Trainer) + ScheduleItem) - tundide juhendajad (võib olla mitu)&lt;br /&gt;
* Registration (ScheduleItem + User (role: any)) - tundidesse tehtud registreeringud&lt;br /&gt;
&lt;br /&gt;
== XML / XSD / XSLT==&lt;br /&gt;
Projekti esimeses etapis sai loodud XML andmefail, mille ülesehitus on paika pandud XSD skeemifailis. Lisaks on olemas kaks stiilifaili: esimene neist transformeerib andmed HTML-kujule, et kuvada infot  veebilehel, teine tekitab samade andmete esitamiseks uue struktuuriga XML faili.&lt;br /&gt;
&lt;br /&gt;
[https://drive.google.com/open?id=0B84njRSbVLUtd0U4aEJXOUhOTG8 Lae failid alla.] &lt;br /&gt;
&lt;br /&gt;
=== XML ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Fail sisaldab andmeid ühes spordiklubis pakutavate treeningute kohta. Andmed on esitatud treeninguliikide kaupa, mille juurde on lisatud ka vastava treeninguliigi tunniplaan. Treeninguliikidel on nimi ja kirjeldus ning vajadusel ära märgitud ka litsents. Failis on eraldi välja toodud treeningustiilid, instruktorid ja ruumid, kus treeningud toimuvad. Iga treeninguliik kuulub ühe või mitme stiili alla. Instruktoritel on tagasiside põhjal saadud hinne. Treeninguruumidel on vaikimisi määratud mahutavus. Tunniplaanis on ära toodud treeningu koht, algusaeg ja kestus ning instruktorid. Vajadusel saab eraldi määrata ka treeningurühma suuruse, kui see erineb tavalisest ruumi mahutavusest. Ka on võimalik treeningutunnile lisada kommentaar. Erinevate elementide andmed on omavahel seotud id-atribuutidega.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;?xml-stylesheet type=&amp;quot;text/xsl&amp;quot; href=&amp;quot;trainingsToHtml.xslt&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Trainings&amp;gt;&lt;br /&gt;
  &amp;lt;Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;![CDATA[Cardio]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
  &amp;lt;/Styles&amp;gt;&lt;br /&gt;
  &amp;lt;Instructors&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;1&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Yogafier]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;2&amp;quot; Rating=&amp;quot;4.7&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Mickey Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;3&amp;quot; Rating=&amp;quot;4.6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;4&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Donald Duck]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;5&amp;quot; Rating=&amp;quot;3.9&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Goofy]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;6&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Schwarzenegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;8&amp;quot; Rating=&amp;quot;4.8&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Kayla Weightlifter]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;9&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Margaret Strengthener]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
  &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;Venues&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;1&amp;quot; GroupSize=&amp;quot;45&amp;quot;&amp;gt;&amp;lt;![CDATA[Main Hall]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 2]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;3&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 3]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;4&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 4]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;5&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 5]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&amp;lt;![CDATA[Area 6]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;7&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&amp;lt;![CDATA[Yoga Hall]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
  &amp;lt;/Venues&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Yoga]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[Yoga is a group of physical, mental, and spiritual practices or disciplines which originated in ancient India. ]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;1&amp;quot; VenueId=&amp;quot;7&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-25T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;14&amp;quot; VenueId=&amp;quot;7&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT1H20M&amp;quot;&amp;gt;2017-03-28T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Comment&amp;gt;&lt;br /&gt;
          &amp;lt;![CDATA[Special class!]]&amp;gt;&lt;br /&gt;
        &amp;lt;/Comment&amp;gt; &lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/Nvlxn0EnmbM&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;  &lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;2&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyBalance™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[BODYBALANCE™ is the Yoga, Tai Chi, Pilates workout that builds flexibility and strength and leaves you feeling centered and calm. Based on a carefully structured series of stretches, moves and poses to music it creates a holistic workout that brings the body into a state of harmony and balance. This class will heighten your flexibility and inner strength creating a strong supple body from the inside out. Burn on average 390cals per hour.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;2&amp;quot; VenueId=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-31T12:15:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;3&amp;quot; VenueId=&amp;quot;2&amp;quot; &amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-30T13:30:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;3&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/jJxA6vBjUqY&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;3&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyJam™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;4&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[The Body Jam program is an addictive fusion of the latest dance styles to the hottest new sounds. This class isn’t just for dancers, it’s for everyone because the emphasis is put on not only having fun but also breaking a sweat. So grab a friend, get front and centre … you bring the attitude and we’ll bring the moves!]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;4&amp;quot;  VenueId=&amp;quot;3&amp;quot; &amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T16:10:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;4&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;5&amp;quot; VenueId=&amp;quot;5&amp;quot; &amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT45M&amp;quot;&amp;gt;2017-04-01T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;5&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/8PTXyg9si_4&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;4&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyPump™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[BodyPump classes are 59 minutes long and contain eight separate muscle-group specific songs or &amp;quot;tracks&amp;quot; along with an opening warm up track and closing cool-down track. There are also 45-minute and 30-minute class formats. The classes are performed to music using free weights-plates, barbells and an aerobic step. Participants choose their weights based on the exercise and their personal goals. Major muscle groups are worked via series of compound and isolation-based exercises including squats, presses, dead lifts. The focus is towards muscle endurance by moving light weights at high repetitions, what Les Mills calls the Rep Effect.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;3&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;6&amp;quot; VenueId=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;6&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;7&amp;quot; VenueId=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-23T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;6&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/zU_0XrdO3wo&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[CoreStrenght is a very hard workout! Not for beginners.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;3&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;8&amp;quot; VenueId=&amp;quot;6&amp;quot; GroupSize=&amp;quot;10&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT2H&amp;quot;&amp;gt;2017-03-23T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;9&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Comment&amp;gt;&lt;br /&gt;
          &amp;lt;![CDATA[Special challenge!]]&amp;gt;&lt;br /&gt;
        &amp;lt;/Comment&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;9&amp;quot; VenueId=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;8&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;10&amp;quot; VenueId=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-04-05T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;8&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;9&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/ZxTVmpvyUt8&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[Zumba involves dance and aerobic movements performed to energetic music. The choreography incorporates hip-hop, soca, samba, salsa, merengue and mambo. Squats and lunges are also included.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;4&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;11&amp;quot; VenueId=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT55M&amp;quot;&amp;gt;2017-03-26T15:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;12&amp;quot; VenueId=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-28T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;13&amp;quot; VenueId=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/-ZB6XIkfxnQ&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
&amp;lt;/Trainings&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSD ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Skeemifail kontrollib eelnevas andmefailis esitatud andmete vastavust kokkulepitud formaadile, samuti õigete andmetüüpide kasutamist. Alamelemendi id-atribuudi väärtus peab olema iga elemendirühma lõikes unikaalne. Kohustuslike elementide ja atribuutide kõrval on ka mõned (nt kommentaar), mille olemasolu pole alati tarvilik. Teatud puhkudel on piiratud maksimaalset elementide arvu (nt treeningutunni algusaeg). Faili üldine struktuur on kindel, aga alati pole alamelementide järjekord oluline (nt treeninguliigi puhul).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xs:schema attributeFormDefault=&amp;quot;unqualified&amp;quot; elementFormDefault=&amp;quot;qualified&amp;quot; xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xs:element name=&amp;quot;Trainings&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Styles&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Style&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
          &amp;lt;xs:unique name=&amp;quot;UniqueStyleId&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xs:selector xpath=&amp;quot;Style&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Instructors&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;Name&amp;quot; type=&amp;quot;xs:string&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:attribute name=&amp;quot;Rating&amp;quot; type=&amp;quot;xs:decimal&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
          &amp;lt;xs:unique name=&amp;quot;UniqueInstructorId&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xs:selector xpath=&amp;quot;Instructor&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Venues&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Venue&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:attribute name=&amp;quot;GroupSize&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
          &amp;lt;xs:unique name=&amp;quot;UniqueVenueId&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xs:selector xpath=&amp;quot;Venue&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Training&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:all&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Description&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Styles&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Style&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Schedule&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;ScheduleItem&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:all&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element  maxOccurs=&amp;quot;1&amp;quot; name=&amp;quot;Time&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:extension base=&amp;quot;xs:dateTime&amp;quot;&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:attribute name=&amp;quot;Duration&amp;quot; type=&amp;quot;xs:duration&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element name=&amp;quot;Instructors&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                    &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                                      &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                                        &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                                      &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                                    &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                                  &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; name=&amp;quot;Comment&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:all&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;VenueId&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;GroupSize&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;optional&amp;quot; /&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;VideoUrl&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:all&amp;gt;&lt;br /&gt;
            &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xs:attribute name=&amp;quot;Licence&amp;quot; type=&amp;quot;xs:string&amp;quot; use=&amp;quot;optional&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
    &amp;lt;xs:unique name=&amp;quot;UniqueTrainingId&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xs:selector xpath=&amp;quot;Training&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
    &amp;lt;xs:unique name=&amp;quot;UniqueScheduleItemId&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xs:selector xpath=&amp;quot;Training/Schedule/ScheduleItem&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSLT (html) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Selles transformatsioonifailis on kirjeldatud XML failis olevate andmete [http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/trainings.xml  kuvamise viis veebilehel]. Treeninguliigid on jaotatud stiiliblokkidesse (mõni treening kuulub mitme stiili alla). Iga treeninguliigi all on tabeli kujul esitatud tunniplaan ning lisatud näidisvideo ja kirjeldus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot; xmlns:msxsl=&amp;quot;urn:schemas-microsoft-com:xslt&amp;quot; exclude-result-prefixes=&amp;quot;msxsl&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:output method=&amp;quot;html&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;html&amp;gt;&lt;br /&gt;
      &amp;lt;head&amp;gt;&lt;br /&gt;
        &amp;lt;title&amp;gt;SuperSportsClub - Trainings&amp;lt;/title&amp;gt;&lt;br /&gt;
        &amp;lt;style&amp;gt;&lt;br /&gt;
          body {&lt;br /&gt;
          background:BurlyWood;&lt;br /&gt;
          text-align: center;&lt;br /&gt;
          }&lt;br /&gt;
          .section {&lt;br /&gt;
          text-align:left;&lt;br /&gt;
          width:1000px;&lt;br /&gt;
          padding:20px;&lt;br /&gt;
          background:Chocolate;&lt;br /&gt;
          margin: auto;&lt;br /&gt;
          }&lt;br /&gt;
          table, th, td, .section {&lt;br /&gt;
          border: 1px solid black;&lt;br /&gt;
          }&lt;br /&gt;
          th {&lt;br /&gt;
          text-align:left;&lt;br /&gt;
          padding-left: 10px;&lt;br /&gt;
          padding-right: 10px;&lt;br /&gt;
          }&lt;br /&gt;
          td {&lt;br /&gt;
          text-align:center;&lt;br /&gt;
          }&lt;br /&gt;
          p {&lt;br /&gt;
          text-align:justify;&lt;br /&gt;
          }&lt;br /&gt;
          .description {&lt;br /&gt;
          vertical-align:top; &lt;br /&gt;
          padding:10px;&lt;br /&gt;
          }&lt;br /&gt;
        &amp;lt;/style&amp;gt;&lt;br /&gt;
      &amp;lt;/head&amp;gt;&lt;br /&gt;
      &amp;lt;body&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;Trainings at SuperSportsClub&amp;lt;/h1&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;/Trainings/Styles/Style&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:sort select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:variable select=&amp;quot;.&amp;quot; name=&amp;quot;SelectedStyle&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;section&amp;quot; &amp;gt;&lt;br /&gt;
            &amp;lt;h2&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select=&amp;quot;$SelectedStyle&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/h2&amp;gt;&lt;br /&gt;
            &amp;lt;ul&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:for-each select=&amp;quot;/Trainings/Training&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:sort select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:variable name=&amp;quot;Training&amp;quot; select=&amp;quot;.&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:if test=&amp;quot;Styles/Style/@Id = $SelectedStyle/@Id&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;&lt;br /&gt;
                    &amp;lt;h3&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;$Training/Name&amp;quot; /&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:if test=&amp;quot;$Training/@Licence&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:text&amp;gt; (&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:value-of select=&amp;quot;$Training/@Licence&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:text&amp;gt;)&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
                    &amp;lt;/h3&amp;gt;&lt;br /&gt;
                    &amp;lt;table&amp;gt;&lt;br /&gt;
                      &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                      &amp;lt;/tr&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:for-each select=&amp;quot;$Training/Schedule/ScheduleItem&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:sort select=&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:variable name=&amp;quot;StartTime&amp;quot; select=&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:variable name=&amp;quot;Duration&amp;quot; select=&amp;quot;$StartTime/@Duration&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;tr&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;150&amp;quot; &amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;concat(&lt;br /&gt;
                                            substring($StartTime, 9, 2), &lt;br /&gt;
                                            &#039;.&#039;, &lt;br /&gt;
                                            substring($StartTime, 6, 2), &lt;br /&gt;
                                            &#039;.&#039;, &lt;br /&gt;
                                            substring($StartTime, 1, 4),&lt;br /&gt;
                                            &#039; &#039;,&lt;br /&gt;
                                            substring($StartTime, 12, 2),&lt;br /&gt;
                                            &#039;:&#039;,&lt;br /&gt;
                                            substring($StartTime, 15, 2))&lt;br /&gt;
                                            &amp;quot; /&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:if test=&amp;quot;Comment&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;br/&amp;gt;&lt;br /&gt;
                              &amp;lt;div style=&amp;quot;color:Green&amp;quot;&amp;gt;&lt;br /&gt;
                                &amp;lt;xsl:value-of select=&amp;quot;Comment&amp;quot;/&amp;gt;&lt;br /&gt;
                              &amp;lt;/div&amp;gt;&lt;br /&gt;
                            &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;substring($Duration, 3, 6)&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:variable name=&amp;quot;VenueId&amp;quot; select=&amp;quot;@VenueId&amp;quot;/&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;/Trainings/Venues/Venue[@Id=$VenueId]&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:for-each select=&amp;quot;Instructors/Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:variable name=&amp;quot;InstructorId&amp;quot; select=&amp;quot;@Id&amp;quot;&amp;gt;&amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:variable name=&amp;quot;SelectedInstructor&amp;quot; select=&amp;quot;/Trainings/Instructors/Instructor[@Id=$InstructorId]&amp;quot; /&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/Name&amp;quot;/&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:text&amp;gt; (&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/@Rating&amp;quot; /&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:text&amp;gt;)&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                              &amp;lt;br/&amp;gt;&lt;br /&gt;
                            &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;/tr&amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
                    &amp;lt;/table&amp;gt;&lt;br /&gt;
                    &amp;lt;br/&amp;gt;&lt;br /&gt;
                    &amp;lt;table&amp;gt;&lt;br /&gt;
                      &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                          &amp;lt;xsl:variable name=&amp;quot;VideoUrl&amp;quot; select=&amp;quot;$Training/VideoUrl&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;{$VideoUrl}&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                          &amp;lt;p&amp;gt;&lt;br /&gt;
                            &amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&lt;br /&gt;
                          &amp;lt;/p&amp;gt;&lt;br /&gt;
                          &amp;lt;p&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;$Training/Description&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                      &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;/table&amp;gt;&lt;br /&gt;
                  &amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
            &amp;lt;/ul&amp;gt;&lt;br /&gt;
          &amp;lt;/div&amp;gt;&lt;br /&gt;
          &amp;lt;br/&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
      &amp;lt;/body&amp;gt;&lt;br /&gt;
    &amp;lt;/html&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== HTML (transformeeritud) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/trainings.html Vaata eelneva transformatsiooni tulemust.]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;META http-equiv=&amp;quot;Content-Type&amp;quot; content=&amp;quot;text/html; charset=utf-8&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;SuperSportsClub - Trainings&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;style&amp;gt;&lt;br /&gt;
        body {&lt;br /&gt;
            background: BurlyWood;&lt;br /&gt;
            text-align: center;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        .section {&lt;br /&gt;
            text-align: left;&lt;br /&gt;
            width: 1000px;&lt;br /&gt;
            padding: 20px;&lt;br /&gt;
            background: Chocolate;&lt;br /&gt;
            margin: auto;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        table, th, td, .section {&lt;br /&gt;
            border: 1px solid black;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        th {&lt;br /&gt;
            text-align: left;&lt;br /&gt;
            padding-left: 10px;&lt;br /&gt;
            padding-right: 10px;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        td {&lt;br /&gt;
            text-align: center;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        p {&lt;br /&gt;
            text-align: justify;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        .description {&lt;br /&gt;
            vertical-align: top;&lt;br /&gt;
            padding: 10px;&lt;br /&gt;
        }&lt;br /&gt;
    &amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
    &amp;lt;h1&amp;gt;Trainings at SuperSportsClub&amp;lt;/h1&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Body&amp;amp;amp;Mind&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyBalance™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 13:30&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;1H15M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 2&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Minnie Mouse (4.6)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;31.03.2017 12:15&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;1H15M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 3&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Mickey Mouse (4.7)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/jJxA6vBjUqY&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                BODYBALANCE™ is the Yoga, Tai Chi, Pilates workout that builds flexibility and strength and leaves you feeling centered and calm. Based on a carefully structured series of stretches, moves and poses to music it creates a holistic workout that brings the body into a state of harmony and balance. This class will heighten your flexibility and inner strength creating a strong supple body from the inside out. Burn on average 390cals per hour.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;Yoga&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;25.03.2017 14:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Yoga Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Minnie Yogafier (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
                            28.03.2017 14:00&amp;lt;br&amp;gt;&amp;lt;div style=&amp;quot;color:Green&amp;quot;&amp;gt;&lt;br /&gt;
                                Special class!&lt;br /&gt;
                            &amp;lt;/div&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;1H20M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Yoga Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Minnie Yogafier (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/Nvlxn0EnmbM&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                Yoga is a group of physical, mental, and spiritual practices or disciplines which originated in ancient India.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Cardio&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyJam™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 16:10&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 3&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Donald Duck (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;01.04.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;45M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 5&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Goofy (3.9)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/8PTXyg9si_4&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                The Body Jam program is an addictive fusion of the latest dance styles to the hottest new sounds. This class isn’t just for dancers, it’s for everyone because the emphasis is put on not only having fun but also breaking a sweat. So grab a friend, get front and centre … you bring the attitude and we’ll bring the moves!&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Dance&amp;amp;amp;Fun&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyJam™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 16:10&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 3&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Donald Duck (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;01.04.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;45M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 5&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Goofy (3.9)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/8PTXyg9si_4&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                The Body Jam program is an addictive fusion of the latest dance styles to the hottest new sounds. This class isn’t just for dancers, it’s for everyone because the emphasis is put on not only having fun but also breaking a sweat. So grab a friend, get front and centre … you bring the attitude and we’ll bring the moves!&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;Zumba®&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;26.03.2017 15:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;55M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 2&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Zumbaschnegger (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;28.03.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 4&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Zumbaschnegger (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 2&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Zumbaschnegger (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/-ZB6XIkfxnQ&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                Zumba involves dance and aerobic movements performed to energetic music. The choreography incorporates hip-hop, soca, samba, salsa, merengue and mambo. Squats and lunges are also included.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Strength&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyPump™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;23.03.2017 13:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Main Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Schwarzenegger (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 13:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Main Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Schwarzenegger (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/zU_0XrdO3wo&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                BodyPump classes are 59 minutes long and contain eight separate muscle-group specific songs or &amp;quot;tracks&amp;quot; along with an opening warm up track and closing cool-down track. There are also 45-minute and 30-minute class formats. The classes are performed to music using free weights-plates, barbells and an aerobic step. Participants choose their weights based on the exercise and their personal goals. Major muscle groups are worked via series of compound and isolation-based exercises including squats, presses, dead lifts. The focus is towards muscle endurance by moving light weights at high repetitions, what Les Mills calls the Rep Effect.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;CoreStrength&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
                            23.03.2017 12:00&amp;lt;br&amp;gt;&amp;lt;div style=&amp;quot;color:Green&amp;quot;&amp;gt;&lt;br /&gt;
                                Special challenge!&lt;br /&gt;
                            &amp;lt;/div&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;2H&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Area 6&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Margaret Strengthener (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Area 6&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Kayla Weightlifter (4.8)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;05.04.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Area 6&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Kayla Weightlifter (4.8)&amp;lt;br&amp;gt;Margaret Strengthener (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/ZxTVmpvyUt8&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                CoreStrenght is a very hard workout! Not for beginners.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSLT (xml) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Selle transformatsiooniga luuakse uus [http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/schedule.xml XML fail], milles on treeningute andmed esitatud ühtse tunniplaani kujul. Algses failis erinevate elementide alla paigutatud andmed on nüüd tunniplaani alamelemendis kokku viidud. Sidumine on teostatud id-atribuutide abil. Tunniplaanis on ühes kohas kirjas treeningu nimi, stiil(id), koht, algusaeg, kestus, rühma suurus, instruktorid ja muu täiendav info.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&lt;br /&gt;
    xmlns:msxsl=&amp;quot;urn:schemas-microsoft-com:xslt&amp;quot; exclude-result-prefixes=&amp;quot;msxsl&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:output method=&amp;quot;xml&amp;quot; indent=&amp;quot;yes&amp;quot; cdata-section-elements=&amp;quot;Name Style Comment&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;/Trainings/Training&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:sort select=&amp;quot;Name&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:variable name=&amp;quot;SelectedTraining&amp;quot; select=&amp;quot;.&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;Schedule/ScheduleItem&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:sort select=&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;ScheduleItem&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:variable name=&amp;quot;VenueId&amp;quot; select=&amp;quot;@VenueId&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:variable name=&amp;quot;SelectedVenue&amp;quot; select=&amp;quot;/Trainings/Venues/Venue[@Id=$VenueId]&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:attribute name=&amp;quot;GroupSize&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;@GroupSize&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:value-of select=&amp;quot;@GroupSize&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:value-of select=&amp;quot;$SelectedVenue/@GroupSize&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
            &amp;lt;Venue&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$VenueId&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select=&amp;quot;$SelectedVenue&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/Venue&amp;gt;&lt;br /&gt;
            &amp;lt;Training&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$SelectedTraining/@Id&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:if test=&amp;quot;$SelectedTraining/@Licence&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:attribute name=&amp;quot;Licence&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:value-of select=&amp;quot;$SelectedTraining/@Licence&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
              &amp;lt;Name&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$SelectedTraining/Name&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/Name&amp;gt;&lt;br /&gt;
              &amp;lt;Styles&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:for-each select=&amp;quot;$SelectedTraining/Styles/Style&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:variable name=&amp;quot;StyleId&amp;quot; select=&amp;quot;@Id&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;Style&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:attribute name=&amp;quot;StyleId&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;$StyleId&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;/Trainings/Styles/Style[@Id=$StyleId]&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/Style&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
              &amp;lt;/Styles&amp;gt;&lt;br /&gt;
            &amp;lt;/Training&amp;gt;&lt;br /&gt;
            &amp;lt;Time&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:attribute name=&amp;quot;Duration&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;Time/@Duration&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select =&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/Time&amp;gt;&lt;br /&gt;
            &amp;lt;Instructors&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:for-each select=&amp;quot;Instructors/Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:variable name=&amp;quot;InstructorId&amp;quot; select=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:variable name=&amp;quot;SelectedInstructor&amp;quot; select=&amp;quot;/Trainings/Instructors/Instructor[@Id=$InstructorId]&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;Instructor&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;$InstructorId&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:attribute name=&amp;quot;Rating&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/@Rating&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                  &amp;lt;Name&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/Name&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/Name&amp;gt;&lt;br /&gt;
                &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
            &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:if test=&amp;quot;Comment&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;Comment&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;Comment&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/Comment&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
          &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XML (transformeeritud) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/schedule.xml Vaata eelneva transformatsiooni tulemust.]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Schedule&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;3&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot;&amp;gt;Hall 2&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;2&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyBalance™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-30T13:30:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;3&amp;quot; Rating=&amp;quot;4.6&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;2&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;3&amp;quot;&amp;gt;Hall 3&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;2&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyBalance™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-31T12:15:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;2&amp;quot; Rating=&amp;quot;4.7&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Mickey Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;4&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;3&amp;quot;&amp;gt;Hall 3&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;3&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyJam™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;![CDATA[Cardio]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T16:10:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;4&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Donald Duck]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;5&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;5&amp;quot;&amp;gt;Hall 5&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;3&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyJam™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;![CDATA[Cardio]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT45M&amp;quot;&amp;gt;2017-04-01T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;5&amp;quot; Rating=&amp;quot;3.9&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Goofy]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;7&amp;quot; GroupSize=&amp;quot;45&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;1&amp;quot;&amp;gt;Main Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;4&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyPump™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-23T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;6&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Schwarzenegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;6&amp;quot; GroupSize=&amp;quot;45&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;1&amp;quot;&amp;gt;Main Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;4&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyPump™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;6&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Schwarzenegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;8&amp;quot; GroupSize=&amp;quot;10&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot;&amp;gt;Area 6&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT2H&amp;quot;&amp;gt;2017-03-23T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;9&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Margaret Strengthener]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
    &amp;lt;Comment&amp;gt;&amp;lt;![CDATA[&lt;br /&gt;
          Special challenge!&lt;br /&gt;
        ]]&amp;gt;&amp;lt;/Comment&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;9&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot;&amp;gt;Area 6&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;8&amp;quot; Rating=&amp;quot;4.8&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Kayla Weightlifter]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;10&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot;&amp;gt;Area 6&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-04-05T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;8&amp;quot; Rating=&amp;quot;4.8&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Kayla Weightlifter]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;9&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Margaret Strengthener]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;11&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot;&amp;gt;Hall 2&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT55M&amp;quot;&amp;gt;2017-03-26T15:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;12&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;4&amp;quot;&amp;gt;Hall 4&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-28T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;13&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot;&amp;gt;Hall 2&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;1&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;7&amp;quot;&amp;gt;Yoga Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Yoga]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-25T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;1&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Yogafier]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;14&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;7&amp;quot;&amp;gt;Yoga Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Yoga]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT1H20M&amp;quot;&amp;gt;2017-03-28T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;1&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Yogafier]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
    &amp;lt;Comment&amp;gt;&amp;lt;![CDATA[&lt;br /&gt;
          Special class!&lt;br /&gt;
        ]]&amp;gt;&amp;lt;/Comment&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
&amp;lt;/Schedule&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus ==&lt;br /&gt;
Angular JS &#039;&#039;single page application&#039;&#039; eelnevalt kirjeldatud veebiteenusele. Sisse logimata saab kuvada spordiklubi tunniplaani nädalate kaupa, treeninguliike stiilide kaupa ja treenereid. Võimalik on liituda teenusega ja registreeruda treeningutele, samuti registreeringuid tühistada nii otse tunniplaanist kui ka registreeringute lehel. Esialgu põhineb süsteem ühel spordiklubil. Kasutamise eelduseks on tunniplaani olemasolu andmebaasis.&lt;br /&gt;
&lt;br /&gt;
Autentimine on lahendatud tokenipõhiselt. Eeskuju ja põhjana kasutasime näidisrakendust, mille juhend ja lähtekood on leitav [http://bitoftech.net/2014/06/09/angularjs-token-authentication-using-asp-net-web-api-2-owin-asp-net-identity/ siit].&lt;br /&gt;
&lt;br /&gt;
== Lähtekood ==&lt;br /&gt;
Eksamiks valminud veebiteenuse ja klientrakenduse kokkupakitult allalaadimiseks klõpsa [https://drive.google.com/open?id=0B84njRSbVLUtTWx5ZkZsdDBJZDQ sellel lingil]. WebApi ja Angular JS klient on eraldi lahendustes. Kliendi testimiseks brauseris (Chrome, Firefox vm) tuleb eelnevalt käivitada ka veebiteenus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;NB! Võib juhtuda, et WebApi esmakordsel käivitamisel loodavasse andmebaasi kõiki andmeid (tunniplaani ja registreerimisi jooksvasse nädalasse) ei lisandu. Sellisel juhul kustuta tekkinud andmebaas ja käivita kõigepealt samas lahenduses olev konsoolirakendus.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Retsensioonid ==&lt;br /&gt;
&lt;br /&gt;
# [https://wiki.itcollege.ee/index.php/Talk:JRT JRT meeskonna XML/XSD/XSLT retsensioon ]&lt;br /&gt;
# [https://wiki.itcollege.ee/index.php/Talk:JRT JRT meeskonna veebiteenuse retsensioon ]&lt;br /&gt;
# [https://wiki.itcollege.ee/index.php/Talk:JRT#Hinnang_meeskonna_JRT_esitatud_klientrakendusele JRT meeskonna klientrakenduse retsensioon ]&lt;br /&gt;
&lt;br /&gt;
== Log ==&lt;br /&gt;
* 03.03.17 Esimene kohtumine. Idee.&lt;br /&gt;
* 17.03.17 Osa XMList valmis, osa XSLT-st valmis.&lt;br /&gt;
* 18.03.17 Teine kohtumine. XMLi täiendamine, esimene ülekäimine XSD-s.&lt;br /&gt;
* 19.03.17 XML/XSLT/XSD täiendamine ja lõpetamine.&lt;br /&gt;
* 20.03.17 XML fail, skeemifail ja stiilifailid esitatud. Projekti esimese etapi lõpp. Kevade algus.&lt;br /&gt;
* 26.03.17 XML/XSLT/XSD retsensioon esitatud.&lt;br /&gt;
* 16.04.17 Veebiteenuse analüüsi koostamine.&lt;br /&gt;
* 17.04.17 Esialgne veebiteenuse analüüs ja kavand valmis.&lt;br /&gt;
* 19.04.17 Alustasime veebiteenusega, koostegemine: Domain, DAL, Interfaces, Repostitories. Testimine konsoolis.&lt;br /&gt;
* 24.04.17 Veebiteenuse koostegemine, 2. kord: Domaini täiendamine.&lt;br /&gt;
* 29.04.17 Veebiteenuse koostegemine, 3. kord: Interfaces, Repositories, Factory + UOW. Testimine konsoolis.&lt;br /&gt;
* 01.05.17 Andmebaasi täitmine testandmetega varasemas faasis loodud XML failist.&lt;br /&gt;
* 02.05.17 Veebiteenuse koostegemine, 4. kord: alustasime BLi ja WebApi ehitamist. GET päringud.&lt;br /&gt;
* 09.05.17 Veebiteenuse koostegemine, 5. kord: lisasime Identity.&lt;br /&gt;
* 11.05.17 Veebiteenuse koostegemine, 6. kord: WebApi arendamine. POST, PUT ja DELETE päringud.&lt;br /&gt;
* 15.05.17 Veebiteenuse koostegemine, 7. kord: WebApi arendamine. Lisasime  api kontrollereid.&lt;br /&gt;
* 16.05.17 Veebiteenuse koostegemine, 8. kord: WebApi arendamine. Identity kontroll Fiddleri ja Postmaniga.&lt;br /&gt;
* 20.05.17 Klientrakenduse koostegemine, 1. kord. Testklient.&lt;br /&gt;
* 25.05.17 Klientrakenduse koostegemine, 2. kord. Klientrakenduse arendamine.&lt;br /&gt;
* 01.06.17 Klientrakenduse koostegemine, 3. kord. Klientrakenduse arendamine. Angular JS.&lt;br /&gt;
* 03.06.17 - 11.06.17 Klientrakenduse arendamine. Tokenipõhine autentimine. Veebiteenuse viimistlemine.&lt;br /&gt;
* 11.06.17 Lõpptähtaeg. Projekti esitlemine eksamil.&lt;br /&gt;
* 12.06.17 Teiste lahenduste retsenseerimine.&lt;/div&gt;</summary>
		<author><name>Otiks</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Team_SPOT&amp;diff=123571</id>
		<title>Team SPOT</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Team_SPOT&amp;diff=123571"/>
		<updated>2017-06-13T20:25:35Z</updated>

		<summary type="html">&lt;p&gt;Otiks: /* Retsensioonid */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://wiki.itcollege.ee/index.php/Kodut%C3%B6%C3%B6_aines_%22V%C3%B5rgurakendused_II:_hajuss%C3%BCsteemide_ehitamine%22_2017 Kodutöö aines &amp;quot;Võrgurakendused II: hajussüsteemide ehitamine&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
[https://projectspot.visualstudio.com/PROJECTSPOT Projekti repositoorium (avaneb ainult liikmetele)]&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==Liikmed==&lt;br /&gt;
*Sigrid Pachel&lt;br /&gt;
*Oliver Tiks&lt;br /&gt;
&lt;br /&gt;
==Idee==&lt;br /&gt;
Mõttes on luua spordiklubi(de) veebiteenus ja klientrakendus, mis võimaldaks saada infot pakutavate treeningute kohta, sisestada ja kuvada tunniplaani andmeid, registreerida osalejaid tundidesse ning teha muid asjakohaseid tegevusi nii klubi(de) personalil, liikmetel kui ka juhukasutajatel.&lt;br /&gt;
&lt;br /&gt;
==Veebiteenuse analüüs==&lt;br /&gt;
SPOTi veebiteenus võimaldab saada infot erinevate klubide treeningute kohta ja end neisse registreerida. Kasutaja saab teavet, kus ja millal treeningud toimuvad (tunniplaan), mida treeningus täpsemalt tehakse, mis stiiliga on tegemist, kes on treener, kui palju üks kord maksab jms info. Kasutajakontoga liikmel on võimalik end registreerida soovitud tundi ja hallata oma registreeringuid (muuta, tühistada).&lt;br /&gt;
&lt;br /&gt;
Spordiklubide infot haldavad süsteemi administraatorid, kes saavad lisada, muuta ja kustutada kõike sprodiklubiga seonduvat. Erinevaid treeninguid ja nendega seotud konkreetset infot saavad lisada ja hallata treenerid või spordiklubi esindajad.&lt;br /&gt;
&lt;br /&gt;
Projekti realiseerimiseks kasutame REST arhitektuuri ja ASP.NET MVC Web API tehnoloogiat.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Üldine plaan:&#039;&#039;&#039;&lt;br /&gt;
* esialgu üks kett (laienemise võimalusega)&lt;br /&gt;
* mitu klubi (asukoht, saalid-treeningualad, võimalikud lisatingimused)&lt;br /&gt;
* treeningute info (stiilid ehk kontseptid, litsentsid, …)&lt;br /&gt;
* tunniplaan (aeg, koht, instruktorid, max osalejate arv, ühe korra hind)&lt;br /&gt;
* registratuur (treeningutest osavõtjad)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kasutajad (rollid):&#039;&#039;&#039;&lt;br /&gt;
* administraatorid (saavad teha muudatusi)&lt;br /&gt;
* treenerid (info kvalifikatsiooni, litsentside kohta, õigus treeninguid lisada) &lt;br /&gt;
* liikmed (saavad treeningutele registreeruda)&lt;br /&gt;
* ülejäänud (näevad klubide ja treeningute infot ning tunniplaani)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Peaks olema:&#039;&#039;&#039;&lt;br /&gt;
* kasutajate loomine&lt;br /&gt;
* kasutajate tuvastamine ja haldamine&lt;br /&gt;
* kasutajate ja kasutusstatistika logimine&lt;br /&gt;
* teenuse poole pöördumiste arvu piiramine ja piirangute haldamine&lt;br /&gt;
* klubide, treenerite ja treeningute info väljastamine&lt;br /&gt;
* tunniplaani info väljastamine&lt;br /&gt;
* treeningutesse registreerimine&lt;br /&gt;
* registreeringu tühistamine&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Võiks olla:&#039;&#039;&#039;&lt;br /&gt;
* klubide, treenerite, treeningute lisamine ja muutmine&lt;br /&gt;
* tunniplaanis treeningute tühistamine&lt;br /&gt;
* sisestatud andmete kustutamine (pehmelt)&lt;br /&gt;
* rollide-õiguste määramine (admin)&lt;br /&gt;
* asukohad mitmes riigis&lt;br /&gt;
* kliendipaketid, arveldus&lt;br /&gt;
* kontaktide tsentraliseeritud haldus&lt;br /&gt;
* sisselogimine läbi Google’i, Facebooki vmt teenuse&lt;br /&gt;
&lt;br /&gt;
===Andmebaasi skeem (lihtsustatud)===&lt;br /&gt;
&lt;br /&gt;
[[File:SPOTService ERD.JPG|border|SPOT Service ERD]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Märkus: olemite atribuutidest on välja toodud ainult peamised.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====Tabelite kirjeldused====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kasutajahaldus*:&#039;&#039;&#039;&lt;br /&gt;
* User - kasutajate andmed&lt;br /&gt;
* Role - rollid, millega määratakse kasutajate õigused (&amp;quot;Admin&amp;quot;, &amp;quot;Trainer&amp;quot;, ...)&lt;br /&gt;
* UserRole - kasutajate sidumine rolli(de)ga&lt;br /&gt;
* UserLogin - muu teenuse kaudu sisselogimiseks&lt;br /&gt;
* UserClaim - muu teenuse kaudu sisselogimiseks&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;&#039;&#039;Kasutajahalduse süsteem toetub Asp.Net Identity valmislahendusele, mida on täiendanud A. Käver.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Klubid:&#039;&#039;&#039;&lt;br /&gt;
* Chain (optional) - spordiklubikettide info&lt;br /&gt;
* Location - spordiklubi/-rajatise asukoht linna/asula täpsusega&lt;br /&gt;
* Facility - spordiklubi/-rajatise andmed, seotud asukohaga ja vajadusel ketiga.&lt;br /&gt;
* Venue - spordiklubis/-rajatises kasutatavad saalid ja muud treeningualad&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Treeningud:&#039;&#039;&#039;&lt;br /&gt;
* Concept (Style) - treeningustiilid ehk kontseptid&lt;br /&gt;
* Licenser (optional) - treeninguliikide litsentsid (kui on)&lt;br /&gt;
* Training - treeninguliikide andmed, seotud stiili ja vajadusel litsentsiga&lt;br /&gt;
* Trainer (User (role: Trainer) + Training) - treeninguliikide sidumine treeneritega&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tunniplaan:&#039;&#039;&#039;&lt;br /&gt;
* ScheduleItem - treeningud tunniplaanis&lt;br /&gt;
* Instructor (User (role: Trainer) + ScheduleItem) - tundide juhendajad (võib olla mitu)&lt;br /&gt;
* Registration (ScheduleItem + User (role: any)) - tundidesse tehtud registreeringud&lt;br /&gt;
&lt;br /&gt;
== XML / XSD / XSLT==&lt;br /&gt;
Projekti esimeses etapis sai loodud XML andmefail, mille ülesehitus on paika pandud XSD skeemifailis. Lisaks on olemas kaks stiilifaili: esimene neist transformeerib andmed HTML-kujule, et kuvada infot  veebilehel, teine tekitab samade andmete esitamiseks uue struktuuriga XML faili.&lt;br /&gt;
&lt;br /&gt;
[https://drive.google.com/open?id=0B84njRSbVLUtd0U4aEJXOUhOTG8 Lae failid alla.] &lt;br /&gt;
&lt;br /&gt;
=== XML ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Fail sisaldab andmeid ühes spordiklubis pakutavate treeningute kohta. Andmed on esitatud treeninguliikide kaupa, mille juurde on lisatud ka vastava treeninguliigi tunniplaan. Treeninguliikidel on nimi ja kirjeldus ning vajadusel ära märgitud ka litsents. Failis on eraldi välja toodud treeningustiilid, instruktorid ja ruumid, kus treeningud toimuvad. Iga treeninguliik kuulub ühe või mitme stiili alla. Instruktoritel on tagasiside põhjal saadud hinne. Treeninguruumidel on vaikimisi määratud mahutavus. Tunniplaanis on ära toodud treeningu koht, algusaeg ja kestus ning instruktorid. Vajadusel saab eraldi määrata ka treeningurühma suuruse, kui see erineb tavalisest ruumi mahutavusest. Ka on võimalik treeningutunnile lisada kommentaar. Erinevate elementide andmed on omavahel seotud id-atribuutidega.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;?xml-stylesheet type=&amp;quot;text/xsl&amp;quot; href=&amp;quot;trainingsToHtml.xslt&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Trainings&amp;gt;&lt;br /&gt;
  &amp;lt;Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;![CDATA[Cardio]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
  &amp;lt;/Styles&amp;gt;&lt;br /&gt;
  &amp;lt;Instructors&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;1&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Yogafier]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;2&amp;quot; Rating=&amp;quot;4.7&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Mickey Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;3&amp;quot; Rating=&amp;quot;4.6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;4&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Donald Duck]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;5&amp;quot; Rating=&amp;quot;3.9&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Goofy]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;6&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Schwarzenegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;8&amp;quot; Rating=&amp;quot;4.8&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Kayla Weightlifter]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;9&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Margaret Strengthener]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
  &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;Venues&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;1&amp;quot; GroupSize=&amp;quot;45&amp;quot;&amp;gt;&amp;lt;![CDATA[Main Hall]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 2]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;3&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 3]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;4&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 4]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;5&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 5]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&amp;lt;![CDATA[Area 6]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;7&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&amp;lt;![CDATA[Yoga Hall]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
  &amp;lt;/Venues&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Yoga]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[Yoga is a group of physical, mental, and spiritual practices or disciplines which originated in ancient India. ]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;1&amp;quot; VenueId=&amp;quot;7&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-25T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;14&amp;quot; VenueId=&amp;quot;7&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT1H20M&amp;quot;&amp;gt;2017-03-28T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Comment&amp;gt;&lt;br /&gt;
          &amp;lt;![CDATA[Special class!]]&amp;gt;&lt;br /&gt;
        &amp;lt;/Comment&amp;gt; &lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/Nvlxn0EnmbM&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;  &lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;2&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyBalance™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[BODYBALANCE™ is the Yoga, Tai Chi, Pilates workout that builds flexibility and strength and leaves you feeling centered and calm. Based on a carefully structured series of stretches, moves and poses to music it creates a holistic workout that brings the body into a state of harmony and balance. This class will heighten your flexibility and inner strength creating a strong supple body from the inside out. Burn on average 390cals per hour.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;2&amp;quot; VenueId=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-31T12:15:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;3&amp;quot; VenueId=&amp;quot;2&amp;quot; &amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-30T13:30:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;3&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/jJxA6vBjUqY&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;3&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyJam™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;4&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[The Body Jam program is an addictive fusion of the latest dance styles to the hottest new sounds. This class isn’t just for dancers, it’s for everyone because the emphasis is put on not only having fun but also breaking a sweat. So grab a friend, get front and centre … you bring the attitude and we’ll bring the moves!]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;4&amp;quot;  VenueId=&amp;quot;3&amp;quot; &amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T16:10:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;4&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;5&amp;quot; VenueId=&amp;quot;5&amp;quot; &amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT45M&amp;quot;&amp;gt;2017-04-01T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;5&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/8PTXyg9si_4&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;4&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyPump™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[BodyPump classes are 59 minutes long and contain eight separate muscle-group specific songs or &amp;quot;tracks&amp;quot; along with an opening warm up track and closing cool-down track. There are also 45-minute and 30-minute class formats. The classes are performed to music using free weights-plates, barbells and an aerobic step. Participants choose their weights based on the exercise and their personal goals. Major muscle groups are worked via series of compound and isolation-based exercises including squats, presses, dead lifts. The focus is towards muscle endurance by moving light weights at high repetitions, what Les Mills calls the Rep Effect.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;3&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;6&amp;quot; VenueId=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;6&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;7&amp;quot; VenueId=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-23T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;6&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/zU_0XrdO3wo&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[CoreStrenght is a very hard workout! Not for beginners.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;3&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;8&amp;quot; VenueId=&amp;quot;6&amp;quot; GroupSize=&amp;quot;10&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT2H&amp;quot;&amp;gt;2017-03-23T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;9&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Comment&amp;gt;&lt;br /&gt;
          &amp;lt;![CDATA[Special challenge!]]&amp;gt;&lt;br /&gt;
        &amp;lt;/Comment&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;9&amp;quot; VenueId=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;8&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;10&amp;quot; VenueId=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-04-05T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;8&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;9&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/ZxTVmpvyUt8&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[Zumba involves dance and aerobic movements performed to energetic music. The choreography incorporates hip-hop, soca, samba, salsa, merengue and mambo. Squats and lunges are also included.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;4&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;11&amp;quot; VenueId=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT55M&amp;quot;&amp;gt;2017-03-26T15:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;12&amp;quot; VenueId=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-28T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;13&amp;quot; VenueId=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/-ZB6XIkfxnQ&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
&amp;lt;/Trainings&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSD ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Skeemifail kontrollib eelnevas andmefailis esitatud andmete vastavust kokkulepitud formaadile, samuti õigete andmetüüpide kasutamist. Alamelemendi id-atribuudi väärtus peab olema iga elemendirühma lõikes unikaalne. Kohustuslike elementide ja atribuutide kõrval on ka mõned (nt kommentaar), mille olemasolu pole alati tarvilik. Teatud puhkudel on piiratud maksimaalset elementide arvu (nt treeningutunni algusaeg). Faili üldine struktuur on kindel, aga alati pole alamelementide järjekord oluline (nt treeninguliigi puhul).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xs:schema attributeFormDefault=&amp;quot;unqualified&amp;quot; elementFormDefault=&amp;quot;qualified&amp;quot; xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xs:element name=&amp;quot;Trainings&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Styles&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Style&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
          &amp;lt;xs:unique name=&amp;quot;UniqueStyleId&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xs:selector xpath=&amp;quot;Style&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Instructors&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;Name&amp;quot; type=&amp;quot;xs:string&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:attribute name=&amp;quot;Rating&amp;quot; type=&amp;quot;xs:decimal&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
          &amp;lt;xs:unique name=&amp;quot;UniqueInstructorId&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xs:selector xpath=&amp;quot;Instructor&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Venues&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Venue&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:attribute name=&amp;quot;GroupSize&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
          &amp;lt;xs:unique name=&amp;quot;UniqueVenueId&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xs:selector xpath=&amp;quot;Venue&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Training&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:all&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Description&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Styles&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Style&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Schedule&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;ScheduleItem&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:all&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element  maxOccurs=&amp;quot;1&amp;quot; name=&amp;quot;Time&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:extension base=&amp;quot;xs:dateTime&amp;quot;&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:attribute name=&amp;quot;Duration&amp;quot; type=&amp;quot;xs:duration&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element name=&amp;quot;Instructors&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                    &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                                      &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                                        &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                                      &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                                    &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                                  &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; name=&amp;quot;Comment&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:all&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;VenueId&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;GroupSize&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;optional&amp;quot; /&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;VideoUrl&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:all&amp;gt;&lt;br /&gt;
            &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xs:attribute name=&amp;quot;Licence&amp;quot; type=&amp;quot;xs:string&amp;quot; use=&amp;quot;optional&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
    &amp;lt;xs:unique name=&amp;quot;UniqueTrainingId&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xs:selector xpath=&amp;quot;Training&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
    &amp;lt;xs:unique name=&amp;quot;UniqueScheduleItemId&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xs:selector xpath=&amp;quot;Training/Schedule/ScheduleItem&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSLT (html) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Selles transformatsioonifailis on kirjeldatud XML failis olevate andmete [http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/trainings.xml  kuvamise viis veebilehel]. Treeninguliigid on jaotatud stiiliblokkidesse (mõni treening kuulub mitme stiili alla). Iga treeninguliigi all on tabeli kujul esitatud tunniplaan ning lisatud näidisvideo ja kirjeldus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot; xmlns:msxsl=&amp;quot;urn:schemas-microsoft-com:xslt&amp;quot; exclude-result-prefixes=&amp;quot;msxsl&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:output method=&amp;quot;html&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;html&amp;gt;&lt;br /&gt;
      &amp;lt;head&amp;gt;&lt;br /&gt;
        &amp;lt;title&amp;gt;SuperSportsClub - Trainings&amp;lt;/title&amp;gt;&lt;br /&gt;
        &amp;lt;style&amp;gt;&lt;br /&gt;
          body {&lt;br /&gt;
          background:BurlyWood;&lt;br /&gt;
          text-align: center;&lt;br /&gt;
          }&lt;br /&gt;
          .section {&lt;br /&gt;
          text-align:left;&lt;br /&gt;
          width:1000px;&lt;br /&gt;
          padding:20px;&lt;br /&gt;
          background:Chocolate;&lt;br /&gt;
          margin: auto;&lt;br /&gt;
          }&lt;br /&gt;
          table, th, td, .section {&lt;br /&gt;
          border: 1px solid black;&lt;br /&gt;
          }&lt;br /&gt;
          th {&lt;br /&gt;
          text-align:left;&lt;br /&gt;
          padding-left: 10px;&lt;br /&gt;
          padding-right: 10px;&lt;br /&gt;
          }&lt;br /&gt;
          td {&lt;br /&gt;
          text-align:center;&lt;br /&gt;
          }&lt;br /&gt;
          p {&lt;br /&gt;
          text-align:justify;&lt;br /&gt;
          }&lt;br /&gt;
          .description {&lt;br /&gt;
          vertical-align:top; &lt;br /&gt;
          padding:10px;&lt;br /&gt;
          }&lt;br /&gt;
        &amp;lt;/style&amp;gt;&lt;br /&gt;
      &amp;lt;/head&amp;gt;&lt;br /&gt;
      &amp;lt;body&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;Trainings at SuperSportsClub&amp;lt;/h1&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;/Trainings/Styles/Style&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:sort select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:variable select=&amp;quot;.&amp;quot; name=&amp;quot;SelectedStyle&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;section&amp;quot; &amp;gt;&lt;br /&gt;
            &amp;lt;h2&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select=&amp;quot;$SelectedStyle&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/h2&amp;gt;&lt;br /&gt;
            &amp;lt;ul&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:for-each select=&amp;quot;/Trainings/Training&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:sort select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:variable name=&amp;quot;Training&amp;quot; select=&amp;quot;.&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:if test=&amp;quot;Styles/Style/@Id = $SelectedStyle/@Id&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;&lt;br /&gt;
                    &amp;lt;h3&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;$Training/Name&amp;quot; /&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:if test=&amp;quot;$Training/@Licence&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:text&amp;gt; (&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:value-of select=&amp;quot;$Training/@Licence&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:text&amp;gt;)&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
                    &amp;lt;/h3&amp;gt;&lt;br /&gt;
                    &amp;lt;table&amp;gt;&lt;br /&gt;
                      &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                      &amp;lt;/tr&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:for-each select=&amp;quot;$Training/Schedule/ScheduleItem&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:sort select=&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:variable name=&amp;quot;StartTime&amp;quot; select=&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:variable name=&amp;quot;Duration&amp;quot; select=&amp;quot;$StartTime/@Duration&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;tr&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;150&amp;quot; &amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;concat(&lt;br /&gt;
                                            substring($StartTime, 9, 2), &lt;br /&gt;
                                            &#039;.&#039;, &lt;br /&gt;
                                            substring($StartTime, 6, 2), &lt;br /&gt;
                                            &#039;.&#039;, &lt;br /&gt;
                                            substring($StartTime, 1, 4),&lt;br /&gt;
                                            &#039; &#039;,&lt;br /&gt;
                                            substring($StartTime, 12, 2),&lt;br /&gt;
                                            &#039;:&#039;,&lt;br /&gt;
                                            substring($StartTime, 15, 2))&lt;br /&gt;
                                            &amp;quot; /&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:if test=&amp;quot;Comment&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;br/&amp;gt;&lt;br /&gt;
                              &amp;lt;div style=&amp;quot;color:Green&amp;quot;&amp;gt;&lt;br /&gt;
                                &amp;lt;xsl:value-of select=&amp;quot;Comment&amp;quot;/&amp;gt;&lt;br /&gt;
                              &amp;lt;/div&amp;gt;&lt;br /&gt;
                            &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;substring($Duration, 3, 6)&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:variable name=&amp;quot;VenueId&amp;quot; select=&amp;quot;@VenueId&amp;quot;/&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;/Trainings/Venues/Venue[@Id=$VenueId]&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:for-each select=&amp;quot;Instructors/Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:variable name=&amp;quot;InstructorId&amp;quot; select=&amp;quot;@Id&amp;quot;&amp;gt;&amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:variable name=&amp;quot;SelectedInstructor&amp;quot; select=&amp;quot;/Trainings/Instructors/Instructor[@Id=$InstructorId]&amp;quot; /&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/Name&amp;quot;/&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:text&amp;gt; (&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/@Rating&amp;quot; /&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:text&amp;gt;)&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                              &amp;lt;br/&amp;gt;&lt;br /&gt;
                            &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;/tr&amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
                    &amp;lt;/table&amp;gt;&lt;br /&gt;
                    &amp;lt;br/&amp;gt;&lt;br /&gt;
                    &amp;lt;table&amp;gt;&lt;br /&gt;
                      &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                          &amp;lt;xsl:variable name=&amp;quot;VideoUrl&amp;quot; select=&amp;quot;$Training/VideoUrl&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;{$VideoUrl}&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                          &amp;lt;p&amp;gt;&lt;br /&gt;
                            &amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&lt;br /&gt;
                          &amp;lt;/p&amp;gt;&lt;br /&gt;
                          &amp;lt;p&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;$Training/Description&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                      &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;/table&amp;gt;&lt;br /&gt;
                  &amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
            &amp;lt;/ul&amp;gt;&lt;br /&gt;
          &amp;lt;/div&amp;gt;&lt;br /&gt;
          &amp;lt;br/&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
      &amp;lt;/body&amp;gt;&lt;br /&gt;
    &amp;lt;/html&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== HTML (transformeeritud) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/trainings.html Vaata eelneva transformatsiooni tulemust.]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;META http-equiv=&amp;quot;Content-Type&amp;quot; content=&amp;quot;text/html; charset=utf-8&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;SuperSportsClub - Trainings&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;style&amp;gt;&lt;br /&gt;
        body {&lt;br /&gt;
            background: BurlyWood;&lt;br /&gt;
            text-align: center;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        .section {&lt;br /&gt;
            text-align: left;&lt;br /&gt;
            width: 1000px;&lt;br /&gt;
            padding: 20px;&lt;br /&gt;
            background: Chocolate;&lt;br /&gt;
            margin: auto;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        table, th, td, .section {&lt;br /&gt;
            border: 1px solid black;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        th {&lt;br /&gt;
            text-align: left;&lt;br /&gt;
            padding-left: 10px;&lt;br /&gt;
            padding-right: 10px;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        td {&lt;br /&gt;
            text-align: center;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        p {&lt;br /&gt;
            text-align: justify;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        .description {&lt;br /&gt;
            vertical-align: top;&lt;br /&gt;
            padding: 10px;&lt;br /&gt;
        }&lt;br /&gt;
    &amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
    &amp;lt;h1&amp;gt;Trainings at SuperSportsClub&amp;lt;/h1&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Body&amp;amp;amp;Mind&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyBalance™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 13:30&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;1H15M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 2&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Minnie Mouse (4.6)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;31.03.2017 12:15&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;1H15M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 3&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Mickey Mouse (4.7)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/jJxA6vBjUqY&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                BODYBALANCE™ is the Yoga, Tai Chi, Pilates workout that builds flexibility and strength and leaves you feeling centered and calm. Based on a carefully structured series of stretches, moves and poses to music it creates a holistic workout that brings the body into a state of harmony and balance. This class will heighten your flexibility and inner strength creating a strong supple body from the inside out. Burn on average 390cals per hour.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;Yoga&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;25.03.2017 14:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Yoga Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Minnie Yogafier (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
                            28.03.2017 14:00&amp;lt;br&amp;gt;&amp;lt;div style=&amp;quot;color:Green&amp;quot;&amp;gt;&lt;br /&gt;
                                Special class!&lt;br /&gt;
                            &amp;lt;/div&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;1H20M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Yoga Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Minnie Yogafier (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/Nvlxn0EnmbM&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                Yoga is a group of physical, mental, and spiritual practices or disciplines which originated in ancient India.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Cardio&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyJam™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 16:10&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 3&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Donald Duck (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;01.04.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;45M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 5&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Goofy (3.9)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/8PTXyg9si_4&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                The Body Jam program is an addictive fusion of the latest dance styles to the hottest new sounds. This class isn’t just for dancers, it’s for everyone because the emphasis is put on not only having fun but also breaking a sweat. So grab a friend, get front and centre … you bring the attitude and we’ll bring the moves!&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Dance&amp;amp;amp;Fun&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyJam™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 16:10&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 3&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Donald Duck (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;01.04.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;45M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 5&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Goofy (3.9)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/8PTXyg9si_4&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                The Body Jam program is an addictive fusion of the latest dance styles to the hottest new sounds. This class isn’t just for dancers, it’s for everyone because the emphasis is put on not only having fun but also breaking a sweat. So grab a friend, get front and centre … you bring the attitude and we’ll bring the moves!&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;Zumba®&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;26.03.2017 15:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;55M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 2&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Zumbaschnegger (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;28.03.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 4&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Zumbaschnegger (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 2&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Zumbaschnegger (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/-ZB6XIkfxnQ&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                Zumba involves dance and aerobic movements performed to energetic music. The choreography incorporates hip-hop, soca, samba, salsa, merengue and mambo. Squats and lunges are also included.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Strength&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyPump™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;23.03.2017 13:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Main Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Schwarzenegger (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 13:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Main Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Schwarzenegger (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/zU_0XrdO3wo&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                BodyPump classes are 59 minutes long and contain eight separate muscle-group specific songs or &amp;quot;tracks&amp;quot; along with an opening warm up track and closing cool-down track. There are also 45-minute and 30-minute class formats. The classes are performed to music using free weights-plates, barbells and an aerobic step. Participants choose their weights based on the exercise and their personal goals. Major muscle groups are worked via series of compound and isolation-based exercises including squats, presses, dead lifts. The focus is towards muscle endurance by moving light weights at high repetitions, what Les Mills calls the Rep Effect.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;CoreStrength&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
                            23.03.2017 12:00&amp;lt;br&amp;gt;&amp;lt;div style=&amp;quot;color:Green&amp;quot;&amp;gt;&lt;br /&gt;
                                Special challenge!&lt;br /&gt;
                            &amp;lt;/div&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;2H&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Area 6&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Margaret Strengthener (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Area 6&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Kayla Weightlifter (4.8)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;05.04.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Area 6&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Kayla Weightlifter (4.8)&amp;lt;br&amp;gt;Margaret Strengthener (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/ZxTVmpvyUt8&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                CoreStrenght is a very hard workout! Not for beginners.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSLT (xml) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Selle transformatsiooniga luuakse uus [http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/schedule.xml XML fail], milles on treeningute andmed esitatud ühtse tunniplaani kujul. Algses failis erinevate elementide alla paigutatud andmed on nüüd tunniplaani alamelemendis kokku viidud. Sidumine on teostatud id-atribuutide abil. Tunniplaanis on ühes kohas kirjas treeningu nimi, stiil(id), koht, algusaeg, kestus, rühma suurus, instruktorid ja muu täiendav info.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&lt;br /&gt;
    xmlns:msxsl=&amp;quot;urn:schemas-microsoft-com:xslt&amp;quot; exclude-result-prefixes=&amp;quot;msxsl&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:output method=&amp;quot;xml&amp;quot; indent=&amp;quot;yes&amp;quot; cdata-section-elements=&amp;quot;Name Style Comment&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;/Trainings/Training&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:sort select=&amp;quot;Name&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:variable name=&amp;quot;SelectedTraining&amp;quot; select=&amp;quot;.&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;Schedule/ScheduleItem&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:sort select=&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;ScheduleItem&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:variable name=&amp;quot;VenueId&amp;quot; select=&amp;quot;@VenueId&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:variable name=&amp;quot;SelectedVenue&amp;quot; select=&amp;quot;/Trainings/Venues/Venue[@Id=$VenueId]&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:attribute name=&amp;quot;GroupSize&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;@GroupSize&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:value-of select=&amp;quot;@GroupSize&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:value-of select=&amp;quot;$SelectedVenue/@GroupSize&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
            &amp;lt;Venue&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$VenueId&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select=&amp;quot;$SelectedVenue&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/Venue&amp;gt;&lt;br /&gt;
            &amp;lt;Training&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$SelectedTraining/@Id&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:if test=&amp;quot;$SelectedTraining/@Licence&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:attribute name=&amp;quot;Licence&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:value-of select=&amp;quot;$SelectedTraining/@Licence&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
              &amp;lt;Name&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$SelectedTraining/Name&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/Name&amp;gt;&lt;br /&gt;
              &amp;lt;Styles&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:for-each select=&amp;quot;$SelectedTraining/Styles/Style&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:variable name=&amp;quot;StyleId&amp;quot; select=&amp;quot;@Id&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;Style&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:attribute name=&amp;quot;StyleId&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;$StyleId&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;/Trainings/Styles/Style[@Id=$StyleId]&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/Style&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
              &amp;lt;/Styles&amp;gt;&lt;br /&gt;
            &amp;lt;/Training&amp;gt;&lt;br /&gt;
            &amp;lt;Time&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:attribute name=&amp;quot;Duration&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;Time/@Duration&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select =&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/Time&amp;gt;&lt;br /&gt;
            &amp;lt;Instructors&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:for-each select=&amp;quot;Instructors/Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:variable name=&amp;quot;InstructorId&amp;quot; select=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:variable name=&amp;quot;SelectedInstructor&amp;quot; select=&amp;quot;/Trainings/Instructors/Instructor[@Id=$InstructorId]&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;Instructor&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;$InstructorId&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:attribute name=&amp;quot;Rating&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/@Rating&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                  &amp;lt;Name&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/Name&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/Name&amp;gt;&lt;br /&gt;
                &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
            &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:if test=&amp;quot;Comment&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;Comment&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;Comment&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/Comment&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
          &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XML (transformeeritud) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/schedule.xml Vaata eelneva transformatsiooni tulemust.]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Schedule&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;3&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot;&amp;gt;Hall 2&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;2&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyBalance™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-30T13:30:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;3&amp;quot; Rating=&amp;quot;4.6&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;2&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;3&amp;quot;&amp;gt;Hall 3&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;2&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyBalance™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-31T12:15:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;2&amp;quot; Rating=&amp;quot;4.7&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Mickey Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;4&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;3&amp;quot;&amp;gt;Hall 3&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;3&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyJam™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;![CDATA[Cardio]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T16:10:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;4&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Donald Duck]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;5&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;5&amp;quot;&amp;gt;Hall 5&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;3&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyJam™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;![CDATA[Cardio]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT45M&amp;quot;&amp;gt;2017-04-01T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;5&amp;quot; Rating=&amp;quot;3.9&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Goofy]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;7&amp;quot; GroupSize=&amp;quot;45&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;1&amp;quot;&amp;gt;Main Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;4&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyPump™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-23T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;6&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Schwarzenegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;6&amp;quot; GroupSize=&amp;quot;45&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;1&amp;quot;&amp;gt;Main Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;4&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyPump™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;6&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Schwarzenegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;8&amp;quot; GroupSize=&amp;quot;10&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot;&amp;gt;Area 6&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT2H&amp;quot;&amp;gt;2017-03-23T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;9&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Margaret Strengthener]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
    &amp;lt;Comment&amp;gt;&amp;lt;![CDATA[&lt;br /&gt;
          Special challenge!&lt;br /&gt;
        ]]&amp;gt;&amp;lt;/Comment&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;9&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot;&amp;gt;Area 6&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;8&amp;quot; Rating=&amp;quot;4.8&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Kayla Weightlifter]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;10&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot;&amp;gt;Area 6&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-04-05T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;8&amp;quot; Rating=&amp;quot;4.8&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Kayla Weightlifter]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;9&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Margaret Strengthener]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;11&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot;&amp;gt;Hall 2&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT55M&amp;quot;&amp;gt;2017-03-26T15:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;12&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;4&amp;quot;&amp;gt;Hall 4&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-28T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;13&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot;&amp;gt;Hall 2&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;1&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;7&amp;quot;&amp;gt;Yoga Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Yoga]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-25T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;1&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Yogafier]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;14&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;7&amp;quot;&amp;gt;Yoga Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Yoga]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT1H20M&amp;quot;&amp;gt;2017-03-28T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;1&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Yogafier]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
    &amp;lt;Comment&amp;gt;&amp;lt;![CDATA[&lt;br /&gt;
          Special class!&lt;br /&gt;
        ]]&amp;gt;&amp;lt;/Comment&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
&amp;lt;/Schedule&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus ==&lt;br /&gt;
Angular JS &#039;&#039;single page application&#039;&#039; eelnevalt kirjeldatud veebiteenusele. Sisse logimata saab kuvada spordiklubi tunniplaani nädalate kaupa, treeninguliike stiilide kaupa ja treenereid. Võimalik on liituda teenusega ja registreeruda treeningutele, samuti registreeringuid tühistada nii otse tunniplaanist kui ka registreeringute lehel. Esialgu põhineb süsteem ühel spordiklubil. Kasutamise eelduseks on tunniplaani olemasolu andmebaasis.&lt;br /&gt;
&lt;br /&gt;
Autentimine on lahendatud tokenipõhiselt. Eeskuju ja põhjana kasutasime näidisrakendust, mille juhend ja lähtekood on leitav [http://bitoftech.net/2014/06/09/angularjs-token-authentication-using-asp-net-web-api-2-owin-asp-net-identity/ siit].&lt;br /&gt;
&lt;br /&gt;
== Lähtekood ==&lt;br /&gt;
Eksamiks valminud veebiteenuse ja klientrakenduse kokkupakitult allalaadimiseks klõpsa [https://drive.google.com/open?id=0B84njRSbVLUtTWx5ZkZsdDBJZDQ sellel lingil]. WebApi ja Angular JS klient on eraldi lahendustes. Kliendi testimiseks brauseris (Chrome, Firefox vm) tuleb eelnevalt käivitada ka veebiteenus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;NB! Võib juhtuda, et WebApi esmakordsel käivitamisel loodavasse andmebaasi kõiki andmeid (tunniplaani ja registreerimisi jooksvasse nädalasse) ei lisandu. Sellisel juhul kustuta tekkinud andmebaas ja käivita kõigepealt samas lahenduses olev konsoolirakendus.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Retsensioonid ==&lt;br /&gt;
&lt;br /&gt;
# [https://wiki.itcollege.ee/index.php/Talk:JRT JRT meeskonna XML/XSD/XSLT retsensioon ]&lt;br /&gt;
# [https://wiki.itcollege.ee/index.php/Talk:JRT JRT meeskonna veebiteenuse retsensioon ]&lt;br /&gt;
# [https://wiki.itcollege.ee/index.php/Talk:JRT JRT meeskonna klientrakenduse retsensioon ]&lt;br /&gt;
&lt;br /&gt;
== Log ==&lt;br /&gt;
* 03.03.17 Esimene kohtumine. Idee.&lt;br /&gt;
* 17.03.17 Osa XMList valmis, osa XSLT-st valmis.&lt;br /&gt;
* 18.03.17 Teine kohtumine. XMLi täiendamine, esimene ülekäimine XSD-s.&lt;br /&gt;
* 19.03.17 XML/XSLT/XSD täiendamine ja lõpetamine.&lt;br /&gt;
* 20.03.17 XML fail, skeemifail ja stiilifailid esitatud. Projekti esimese etapi lõpp. Kevade algus.&lt;br /&gt;
* 26.03.17 XML/XSLT/XSD retsensioon esitatud.&lt;br /&gt;
* 16.04.17 Veebiteenuse analüüsi koostamine.&lt;br /&gt;
* 17.04.17 Esialgne veebiteenuse analüüs ja kavand valmis.&lt;br /&gt;
* 19.04.17 Alustasime veebiteenusega, koostegemine: Domain, DAL, Interfaces, Repostitories. Testimine konsoolis.&lt;br /&gt;
* 24.04.17 Veebiteenuse koostegemine, 2. kord: Domaini täiendamine.&lt;br /&gt;
* 29.04.17 Veebiteenuse koostegemine, 3. kord: Interfaces, Repositories, Factory + UOW. Testimine konsoolis.&lt;br /&gt;
* 01.05.17 Andmebaasi täitmine testandmetega varasemas faasis loodud XML failist.&lt;br /&gt;
* 02.05.17 Veebiteenuse koostegemine, 4. kord: alustasime BLi ja WebApi ehitamist. GET päringud.&lt;br /&gt;
* 09.05.17 Veebiteenuse koostegemine, 5. kord: lisasime Identity.&lt;br /&gt;
* 11.05.17 Veebiteenuse koostegemine, 6. kord: WebApi arendamine. POST, PUT ja DELETE päringud.&lt;br /&gt;
* 15.05.17 Veebiteenuse koostegemine, 7. kord: WebApi arendamine. Lisasime  api kontrollereid.&lt;br /&gt;
* 16.05.17 Veebiteenuse koostegemine, 8. kord: WebApi arendamine. Identity kontroll Fiddleri ja Postmaniga.&lt;br /&gt;
* 20.05.17 Klientrakenduse koostegemine, 1. kord. Testklient.&lt;br /&gt;
* 25.05.17 Klientrakenduse koostegemine, 2. kord. Klientrakenduse arendamine.&lt;br /&gt;
* 01.06.17 Klientrakenduse koostegemine, 3. kord. Klientrakenduse arendamine. Angular JS.&lt;br /&gt;
* 03.06.17 - 11.06.17 Klientrakenduse arendamine. Tokenipõhine autentimine. Veebiteenuse viimistlemine.&lt;br /&gt;
* 11.06.17 Lõpptähtaeg. Projekti esitlemine eksamil.&lt;br /&gt;
* 12.06.17 Teiste lahenduste retsenseerimine.&lt;/div&gt;</summary>
		<author><name>Otiks</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Talk:JRT&amp;diff=123570</id>
		<title>Talk:JRT</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Talk:JRT&amp;diff=123570"/>
		<updated>2017-06-13T20:22:37Z</updated>

		<summary type="html">&lt;p&gt;Otiks: /* Hinnang meeskonna JRT esitatud klientrakendusele */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Hinnang meeskonna JRT esitatud XML-failidele==&lt;br /&gt;
&lt;br /&gt;
Koostaja: [https://wiki.itcollege.ee/index.php/Team_SPOT Team SPOT]&lt;br /&gt;
&lt;br /&gt;
Meeskond JRT on esitanud XML-faili, skeemifaili ja kaks XSLT-faili andmete transformeerimiseks HTML- ja XML-formaati. Transformatsioonid sisaldavad enam kui ühte &#039;&#039;for-each&#039;&#039;-klauslit. HTML-väljundiga transformatsioonis on kasutatud nelja &#039;&#039;for-each&#039;&#039;i ja kolme &#039;&#039;if&#039;&#039;-tingimust. XML-väljundiga transformatsioonis on kasutatud viite &#039;&#039;for-each&#039;&#039;i ja kolme &#039;&#039;if&#039;&#039;-tingimust. XML valideerub ja loogilisi dimensioone on viis. Neljal dimensioonil on kasutatud atribuute, mis on enam kui lihtsalt ID. Töö põhinõuded on täidetud.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Märkused XMLi/XSD kohta:&#039;&#039;&#039;&lt;br /&gt;
* elemendi &amp;lt;user&amp;gt; &#039;&#039;id&#039;&#039;-atribuudi väärtuse unikaalsus ei ole tagatud&lt;br /&gt;
* elemendile &amp;lt;user&amp;gt; saab lisada piiramatul arvul sama alamelementi: &amp;lt;firstName&amp;gt;, &amp;lt;lastName&amp;gt;, &amp;lt;born&amp;gt;, &amp;lt;sex&amp;gt;, …&lt;br /&gt;
* elemendil &amp;lt;user&amp;gt; on kõigi &amp;lt;subscription&amp;gt;-elementide &#039;&#039;type&#039;&#039; määratud kõige ülemisel tasemel &#039;&#039;status&#039;&#039;-atribuudiga, aga see võiks olla &amp;lt;subscription&amp;gt;-tasemel, et võimaldada rohkem paindlikkust&lt;br /&gt;
* atribuuti &#039;&#039;id&#039;&#039; (unikaalset) võiks kasutada ka teiste “liigielementide” puhul, sest:&lt;br /&gt;
**  elemente &amp;lt;subscription&amp;gt; saab sama &#039;&#039;name&#039;&#039;-atribuudiga lisada piiramatul arvul&lt;br /&gt;
**  elemendi &amp;lt;subscription&amp;gt; alla saab lisada piiramatul arvul &amp;lt;price&amp;gt;-elemente samade &#039;&#039;type&#039;&#039;- ja &#039;&#039;currency&#039;&#039;-atribuutide väärtustega&lt;br /&gt;
* elemendi &amp;lt;subscription&amp;gt; &#039;&#039;name&#039;&#039;-atribuudiga võib tekkida probleeme, kui atribuuti pandud nimi sisaldaks erimärke, seega oleks mõistlikum &#039;&#039;name&#039;&#039;-atribuut asendada eraldi alamelemendiga &amp;lt;name&amp;gt;&amp;lt;/name&amp;gt;, kus saaks kasutada CDATAt.&lt;br /&gt;
&lt;br /&gt;
Tööga on nähtud vaeva, XSLTd on koostatud arusaadavalt, kuid XSD ja XML vajaksid täiendamist, et vältida võimalikke ohukohti andmete saatmisel. Vastasel korral võivad ka transformatsioonid ootamatusi toota (vt näidet). Põhiline oleks XSDs ära märkida, kui palju mingit elementi esineda võib ning tagada ka &#039;&#039;id&#039;&#039;-atribuudi unikaalsus. XMLi koostamise puhul tuleks läbi mõelda kas atribuudid on mõistlikult valitud või saaks neid esitada paremini alamelementidena. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Näide:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;background-color: whitesmoke; border: solid thin grey; display: inline-block; padding:10px&amp;quot;&amp;gt;&lt;br /&gt;
Name: Peeter Banaan&amp;lt;br&amp;gt;Member status: gold&amp;lt;br&amp;gt;Workouts and prices: &lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;     Balance: 39.99EUR&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;     Balance: 39.99EUR&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;     Balance: 39.99EUR&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;     Gym: 69.99EUR&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;     Yoga: 39.99EURYoga: 39.99EURYoga: 39.99EUR&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
JRT esitatud töö asub [https://wiki.itcollege.ee/index.php/JRT#XML siin].&lt;br /&gt;
&lt;br /&gt;
==Hinnang meeskonna JRT esitatud veebiteenusele==&lt;br /&gt;
&lt;br /&gt;
Koostaja: [https://wiki.itcollege.ee/index.php/Team_SPOT Team SPOT]&lt;br /&gt;
&lt;br /&gt;
JRT veebiteenus on mõeldud jõusaali külastajale, kes näevad erinevatele kehaosadele mõeldud harjutusi, treeningukavasid ning ja saavad üles märkida oma saavutusi. Projekti realiseerimiseks on kasutatud REST arhitektuuri ja ASP.NET MVC Web API tehnoloogiat. Andmebaas luuakse Entity Frameworki abil. Lahendusele on lisatud Asp.Net Identity (Individual User Accounts) funktsionaalsuse võimalus.&lt;br /&gt;
 &lt;br /&gt;
Teenuse lähtekood on jagatud kihtidesse: BL (äriloogika, andmeobjektid, teenused), DAL (suhtlus andmebaasiga, repositooriumid), Domain (olemid), Web (kontrollerid), eraldi teek on ka liidestele (Interfaces). Samuti on kasutatud sõltuvuste süstimist (Ninject) ning repositooriumide puhul Factory ja UOW mustrit. Web projektis on koos, aga eraldi kaustades, nii teenuse API kontrollerid kui ka veebikliendi MVC kontrollerid ja AngularJS kontrollerid.&lt;br /&gt;
 &lt;br /&gt;
Meeskonna lehel avaldatud veebiteenuse analüüsis endale eesmärgiks seatud kohustuslike funktsionaalsuste hulka kuuluvad: kasutajagrupid, konto loomise võimalus, isiklike andmete ja kavade salvestamise võimalus, treenerite info ja kontaktandmed. Lisavõimalusena sooviti luua ka kasutusstatistika ja -analüüsi tuge ning administraatori liidest.&lt;br /&gt;
 &lt;br /&gt;
Praeguse seisuga esitatud teenuse kohta pole meeskond kommentaare lisanud, mistõttu on keeruline kõigest ülevaadet saada ja tehtut adekvaatselt hinnata. Andmebaasi skeemi juures võiks olla ka tabelite kirjeldused ja olemite omavaheliste seoste selgitused. Esimese hooga on raske skeemi loogikast aru saada. &lt;br /&gt;
 &lt;br /&gt;
Eelnevalt mainitud põhifunktsionaalsused on ühel või teisel kujul ka realiseeritud: teenusest on võimalik kätte saada infot erinevatele kehaosadele mõeldud harjutuste, erinevate treeningühikute, treeningkavade ja päevaplaanide kohta, samuti kasutajate andmeid. Ka uute kasutajate lisamine on võimalik. Täiendavate funktsionaalsuste realiseerimiseni pole jõutud.&lt;br /&gt;
 &lt;br /&gt;
Andmebaasi migratsioone pole projekti selles faasis lisatud. Andmebaasi kustutamise või olemites tehtud muudatuste korral luuakse uus andmebaas, mis populeeritakse DAL kihis asuva DBInitializer klassi Seed() meetodis olevate andmetega.&lt;br /&gt;
 &lt;br /&gt;
Küsimusi tekitab kasutajate haldus. Nimelt on tehtud andmebaasi teenuse kasutajatele eraldi olem AppUser, kuhu saab lisada kasutajaid ilma Asp.Net Identity funktsionaalsust kasutamata. Sealt on ilma autentimiseta võimalik kätte saada kõigi kasutajate isikuandmeid. Paralleelselt on alles jäetud ka UserInt olem, kuhu saab samuti kasutajaid lisada, viimaseid on võimalik autentida läbi Web projektis asuva Account kontrolleri. AppUserit on võimalik siduda UserInt olemiga, aga see ei kajastu meeskonna lehel esitatud andmebaasi skeemis.&lt;br /&gt;
 &lt;br /&gt;
Account mudelid on samas ümber kolitud BL kihis asuvasse DTO-de kausta. Kas see on ikka õige koht? Pigem võiks need ju asuda Web projektis, kus asub vastav kontroller ja kus autentimine ja autoriseerimine tegelikult peaks toimuma. Silma jäi seegi, et nii Asp.Net Identity kui ka mõned teised paketid (näiteks Ninject) on lisatud alamprojektidesse, kus neid vaja ei lähe. &lt;br /&gt;
 &lt;br /&gt;
Asp.Net Identity funktsionaalsust tegelikult siiski kuskil ei kasutatagi. Autentimist pole üheski kontrolleris peale AccountControlleri rakendatud, aga see pole praegu muu teenusega seotud. Kõigile andmetele pääseb takistusteta ligi otse brauserist. Samuti on võimalik näiteks Fiddleri abil andmeid muuta ja kustutada.&lt;br /&gt;
 &lt;br /&gt;
Andmebaasiga suhtlemine käib läbi DAL kihis asuvate repositooriumide, kuid kasutusel on ainult standardsed meetodid: All(), Find() / GetById(), Remove(), Add(), Update(), SaveChanges(). Ühtegi kohandatud viisi andmete kättesaamiseks või muutmiseks pole repositooriumidesse lisatud - need on kõik tühjad. Sama lugu on ka BL Services kihiga. &lt;br /&gt;
 &lt;br /&gt;
Web projekti kontrollerites pole hetkel samuti ühtegi kohandatud IHttpActionResult meetodit realiseeritud. Ka on puudu mõned tavapärased meetodid. Bodyparts ja RoutineWorkouts kontrollerid ei võimalda ID järgi objekti kätte saada. Konkreetse objekti selekteerimine on nende andmete puhul seega jäetud kliendi mureks. &lt;br /&gt;
 &lt;br /&gt;
Nagu juba eelnevalt mainitud, siis ühegi kontrolleri kasutamist pole praegu autentimisega piiratud ja kasutajarolle ei rakendata.&lt;br /&gt;
 &lt;br /&gt;
Service kihis tuleks üle vaadata Edit() meetodid, sest need ei tööta olemite puhul, millel on suubuvaid seoseid teiste olemitega. DTO klassides on tehtud osa atribuute kohustuslikeks, mistõttu on ka seotud olemite loomine ja muutmine läbi teenuse keerulisem kui ehk peaks. Lisaks id-atribuudile tuleb mõnel puhul kaasa anda ka objekti nimi. ProgramDTO puhul puudub aga näiteks id-atribuut sootuks. &lt;br /&gt;
 &lt;br /&gt;
Domeeni kihis on rohkem olemeid, kui praegu teenuses ära kasutatakse, aga kõiki funktsionaalsusi polegi jõutud veel realiseerida. Annotatsioonid on olemas. Vajalikud atribuudid on muudetud kohustuslikuks ning stringide pikkused piiratud. Küll on domeeni tasemel jäetud kohustuslikuks tegemata AppUseri ees- ja perenimi. Need piirangud on lisatud Account mudelites.&lt;br /&gt;
 &lt;br /&gt;
Üldkokkuvõttes võib siiski öelda, et kui autentimine ja autoriseerimine välja jätta, siis on nõutud põhifunktsionaalsused veebiteenuses lahendatud. Lahendus on jagatud kihtidesse ning äriloogika on kontrolleritest välja jäetud. Andmebaasis on olemeid piisavalt ja neid andmeid on võimalik läbi API kätte saada. Projekt on piisavalt keeruline ja selle lõplik realiseerimine nõuab ilmselt rohkem aega ja pühendumist, mida käesoleva aine sisu, mahtu ja ajakava arvesse võttes oleks ülekohtune nõuda.&lt;br /&gt;
&lt;br /&gt;
JRT esitatud töö asub [https://wiki.itcollege.ee/index.php/JRT#J.C3.B5usaali_infos.C3.BCsteemi_anal.C3.BC.C3.BCs siin].&lt;br /&gt;
&lt;br /&gt;
==Hinnang meeskonna JRT esitatud klientrakendusele==&lt;br /&gt;
&lt;br /&gt;
Koostaja: [https://wiki.itcollege.ee/index.php/JRT#J.C3.B5usaali_infos.C3.BCsteemi_anal.C3.BC.C3.BCs Team SPOT]&lt;br /&gt;
&lt;br /&gt;
JRT veebiteenuse vastu töötava klientrakenduse loomisel on kasutatud Angular JS raamistikku koos Asp.Net MVC kontrollerite ja vaadetega (Razor). Angulari osa on eraldatud App kausta. Koodis on kasutatud ka jQueryt. MVC kontrollerid ja vaated on tekitatud scaffoldingiga. Seega pole pidanud eraldi vaeva nägema ruutimisega. Kuna klient on lisatud samasse projekti, kus asuvad ka API kontrollerid, siis pole pidanud kliendi jaoks eraldi salvestama teenuse baasaadressi, mille vastu päringuid tehakse.&lt;br /&gt;
 &lt;br /&gt;
Meeskonna lehel avaldatud teenuse analüüsis on välja toodud kaks liidest, mida soovitakse arendada. Administraatoriliideses peaks administraatoril olema võimalus hallata kõiki andmeid (näiteks lisada ja kustutada: kasutajaid, harjutusi, treenigukavasid jne). Kasutajaliideses peaks tavakasutaja saama sisestada oma keha kohta viimaseid andmeid, panna kirja infot viimase treeningu kohta ning lisada omale kontaktandmeid, valida treeningukavasid ja paigutada need soovitud päevadele.&lt;br /&gt;
 &lt;br /&gt;
Mingisuguseid kommentaare avaldatud klientrakenduse kohta meeskonna lehelt leida ei õnnestunud. Lisaks leidub lähtekoodis lõpuni realiseerimata osasid, mis tegelikult rakenduse tööd ei mõjuta. See tegi retsenseerimise keerulisemaks, aga üldjoontes on kõigest hoolimata võimalik lahenduse tööpõhimõttest aru saada, kui rakendust natuke testida ja lähtekoodi uurida.&lt;br /&gt;
 &lt;br /&gt;
Praeguse seisuga on veebikliendis osaliselt teostatud administraatorile mõeldud funktsionaalsus. Kasutajaid hallata veel ei saa, aga harjutusi ja treeningukavasid on võimalik lisada. Realiseerida on proovitud ka tokenipõhist autentimist, kuid see ei tööta, mis on arusaadav, kuna kasutajahaldus ja autentimine / autoriseerimine on jäänud praeguse seisuga realiseerimata ka teenuse API poolel. Ilmselgelt on näha, et töö jäi pooleli.&lt;br /&gt;
 &lt;br /&gt;
Angulari rakenduse kontrolleritega on veebikliendis tööle pandud neli vaadet: Exercises, Units, BodyParts, Routines. Neile pääseb ligi menüüribale lisatud linkide kaudu. Users vaade on ka olemas, aga ilma Angulari kontrollerita - andmeid ei laeta. Sellele vaatele pääseb ligi, kui lisada brauseri aadressiribal domeeni lõppu “/Users”. Tokenipõhise autentimise jaoks on tehtud ka MainAngular vaade (domeen/MainAngular), kuid see ei toimi.&lt;br /&gt;
 &lt;br /&gt;
Kõik olemasolevad vaated on sama ülesehitusega - kuvatakse nimekirja koos Edit ja Delete nuppudega. Filtreid andmete sorteerimiseks ei ole. Igal vaatel on olemas on ka Add New nupp. Andmete lisamiseks ja muutmiseks avaneb hüpikaken (modal), kuhu laetakse kõik objekti jaoks vajalikud input-väljad - ja seotud olemite puhul valiku tegemiseks ripploetelud. Objektide kustutamisel küsitakse kasutajalt kinnitust. Kõik pakutud funktsionaalsused paraku veel ei tööta. Probleeme on eeskätt teiste olemitega seotud olemite muutmise ja kustutamisega.&lt;br /&gt;
 &lt;br /&gt;
Funktsionaalsused vaadete kaupa:&lt;br /&gt;
*Units  - andmete kuvamine, lisamine, muutmine ja kustutamine töötavad&lt;br /&gt;
*Exercises - andmete kuvamine, lisamine ja kustutamine töötavad, ent muutmine töötab ainult osaliselt: kui muuta harjutuse mõõtühikut, siis veast ei teavitata, aga muudatus andmebaasi ei jõua (Fiddleriga otse teenuse API poole pöördudes lisandus andmebaasi uus kirje) &lt;br /&gt;
*BodyParts - andmete kuvamine, lisamine ja kustutamine töötavad, aga muutmine ei õnnestu (ka Fiddleriga otse teenuse API poole pöördudes). Kui üritada muuta kehaosa alla kuuluvate harjutuste nimekirja, siis tuleb vastuseks Http staatus 400 (Bad request!)&lt;br /&gt;
*Routines - andmete kuvamine ja lisamine töötavad, muutmine (ReferenceError: bodyPart is not defined) ja kustutamine ei õnnestu (Bad request)! &lt;br /&gt;
 &lt;br /&gt;
Vaadete puhul võib nuriseda selle üle, et iga kontrolleri kohta on tehtud ainult Index vaatefail, mis sisaldab endas nii põhiakna kui ka hüpikakende html-koodi. Need oleks võinud parema arusaadavuse huvides ju lahutada, isegi kui andmete laadimine toimub läbi sama kontrolleri. &lt;br /&gt;
 &lt;br /&gt;
Lähtekoodist ilmneb veel, et iga töötava vaate jaoks on tehtud eraldi moodul oma kontrolleriga, mis registreeritakse vastavas vaates. Keskne moodul failis app.js ei tööta, see on mõeldud tokenipõhise autentimise realiseerimiseks ja eeldab üheleherakendust (ruutimisinfo on ka samas). Kõiki autentimise töölesaamiseks vajalikke mooduleid ei ole samas projekti lisatud (authService, authInterceptorService).&lt;br /&gt;
 &lt;br /&gt;
Praeguse lahenduse üheks puuduseks on veel see, et kõik Http-päringud veebiteenusele tehakse otse Angulari kontrolleritest, puudub vahepealne service-kiht. Selle tagajärjel on päringud ja vaadete loogika koodis läbisegi. Hüpikaknas objektide muutmiseks ei pärita andmeid uuesti teenusest, vaid muudetakse juba varem põhiaknasse laetud andmeid. Lisaks on Angulari raamistiku kõrval kasutatud ka tavalisi jQuery võtteid, mis teeb üldpildi võrdlemisi kirjuks. Mõned funktsioonid ei tööta korrektselt ja nii on üsna keeruline aru saada, kus viga täpselt asub: kontrolleris või teenuse API poolel.&lt;br /&gt;
 &lt;br /&gt;
Kokkuvõttes võib tõdeda, et olemasolevate vaadetega on siiski vaeva nähtud ja suhtlus teenusega tööle saadud, mis selle aine puhul on ilmselt peamine. Mõned funktsionaalsused vajavad veel viimistlemist, projekti üldine ülesehitus korrastamist. MVC kontrolleritega autentimise tööle saamiseks tuleks olemasolevad kontrollerid siduda keskse app-mooduliga ning see omakorda jagatud Layout vaatega, millele tuleks ka lisada eraldi kontroller.&lt;br /&gt;
&lt;br /&gt;
JRT esitatud töö asub [https://wiki.itcollege.ee/index.php/JRT#J.C3.B5usaali_infos.C3.BCsteemi_anal.C3.BC.C3.BCs siin].&lt;/div&gt;</summary>
		<author><name>Otiks</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Talk:JRT&amp;diff=123569</id>
		<title>Talk:JRT</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Talk:JRT&amp;diff=123569"/>
		<updated>2017-06-13T20:22:25Z</updated>

		<summary type="html">&lt;p&gt;Otiks: /* Hinnang meeskonna JRT esitatud klientrakendusele */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Hinnang meeskonna JRT esitatud XML-failidele==&lt;br /&gt;
&lt;br /&gt;
Koostaja: [https://wiki.itcollege.ee/index.php/Team_SPOT Team SPOT]&lt;br /&gt;
&lt;br /&gt;
Meeskond JRT on esitanud XML-faili, skeemifaili ja kaks XSLT-faili andmete transformeerimiseks HTML- ja XML-formaati. Transformatsioonid sisaldavad enam kui ühte &#039;&#039;for-each&#039;&#039;-klauslit. HTML-väljundiga transformatsioonis on kasutatud nelja &#039;&#039;for-each&#039;&#039;i ja kolme &#039;&#039;if&#039;&#039;-tingimust. XML-väljundiga transformatsioonis on kasutatud viite &#039;&#039;for-each&#039;&#039;i ja kolme &#039;&#039;if&#039;&#039;-tingimust. XML valideerub ja loogilisi dimensioone on viis. Neljal dimensioonil on kasutatud atribuute, mis on enam kui lihtsalt ID. Töö põhinõuded on täidetud.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Märkused XMLi/XSD kohta:&#039;&#039;&#039;&lt;br /&gt;
* elemendi &amp;lt;user&amp;gt; &#039;&#039;id&#039;&#039;-atribuudi väärtuse unikaalsus ei ole tagatud&lt;br /&gt;
* elemendile &amp;lt;user&amp;gt; saab lisada piiramatul arvul sama alamelementi: &amp;lt;firstName&amp;gt;, &amp;lt;lastName&amp;gt;, &amp;lt;born&amp;gt;, &amp;lt;sex&amp;gt;, …&lt;br /&gt;
* elemendil &amp;lt;user&amp;gt; on kõigi &amp;lt;subscription&amp;gt;-elementide &#039;&#039;type&#039;&#039; määratud kõige ülemisel tasemel &#039;&#039;status&#039;&#039;-atribuudiga, aga see võiks olla &amp;lt;subscription&amp;gt;-tasemel, et võimaldada rohkem paindlikkust&lt;br /&gt;
* atribuuti &#039;&#039;id&#039;&#039; (unikaalset) võiks kasutada ka teiste “liigielementide” puhul, sest:&lt;br /&gt;
**  elemente &amp;lt;subscription&amp;gt; saab sama &#039;&#039;name&#039;&#039;-atribuudiga lisada piiramatul arvul&lt;br /&gt;
**  elemendi &amp;lt;subscription&amp;gt; alla saab lisada piiramatul arvul &amp;lt;price&amp;gt;-elemente samade &#039;&#039;type&#039;&#039;- ja &#039;&#039;currency&#039;&#039;-atribuutide väärtustega&lt;br /&gt;
* elemendi &amp;lt;subscription&amp;gt; &#039;&#039;name&#039;&#039;-atribuudiga võib tekkida probleeme, kui atribuuti pandud nimi sisaldaks erimärke, seega oleks mõistlikum &#039;&#039;name&#039;&#039;-atribuut asendada eraldi alamelemendiga &amp;lt;name&amp;gt;&amp;lt;/name&amp;gt;, kus saaks kasutada CDATAt.&lt;br /&gt;
&lt;br /&gt;
Tööga on nähtud vaeva, XSLTd on koostatud arusaadavalt, kuid XSD ja XML vajaksid täiendamist, et vältida võimalikke ohukohti andmete saatmisel. Vastasel korral võivad ka transformatsioonid ootamatusi toota (vt näidet). Põhiline oleks XSDs ära märkida, kui palju mingit elementi esineda võib ning tagada ka &#039;&#039;id&#039;&#039;-atribuudi unikaalsus. XMLi koostamise puhul tuleks läbi mõelda kas atribuudid on mõistlikult valitud või saaks neid esitada paremini alamelementidena. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Näide:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;background-color: whitesmoke; border: solid thin grey; display: inline-block; padding:10px&amp;quot;&amp;gt;&lt;br /&gt;
Name: Peeter Banaan&amp;lt;br&amp;gt;Member status: gold&amp;lt;br&amp;gt;Workouts and prices: &lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;     Balance: 39.99EUR&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;     Balance: 39.99EUR&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;     Balance: 39.99EUR&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;     Gym: 69.99EUR&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;     Yoga: 39.99EURYoga: 39.99EURYoga: 39.99EUR&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
JRT esitatud töö asub [https://wiki.itcollege.ee/index.php/JRT#XML siin].&lt;br /&gt;
&lt;br /&gt;
==Hinnang meeskonna JRT esitatud veebiteenusele==&lt;br /&gt;
&lt;br /&gt;
Koostaja: [https://wiki.itcollege.ee/index.php/Team_SPOT Team SPOT]&lt;br /&gt;
&lt;br /&gt;
JRT veebiteenus on mõeldud jõusaali külastajale, kes näevad erinevatele kehaosadele mõeldud harjutusi, treeningukavasid ning ja saavad üles märkida oma saavutusi. Projekti realiseerimiseks on kasutatud REST arhitektuuri ja ASP.NET MVC Web API tehnoloogiat. Andmebaas luuakse Entity Frameworki abil. Lahendusele on lisatud Asp.Net Identity (Individual User Accounts) funktsionaalsuse võimalus.&lt;br /&gt;
 &lt;br /&gt;
Teenuse lähtekood on jagatud kihtidesse: BL (äriloogika, andmeobjektid, teenused), DAL (suhtlus andmebaasiga, repositooriumid), Domain (olemid), Web (kontrollerid), eraldi teek on ka liidestele (Interfaces). Samuti on kasutatud sõltuvuste süstimist (Ninject) ning repositooriumide puhul Factory ja UOW mustrit. Web projektis on koos, aga eraldi kaustades, nii teenuse API kontrollerid kui ka veebikliendi MVC kontrollerid ja AngularJS kontrollerid.&lt;br /&gt;
 &lt;br /&gt;
Meeskonna lehel avaldatud veebiteenuse analüüsis endale eesmärgiks seatud kohustuslike funktsionaalsuste hulka kuuluvad: kasutajagrupid, konto loomise võimalus, isiklike andmete ja kavade salvestamise võimalus, treenerite info ja kontaktandmed. Lisavõimalusena sooviti luua ka kasutusstatistika ja -analüüsi tuge ning administraatori liidest.&lt;br /&gt;
 &lt;br /&gt;
Praeguse seisuga esitatud teenuse kohta pole meeskond kommentaare lisanud, mistõttu on keeruline kõigest ülevaadet saada ja tehtut adekvaatselt hinnata. Andmebaasi skeemi juures võiks olla ka tabelite kirjeldused ja olemite omavaheliste seoste selgitused. Esimese hooga on raske skeemi loogikast aru saada. &lt;br /&gt;
 &lt;br /&gt;
Eelnevalt mainitud põhifunktsionaalsused on ühel või teisel kujul ka realiseeritud: teenusest on võimalik kätte saada infot erinevatele kehaosadele mõeldud harjutuste, erinevate treeningühikute, treeningkavade ja päevaplaanide kohta, samuti kasutajate andmeid. Ka uute kasutajate lisamine on võimalik. Täiendavate funktsionaalsuste realiseerimiseni pole jõutud.&lt;br /&gt;
 &lt;br /&gt;
Andmebaasi migratsioone pole projekti selles faasis lisatud. Andmebaasi kustutamise või olemites tehtud muudatuste korral luuakse uus andmebaas, mis populeeritakse DAL kihis asuva DBInitializer klassi Seed() meetodis olevate andmetega.&lt;br /&gt;
 &lt;br /&gt;
Küsimusi tekitab kasutajate haldus. Nimelt on tehtud andmebaasi teenuse kasutajatele eraldi olem AppUser, kuhu saab lisada kasutajaid ilma Asp.Net Identity funktsionaalsust kasutamata. Sealt on ilma autentimiseta võimalik kätte saada kõigi kasutajate isikuandmeid. Paralleelselt on alles jäetud ka UserInt olem, kuhu saab samuti kasutajaid lisada, viimaseid on võimalik autentida läbi Web projektis asuva Account kontrolleri. AppUserit on võimalik siduda UserInt olemiga, aga see ei kajastu meeskonna lehel esitatud andmebaasi skeemis.&lt;br /&gt;
 &lt;br /&gt;
Account mudelid on samas ümber kolitud BL kihis asuvasse DTO-de kausta. Kas see on ikka õige koht? Pigem võiks need ju asuda Web projektis, kus asub vastav kontroller ja kus autentimine ja autoriseerimine tegelikult peaks toimuma. Silma jäi seegi, et nii Asp.Net Identity kui ka mõned teised paketid (näiteks Ninject) on lisatud alamprojektidesse, kus neid vaja ei lähe. &lt;br /&gt;
 &lt;br /&gt;
Asp.Net Identity funktsionaalsust tegelikult siiski kuskil ei kasutatagi. Autentimist pole üheski kontrolleris peale AccountControlleri rakendatud, aga see pole praegu muu teenusega seotud. Kõigile andmetele pääseb takistusteta ligi otse brauserist. Samuti on võimalik näiteks Fiddleri abil andmeid muuta ja kustutada.&lt;br /&gt;
 &lt;br /&gt;
Andmebaasiga suhtlemine käib läbi DAL kihis asuvate repositooriumide, kuid kasutusel on ainult standardsed meetodid: All(), Find() / GetById(), Remove(), Add(), Update(), SaveChanges(). Ühtegi kohandatud viisi andmete kättesaamiseks või muutmiseks pole repositooriumidesse lisatud - need on kõik tühjad. Sama lugu on ka BL Services kihiga. &lt;br /&gt;
 &lt;br /&gt;
Web projekti kontrollerites pole hetkel samuti ühtegi kohandatud IHttpActionResult meetodit realiseeritud. Ka on puudu mõned tavapärased meetodid. Bodyparts ja RoutineWorkouts kontrollerid ei võimalda ID järgi objekti kätte saada. Konkreetse objekti selekteerimine on nende andmete puhul seega jäetud kliendi mureks. &lt;br /&gt;
 &lt;br /&gt;
Nagu juba eelnevalt mainitud, siis ühegi kontrolleri kasutamist pole praegu autentimisega piiratud ja kasutajarolle ei rakendata.&lt;br /&gt;
 &lt;br /&gt;
Service kihis tuleks üle vaadata Edit() meetodid, sest need ei tööta olemite puhul, millel on suubuvaid seoseid teiste olemitega. DTO klassides on tehtud osa atribuute kohustuslikeks, mistõttu on ka seotud olemite loomine ja muutmine läbi teenuse keerulisem kui ehk peaks. Lisaks id-atribuudile tuleb mõnel puhul kaasa anda ka objekti nimi. ProgramDTO puhul puudub aga näiteks id-atribuut sootuks. &lt;br /&gt;
 &lt;br /&gt;
Domeeni kihis on rohkem olemeid, kui praegu teenuses ära kasutatakse, aga kõiki funktsionaalsusi polegi jõutud veel realiseerida. Annotatsioonid on olemas. Vajalikud atribuudid on muudetud kohustuslikuks ning stringide pikkused piiratud. Küll on domeeni tasemel jäetud kohustuslikuks tegemata AppUseri ees- ja perenimi. Need piirangud on lisatud Account mudelites.&lt;br /&gt;
 &lt;br /&gt;
Üldkokkuvõttes võib siiski öelda, et kui autentimine ja autoriseerimine välja jätta, siis on nõutud põhifunktsionaalsused veebiteenuses lahendatud. Lahendus on jagatud kihtidesse ning äriloogika on kontrolleritest välja jäetud. Andmebaasis on olemeid piisavalt ja neid andmeid on võimalik läbi API kätte saada. Projekt on piisavalt keeruline ja selle lõplik realiseerimine nõuab ilmselt rohkem aega ja pühendumist, mida käesoleva aine sisu, mahtu ja ajakava arvesse võttes oleks ülekohtune nõuda.&lt;br /&gt;
&lt;br /&gt;
JRT esitatud töö asub [https://wiki.itcollege.ee/index.php/JRT#J.C3.B5usaali_infos.C3.BCsteemi_anal.C3.BC.C3.BCs siin].&lt;br /&gt;
&lt;br /&gt;
==Hinnang meeskonna JRT esitatud klientrakendusele==&lt;br /&gt;
&lt;br /&gt;
Koostaja: [https://wiki.itcollege.ee/index.php/JRT#J.C3.B5usaali_infos.C3.BCsteemi_anal.C3.BC.C3.BCs Team SPOT]&lt;br /&gt;
&lt;br /&gt;
JRT veebiteenuse vastu töötava klientrakenduse loomisel on kasutatud Angular JS raamistikku koos Asp.Net MVC kontrollerite ja vaadetega (Razor). Angulari osa on eraldatud App kausta. Koodis on kasutatud ka jQueryt. MVC kontrollerid ja vaated on tekitatud scaffoldingiga. Seega pole pidanud eraldi vaeva nägema ruutimisega. Kuna klient on lisatud samasse projekti, kus asuvad ka API kontrollerid, siis pole pidanud kliendi jaoks eraldi salvestama teenuse baasaadressi, mille vastu päringuid tehakse.&lt;br /&gt;
 &lt;br /&gt;
Meeskonna lehel avaldatud teenuse analüüsis on välja toodud kaks liidest, mida soovitakse arendada. Administraatoriliideses peaks administraatoril olema võimalus hallata kõiki andmeid (näiteks lisada ja kustutada: kasutajaid, harjutusi, treenigukavasid jne). Kasutajaliideses peaks tavakasutaja saama sisestada oma keha kohta viimaseid andmeid, panna kirja infot viimase treeningu kohta ning lisada omale kontaktandmeid, valida treeningukavasid ja paigutada need soovitud päevadele.&lt;br /&gt;
 &lt;br /&gt;
Mingisuguseid kommentaare avaldatud klientrakenduse kohta meeskonna lehelt leida ei õnnestunud. Lisaks leidub lähtekoodis lõpuni realiseerimata osasid, mis tegelikult rakenduse tööd ei mõjuta. See tegi retsenseerimise keerulisemaks, aga üldjoontes on kõigest hoolimata võimalik lahenduse tööpõhimõttest aru saada, kui rakendust natuke testida ja lähtekoodi uurida.&lt;br /&gt;
 &lt;br /&gt;
Praeguse seisuga on veebikliendis osaliselt teostatud administraatorile mõeldud funktsionaalsus. Kasutajaid hallata veel ei saa, aga harjutusi ja treeningukavasid on võimalik lisada. Realiseerida on proovitud ka tokenipõhist autentimist, kuid see ei tööta, mis on arusaadav, kuna kasutajahaldus ja autentimine / autoriseerimine on jäänud praeguse seisuga realiseerimata ka teenuse API poolel. Ilmselgelt on näha, et töö jäi pooleli.&lt;br /&gt;
 &lt;br /&gt;
Angulari rakenduse kontrolleritega on veebikliendis tööle pandud neli vaadet: Exercises, Units, BodyParts, Routines. Neile pääseb ligi menüüribale lisatud linkide kaudu. Users vaade on ka olemas, aga ilma Angulari kontrollerita - andmeid ei laeta. Sellele vaatele pääseb ligi, kui lisada brauseri aadressiribal domeeni lõppu “/Users”. Tokenipõhise autentimise jaoks on tehtud ka MainAngular vaade (domeen/MainAngular), kuid see ei toimi.&lt;br /&gt;
 &lt;br /&gt;
Kõik olemasolevad vaated on sama ülesehitusega - kuvatakse nimekirja koos Edit ja Delete nuppudega. Filtreid andmete sorteerimiseks ei ole. Igal vaatel on olemas on ka Add New nupp. Andmete lisamiseks ja muutmiseks avaneb hüpikaken (modal), kuhu laetakse kõik objekti jaoks vajalikud input-väljad - ja seotud olemite puhul valiku tegemiseks ripploetelud. Objektide kustutamisel küsitakse kasutajalt kinnitust. Kõik pakutud funktsionaalsused paraku veel ei tööta. Probleeme on eeskätt teiste olemitega seotud olemite muutmise ja kustutamisega.&lt;br /&gt;
 &lt;br /&gt;
Funktsionaalsused vaadete kaupa:&lt;br /&gt;
*Units  - andmete kuvamine, lisamine, muutmine ja kustutamine töötavad&lt;br /&gt;
*Exercises - andmete kuvamine, lisamine ja kustutamine töötavad, ent muutmine töötab ainult osaliselt: kui muuta harjutuse mõõtühikut, siis veast ei teavitata, aga muudatus andmebaasi ei jõua (Fiddleriga otse teenuse API poole pöördudes lisandus andmebaasi uus kirje) &lt;br /&gt;
*BodyParts - andmete kuvamine, lisamine ja kustutamine töötavad, aga muutmine ei õnnestu (ka Fiddleriga otse teenuse API poole pöördudes). Kui üritada muuta kehaosa alla kuuluvate harjutuste nimekirja, siis tuleb vastuseks Http staatus 400 (Bad request!)&lt;br /&gt;
*Routines - andmete kuvamine ja lisamine töötavad, muutmine (ReferenceError: bodyPart is not defined) ja kustutamine ei õnnestu (Bad request)! &lt;br /&gt;
 &lt;br /&gt;
Vaadete puhul võib nuriseda selle üle, et iga kontrolleri kohta on tehtud ainult Index vaatefail, mis sisaldab endas nii põhiakna kui ka hüpikakende html-koodi. Need oleks võinud parema arusaadavuse huvides ju lahutada, isegi kui andmete laadimine toimub läbi sama kontrolleri. &lt;br /&gt;
 &lt;br /&gt;
Lähtekoodist ilmneb veel, et iga töötava vaate jaoks on tehtud eraldi moodul oma kontrolleriga, mis registreeritakse vastavas vaates. Keskne moodul failis app.js ei tööta, see on mõeldud tokenipõhise autentimise realiseerimiseks ja eeldab üheleherakendust (ruutimisinfo on ka samas). Kõiki autentimise töölesaamiseks vajalikke mooduleid ei ole samas projekti lisatud (authService, authInterceptorService).&lt;br /&gt;
 &lt;br /&gt;
Praeguse lahenduse üheks puuduseks on veel see, et kõik Http-päringud veebiteenusele tehakse otse Angulari kontrolleritest, puudub vahepealne service-kiht. Selle tagajärjel on päringud ja vaadete loogika koodis läbisegi. Hüpikaknas objektide muutmiseks ei pärita andmeid uuesti teenusest, vaid muudetakse juba varem põhiaknasse laetud andmeid. Lisaks on Angulari raamistiku kõrval kasutatud ka tavalisi jQuery võtteid, mis teeb üldpildi võrdlemisi kirjuks. Mõned funktsioonid ei tööta korrektselt ja nii on üsna keeruline aru saada, kus viga täpselt asub: kontrolleris või teenuse API poolel.&lt;br /&gt;
 &lt;br /&gt;
Kokkuvõttes võib tõdeda, et olemasolevate vaadetega on siiski vaeva nähtud ja suhtlus teenusega tööle saadud, mis selle aine puhul on ilmselt peamine. Mõned funktsionaalsused vajavad veel viimistlemist, projekti üldine ülesehitus korrastamist. MVC kontrolleritega autentimise tööle saamiseks tuleks olemasolevad kontrollerid siduda keskse app-mooduliga ning see omakorda jagatud Layout vaatega, millele tuleks ka lisada eraldi kontroller. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
JRT esitatud töö asub [https://wiki.itcollege.ee/index.php/JRT#J.C3.B5usaali_infos.C3.BCsteemi_anal.C3.BC.C3.BCs siin].&lt;/div&gt;</summary>
		<author><name>Otiks</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Talk:JRT&amp;diff=123568</id>
		<title>Talk:JRT</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Talk:JRT&amp;diff=123568"/>
		<updated>2017-06-13T20:21:13Z</updated>

		<summary type="html">&lt;p&gt;Otiks: /* Hinnang meeskonna JRT esitatud veebiteenusele */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Hinnang meeskonna JRT esitatud XML-failidele==&lt;br /&gt;
&lt;br /&gt;
Koostaja: [https://wiki.itcollege.ee/index.php/Team_SPOT Team SPOT]&lt;br /&gt;
&lt;br /&gt;
Meeskond JRT on esitanud XML-faili, skeemifaili ja kaks XSLT-faili andmete transformeerimiseks HTML- ja XML-formaati. Transformatsioonid sisaldavad enam kui ühte &#039;&#039;for-each&#039;&#039;-klauslit. HTML-väljundiga transformatsioonis on kasutatud nelja &#039;&#039;for-each&#039;&#039;i ja kolme &#039;&#039;if&#039;&#039;-tingimust. XML-väljundiga transformatsioonis on kasutatud viite &#039;&#039;for-each&#039;&#039;i ja kolme &#039;&#039;if&#039;&#039;-tingimust. XML valideerub ja loogilisi dimensioone on viis. Neljal dimensioonil on kasutatud atribuute, mis on enam kui lihtsalt ID. Töö põhinõuded on täidetud.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Märkused XMLi/XSD kohta:&#039;&#039;&#039;&lt;br /&gt;
* elemendi &amp;lt;user&amp;gt; &#039;&#039;id&#039;&#039;-atribuudi väärtuse unikaalsus ei ole tagatud&lt;br /&gt;
* elemendile &amp;lt;user&amp;gt; saab lisada piiramatul arvul sama alamelementi: &amp;lt;firstName&amp;gt;, &amp;lt;lastName&amp;gt;, &amp;lt;born&amp;gt;, &amp;lt;sex&amp;gt;, …&lt;br /&gt;
* elemendil &amp;lt;user&amp;gt; on kõigi &amp;lt;subscription&amp;gt;-elementide &#039;&#039;type&#039;&#039; määratud kõige ülemisel tasemel &#039;&#039;status&#039;&#039;-atribuudiga, aga see võiks olla &amp;lt;subscription&amp;gt;-tasemel, et võimaldada rohkem paindlikkust&lt;br /&gt;
* atribuuti &#039;&#039;id&#039;&#039; (unikaalset) võiks kasutada ka teiste “liigielementide” puhul, sest:&lt;br /&gt;
**  elemente &amp;lt;subscription&amp;gt; saab sama &#039;&#039;name&#039;&#039;-atribuudiga lisada piiramatul arvul&lt;br /&gt;
**  elemendi &amp;lt;subscription&amp;gt; alla saab lisada piiramatul arvul &amp;lt;price&amp;gt;-elemente samade &#039;&#039;type&#039;&#039;- ja &#039;&#039;currency&#039;&#039;-atribuutide väärtustega&lt;br /&gt;
* elemendi &amp;lt;subscription&amp;gt; &#039;&#039;name&#039;&#039;-atribuudiga võib tekkida probleeme, kui atribuuti pandud nimi sisaldaks erimärke, seega oleks mõistlikum &#039;&#039;name&#039;&#039;-atribuut asendada eraldi alamelemendiga &amp;lt;name&amp;gt;&amp;lt;/name&amp;gt;, kus saaks kasutada CDATAt.&lt;br /&gt;
&lt;br /&gt;
Tööga on nähtud vaeva, XSLTd on koostatud arusaadavalt, kuid XSD ja XML vajaksid täiendamist, et vältida võimalikke ohukohti andmete saatmisel. Vastasel korral võivad ka transformatsioonid ootamatusi toota (vt näidet). Põhiline oleks XSDs ära märkida, kui palju mingit elementi esineda võib ning tagada ka &#039;&#039;id&#039;&#039;-atribuudi unikaalsus. XMLi koostamise puhul tuleks läbi mõelda kas atribuudid on mõistlikult valitud või saaks neid esitada paremini alamelementidena. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Näide:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;background-color: whitesmoke; border: solid thin grey; display: inline-block; padding:10px&amp;quot;&amp;gt;&lt;br /&gt;
Name: Peeter Banaan&amp;lt;br&amp;gt;Member status: gold&amp;lt;br&amp;gt;Workouts and prices: &lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;     Balance: 39.99EUR&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;     Balance: 39.99EUR&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;     Balance: 39.99EUR&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;     Gym: 69.99EUR&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;     Yoga: 39.99EURYoga: 39.99EURYoga: 39.99EUR&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
JRT esitatud töö asub [https://wiki.itcollege.ee/index.php/JRT#XML siin].&lt;br /&gt;
&lt;br /&gt;
==Hinnang meeskonna JRT esitatud veebiteenusele==&lt;br /&gt;
&lt;br /&gt;
Koostaja: [https://wiki.itcollege.ee/index.php/Team_SPOT Team SPOT]&lt;br /&gt;
&lt;br /&gt;
JRT veebiteenus on mõeldud jõusaali külastajale, kes näevad erinevatele kehaosadele mõeldud harjutusi, treeningukavasid ning ja saavad üles märkida oma saavutusi. Projekti realiseerimiseks on kasutatud REST arhitektuuri ja ASP.NET MVC Web API tehnoloogiat. Andmebaas luuakse Entity Frameworki abil. Lahendusele on lisatud Asp.Net Identity (Individual User Accounts) funktsionaalsuse võimalus.&lt;br /&gt;
 &lt;br /&gt;
Teenuse lähtekood on jagatud kihtidesse: BL (äriloogika, andmeobjektid, teenused), DAL (suhtlus andmebaasiga, repositooriumid), Domain (olemid), Web (kontrollerid), eraldi teek on ka liidestele (Interfaces). Samuti on kasutatud sõltuvuste süstimist (Ninject) ning repositooriumide puhul Factory ja UOW mustrit. Web projektis on koos, aga eraldi kaustades, nii teenuse API kontrollerid kui ka veebikliendi MVC kontrollerid ja AngularJS kontrollerid.&lt;br /&gt;
 &lt;br /&gt;
Meeskonna lehel avaldatud veebiteenuse analüüsis endale eesmärgiks seatud kohustuslike funktsionaalsuste hulka kuuluvad: kasutajagrupid, konto loomise võimalus, isiklike andmete ja kavade salvestamise võimalus, treenerite info ja kontaktandmed. Lisavõimalusena sooviti luua ka kasutusstatistika ja -analüüsi tuge ning administraatori liidest.&lt;br /&gt;
 &lt;br /&gt;
Praeguse seisuga esitatud teenuse kohta pole meeskond kommentaare lisanud, mistõttu on keeruline kõigest ülevaadet saada ja tehtut adekvaatselt hinnata. Andmebaasi skeemi juures võiks olla ka tabelite kirjeldused ja olemite omavaheliste seoste selgitused. Esimese hooga on raske skeemi loogikast aru saada. &lt;br /&gt;
 &lt;br /&gt;
Eelnevalt mainitud põhifunktsionaalsused on ühel või teisel kujul ka realiseeritud: teenusest on võimalik kätte saada infot erinevatele kehaosadele mõeldud harjutuste, erinevate treeningühikute, treeningkavade ja päevaplaanide kohta, samuti kasutajate andmeid. Ka uute kasutajate lisamine on võimalik. Täiendavate funktsionaalsuste realiseerimiseni pole jõutud.&lt;br /&gt;
 &lt;br /&gt;
Andmebaasi migratsioone pole projekti selles faasis lisatud. Andmebaasi kustutamise või olemites tehtud muudatuste korral luuakse uus andmebaas, mis populeeritakse DAL kihis asuva DBInitializer klassi Seed() meetodis olevate andmetega.&lt;br /&gt;
 &lt;br /&gt;
Küsimusi tekitab kasutajate haldus. Nimelt on tehtud andmebaasi teenuse kasutajatele eraldi olem AppUser, kuhu saab lisada kasutajaid ilma Asp.Net Identity funktsionaalsust kasutamata. Sealt on ilma autentimiseta võimalik kätte saada kõigi kasutajate isikuandmeid. Paralleelselt on alles jäetud ka UserInt olem, kuhu saab samuti kasutajaid lisada, viimaseid on võimalik autentida läbi Web projektis asuva Account kontrolleri. AppUserit on võimalik siduda UserInt olemiga, aga see ei kajastu meeskonna lehel esitatud andmebaasi skeemis.&lt;br /&gt;
 &lt;br /&gt;
Account mudelid on samas ümber kolitud BL kihis asuvasse DTO-de kausta. Kas see on ikka õige koht? Pigem võiks need ju asuda Web projektis, kus asub vastav kontroller ja kus autentimine ja autoriseerimine tegelikult peaks toimuma. Silma jäi seegi, et nii Asp.Net Identity kui ka mõned teised paketid (näiteks Ninject) on lisatud alamprojektidesse, kus neid vaja ei lähe. &lt;br /&gt;
 &lt;br /&gt;
Asp.Net Identity funktsionaalsust tegelikult siiski kuskil ei kasutatagi. Autentimist pole üheski kontrolleris peale AccountControlleri rakendatud, aga see pole praegu muu teenusega seotud. Kõigile andmetele pääseb takistusteta ligi otse brauserist. Samuti on võimalik näiteks Fiddleri abil andmeid muuta ja kustutada.&lt;br /&gt;
 &lt;br /&gt;
Andmebaasiga suhtlemine käib läbi DAL kihis asuvate repositooriumide, kuid kasutusel on ainult standardsed meetodid: All(), Find() / GetById(), Remove(), Add(), Update(), SaveChanges(). Ühtegi kohandatud viisi andmete kättesaamiseks või muutmiseks pole repositooriumidesse lisatud - need on kõik tühjad. Sama lugu on ka BL Services kihiga. &lt;br /&gt;
 &lt;br /&gt;
Web projekti kontrollerites pole hetkel samuti ühtegi kohandatud IHttpActionResult meetodit realiseeritud. Ka on puudu mõned tavapärased meetodid. Bodyparts ja RoutineWorkouts kontrollerid ei võimalda ID järgi objekti kätte saada. Konkreetse objekti selekteerimine on nende andmete puhul seega jäetud kliendi mureks. &lt;br /&gt;
 &lt;br /&gt;
Nagu juba eelnevalt mainitud, siis ühegi kontrolleri kasutamist pole praegu autentimisega piiratud ja kasutajarolle ei rakendata.&lt;br /&gt;
 &lt;br /&gt;
Service kihis tuleks üle vaadata Edit() meetodid, sest need ei tööta olemite puhul, millel on suubuvaid seoseid teiste olemitega. DTO klassides on tehtud osa atribuute kohustuslikeks, mistõttu on ka seotud olemite loomine ja muutmine läbi teenuse keerulisem kui ehk peaks. Lisaks id-atribuudile tuleb mõnel puhul kaasa anda ka objekti nimi. ProgramDTO puhul puudub aga näiteks id-atribuut sootuks. &lt;br /&gt;
 &lt;br /&gt;
Domeeni kihis on rohkem olemeid, kui praegu teenuses ära kasutatakse, aga kõiki funktsionaalsusi polegi jõutud veel realiseerida. Annotatsioonid on olemas. Vajalikud atribuudid on muudetud kohustuslikuks ning stringide pikkused piiratud. Küll on domeeni tasemel jäetud kohustuslikuks tegemata AppUseri ees- ja perenimi. Need piirangud on lisatud Account mudelites.&lt;br /&gt;
 &lt;br /&gt;
Üldkokkuvõttes võib siiski öelda, et kui autentimine ja autoriseerimine välja jätta, siis on nõutud põhifunktsionaalsused veebiteenuses lahendatud. Lahendus on jagatud kihtidesse ning äriloogika on kontrolleritest välja jäetud. Andmebaasis on olemeid piisavalt ja neid andmeid on võimalik läbi API kätte saada. Projekt on piisavalt keeruline ja selle lõplik realiseerimine nõuab ilmselt rohkem aega ja pühendumist, mida käesoleva aine sisu, mahtu ja ajakava arvesse võttes oleks ülekohtune nõuda.&lt;br /&gt;
&lt;br /&gt;
JRT esitatud töö asub [https://wiki.itcollege.ee/index.php/JRT#J.C3.B5usaali_infos.C3.BCsteemi_anal.C3.BC.C3.BCs siin].&lt;br /&gt;
&lt;br /&gt;
==Hinnang meeskonna JRT esitatud klientrakendusele==&lt;br /&gt;
&lt;br /&gt;
Koostaja: [https://wiki.itcollege.ee/index.php/JRT#J.C3.B5usaali_infos.C3.BCsteemi_anal.C3.BC.C3.BCs Team SPOT]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
JRT esitatud töö asub [https://wiki.itcollege.ee/index.php/JRT#J.C3.B5usaali_infos.C3.BCsteemi_anal.C3.BC.C3.BCs siin].&lt;/div&gt;</summary>
		<author><name>Otiks</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Talk:JRT&amp;diff=123567</id>
		<title>Talk:JRT</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Talk:JRT&amp;diff=123567"/>
		<updated>2017-06-13T20:19:52Z</updated>

		<summary type="html">&lt;p&gt;Otiks: /* Hinnang meeskonna JRT esitatud klientrakendusele */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Hinnang meeskonna JRT esitatud XML-failidele==&lt;br /&gt;
&lt;br /&gt;
Koostaja: [https://wiki.itcollege.ee/index.php/Team_SPOT Team SPOT]&lt;br /&gt;
&lt;br /&gt;
Meeskond JRT on esitanud XML-faili, skeemifaili ja kaks XSLT-faili andmete transformeerimiseks HTML- ja XML-formaati. Transformatsioonid sisaldavad enam kui ühte &#039;&#039;for-each&#039;&#039;-klauslit. HTML-väljundiga transformatsioonis on kasutatud nelja &#039;&#039;for-each&#039;&#039;i ja kolme &#039;&#039;if&#039;&#039;-tingimust. XML-väljundiga transformatsioonis on kasutatud viite &#039;&#039;for-each&#039;&#039;i ja kolme &#039;&#039;if&#039;&#039;-tingimust. XML valideerub ja loogilisi dimensioone on viis. Neljal dimensioonil on kasutatud atribuute, mis on enam kui lihtsalt ID. Töö põhinõuded on täidetud.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Märkused XMLi/XSD kohta:&#039;&#039;&#039;&lt;br /&gt;
* elemendi &amp;lt;user&amp;gt; &#039;&#039;id&#039;&#039;-atribuudi väärtuse unikaalsus ei ole tagatud&lt;br /&gt;
* elemendile &amp;lt;user&amp;gt; saab lisada piiramatul arvul sama alamelementi: &amp;lt;firstName&amp;gt;, &amp;lt;lastName&amp;gt;, &amp;lt;born&amp;gt;, &amp;lt;sex&amp;gt;, …&lt;br /&gt;
* elemendil &amp;lt;user&amp;gt; on kõigi &amp;lt;subscription&amp;gt;-elementide &#039;&#039;type&#039;&#039; määratud kõige ülemisel tasemel &#039;&#039;status&#039;&#039;-atribuudiga, aga see võiks olla &amp;lt;subscription&amp;gt;-tasemel, et võimaldada rohkem paindlikkust&lt;br /&gt;
* atribuuti &#039;&#039;id&#039;&#039; (unikaalset) võiks kasutada ka teiste “liigielementide” puhul, sest:&lt;br /&gt;
**  elemente &amp;lt;subscription&amp;gt; saab sama &#039;&#039;name&#039;&#039;-atribuudiga lisada piiramatul arvul&lt;br /&gt;
**  elemendi &amp;lt;subscription&amp;gt; alla saab lisada piiramatul arvul &amp;lt;price&amp;gt;-elemente samade &#039;&#039;type&#039;&#039;- ja &#039;&#039;currency&#039;&#039;-atribuutide väärtustega&lt;br /&gt;
* elemendi &amp;lt;subscription&amp;gt; &#039;&#039;name&#039;&#039;-atribuudiga võib tekkida probleeme, kui atribuuti pandud nimi sisaldaks erimärke, seega oleks mõistlikum &#039;&#039;name&#039;&#039;-atribuut asendada eraldi alamelemendiga &amp;lt;name&amp;gt;&amp;lt;/name&amp;gt;, kus saaks kasutada CDATAt.&lt;br /&gt;
&lt;br /&gt;
Tööga on nähtud vaeva, XSLTd on koostatud arusaadavalt, kuid XSD ja XML vajaksid täiendamist, et vältida võimalikke ohukohti andmete saatmisel. Vastasel korral võivad ka transformatsioonid ootamatusi toota (vt näidet). Põhiline oleks XSDs ära märkida, kui palju mingit elementi esineda võib ning tagada ka &#039;&#039;id&#039;&#039;-atribuudi unikaalsus. XMLi koostamise puhul tuleks läbi mõelda kas atribuudid on mõistlikult valitud või saaks neid esitada paremini alamelementidena. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Näide:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;background-color: whitesmoke; border: solid thin grey; display: inline-block; padding:10px&amp;quot;&amp;gt;&lt;br /&gt;
Name: Peeter Banaan&amp;lt;br&amp;gt;Member status: gold&amp;lt;br&amp;gt;Workouts and prices: &lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;     Balance: 39.99EUR&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;     Balance: 39.99EUR&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;     Balance: 39.99EUR&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;     Gym: 69.99EUR&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;     Yoga: 39.99EURYoga: 39.99EURYoga: 39.99EUR&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
JRT esitatud töö asub [https://wiki.itcollege.ee/index.php/JRT#XML siin].&lt;br /&gt;
&lt;br /&gt;
==Hinnang meeskonna JRT esitatud veebiteenusele==&lt;br /&gt;
&lt;br /&gt;
Koostaja: [https://wiki.itcollege.ee/index.php/Team_SPOT Team SPOT]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
JRT esitatud töö asub [https://wiki.itcollege.ee/index.php/JRT#J.C3.B5usaali_infos.C3.BCsteemi_anal.C3.BC.C3.BCs siin].&lt;br /&gt;
&lt;br /&gt;
==Hinnang meeskonna JRT esitatud klientrakendusele==&lt;br /&gt;
&lt;br /&gt;
Koostaja: [https://wiki.itcollege.ee/index.php/JRT#J.C3.B5usaali_infos.C3.BCsteemi_anal.C3.BC.C3.BCs Team SPOT]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
JRT esitatud töö asub [https://wiki.itcollege.ee/index.php/JRT#J.C3.B5usaali_infos.C3.BCsteemi_anal.C3.BC.C3.BCs siin].&lt;/div&gt;</summary>
		<author><name>Otiks</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Talk:JRT&amp;diff=123566</id>
		<title>Talk:JRT</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Talk:JRT&amp;diff=123566"/>
		<updated>2017-06-13T20:19:36Z</updated>

		<summary type="html">&lt;p&gt;Otiks: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Hinnang meeskonna JRT esitatud XML-failidele==&lt;br /&gt;
&lt;br /&gt;
Koostaja: [https://wiki.itcollege.ee/index.php/Team_SPOT Team SPOT]&lt;br /&gt;
&lt;br /&gt;
Meeskond JRT on esitanud XML-faili, skeemifaili ja kaks XSLT-faili andmete transformeerimiseks HTML- ja XML-formaati. Transformatsioonid sisaldavad enam kui ühte &#039;&#039;for-each&#039;&#039;-klauslit. HTML-väljundiga transformatsioonis on kasutatud nelja &#039;&#039;for-each&#039;&#039;i ja kolme &#039;&#039;if&#039;&#039;-tingimust. XML-väljundiga transformatsioonis on kasutatud viite &#039;&#039;for-each&#039;&#039;i ja kolme &#039;&#039;if&#039;&#039;-tingimust. XML valideerub ja loogilisi dimensioone on viis. Neljal dimensioonil on kasutatud atribuute, mis on enam kui lihtsalt ID. Töö põhinõuded on täidetud.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Märkused XMLi/XSD kohta:&#039;&#039;&#039;&lt;br /&gt;
* elemendi &amp;lt;user&amp;gt; &#039;&#039;id&#039;&#039;-atribuudi väärtuse unikaalsus ei ole tagatud&lt;br /&gt;
* elemendile &amp;lt;user&amp;gt; saab lisada piiramatul arvul sama alamelementi: &amp;lt;firstName&amp;gt;, &amp;lt;lastName&amp;gt;, &amp;lt;born&amp;gt;, &amp;lt;sex&amp;gt;, …&lt;br /&gt;
* elemendil &amp;lt;user&amp;gt; on kõigi &amp;lt;subscription&amp;gt;-elementide &#039;&#039;type&#039;&#039; määratud kõige ülemisel tasemel &#039;&#039;status&#039;&#039;-atribuudiga, aga see võiks olla &amp;lt;subscription&amp;gt;-tasemel, et võimaldada rohkem paindlikkust&lt;br /&gt;
* atribuuti &#039;&#039;id&#039;&#039; (unikaalset) võiks kasutada ka teiste “liigielementide” puhul, sest:&lt;br /&gt;
**  elemente &amp;lt;subscription&amp;gt; saab sama &#039;&#039;name&#039;&#039;-atribuudiga lisada piiramatul arvul&lt;br /&gt;
**  elemendi &amp;lt;subscription&amp;gt; alla saab lisada piiramatul arvul &amp;lt;price&amp;gt;-elemente samade &#039;&#039;type&#039;&#039;- ja &#039;&#039;currency&#039;&#039;-atribuutide väärtustega&lt;br /&gt;
* elemendi &amp;lt;subscription&amp;gt; &#039;&#039;name&#039;&#039;-atribuudiga võib tekkida probleeme, kui atribuuti pandud nimi sisaldaks erimärke, seega oleks mõistlikum &#039;&#039;name&#039;&#039;-atribuut asendada eraldi alamelemendiga &amp;lt;name&amp;gt;&amp;lt;/name&amp;gt;, kus saaks kasutada CDATAt.&lt;br /&gt;
&lt;br /&gt;
Tööga on nähtud vaeva, XSLTd on koostatud arusaadavalt, kuid XSD ja XML vajaksid täiendamist, et vältida võimalikke ohukohti andmete saatmisel. Vastasel korral võivad ka transformatsioonid ootamatusi toota (vt näidet). Põhiline oleks XSDs ära märkida, kui palju mingit elementi esineda võib ning tagada ka &#039;&#039;id&#039;&#039;-atribuudi unikaalsus. XMLi koostamise puhul tuleks läbi mõelda kas atribuudid on mõistlikult valitud või saaks neid esitada paremini alamelementidena. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Näide:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;background-color: whitesmoke; border: solid thin grey; display: inline-block; padding:10px&amp;quot;&amp;gt;&lt;br /&gt;
Name: Peeter Banaan&amp;lt;br&amp;gt;Member status: gold&amp;lt;br&amp;gt;Workouts and prices: &lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;     Balance: 39.99EUR&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;     Balance: 39.99EUR&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;     Balance: 39.99EUR&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;     Gym: 69.99EUR&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;     Yoga: 39.99EURYoga: 39.99EURYoga: 39.99EUR&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
JRT esitatud töö asub [https://wiki.itcollege.ee/index.php/JRT#XML siin].&lt;br /&gt;
&lt;br /&gt;
==Hinnang meeskonna JRT esitatud veebiteenusele==&lt;br /&gt;
&lt;br /&gt;
Koostaja: [https://wiki.itcollege.ee/index.php/Team_SPOT Team SPOT]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
JRT esitatud töö asub [https://wiki.itcollege.ee/index.php/JRT#J.C3.B5usaali_infos.C3.BCsteemi_anal.C3.BC.C3.BCs siin].&lt;br /&gt;
&lt;br /&gt;
==Hinnang meeskonna JRT esitatud klientrakendusele==&lt;br /&gt;
&lt;br /&gt;
Koostaja: [https://wiki.itcollege.ee/index.php/JRT#J.C3.B5usaali_infos.C3.BCsteemi_anal.C3.BC.C3.BCs Team SPOT]&lt;/div&gt;</summary>
		<author><name>Otiks</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Team_SPOT&amp;diff=123553</id>
		<title>Team SPOT</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Team_SPOT&amp;diff=123553"/>
		<updated>2017-06-12T23:39:26Z</updated>

		<summary type="html">&lt;p&gt;Otiks: /* Retsensioonid */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://wiki.itcollege.ee/index.php/Kodut%C3%B6%C3%B6_aines_%22V%C3%B5rgurakendused_II:_hajuss%C3%BCsteemide_ehitamine%22_2017 Kodutöö aines &amp;quot;Võrgurakendused II: hajussüsteemide ehitamine&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
[https://projectspot.visualstudio.com/PROJECTSPOT Projekti repositoorium (avaneb ainult liikmetele)]&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==Liikmed==&lt;br /&gt;
*Sigrid Pachel&lt;br /&gt;
*Oliver Tiks&lt;br /&gt;
&lt;br /&gt;
==Idee==&lt;br /&gt;
Mõttes on luua spordiklubi(de) veebiteenus ja klientrakendus, mis võimaldaks saada infot pakutavate treeningute kohta, sisestada ja kuvada tunniplaani andmeid, registreerida osalejaid tundidesse ning teha muid asjakohaseid tegevusi nii klubi(de) personalil, liikmetel kui ka juhukasutajatel.&lt;br /&gt;
&lt;br /&gt;
==Veebiteenuse analüüs==&lt;br /&gt;
SPOTi veebiteenus võimaldab saada infot erinevate klubide treeningute kohta ja end neisse registreerida. Kasutaja saab teavet, kus ja millal treeningud toimuvad (tunniplaan), mida treeningus täpsemalt tehakse, mis stiiliga on tegemist, kes on treener, kui palju üks kord maksab jms info. Kasutajakontoga liikmel on võimalik end registreerida soovitud tundi ja hallata oma registreeringuid (muuta, tühistada).&lt;br /&gt;
&lt;br /&gt;
Spordiklubide infot haldavad süsteemi administraatorid, kes saavad lisada, muuta ja kustutada kõike sprodiklubiga seonduvat. Erinevaid treeninguid ja nendega seotud konkreetset infot saavad lisada ja hallata treenerid või spordiklubi esindajad.&lt;br /&gt;
&lt;br /&gt;
Projekti realiseerimiseks kasutame REST arhitektuuri ja ASP.NET MVC Web API tehnoloogiat.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Üldine plaan:&#039;&#039;&#039;&lt;br /&gt;
* esialgu üks kett (laienemise võimalusega)&lt;br /&gt;
* mitu klubi (asukoht, saalid-treeningualad, võimalikud lisatingimused)&lt;br /&gt;
* treeningute info (stiilid ehk kontseptid, litsentsid, …)&lt;br /&gt;
* tunniplaan (aeg, koht, instruktorid, max osalejate arv, ühe korra hind)&lt;br /&gt;
* registratuur (treeningutest osavõtjad)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kasutajad (rollid):&#039;&#039;&#039;&lt;br /&gt;
* administraatorid (saavad teha muudatusi)&lt;br /&gt;
* treenerid (info kvalifikatsiooni, litsentside kohta, õigus treeninguid lisada) &lt;br /&gt;
* liikmed (saavad treeningutele registreeruda)&lt;br /&gt;
* ülejäänud (näevad klubide ja treeningute infot ning tunniplaani)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Peaks olema:&#039;&#039;&#039;&lt;br /&gt;
* kasutajate loomine&lt;br /&gt;
* kasutajate tuvastamine ja haldamine&lt;br /&gt;
* kasutajate ja kasutusstatistika logimine&lt;br /&gt;
* teenuse poole pöördumiste arvu piiramine ja piirangute haldamine&lt;br /&gt;
* klubide, treenerite ja treeningute info väljastamine&lt;br /&gt;
* tunniplaani info väljastamine&lt;br /&gt;
* treeningutesse registreerimine&lt;br /&gt;
* registreeringu tühistamine&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Võiks olla:&#039;&#039;&#039;&lt;br /&gt;
* klubide, treenerite, treeningute lisamine ja muutmine&lt;br /&gt;
* tunniplaanis treeningute tühistamine&lt;br /&gt;
* sisestatud andmete kustutamine (pehmelt)&lt;br /&gt;
* rollide-õiguste määramine (admin)&lt;br /&gt;
* asukohad mitmes riigis&lt;br /&gt;
* kliendipaketid, arveldus&lt;br /&gt;
* kontaktide tsentraliseeritud haldus&lt;br /&gt;
* sisselogimine läbi Google’i, Facebooki vmt teenuse&lt;br /&gt;
&lt;br /&gt;
===Andmebaasi skeem (lihtsustatud)===&lt;br /&gt;
&lt;br /&gt;
[[File:SPOTService ERD.JPG|border|SPOT Service ERD]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Märkus: olemite atribuutidest on välja toodud ainult peamised.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====Tabelite kirjeldused====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kasutajahaldus*:&#039;&#039;&#039;&lt;br /&gt;
* User - kasutajate andmed&lt;br /&gt;
* Role - rollid, millega määratakse kasutajate õigused (&amp;quot;Admin&amp;quot;, &amp;quot;Trainer&amp;quot;, ...)&lt;br /&gt;
* UserRole - kasutajate sidumine rolli(de)ga&lt;br /&gt;
* UserLogin - muu teenuse kaudu sisselogimiseks&lt;br /&gt;
* UserClaim - muu teenuse kaudu sisselogimiseks&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;&#039;&#039;Kasutajahalduse süsteem toetub Asp.Net Identity valmislahendusele, mida on täiendanud A. Käver.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Klubid:&#039;&#039;&#039;&lt;br /&gt;
* Chain (optional) - spordiklubikettide info&lt;br /&gt;
* Location - spordiklubi/-rajatise asukoht linna/asula täpsusega&lt;br /&gt;
* Facility - spordiklubi/-rajatise andmed, seotud asukohaga ja vajadusel ketiga.&lt;br /&gt;
* Venue - spordiklubis/-rajatises kasutatavad saalid ja muud treeningualad&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Treeningud:&#039;&#039;&#039;&lt;br /&gt;
* Concept (Style) - treeningustiilid ehk kontseptid&lt;br /&gt;
* Licenser (optional) - treeninguliikide litsentsid (kui on)&lt;br /&gt;
* Training - treeninguliikide andmed, seotud stiili ja vajadusel litsentsiga&lt;br /&gt;
* Trainer (User (role: Trainer) + Training) - treeninguliikide sidumine treeneritega&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tunniplaan:&#039;&#039;&#039;&lt;br /&gt;
* ScheduleItem - treeningud tunniplaanis&lt;br /&gt;
* Instructor (User (role: Trainer) + ScheduleItem) - tundide juhendajad (võib olla mitu)&lt;br /&gt;
* Registration (ScheduleItem + User (role: any)) - tundidesse tehtud registreeringud&lt;br /&gt;
&lt;br /&gt;
== XML / XSD / XSLT==&lt;br /&gt;
Projekti esimeses etapis sai loodud XML andmefail, mille ülesehitus on paika pandud XSD skeemifailis. Lisaks on olemas kaks stiilifaili: esimene neist transformeerib andmed HTML-kujule, et kuvada infot  veebilehel, teine tekitab samade andmete esitamiseks uue struktuuriga XML faili.&lt;br /&gt;
&lt;br /&gt;
[https://drive.google.com/open?id=0B84njRSbVLUtd0U4aEJXOUhOTG8 Lae failid alla.] &lt;br /&gt;
&lt;br /&gt;
=== XML ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Fail sisaldab andmeid ühes spordiklubis pakutavate treeningute kohta. Andmed on esitatud treeninguliikide kaupa, mille juurde on lisatud ka vastava treeninguliigi tunniplaan. Treeninguliikidel on nimi ja kirjeldus ning vajadusel ära märgitud ka litsents. Failis on eraldi välja toodud treeningustiilid, instruktorid ja ruumid, kus treeningud toimuvad. Iga treeninguliik kuulub ühe või mitme stiili alla. Instruktoritel on tagasiside põhjal saadud hinne. Treeninguruumidel on vaikimisi määratud mahutavus. Tunniplaanis on ära toodud treeningu koht, algusaeg ja kestus ning instruktorid. Vajadusel saab eraldi määrata ka treeningurühma suuruse, kui see erineb tavalisest ruumi mahutavusest. Ka on võimalik treeningutunnile lisada kommentaar. Erinevate elementide andmed on omavahel seotud id-atribuutidega.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;?xml-stylesheet type=&amp;quot;text/xsl&amp;quot; href=&amp;quot;trainingsToHtml.xslt&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Trainings&amp;gt;&lt;br /&gt;
  &amp;lt;Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;![CDATA[Cardio]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
  &amp;lt;/Styles&amp;gt;&lt;br /&gt;
  &amp;lt;Instructors&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;1&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Yogafier]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;2&amp;quot; Rating=&amp;quot;4.7&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Mickey Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;3&amp;quot; Rating=&amp;quot;4.6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;4&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Donald Duck]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;5&amp;quot; Rating=&amp;quot;3.9&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Goofy]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;6&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Schwarzenegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;8&amp;quot; Rating=&amp;quot;4.8&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Kayla Weightlifter]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;9&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Margaret Strengthener]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
  &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;Venues&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;1&amp;quot; GroupSize=&amp;quot;45&amp;quot;&amp;gt;&amp;lt;![CDATA[Main Hall]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 2]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;3&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 3]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;4&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 4]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;5&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 5]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&amp;lt;![CDATA[Area 6]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;7&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&amp;lt;![CDATA[Yoga Hall]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
  &amp;lt;/Venues&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Yoga]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[Yoga is a group of physical, mental, and spiritual practices or disciplines which originated in ancient India. ]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;1&amp;quot; VenueId=&amp;quot;7&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-25T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;14&amp;quot; VenueId=&amp;quot;7&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT1H20M&amp;quot;&amp;gt;2017-03-28T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Comment&amp;gt;&lt;br /&gt;
          &amp;lt;![CDATA[Special class!]]&amp;gt;&lt;br /&gt;
        &amp;lt;/Comment&amp;gt; &lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/Nvlxn0EnmbM&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;  &lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;2&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyBalance™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[BODYBALANCE™ is the Yoga, Tai Chi, Pilates workout that builds flexibility and strength and leaves you feeling centered and calm. Based on a carefully structured series of stretches, moves and poses to music it creates a holistic workout that brings the body into a state of harmony and balance. This class will heighten your flexibility and inner strength creating a strong supple body from the inside out. Burn on average 390cals per hour.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;2&amp;quot; VenueId=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-31T12:15:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;3&amp;quot; VenueId=&amp;quot;2&amp;quot; &amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-30T13:30:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;3&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/jJxA6vBjUqY&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;3&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyJam™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;4&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[The Body Jam program is an addictive fusion of the latest dance styles to the hottest new sounds. This class isn’t just for dancers, it’s for everyone because the emphasis is put on not only having fun but also breaking a sweat. So grab a friend, get front and centre … you bring the attitude and we’ll bring the moves!]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;4&amp;quot;  VenueId=&amp;quot;3&amp;quot; &amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T16:10:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;4&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;5&amp;quot; VenueId=&amp;quot;5&amp;quot; &amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT45M&amp;quot;&amp;gt;2017-04-01T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;5&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/8PTXyg9si_4&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;4&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyPump™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[BodyPump classes are 59 minutes long and contain eight separate muscle-group specific songs or &amp;quot;tracks&amp;quot; along with an opening warm up track and closing cool-down track. There are also 45-minute and 30-minute class formats. The classes are performed to music using free weights-plates, barbells and an aerobic step. Participants choose their weights based on the exercise and their personal goals. Major muscle groups are worked via series of compound and isolation-based exercises including squats, presses, dead lifts. The focus is towards muscle endurance by moving light weights at high repetitions, what Les Mills calls the Rep Effect.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;3&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;6&amp;quot; VenueId=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;6&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;7&amp;quot; VenueId=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-23T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;6&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/zU_0XrdO3wo&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[CoreStrenght is a very hard workout! Not for beginners.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;3&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;8&amp;quot; VenueId=&amp;quot;6&amp;quot; GroupSize=&amp;quot;10&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT2H&amp;quot;&amp;gt;2017-03-23T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;9&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Comment&amp;gt;&lt;br /&gt;
          &amp;lt;![CDATA[Special challenge!]]&amp;gt;&lt;br /&gt;
        &amp;lt;/Comment&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;9&amp;quot; VenueId=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;8&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;10&amp;quot; VenueId=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-04-05T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;8&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;9&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/ZxTVmpvyUt8&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[Zumba involves dance and aerobic movements performed to energetic music. The choreography incorporates hip-hop, soca, samba, salsa, merengue and mambo. Squats and lunges are also included.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;4&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;11&amp;quot; VenueId=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT55M&amp;quot;&amp;gt;2017-03-26T15:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;12&amp;quot; VenueId=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-28T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;13&amp;quot; VenueId=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/-ZB6XIkfxnQ&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
&amp;lt;/Trainings&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSD ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Skeemifail kontrollib eelnevas andmefailis esitatud andmete vastavust kokkulepitud formaadile, samuti õigete andmetüüpide kasutamist. Alamelemendi id-atribuudi väärtus peab olema iga elemendirühma lõikes unikaalne. Kohustuslike elementide ja atribuutide kõrval on ka mõned (nt kommentaar), mille olemasolu pole alati tarvilik. Teatud puhkudel on piiratud maksimaalset elementide arvu (nt treeningutunni algusaeg). Faili üldine struktuur on kindel, aga alati pole alamelementide järjekord oluline (nt treeninguliigi puhul).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xs:schema attributeFormDefault=&amp;quot;unqualified&amp;quot; elementFormDefault=&amp;quot;qualified&amp;quot; xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xs:element name=&amp;quot;Trainings&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Styles&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Style&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
          &amp;lt;xs:unique name=&amp;quot;UniqueStyleId&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xs:selector xpath=&amp;quot;Style&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Instructors&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;Name&amp;quot; type=&amp;quot;xs:string&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:attribute name=&amp;quot;Rating&amp;quot; type=&amp;quot;xs:decimal&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
          &amp;lt;xs:unique name=&amp;quot;UniqueInstructorId&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xs:selector xpath=&amp;quot;Instructor&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Venues&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Venue&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:attribute name=&amp;quot;GroupSize&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
          &amp;lt;xs:unique name=&amp;quot;UniqueVenueId&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xs:selector xpath=&amp;quot;Venue&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Training&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:all&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Description&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Styles&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Style&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Schedule&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;ScheduleItem&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:all&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element  maxOccurs=&amp;quot;1&amp;quot; name=&amp;quot;Time&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:extension base=&amp;quot;xs:dateTime&amp;quot;&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:attribute name=&amp;quot;Duration&amp;quot; type=&amp;quot;xs:duration&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element name=&amp;quot;Instructors&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                    &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                                      &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                                        &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                                      &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                                    &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                                  &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; name=&amp;quot;Comment&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:all&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;VenueId&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;GroupSize&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;optional&amp;quot; /&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;VideoUrl&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:all&amp;gt;&lt;br /&gt;
            &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xs:attribute name=&amp;quot;Licence&amp;quot; type=&amp;quot;xs:string&amp;quot; use=&amp;quot;optional&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
    &amp;lt;xs:unique name=&amp;quot;UniqueTrainingId&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xs:selector xpath=&amp;quot;Training&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
    &amp;lt;xs:unique name=&amp;quot;UniqueScheduleItemId&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xs:selector xpath=&amp;quot;Training/Schedule/ScheduleItem&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSLT (html) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Selles transformatsioonifailis on kirjeldatud XML failis olevate andmete [http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/trainings.xml  kuvamise viis veebilehel]. Treeninguliigid on jaotatud stiiliblokkidesse (mõni treening kuulub mitme stiili alla). Iga treeninguliigi all on tabeli kujul esitatud tunniplaan ning lisatud näidisvideo ja kirjeldus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot; xmlns:msxsl=&amp;quot;urn:schemas-microsoft-com:xslt&amp;quot; exclude-result-prefixes=&amp;quot;msxsl&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:output method=&amp;quot;html&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;html&amp;gt;&lt;br /&gt;
      &amp;lt;head&amp;gt;&lt;br /&gt;
        &amp;lt;title&amp;gt;SuperSportsClub - Trainings&amp;lt;/title&amp;gt;&lt;br /&gt;
        &amp;lt;style&amp;gt;&lt;br /&gt;
          body {&lt;br /&gt;
          background:BurlyWood;&lt;br /&gt;
          text-align: center;&lt;br /&gt;
          }&lt;br /&gt;
          .section {&lt;br /&gt;
          text-align:left;&lt;br /&gt;
          width:1000px;&lt;br /&gt;
          padding:20px;&lt;br /&gt;
          background:Chocolate;&lt;br /&gt;
          margin: auto;&lt;br /&gt;
          }&lt;br /&gt;
          table, th, td, .section {&lt;br /&gt;
          border: 1px solid black;&lt;br /&gt;
          }&lt;br /&gt;
          th {&lt;br /&gt;
          text-align:left;&lt;br /&gt;
          padding-left: 10px;&lt;br /&gt;
          padding-right: 10px;&lt;br /&gt;
          }&lt;br /&gt;
          td {&lt;br /&gt;
          text-align:center;&lt;br /&gt;
          }&lt;br /&gt;
          p {&lt;br /&gt;
          text-align:justify;&lt;br /&gt;
          }&lt;br /&gt;
          .description {&lt;br /&gt;
          vertical-align:top; &lt;br /&gt;
          padding:10px;&lt;br /&gt;
          }&lt;br /&gt;
        &amp;lt;/style&amp;gt;&lt;br /&gt;
      &amp;lt;/head&amp;gt;&lt;br /&gt;
      &amp;lt;body&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;Trainings at SuperSportsClub&amp;lt;/h1&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;/Trainings/Styles/Style&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:sort select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:variable select=&amp;quot;.&amp;quot; name=&amp;quot;SelectedStyle&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;section&amp;quot; &amp;gt;&lt;br /&gt;
            &amp;lt;h2&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select=&amp;quot;$SelectedStyle&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/h2&amp;gt;&lt;br /&gt;
            &amp;lt;ul&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:for-each select=&amp;quot;/Trainings/Training&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:sort select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:variable name=&amp;quot;Training&amp;quot; select=&amp;quot;.&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:if test=&amp;quot;Styles/Style/@Id = $SelectedStyle/@Id&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;&lt;br /&gt;
                    &amp;lt;h3&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;$Training/Name&amp;quot; /&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:if test=&amp;quot;$Training/@Licence&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:text&amp;gt; (&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:value-of select=&amp;quot;$Training/@Licence&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:text&amp;gt;)&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
                    &amp;lt;/h3&amp;gt;&lt;br /&gt;
                    &amp;lt;table&amp;gt;&lt;br /&gt;
                      &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                      &amp;lt;/tr&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:for-each select=&amp;quot;$Training/Schedule/ScheduleItem&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:sort select=&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:variable name=&amp;quot;StartTime&amp;quot; select=&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:variable name=&amp;quot;Duration&amp;quot; select=&amp;quot;$StartTime/@Duration&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;tr&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;150&amp;quot; &amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;concat(&lt;br /&gt;
                                            substring($StartTime, 9, 2), &lt;br /&gt;
                                            &#039;.&#039;, &lt;br /&gt;
                                            substring($StartTime, 6, 2), &lt;br /&gt;
                                            &#039;.&#039;, &lt;br /&gt;
                                            substring($StartTime, 1, 4),&lt;br /&gt;
                                            &#039; &#039;,&lt;br /&gt;
                                            substring($StartTime, 12, 2),&lt;br /&gt;
                                            &#039;:&#039;,&lt;br /&gt;
                                            substring($StartTime, 15, 2))&lt;br /&gt;
                                            &amp;quot; /&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:if test=&amp;quot;Comment&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;br/&amp;gt;&lt;br /&gt;
                              &amp;lt;div style=&amp;quot;color:Green&amp;quot;&amp;gt;&lt;br /&gt;
                                &amp;lt;xsl:value-of select=&amp;quot;Comment&amp;quot;/&amp;gt;&lt;br /&gt;
                              &amp;lt;/div&amp;gt;&lt;br /&gt;
                            &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;substring($Duration, 3, 6)&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:variable name=&amp;quot;VenueId&amp;quot; select=&amp;quot;@VenueId&amp;quot;/&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;/Trainings/Venues/Venue[@Id=$VenueId]&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:for-each select=&amp;quot;Instructors/Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:variable name=&amp;quot;InstructorId&amp;quot; select=&amp;quot;@Id&amp;quot;&amp;gt;&amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:variable name=&amp;quot;SelectedInstructor&amp;quot; select=&amp;quot;/Trainings/Instructors/Instructor[@Id=$InstructorId]&amp;quot; /&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/Name&amp;quot;/&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:text&amp;gt; (&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/@Rating&amp;quot; /&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:text&amp;gt;)&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                              &amp;lt;br/&amp;gt;&lt;br /&gt;
                            &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;/tr&amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
                    &amp;lt;/table&amp;gt;&lt;br /&gt;
                    &amp;lt;br/&amp;gt;&lt;br /&gt;
                    &amp;lt;table&amp;gt;&lt;br /&gt;
                      &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                          &amp;lt;xsl:variable name=&amp;quot;VideoUrl&amp;quot; select=&amp;quot;$Training/VideoUrl&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;{$VideoUrl}&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                          &amp;lt;p&amp;gt;&lt;br /&gt;
                            &amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&lt;br /&gt;
                          &amp;lt;/p&amp;gt;&lt;br /&gt;
                          &amp;lt;p&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;$Training/Description&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                      &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;/table&amp;gt;&lt;br /&gt;
                  &amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
            &amp;lt;/ul&amp;gt;&lt;br /&gt;
          &amp;lt;/div&amp;gt;&lt;br /&gt;
          &amp;lt;br/&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
      &amp;lt;/body&amp;gt;&lt;br /&gt;
    &amp;lt;/html&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== HTML (transformeeritud) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/trainings.html Vaata eelneva transformatsiooni tulemust.]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;META http-equiv=&amp;quot;Content-Type&amp;quot; content=&amp;quot;text/html; charset=utf-8&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;SuperSportsClub - Trainings&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;style&amp;gt;&lt;br /&gt;
        body {&lt;br /&gt;
            background: BurlyWood;&lt;br /&gt;
            text-align: center;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        .section {&lt;br /&gt;
            text-align: left;&lt;br /&gt;
            width: 1000px;&lt;br /&gt;
            padding: 20px;&lt;br /&gt;
            background: Chocolate;&lt;br /&gt;
            margin: auto;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        table, th, td, .section {&lt;br /&gt;
            border: 1px solid black;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        th {&lt;br /&gt;
            text-align: left;&lt;br /&gt;
            padding-left: 10px;&lt;br /&gt;
            padding-right: 10px;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        td {&lt;br /&gt;
            text-align: center;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        p {&lt;br /&gt;
            text-align: justify;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        .description {&lt;br /&gt;
            vertical-align: top;&lt;br /&gt;
            padding: 10px;&lt;br /&gt;
        }&lt;br /&gt;
    &amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
    &amp;lt;h1&amp;gt;Trainings at SuperSportsClub&amp;lt;/h1&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Body&amp;amp;amp;Mind&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyBalance™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 13:30&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;1H15M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 2&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Minnie Mouse (4.6)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;31.03.2017 12:15&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;1H15M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 3&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Mickey Mouse (4.7)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/jJxA6vBjUqY&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                BODYBALANCE™ is the Yoga, Tai Chi, Pilates workout that builds flexibility and strength and leaves you feeling centered and calm. Based on a carefully structured series of stretches, moves and poses to music it creates a holistic workout that brings the body into a state of harmony and balance. This class will heighten your flexibility and inner strength creating a strong supple body from the inside out. Burn on average 390cals per hour.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;Yoga&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;25.03.2017 14:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Yoga Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Minnie Yogafier (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
                            28.03.2017 14:00&amp;lt;br&amp;gt;&amp;lt;div style=&amp;quot;color:Green&amp;quot;&amp;gt;&lt;br /&gt;
                                Special class!&lt;br /&gt;
                            &amp;lt;/div&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;1H20M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Yoga Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Minnie Yogafier (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/Nvlxn0EnmbM&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                Yoga is a group of physical, mental, and spiritual practices or disciplines which originated in ancient India.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Cardio&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyJam™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 16:10&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 3&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Donald Duck (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;01.04.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;45M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 5&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Goofy (3.9)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/8PTXyg9si_4&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                The Body Jam program is an addictive fusion of the latest dance styles to the hottest new sounds. This class isn’t just for dancers, it’s for everyone because the emphasis is put on not only having fun but also breaking a sweat. So grab a friend, get front and centre … you bring the attitude and we’ll bring the moves!&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Dance&amp;amp;amp;Fun&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyJam™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 16:10&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 3&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Donald Duck (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;01.04.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;45M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 5&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Goofy (3.9)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/8PTXyg9si_4&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                The Body Jam program is an addictive fusion of the latest dance styles to the hottest new sounds. This class isn’t just for dancers, it’s for everyone because the emphasis is put on not only having fun but also breaking a sweat. So grab a friend, get front and centre … you bring the attitude and we’ll bring the moves!&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;Zumba®&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;26.03.2017 15:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;55M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 2&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Zumbaschnegger (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;28.03.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 4&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Zumbaschnegger (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 2&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Zumbaschnegger (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/-ZB6XIkfxnQ&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                Zumba involves dance and aerobic movements performed to energetic music. The choreography incorporates hip-hop, soca, samba, salsa, merengue and mambo. Squats and lunges are also included.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Strength&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyPump™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;23.03.2017 13:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Main Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Schwarzenegger (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 13:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Main Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Schwarzenegger (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/zU_0XrdO3wo&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                BodyPump classes are 59 minutes long and contain eight separate muscle-group specific songs or &amp;quot;tracks&amp;quot; along with an opening warm up track and closing cool-down track. There are also 45-minute and 30-minute class formats. The classes are performed to music using free weights-plates, barbells and an aerobic step. Participants choose their weights based on the exercise and their personal goals. Major muscle groups are worked via series of compound and isolation-based exercises including squats, presses, dead lifts. The focus is towards muscle endurance by moving light weights at high repetitions, what Les Mills calls the Rep Effect.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;CoreStrength&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
                            23.03.2017 12:00&amp;lt;br&amp;gt;&amp;lt;div style=&amp;quot;color:Green&amp;quot;&amp;gt;&lt;br /&gt;
                                Special challenge!&lt;br /&gt;
                            &amp;lt;/div&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;2H&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Area 6&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Margaret Strengthener (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Area 6&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Kayla Weightlifter (4.8)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;05.04.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Area 6&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Kayla Weightlifter (4.8)&amp;lt;br&amp;gt;Margaret Strengthener (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/ZxTVmpvyUt8&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                CoreStrenght is a very hard workout! Not for beginners.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSLT (xml) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Selle transformatsiooniga luuakse uus [http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/schedule.xml XML fail], milles on treeningute andmed esitatud ühtse tunniplaani kujul. Algses failis erinevate elementide alla paigutatud andmed on nüüd tunniplaani alamelemendis kokku viidud. Sidumine on teostatud id-atribuutide abil. Tunniplaanis on ühes kohas kirjas treeningu nimi, stiil(id), koht, algusaeg, kestus, rühma suurus, instruktorid ja muu täiendav info.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&lt;br /&gt;
    xmlns:msxsl=&amp;quot;urn:schemas-microsoft-com:xslt&amp;quot; exclude-result-prefixes=&amp;quot;msxsl&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:output method=&amp;quot;xml&amp;quot; indent=&amp;quot;yes&amp;quot; cdata-section-elements=&amp;quot;Name Style Comment&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;/Trainings/Training&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:sort select=&amp;quot;Name&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:variable name=&amp;quot;SelectedTraining&amp;quot; select=&amp;quot;.&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;Schedule/ScheduleItem&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:sort select=&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;ScheduleItem&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:variable name=&amp;quot;VenueId&amp;quot; select=&amp;quot;@VenueId&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:variable name=&amp;quot;SelectedVenue&amp;quot; select=&amp;quot;/Trainings/Venues/Venue[@Id=$VenueId]&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:attribute name=&amp;quot;GroupSize&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;@GroupSize&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:value-of select=&amp;quot;@GroupSize&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:value-of select=&amp;quot;$SelectedVenue/@GroupSize&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
            &amp;lt;Venue&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$VenueId&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select=&amp;quot;$SelectedVenue&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/Venue&amp;gt;&lt;br /&gt;
            &amp;lt;Training&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$SelectedTraining/@Id&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:if test=&amp;quot;$SelectedTraining/@Licence&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:attribute name=&amp;quot;Licence&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:value-of select=&amp;quot;$SelectedTraining/@Licence&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
              &amp;lt;Name&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$SelectedTraining/Name&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/Name&amp;gt;&lt;br /&gt;
              &amp;lt;Styles&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:for-each select=&amp;quot;$SelectedTraining/Styles/Style&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:variable name=&amp;quot;StyleId&amp;quot; select=&amp;quot;@Id&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;Style&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:attribute name=&amp;quot;StyleId&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;$StyleId&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;/Trainings/Styles/Style[@Id=$StyleId]&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/Style&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
              &amp;lt;/Styles&amp;gt;&lt;br /&gt;
            &amp;lt;/Training&amp;gt;&lt;br /&gt;
            &amp;lt;Time&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:attribute name=&amp;quot;Duration&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;Time/@Duration&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select =&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/Time&amp;gt;&lt;br /&gt;
            &amp;lt;Instructors&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:for-each select=&amp;quot;Instructors/Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:variable name=&amp;quot;InstructorId&amp;quot; select=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:variable name=&amp;quot;SelectedInstructor&amp;quot; select=&amp;quot;/Trainings/Instructors/Instructor[@Id=$InstructorId]&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;Instructor&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;$InstructorId&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:attribute name=&amp;quot;Rating&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/@Rating&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                  &amp;lt;Name&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/Name&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/Name&amp;gt;&lt;br /&gt;
                &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
            &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:if test=&amp;quot;Comment&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;Comment&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;Comment&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/Comment&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
          &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XML (transformeeritud) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/schedule.xml Vaata eelneva transformatsiooni tulemust.]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Schedule&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;3&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot;&amp;gt;Hall 2&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;2&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyBalance™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-30T13:30:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;3&amp;quot; Rating=&amp;quot;4.6&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;2&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;3&amp;quot;&amp;gt;Hall 3&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;2&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyBalance™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-31T12:15:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;2&amp;quot; Rating=&amp;quot;4.7&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Mickey Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;4&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;3&amp;quot;&amp;gt;Hall 3&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;3&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyJam™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;![CDATA[Cardio]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T16:10:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;4&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Donald Duck]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;5&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;5&amp;quot;&amp;gt;Hall 5&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;3&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyJam™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;![CDATA[Cardio]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT45M&amp;quot;&amp;gt;2017-04-01T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;5&amp;quot; Rating=&amp;quot;3.9&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Goofy]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;7&amp;quot; GroupSize=&amp;quot;45&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;1&amp;quot;&amp;gt;Main Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;4&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyPump™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-23T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;6&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Schwarzenegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;6&amp;quot; GroupSize=&amp;quot;45&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;1&amp;quot;&amp;gt;Main Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;4&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyPump™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;6&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Schwarzenegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;8&amp;quot; GroupSize=&amp;quot;10&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot;&amp;gt;Area 6&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT2H&amp;quot;&amp;gt;2017-03-23T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;9&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Margaret Strengthener]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
    &amp;lt;Comment&amp;gt;&amp;lt;![CDATA[&lt;br /&gt;
          Special challenge!&lt;br /&gt;
        ]]&amp;gt;&amp;lt;/Comment&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;9&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot;&amp;gt;Area 6&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;8&amp;quot; Rating=&amp;quot;4.8&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Kayla Weightlifter]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;10&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot;&amp;gt;Area 6&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-04-05T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;8&amp;quot; Rating=&amp;quot;4.8&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Kayla Weightlifter]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;9&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Margaret Strengthener]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;11&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot;&amp;gt;Hall 2&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT55M&amp;quot;&amp;gt;2017-03-26T15:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;12&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;4&amp;quot;&amp;gt;Hall 4&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-28T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;13&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot;&amp;gt;Hall 2&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;1&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;7&amp;quot;&amp;gt;Yoga Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Yoga]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-25T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;1&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Yogafier]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;14&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;7&amp;quot;&amp;gt;Yoga Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Yoga]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT1H20M&amp;quot;&amp;gt;2017-03-28T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;1&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Yogafier]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
    &amp;lt;Comment&amp;gt;&amp;lt;![CDATA[&lt;br /&gt;
          Special class!&lt;br /&gt;
        ]]&amp;gt;&amp;lt;/Comment&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
&amp;lt;/Schedule&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus ==&lt;br /&gt;
Angular JS &#039;&#039;single page application&#039;&#039; eelnevalt kirjeldatud veebiteenusele. Sisse logimata saab kuvada spordiklubi tunniplaani nädalate kaupa, treeninguliike stiilide kaupa ja treenereid. Võimalik on liituda teenusega ja registreeruda treeningutele, samuti registreeringuid tühistada nii otse tunniplaanist kui ka registreeringute lehel. Esialgu põhineb süsteem ühel spordiklubil. Kasutamise eelduseks on tunniplaani olemasolu andmebaasis.&lt;br /&gt;
&lt;br /&gt;
Autentimine on lahendatud tokenipõhiselt. Eeskuju ja põhjana kasutasime näidisrakendust, mille juhend ja lähtekood on leitav [http://bitoftech.net/2014/06/09/angularjs-token-authentication-using-asp-net-web-api-2-owin-asp-net-identity/ siit].&lt;br /&gt;
&lt;br /&gt;
== Lähtekood ==&lt;br /&gt;
Eksamiks valminud veebiteenuse ja klientrakenduse kokkupakitult allalaadimiseks klõpsa [https://drive.google.com/open?id=0B84njRSbVLUtTWx5ZkZsdDBJZDQ sellel lingil]. WebApi ja Angular JS klient on eraldi lahendustes. Kliendi testimiseks brauseris (Chrome, Firefox vm) tuleb eelnevalt käivitada ka veebiteenus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;NB! Võib juhtuda, et WebApi esmakordsel käivitamisel loodavasse andmebaasi kõiki andmeid (tunniplaani ja registreerimisi jooksvasse nädalasse) ei lisandu. Sellisel juhul kustuta tekkinud andmebaas ja käivita kõigepealt samas lahenduses olev konsoolirakendus.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Retsensioonid ==&lt;br /&gt;
&lt;br /&gt;
# [https://wiki.itcollege.ee/index.php/Talk:JRT JRT meeskonna XML/XSD/XSLT retsensioon ]&lt;br /&gt;
# [Veebiteenuse retsensioon lisandub varsti]&lt;br /&gt;
# [Klientrakenduse retsensioon lisandub varsti]&lt;br /&gt;
&lt;br /&gt;
== Log ==&lt;br /&gt;
* 03.03.17 Esimene kohtumine. Idee.&lt;br /&gt;
* 17.03.17 Osa XMList valmis, osa XSLT-st valmis.&lt;br /&gt;
* 18.03.17 Teine kohtumine. XMLi täiendamine, esimene ülekäimine XSD-s.&lt;br /&gt;
* 19.03.17 XML/XSLT/XSD täiendamine ja lõpetamine.&lt;br /&gt;
* 20.03.17 XML fail, skeemifail ja stiilifailid esitatud. Projekti esimese etapi lõpp. Kevade algus.&lt;br /&gt;
* 26.03.17 XML/XSLT/XSD retsensioon esitatud.&lt;br /&gt;
* 16.04.17 Veebiteenuse analüüsi koostamine.&lt;br /&gt;
* 17.04.17 Esialgne veebiteenuse analüüs ja kavand valmis.&lt;br /&gt;
* 19.04.17 Alustasime veebiteenusega, koostegemine: Domain, DAL, Interfaces, Repostitories. Testimine konsoolis.&lt;br /&gt;
* 24.04.17 Veebiteenuse koostegemine, 2. kord: Domaini täiendamine.&lt;br /&gt;
* 29.04.17 Veebiteenuse koostegemine, 3. kord: Interfaces, Repositories, Factory + UOW. Testimine konsoolis.&lt;br /&gt;
* 01.05.17 Andmebaasi täitmine testandmetega varasemas faasis loodud XML failist.&lt;br /&gt;
* 02.05.17 Veebiteenuse koostegemine, 4. kord: alustasime BLi ja WebApi ehitamist. GET päringud.&lt;br /&gt;
* 09.05.17 Veebiteenuse koostegemine, 5. kord: lisasime Identity.&lt;br /&gt;
* 11.05.17 Veebiteenuse koostegemine, 6. kord: WebApi arendamine. POST, PUT ja DELETE päringud.&lt;br /&gt;
* 15.05.17 Veebiteenuse koostegemine, 7. kord: WebApi arendamine. Lisasime  api kontrollereid.&lt;br /&gt;
* 16.05.17 Veebiteenuse koostegemine, 8. kord: WebApi arendamine. Identity kontroll Fiddleri ja Postmaniga.&lt;br /&gt;
* 20.05.17 Klientrakenduse koostegemine, 1. kord. Testklient.&lt;br /&gt;
* 25.05.17 Klientrakenduse koostegemine, 2. kord. Klientrakenduse arendamine.&lt;br /&gt;
* 01.06.17 Klientrakenduse koostegemine, 3. kord. Klientrakenduse arendamine. Angular JS.&lt;br /&gt;
* 03.06.17 - 11.06.17 Klientrakenduse arendamine. Tokenipõhine autentimine. Veebiteenuse viimistlemine.&lt;br /&gt;
* 11.06.17 Lõpptähtaeg. Projekti esitlemine eksamil.&lt;br /&gt;
* 12.06.17 Teiste lahenduste retsenseerimine.&lt;/div&gt;</summary>
		<author><name>Otiks</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Team_SPOT&amp;diff=123528</id>
		<title>Team SPOT</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Team_SPOT&amp;diff=123528"/>
		<updated>2017-06-12T14:53:36Z</updated>

		<summary type="html">&lt;p&gt;Otiks: /* XML / XSD / XSLT */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://wiki.itcollege.ee/index.php/Kodut%C3%B6%C3%B6_aines_%22V%C3%B5rgurakendused_II:_hajuss%C3%BCsteemide_ehitamine%22_2017 Kodutöö aines &amp;quot;Võrgurakendused II: hajussüsteemide ehitamine&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
[https://projectspot.visualstudio.com/PROJECTSPOT Projekti repositoorium (avaneb ainult liikmetele)]&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==Liikmed==&lt;br /&gt;
*Sigrid Pachel&lt;br /&gt;
*Oliver Tiks&lt;br /&gt;
&lt;br /&gt;
==Idee==&lt;br /&gt;
Mõttes on luua spordiklubi(de) veebiteenus ja klientrakendus, mis võimaldaks saada infot pakutavate treeningute kohta, sisestada ja kuvada tunniplaani andmeid, registreerida osalejaid tundidesse ning teha muid asjakohaseid tegevusi nii klubi(de) personalil, liikmetel kui ka juhukasutajatel.&lt;br /&gt;
&lt;br /&gt;
==Veebiteenuse analüüs==&lt;br /&gt;
SPOTi veebiteenus võimaldab saada infot erinevate klubide treeningute kohta ja end neisse registreerida. Kasutaja saab teavet, kus ja millal treeningud toimuvad (tunniplaan), mida treeningus täpsemalt tehakse, mis stiiliga on tegemist, kes on treener, kui palju üks kord maksab jms info. Kasutajakontoga liikmel on võimalik end registreerida soovitud tundi ja hallata oma registreeringuid (muuta, tühistada).&lt;br /&gt;
&lt;br /&gt;
Spordiklubide infot haldavad süsteemi administraatorid, kes saavad lisada, muuta ja kustutada kõike sprodiklubiga seonduvat. Erinevaid treeninguid ja nendega seotud konkreetset infot saavad lisada ja hallata treenerid või spordiklubi esindajad.&lt;br /&gt;
&lt;br /&gt;
Projekti realiseerimiseks kasutame REST arhitektuuri ja ASP.NET MVC Web API tehnoloogiat.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Üldine plaan:&#039;&#039;&#039;&lt;br /&gt;
* esialgu üks kett (laienemise võimalusega)&lt;br /&gt;
* mitu klubi (asukoht, saalid-treeningualad, võimalikud lisatingimused)&lt;br /&gt;
* treeningute info (stiilid ehk kontseptid, litsentsid, …)&lt;br /&gt;
* tunniplaan (aeg, koht, instruktorid, max osalejate arv, ühe korra hind)&lt;br /&gt;
* registratuur (treeningutest osavõtjad)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kasutajad (rollid):&#039;&#039;&#039;&lt;br /&gt;
* administraatorid (saavad teha muudatusi)&lt;br /&gt;
* treenerid (info kvalifikatsiooni, litsentside kohta, õigus treeninguid lisada) &lt;br /&gt;
* liikmed (saavad treeningutele registreeruda)&lt;br /&gt;
* ülejäänud (näevad klubide ja treeningute infot ning tunniplaani)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Peaks olema:&#039;&#039;&#039;&lt;br /&gt;
* kasutajate loomine&lt;br /&gt;
* kasutajate tuvastamine ja haldamine&lt;br /&gt;
* kasutajate ja kasutusstatistika logimine&lt;br /&gt;
* teenuse poole pöördumiste arvu piiramine ja piirangute haldamine&lt;br /&gt;
* klubide, treenerite ja treeningute info väljastamine&lt;br /&gt;
* tunniplaani info väljastamine&lt;br /&gt;
* treeningutesse registreerimine&lt;br /&gt;
* registreeringu tühistamine&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Võiks olla:&#039;&#039;&#039;&lt;br /&gt;
* klubide, treenerite, treeningute lisamine ja muutmine&lt;br /&gt;
* tunniplaanis treeningute tühistamine&lt;br /&gt;
* sisestatud andmete kustutamine (pehmelt)&lt;br /&gt;
* rollide-õiguste määramine (admin)&lt;br /&gt;
* asukohad mitmes riigis&lt;br /&gt;
* kliendipaketid, arveldus&lt;br /&gt;
* kontaktide tsentraliseeritud haldus&lt;br /&gt;
* sisselogimine läbi Google’i, Facebooki vmt teenuse&lt;br /&gt;
&lt;br /&gt;
===Andmebaasi skeem (lihtsustatud)===&lt;br /&gt;
&lt;br /&gt;
[[File:SPOTService ERD.JPG|border|SPOT Service ERD]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Märkus: olemite atribuutidest on välja toodud ainult peamised.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====Tabelite kirjeldused====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kasutajahaldus*:&#039;&#039;&#039;&lt;br /&gt;
* User - kasutajate andmed&lt;br /&gt;
* Role - rollid, millega määratakse kasutajate õigused (&amp;quot;Admin&amp;quot;, &amp;quot;Trainer&amp;quot;, ...)&lt;br /&gt;
* UserRole - kasutajate sidumine rolli(de)ga&lt;br /&gt;
* UserLogin - muu teenuse kaudu sisselogimiseks&lt;br /&gt;
* UserClaim - muu teenuse kaudu sisselogimiseks&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;&#039;&#039;Kasutajahalduse süsteem toetub Asp.Net Identity valmislahendusele, mida on täiendanud A. Käver.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Klubid:&#039;&#039;&#039;&lt;br /&gt;
* Chain (optional) - spordiklubikettide info&lt;br /&gt;
* Location - spordiklubi/-rajatise asukoht linna/asula täpsusega&lt;br /&gt;
* Facility - spordiklubi/-rajatise andmed, seotud asukohaga ja vajadusel ketiga.&lt;br /&gt;
* Venue - spordiklubis/-rajatises kasutatavad saalid ja muud treeningualad&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Treeningud:&#039;&#039;&#039;&lt;br /&gt;
* Concept (Style) - treeningustiilid ehk kontseptid&lt;br /&gt;
* Licenser (optional) - treeninguliikide litsentsid (kui on)&lt;br /&gt;
* Training - treeninguliikide andmed, seotud stiili ja vajadusel litsentsiga&lt;br /&gt;
* Trainer (User (role: Trainer) + Training) - treeninguliikide sidumine treeneritega&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tunniplaan:&#039;&#039;&#039;&lt;br /&gt;
* ScheduleItem - treeningud tunniplaanis&lt;br /&gt;
* Instructor (User (role: Trainer) + ScheduleItem) - tundide juhendajad (võib olla mitu)&lt;br /&gt;
* Registration (ScheduleItem + User (role: any)) - tundidesse tehtud registreeringud&lt;br /&gt;
&lt;br /&gt;
== XML / XSD / XSLT==&lt;br /&gt;
Projekti esimeses etapis sai loodud XML andmefail, mille ülesehitus on paika pandud XSD skeemifailis. Lisaks on olemas kaks stiilifaili: esimene neist transformeerib andmed HTML-kujule, et kuvada infot  veebilehel, teine tekitab samade andmete esitamiseks uue struktuuriga XML faili.&lt;br /&gt;
&lt;br /&gt;
[https://drive.google.com/open?id=0B84njRSbVLUtd0U4aEJXOUhOTG8 Lae failid alla.] &lt;br /&gt;
&lt;br /&gt;
=== XML ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Fail sisaldab andmeid ühes spordiklubis pakutavate treeningute kohta. Andmed on esitatud treeninguliikide kaupa, mille juurde on lisatud ka vastava treeninguliigi tunniplaan. Treeninguliikidel on nimi ja kirjeldus ning vajadusel ära märgitud ka litsents. Failis on eraldi välja toodud treeningustiilid, instruktorid ja ruumid, kus treeningud toimuvad. Iga treeninguliik kuulub ühe või mitme stiili alla. Instruktoritel on tagasiside põhjal saadud hinne. Treeninguruumidel on vaikimisi määratud mahutavus. Tunniplaanis on ära toodud treeningu koht, algusaeg ja kestus ning instruktorid. Vajadusel saab eraldi määrata ka treeningurühma suuruse, kui see erineb tavalisest ruumi mahutavusest. Ka on võimalik treeningutunnile lisada kommentaar. Erinevate elementide andmed on omavahel seotud id-atribuutidega.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;?xml-stylesheet type=&amp;quot;text/xsl&amp;quot; href=&amp;quot;trainingsToHtml.xslt&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Trainings&amp;gt;&lt;br /&gt;
  &amp;lt;Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;![CDATA[Cardio]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
  &amp;lt;/Styles&amp;gt;&lt;br /&gt;
  &amp;lt;Instructors&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;1&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Yogafier]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;2&amp;quot; Rating=&amp;quot;4.7&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Mickey Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;3&amp;quot; Rating=&amp;quot;4.6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;4&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Donald Duck]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;5&amp;quot; Rating=&amp;quot;3.9&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Goofy]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;6&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Schwarzenegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;8&amp;quot; Rating=&amp;quot;4.8&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Kayla Weightlifter]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;9&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Margaret Strengthener]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
  &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;Venues&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;1&amp;quot; GroupSize=&amp;quot;45&amp;quot;&amp;gt;&amp;lt;![CDATA[Main Hall]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 2]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;3&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 3]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;4&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 4]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;5&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 5]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&amp;lt;![CDATA[Area 6]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;7&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&amp;lt;![CDATA[Yoga Hall]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
  &amp;lt;/Venues&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Yoga]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[Yoga is a group of physical, mental, and spiritual practices or disciplines which originated in ancient India. ]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;1&amp;quot; VenueId=&amp;quot;7&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-25T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;14&amp;quot; VenueId=&amp;quot;7&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT1H20M&amp;quot;&amp;gt;2017-03-28T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Comment&amp;gt;&lt;br /&gt;
          &amp;lt;![CDATA[Special class!]]&amp;gt;&lt;br /&gt;
        &amp;lt;/Comment&amp;gt; &lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/Nvlxn0EnmbM&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;  &lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;2&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyBalance™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[BODYBALANCE™ is the Yoga, Tai Chi, Pilates workout that builds flexibility and strength and leaves you feeling centered and calm. Based on a carefully structured series of stretches, moves and poses to music it creates a holistic workout that brings the body into a state of harmony and balance. This class will heighten your flexibility and inner strength creating a strong supple body from the inside out. Burn on average 390cals per hour.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;2&amp;quot; VenueId=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-31T12:15:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;3&amp;quot; VenueId=&amp;quot;2&amp;quot; &amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-30T13:30:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;3&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/jJxA6vBjUqY&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;3&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyJam™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;4&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[The Body Jam program is an addictive fusion of the latest dance styles to the hottest new sounds. This class isn’t just for dancers, it’s for everyone because the emphasis is put on not only having fun but also breaking a sweat. So grab a friend, get front and centre … you bring the attitude and we’ll bring the moves!]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;4&amp;quot;  VenueId=&amp;quot;3&amp;quot; &amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T16:10:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;4&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;5&amp;quot; VenueId=&amp;quot;5&amp;quot; &amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT45M&amp;quot;&amp;gt;2017-04-01T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;5&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/8PTXyg9si_4&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;4&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyPump™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[BodyPump classes are 59 minutes long and contain eight separate muscle-group specific songs or &amp;quot;tracks&amp;quot; along with an opening warm up track and closing cool-down track. There are also 45-minute and 30-minute class formats. The classes are performed to music using free weights-plates, barbells and an aerobic step. Participants choose their weights based on the exercise and their personal goals. Major muscle groups are worked via series of compound and isolation-based exercises including squats, presses, dead lifts. The focus is towards muscle endurance by moving light weights at high repetitions, what Les Mills calls the Rep Effect.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;3&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;6&amp;quot; VenueId=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;6&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;7&amp;quot; VenueId=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-23T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;6&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/zU_0XrdO3wo&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[CoreStrenght is a very hard workout! Not for beginners.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;3&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;8&amp;quot; VenueId=&amp;quot;6&amp;quot; GroupSize=&amp;quot;10&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT2H&amp;quot;&amp;gt;2017-03-23T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;9&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Comment&amp;gt;&lt;br /&gt;
          &amp;lt;![CDATA[Special challenge!]]&amp;gt;&lt;br /&gt;
        &amp;lt;/Comment&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;9&amp;quot; VenueId=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;8&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;10&amp;quot; VenueId=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-04-05T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;8&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;9&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/ZxTVmpvyUt8&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[Zumba involves dance and aerobic movements performed to energetic music. The choreography incorporates hip-hop, soca, samba, salsa, merengue and mambo. Squats and lunges are also included.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;4&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;11&amp;quot; VenueId=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT55M&amp;quot;&amp;gt;2017-03-26T15:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;12&amp;quot; VenueId=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-28T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;13&amp;quot; VenueId=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/-ZB6XIkfxnQ&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
&amp;lt;/Trainings&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSD ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Skeemifail kontrollib eelnevas andmefailis esitatud andmete vastavust kokkulepitud formaadile, samuti õigete andmetüüpide kasutamist. Alamelemendi id-atribuudi väärtus peab olema iga elemendirühma lõikes unikaalne. Kohustuslike elementide ja atribuutide kõrval on ka mõned (nt kommentaar), mille olemasolu pole alati tarvilik. Teatud puhkudel on piiratud maksimaalset elementide arvu (nt treeningutunni algusaeg). Faili üldine struktuur on kindel, aga alati pole alamelementide järjekord oluline (nt treeninguliigi puhul).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xs:schema attributeFormDefault=&amp;quot;unqualified&amp;quot; elementFormDefault=&amp;quot;qualified&amp;quot; xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xs:element name=&amp;quot;Trainings&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Styles&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Style&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
          &amp;lt;xs:unique name=&amp;quot;UniqueStyleId&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xs:selector xpath=&amp;quot;Style&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Instructors&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;Name&amp;quot; type=&amp;quot;xs:string&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:attribute name=&amp;quot;Rating&amp;quot; type=&amp;quot;xs:decimal&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
          &amp;lt;xs:unique name=&amp;quot;UniqueInstructorId&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xs:selector xpath=&amp;quot;Instructor&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Venues&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Venue&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:attribute name=&amp;quot;GroupSize&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
          &amp;lt;xs:unique name=&amp;quot;UniqueVenueId&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xs:selector xpath=&amp;quot;Venue&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Training&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:all&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Description&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Styles&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Style&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Schedule&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;ScheduleItem&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:all&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element  maxOccurs=&amp;quot;1&amp;quot; name=&amp;quot;Time&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:extension base=&amp;quot;xs:dateTime&amp;quot;&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:attribute name=&amp;quot;Duration&amp;quot; type=&amp;quot;xs:duration&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element name=&amp;quot;Instructors&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                    &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                                      &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                                        &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                                      &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                                    &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                                  &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; name=&amp;quot;Comment&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:all&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;VenueId&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;GroupSize&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;optional&amp;quot; /&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;VideoUrl&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:all&amp;gt;&lt;br /&gt;
            &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xs:attribute name=&amp;quot;Licence&amp;quot; type=&amp;quot;xs:string&amp;quot; use=&amp;quot;optional&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
    &amp;lt;xs:unique name=&amp;quot;UniqueTrainingId&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xs:selector xpath=&amp;quot;Training&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
    &amp;lt;xs:unique name=&amp;quot;UniqueScheduleItemId&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xs:selector xpath=&amp;quot;Training/Schedule/ScheduleItem&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSLT (html) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Selles transformatsioonifailis on kirjeldatud XML failis olevate andmete [http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/trainings.xml  kuvamise viis veebilehel]. Treeninguliigid on jaotatud stiiliblokkidesse (mõni treening kuulub mitme stiili alla). Iga treeninguliigi all on tabeli kujul esitatud tunniplaan ning lisatud näidisvideo ja kirjeldus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot; xmlns:msxsl=&amp;quot;urn:schemas-microsoft-com:xslt&amp;quot; exclude-result-prefixes=&amp;quot;msxsl&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:output method=&amp;quot;html&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;html&amp;gt;&lt;br /&gt;
      &amp;lt;head&amp;gt;&lt;br /&gt;
        &amp;lt;title&amp;gt;SuperSportsClub - Trainings&amp;lt;/title&amp;gt;&lt;br /&gt;
        &amp;lt;style&amp;gt;&lt;br /&gt;
          body {&lt;br /&gt;
          background:BurlyWood;&lt;br /&gt;
          text-align: center;&lt;br /&gt;
          }&lt;br /&gt;
          .section {&lt;br /&gt;
          text-align:left;&lt;br /&gt;
          width:1000px;&lt;br /&gt;
          padding:20px;&lt;br /&gt;
          background:Chocolate;&lt;br /&gt;
          margin: auto;&lt;br /&gt;
          }&lt;br /&gt;
          table, th, td, .section {&lt;br /&gt;
          border: 1px solid black;&lt;br /&gt;
          }&lt;br /&gt;
          th {&lt;br /&gt;
          text-align:left;&lt;br /&gt;
          padding-left: 10px;&lt;br /&gt;
          padding-right: 10px;&lt;br /&gt;
          }&lt;br /&gt;
          td {&lt;br /&gt;
          text-align:center;&lt;br /&gt;
          }&lt;br /&gt;
          p {&lt;br /&gt;
          text-align:justify;&lt;br /&gt;
          }&lt;br /&gt;
          .description {&lt;br /&gt;
          vertical-align:top; &lt;br /&gt;
          padding:10px;&lt;br /&gt;
          }&lt;br /&gt;
        &amp;lt;/style&amp;gt;&lt;br /&gt;
      &amp;lt;/head&amp;gt;&lt;br /&gt;
      &amp;lt;body&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;Trainings at SuperSportsClub&amp;lt;/h1&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;/Trainings/Styles/Style&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:sort select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:variable select=&amp;quot;.&amp;quot; name=&amp;quot;SelectedStyle&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;section&amp;quot; &amp;gt;&lt;br /&gt;
            &amp;lt;h2&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select=&amp;quot;$SelectedStyle&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/h2&amp;gt;&lt;br /&gt;
            &amp;lt;ul&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:for-each select=&amp;quot;/Trainings/Training&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:sort select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:variable name=&amp;quot;Training&amp;quot; select=&amp;quot;.&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:if test=&amp;quot;Styles/Style/@Id = $SelectedStyle/@Id&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;&lt;br /&gt;
                    &amp;lt;h3&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;$Training/Name&amp;quot; /&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:if test=&amp;quot;$Training/@Licence&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:text&amp;gt; (&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:value-of select=&amp;quot;$Training/@Licence&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:text&amp;gt;)&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
                    &amp;lt;/h3&amp;gt;&lt;br /&gt;
                    &amp;lt;table&amp;gt;&lt;br /&gt;
                      &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                      &amp;lt;/tr&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:for-each select=&amp;quot;$Training/Schedule/ScheduleItem&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:sort select=&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:variable name=&amp;quot;StartTime&amp;quot; select=&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:variable name=&amp;quot;Duration&amp;quot; select=&amp;quot;$StartTime/@Duration&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;tr&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;150&amp;quot; &amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;concat(&lt;br /&gt;
                                            substring($StartTime, 9, 2), &lt;br /&gt;
                                            &#039;.&#039;, &lt;br /&gt;
                                            substring($StartTime, 6, 2), &lt;br /&gt;
                                            &#039;.&#039;, &lt;br /&gt;
                                            substring($StartTime, 1, 4),&lt;br /&gt;
                                            &#039; &#039;,&lt;br /&gt;
                                            substring($StartTime, 12, 2),&lt;br /&gt;
                                            &#039;:&#039;,&lt;br /&gt;
                                            substring($StartTime, 15, 2))&lt;br /&gt;
                                            &amp;quot; /&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:if test=&amp;quot;Comment&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;br/&amp;gt;&lt;br /&gt;
                              &amp;lt;div style=&amp;quot;color:Green&amp;quot;&amp;gt;&lt;br /&gt;
                                &amp;lt;xsl:value-of select=&amp;quot;Comment&amp;quot;/&amp;gt;&lt;br /&gt;
                              &amp;lt;/div&amp;gt;&lt;br /&gt;
                            &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;substring($Duration, 3, 6)&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:variable name=&amp;quot;VenueId&amp;quot; select=&amp;quot;@VenueId&amp;quot;/&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;/Trainings/Venues/Venue[@Id=$VenueId]&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:for-each select=&amp;quot;Instructors/Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:variable name=&amp;quot;InstructorId&amp;quot; select=&amp;quot;@Id&amp;quot;&amp;gt;&amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:variable name=&amp;quot;SelectedInstructor&amp;quot; select=&amp;quot;/Trainings/Instructors/Instructor[@Id=$InstructorId]&amp;quot; /&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/Name&amp;quot;/&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:text&amp;gt; (&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/@Rating&amp;quot; /&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:text&amp;gt;)&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                              &amp;lt;br/&amp;gt;&lt;br /&gt;
                            &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;/tr&amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
                    &amp;lt;/table&amp;gt;&lt;br /&gt;
                    &amp;lt;br/&amp;gt;&lt;br /&gt;
                    &amp;lt;table&amp;gt;&lt;br /&gt;
                      &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                          &amp;lt;xsl:variable name=&amp;quot;VideoUrl&amp;quot; select=&amp;quot;$Training/VideoUrl&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;{$VideoUrl}&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                          &amp;lt;p&amp;gt;&lt;br /&gt;
                            &amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&lt;br /&gt;
                          &amp;lt;/p&amp;gt;&lt;br /&gt;
                          &amp;lt;p&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;$Training/Description&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                      &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;/table&amp;gt;&lt;br /&gt;
                  &amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
            &amp;lt;/ul&amp;gt;&lt;br /&gt;
          &amp;lt;/div&amp;gt;&lt;br /&gt;
          &amp;lt;br/&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
      &amp;lt;/body&amp;gt;&lt;br /&gt;
    &amp;lt;/html&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== HTML (transformeeritud) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/trainings.html Vaata eelneva transformatsiooni tulemust.]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;META http-equiv=&amp;quot;Content-Type&amp;quot; content=&amp;quot;text/html; charset=utf-8&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;SuperSportsClub - Trainings&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;style&amp;gt;&lt;br /&gt;
        body {&lt;br /&gt;
            background: BurlyWood;&lt;br /&gt;
            text-align: center;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        .section {&lt;br /&gt;
            text-align: left;&lt;br /&gt;
            width: 1000px;&lt;br /&gt;
            padding: 20px;&lt;br /&gt;
            background: Chocolate;&lt;br /&gt;
            margin: auto;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        table, th, td, .section {&lt;br /&gt;
            border: 1px solid black;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        th {&lt;br /&gt;
            text-align: left;&lt;br /&gt;
            padding-left: 10px;&lt;br /&gt;
            padding-right: 10px;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        td {&lt;br /&gt;
            text-align: center;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        p {&lt;br /&gt;
            text-align: justify;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        .description {&lt;br /&gt;
            vertical-align: top;&lt;br /&gt;
            padding: 10px;&lt;br /&gt;
        }&lt;br /&gt;
    &amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
    &amp;lt;h1&amp;gt;Trainings at SuperSportsClub&amp;lt;/h1&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Body&amp;amp;amp;Mind&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyBalance™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 13:30&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;1H15M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 2&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Minnie Mouse (4.6)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;31.03.2017 12:15&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;1H15M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 3&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Mickey Mouse (4.7)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/jJxA6vBjUqY&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                BODYBALANCE™ is the Yoga, Tai Chi, Pilates workout that builds flexibility and strength and leaves you feeling centered and calm. Based on a carefully structured series of stretches, moves and poses to music it creates a holistic workout that brings the body into a state of harmony and balance. This class will heighten your flexibility and inner strength creating a strong supple body from the inside out. Burn on average 390cals per hour.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;Yoga&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;25.03.2017 14:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Yoga Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Minnie Yogafier (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
                            28.03.2017 14:00&amp;lt;br&amp;gt;&amp;lt;div style=&amp;quot;color:Green&amp;quot;&amp;gt;&lt;br /&gt;
                                Special class!&lt;br /&gt;
                            &amp;lt;/div&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;1H20M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Yoga Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Minnie Yogafier (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/Nvlxn0EnmbM&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                Yoga is a group of physical, mental, and spiritual practices or disciplines which originated in ancient India.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Cardio&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyJam™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 16:10&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 3&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Donald Duck (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;01.04.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;45M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 5&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Goofy (3.9)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/8PTXyg9si_4&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                The Body Jam program is an addictive fusion of the latest dance styles to the hottest new sounds. This class isn’t just for dancers, it’s for everyone because the emphasis is put on not only having fun but also breaking a sweat. So grab a friend, get front and centre … you bring the attitude and we’ll bring the moves!&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Dance&amp;amp;amp;Fun&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyJam™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 16:10&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 3&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Donald Duck (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;01.04.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;45M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 5&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Goofy (3.9)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/8PTXyg9si_4&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                The Body Jam program is an addictive fusion of the latest dance styles to the hottest new sounds. This class isn’t just for dancers, it’s for everyone because the emphasis is put on not only having fun but also breaking a sweat. So grab a friend, get front and centre … you bring the attitude and we’ll bring the moves!&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;Zumba®&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;26.03.2017 15:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;55M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 2&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Zumbaschnegger (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;28.03.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 4&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Zumbaschnegger (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 2&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Zumbaschnegger (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/-ZB6XIkfxnQ&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                Zumba involves dance and aerobic movements performed to energetic music. The choreography incorporates hip-hop, soca, samba, salsa, merengue and mambo. Squats and lunges are also included.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Strength&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyPump™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;23.03.2017 13:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Main Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Schwarzenegger (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 13:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Main Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Schwarzenegger (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/zU_0XrdO3wo&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                BodyPump classes are 59 minutes long and contain eight separate muscle-group specific songs or &amp;quot;tracks&amp;quot; along with an opening warm up track and closing cool-down track. There are also 45-minute and 30-minute class formats. The classes are performed to music using free weights-plates, barbells and an aerobic step. Participants choose their weights based on the exercise and their personal goals. Major muscle groups are worked via series of compound and isolation-based exercises including squats, presses, dead lifts. The focus is towards muscle endurance by moving light weights at high repetitions, what Les Mills calls the Rep Effect.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;CoreStrength&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
                            23.03.2017 12:00&amp;lt;br&amp;gt;&amp;lt;div style=&amp;quot;color:Green&amp;quot;&amp;gt;&lt;br /&gt;
                                Special challenge!&lt;br /&gt;
                            &amp;lt;/div&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;2H&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Area 6&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Margaret Strengthener (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Area 6&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Kayla Weightlifter (4.8)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;05.04.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Area 6&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Kayla Weightlifter (4.8)&amp;lt;br&amp;gt;Margaret Strengthener (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/ZxTVmpvyUt8&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                CoreStrenght is a very hard workout! Not for beginners.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSLT (xml) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Selle transformatsiooniga luuakse uus [http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/schedule.xml XML fail], milles on treeningute andmed esitatud ühtse tunniplaani kujul. Algses failis erinevate elementide alla paigutatud andmed on nüüd tunniplaani alamelemendis kokku viidud. Sidumine on teostatud id-atribuutide abil. Tunniplaanis on ühes kohas kirjas treeningu nimi, stiil(id), koht, algusaeg, kestus, rühma suurus, instruktorid ja muu täiendav info.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&lt;br /&gt;
    xmlns:msxsl=&amp;quot;urn:schemas-microsoft-com:xslt&amp;quot; exclude-result-prefixes=&amp;quot;msxsl&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:output method=&amp;quot;xml&amp;quot; indent=&amp;quot;yes&amp;quot; cdata-section-elements=&amp;quot;Name Style Comment&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;/Trainings/Training&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:sort select=&amp;quot;Name&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:variable name=&amp;quot;SelectedTraining&amp;quot; select=&amp;quot;.&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;Schedule/ScheduleItem&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:sort select=&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;ScheduleItem&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:variable name=&amp;quot;VenueId&amp;quot; select=&amp;quot;@VenueId&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:variable name=&amp;quot;SelectedVenue&amp;quot; select=&amp;quot;/Trainings/Venues/Venue[@Id=$VenueId]&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:attribute name=&amp;quot;GroupSize&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;@GroupSize&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:value-of select=&amp;quot;@GroupSize&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:value-of select=&amp;quot;$SelectedVenue/@GroupSize&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
            &amp;lt;Venue&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$VenueId&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select=&amp;quot;$SelectedVenue&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/Venue&amp;gt;&lt;br /&gt;
            &amp;lt;Training&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$SelectedTraining/@Id&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:if test=&amp;quot;$SelectedTraining/@Licence&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:attribute name=&amp;quot;Licence&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:value-of select=&amp;quot;$SelectedTraining/@Licence&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
              &amp;lt;Name&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$SelectedTraining/Name&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/Name&amp;gt;&lt;br /&gt;
              &amp;lt;Styles&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:for-each select=&amp;quot;$SelectedTraining/Styles/Style&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:variable name=&amp;quot;StyleId&amp;quot; select=&amp;quot;@Id&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;Style&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:attribute name=&amp;quot;StyleId&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;$StyleId&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;/Trainings/Styles/Style[@Id=$StyleId]&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/Style&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
              &amp;lt;/Styles&amp;gt;&lt;br /&gt;
            &amp;lt;/Training&amp;gt;&lt;br /&gt;
            &amp;lt;Time&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:attribute name=&amp;quot;Duration&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;Time/@Duration&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select =&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/Time&amp;gt;&lt;br /&gt;
            &amp;lt;Instructors&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:for-each select=&amp;quot;Instructors/Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:variable name=&amp;quot;InstructorId&amp;quot; select=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:variable name=&amp;quot;SelectedInstructor&amp;quot; select=&amp;quot;/Trainings/Instructors/Instructor[@Id=$InstructorId]&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;Instructor&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;$InstructorId&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:attribute name=&amp;quot;Rating&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/@Rating&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                  &amp;lt;Name&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/Name&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/Name&amp;gt;&lt;br /&gt;
                &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
            &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:if test=&amp;quot;Comment&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;Comment&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;Comment&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/Comment&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
          &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XML (transformeeritud) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/schedule.xml Vaata eelneva transformatsiooni tulemust.]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Schedule&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;3&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot;&amp;gt;Hall 2&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;2&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyBalance™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-30T13:30:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;3&amp;quot; Rating=&amp;quot;4.6&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;2&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;3&amp;quot;&amp;gt;Hall 3&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;2&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyBalance™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-31T12:15:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;2&amp;quot; Rating=&amp;quot;4.7&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Mickey Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;4&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;3&amp;quot;&amp;gt;Hall 3&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;3&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyJam™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;![CDATA[Cardio]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T16:10:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;4&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Donald Duck]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;5&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;5&amp;quot;&amp;gt;Hall 5&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;3&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyJam™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;![CDATA[Cardio]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT45M&amp;quot;&amp;gt;2017-04-01T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;5&amp;quot; Rating=&amp;quot;3.9&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Goofy]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;7&amp;quot; GroupSize=&amp;quot;45&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;1&amp;quot;&amp;gt;Main Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;4&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyPump™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-23T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;6&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Schwarzenegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;6&amp;quot; GroupSize=&amp;quot;45&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;1&amp;quot;&amp;gt;Main Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;4&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyPump™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;6&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Schwarzenegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;8&amp;quot; GroupSize=&amp;quot;10&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot;&amp;gt;Area 6&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT2H&amp;quot;&amp;gt;2017-03-23T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;9&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Margaret Strengthener]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
    &amp;lt;Comment&amp;gt;&amp;lt;![CDATA[&lt;br /&gt;
          Special challenge!&lt;br /&gt;
        ]]&amp;gt;&amp;lt;/Comment&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;9&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot;&amp;gt;Area 6&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;8&amp;quot; Rating=&amp;quot;4.8&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Kayla Weightlifter]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;10&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot;&amp;gt;Area 6&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-04-05T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;8&amp;quot; Rating=&amp;quot;4.8&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Kayla Weightlifter]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;9&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Margaret Strengthener]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;11&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot;&amp;gt;Hall 2&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT55M&amp;quot;&amp;gt;2017-03-26T15:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;12&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;4&amp;quot;&amp;gt;Hall 4&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-28T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;13&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot;&amp;gt;Hall 2&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;1&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;7&amp;quot;&amp;gt;Yoga Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Yoga]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-25T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;1&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Yogafier]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;14&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;7&amp;quot;&amp;gt;Yoga Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Yoga]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT1H20M&amp;quot;&amp;gt;2017-03-28T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;1&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Yogafier]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
    &amp;lt;Comment&amp;gt;&amp;lt;![CDATA[&lt;br /&gt;
          Special class!&lt;br /&gt;
        ]]&amp;gt;&amp;lt;/Comment&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
&amp;lt;/Schedule&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus ==&lt;br /&gt;
Angular JS &#039;&#039;single page application&#039;&#039; eelnevalt kirjeldatud veebiteenusele. Sisse logimata saab kuvada spordiklubi tunniplaani nädalate kaupa, treeninguliike stiilide kaupa ja treenereid. Võimalik on liituda teenusega ja registreeruda treeningutele, samuti registreeringuid tühistada nii otse tunniplaanist kui ka registreeringute lehel. Esialgu põhineb süsteem ühel spordiklubil. Kasutamise eelduseks on tunniplaani olemasolu andmebaasis.&lt;br /&gt;
&lt;br /&gt;
Autentimine on lahendatud tokenipõhiselt. Eeskuju ja põhjana kasutasime näidisrakendust, mille juhend ja lähtekood on leitav [http://bitoftech.net/2014/06/09/angularjs-token-authentication-using-asp-net-web-api-2-owin-asp-net-identity/ siit].&lt;br /&gt;
&lt;br /&gt;
== Lähtekood ==&lt;br /&gt;
Eksamiks valminud veebiteenuse ja klientrakenduse kokkupakitult allalaadimiseks klõpsa [https://drive.google.com/open?id=0B84njRSbVLUtTWx5ZkZsdDBJZDQ sellel lingil]. WebApi ja Angular JS klient on eraldi lahendustes. Kliendi testimiseks brauseris (Chrome, Firefox vm) tuleb eelnevalt käivitada ka veebiteenus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;NB! Võib juhtuda, et WebApi esmakordsel käivitamisel loodavasse andmebaasi kõiki andmeid (tunniplaani ja registreerimisi jooksvasse nädalasse) ei lisandu. Sellisel juhul kustuta tekkinud andmebaas ja käivita kõigepealt samas lahenduses olev konsoolirakendus.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Retsensioonid ==&lt;br /&gt;
&lt;br /&gt;
# [https://wiki.itcollege.ee/index.php/Talk:JRT XML/XSD/XSLT retsensioon meeskonnale JRT]&lt;br /&gt;
# [Veebiteenuse retsensioon lisandub varsti]&lt;br /&gt;
# [Klientrakenduse retsensioon lisandub varsti]&lt;br /&gt;
&lt;br /&gt;
== Log ==&lt;br /&gt;
* 03.03.17 Esimene kohtumine. Idee.&lt;br /&gt;
* 17.03.17 Osa XMList valmis, osa XSLT-st valmis.&lt;br /&gt;
* 18.03.17 Teine kohtumine. XMLi täiendamine, esimene ülekäimine XSD-s.&lt;br /&gt;
* 19.03.17 XML/XSLT/XSD täiendamine ja lõpetamine.&lt;br /&gt;
* 20.03.17 XML fail, skeemifail ja stiilifailid esitatud. Projekti esimese etapi lõpp. Kevade algus.&lt;br /&gt;
* 26.03.17 XML/XSLT/XSD retsensioon esitatud.&lt;br /&gt;
* 16.04.17 Veebiteenuse analüüsi koostamine.&lt;br /&gt;
* 17.04.17 Esialgne veebiteenuse analüüs ja kavand valmis.&lt;br /&gt;
* 19.04.17 Alustasime veebiteenusega, koostegemine: Domain, DAL, Interfaces, Repostitories. Testimine konsoolis.&lt;br /&gt;
* 24.04.17 Veebiteenuse koostegemine, 2. kord: Domaini täiendamine.&lt;br /&gt;
* 29.04.17 Veebiteenuse koostegemine, 3. kord: Interfaces, Repositories, Factory + UOW. Testimine konsoolis.&lt;br /&gt;
* 01.05.17 Andmebaasi täitmine testandmetega varasemas faasis loodud XML failist.&lt;br /&gt;
* 02.05.17 Veebiteenuse koostegemine, 4. kord: alustasime BLi ja WebApi ehitamist. GET päringud.&lt;br /&gt;
* 09.05.17 Veebiteenuse koostegemine, 5. kord: lisasime Identity.&lt;br /&gt;
* 11.05.17 Veebiteenuse koostegemine, 6. kord: WebApi arendamine. POST, PUT ja DELETE päringud.&lt;br /&gt;
* 15.05.17 Veebiteenuse koostegemine, 7. kord: WebApi arendamine. Lisasime  api kontrollereid.&lt;br /&gt;
* 16.05.17 Veebiteenuse koostegemine, 8. kord: WebApi arendamine. Identity kontroll Fiddleri ja Postmaniga.&lt;br /&gt;
* 20.05.17 Klientrakenduse koostegemine, 1. kord. Testklient.&lt;br /&gt;
* 25.05.17 Klientrakenduse koostegemine, 2. kord. Klientrakenduse arendamine.&lt;br /&gt;
* 01.06.17 Klientrakenduse koostegemine, 3. kord. Klientrakenduse arendamine. Angular JS.&lt;br /&gt;
* 03.06.17 - 11.06.17 Klientrakenduse arendamine. Tokenipõhine autentimine. Veebiteenuse viimistlemine.&lt;br /&gt;
* 11.06.17 Lõpptähtaeg. Projekti esitlemine eksamil.&lt;br /&gt;
* 12.06.17 Teiste lahenduste retsenseerimine.&lt;/div&gt;</summary>
		<author><name>Otiks</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Team_SPOT&amp;diff=123527</id>
		<title>Team SPOT</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Team_SPOT&amp;diff=123527"/>
		<updated>2017-06-12T14:53:09Z</updated>

		<summary type="html">&lt;p&gt;Otiks: /* XML / XSD / XSLT */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://wiki.itcollege.ee/index.php/Kodut%C3%B6%C3%B6_aines_%22V%C3%B5rgurakendused_II:_hajuss%C3%BCsteemide_ehitamine%22_2017 Kodutöö aines &amp;quot;Võrgurakendused II: hajussüsteemide ehitamine&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
[https://projectspot.visualstudio.com/PROJECTSPOT Projekti repositoorium (avaneb ainult liikmetele)]&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==Liikmed==&lt;br /&gt;
*Sigrid Pachel&lt;br /&gt;
*Oliver Tiks&lt;br /&gt;
&lt;br /&gt;
==Idee==&lt;br /&gt;
Mõttes on luua spordiklubi(de) veebiteenus ja klientrakendus, mis võimaldaks saada infot pakutavate treeningute kohta, sisestada ja kuvada tunniplaani andmeid, registreerida osalejaid tundidesse ning teha muid asjakohaseid tegevusi nii klubi(de) personalil, liikmetel kui ka juhukasutajatel.&lt;br /&gt;
&lt;br /&gt;
==Veebiteenuse analüüs==&lt;br /&gt;
SPOTi veebiteenus võimaldab saada infot erinevate klubide treeningute kohta ja end neisse registreerida. Kasutaja saab teavet, kus ja millal treeningud toimuvad (tunniplaan), mida treeningus täpsemalt tehakse, mis stiiliga on tegemist, kes on treener, kui palju üks kord maksab jms info. Kasutajakontoga liikmel on võimalik end registreerida soovitud tundi ja hallata oma registreeringuid (muuta, tühistada).&lt;br /&gt;
&lt;br /&gt;
Spordiklubide infot haldavad süsteemi administraatorid, kes saavad lisada, muuta ja kustutada kõike sprodiklubiga seonduvat. Erinevaid treeninguid ja nendega seotud konkreetset infot saavad lisada ja hallata treenerid või spordiklubi esindajad.&lt;br /&gt;
&lt;br /&gt;
Projekti realiseerimiseks kasutame REST arhitektuuri ja ASP.NET MVC Web API tehnoloogiat.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Üldine plaan:&#039;&#039;&#039;&lt;br /&gt;
* esialgu üks kett (laienemise võimalusega)&lt;br /&gt;
* mitu klubi (asukoht, saalid-treeningualad, võimalikud lisatingimused)&lt;br /&gt;
* treeningute info (stiilid ehk kontseptid, litsentsid, …)&lt;br /&gt;
* tunniplaan (aeg, koht, instruktorid, max osalejate arv, ühe korra hind)&lt;br /&gt;
* registratuur (treeningutest osavõtjad)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kasutajad (rollid):&#039;&#039;&#039;&lt;br /&gt;
* administraatorid (saavad teha muudatusi)&lt;br /&gt;
* treenerid (info kvalifikatsiooni, litsentside kohta, õigus treeninguid lisada) &lt;br /&gt;
* liikmed (saavad treeningutele registreeruda)&lt;br /&gt;
* ülejäänud (näevad klubide ja treeningute infot ning tunniplaani)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Peaks olema:&#039;&#039;&#039;&lt;br /&gt;
* kasutajate loomine&lt;br /&gt;
* kasutajate tuvastamine ja haldamine&lt;br /&gt;
* kasutajate ja kasutusstatistika logimine&lt;br /&gt;
* teenuse poole pöördumiste arvu piiramine ja piirangute haldamine&lt;br /&gt;
* klubide, treenerite ja treeningute info väljastamine&lt;br /&gt;
* tunniplaani info väljastamine&lt;br /&gt;
* treeningutesse registreerimine&lt;br /&gt;
* registreeringu tühistamine&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Võiks olla:&#039;&#039;&#039;&lt;br /&gt;
* klubide, treenerite, treeningute lisamine ja muutmine&lt;br /&gt;
* tunniplaanis treeningute tühistamine&lt;br /&gt;
* sisestatud andmete kustutamine (pehmelt)&lt;br /&gt;
* rollide-õiguste määramine (admin)&lt;br /&gt;
* asukohad mitmes riigis&lt;br /&gt;
* kliendipaketid, arveldus&lt;br /&gt;
* kontaktide tsentraliseeritud haldus&lt;br /&gt;
* sisselogimine läbi Google’i, Facebooki vmt teenuse&lt;br /&gt;
&lt;br /&gt;
===Andmebaasi skeem (lihtsustatud)===&lt;br /&gt;
&lt;br /&gt;
[[File:SPOTService ERD.JPG|border|SPOT Service ERD]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Märkus: olemite atribuutidest on välja toodud ainult peamised.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====Tabelite kirjeldused====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kasutajahaldus*:&#039;&#039;&#039;&lt;br /&gt;
* User - kasutajate andmed&lt;br /&gt;
* Role - rollid, millega määratakse kasutajate õigused (&amp;quot;Admin&amp;quot;, &amp;quot;Trainer&amp;quot;, ...)&lt;br /&gt;
* UserRole - kasutajate sidumine rolli(de)ga&lt;br /&gt;
* UserLogin - muu teenuse kaudu sisselogimiseks&lt;br /&gt;
* UserClaim - muu teenuse kaudu sisselogimiseks&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;&#039;&#039;Kasutajahalduse süsteem toetub Asp.Net Identity valmislahendusele, mida on täiendanud A. Käver.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Klubid:&#039;&#039;&#039;&lt;br /&gt;
* Chain (optional) - spordiklubikettide info&lt;br /&gt;
* Location - spordiklubi/-rajatise asukoht linna/asula täpsusega&lt;br /&gt;
* Facility - spordiklubi/-rajatise andmed, seotud asukohaga ja vajadusel ketiga.&lt;br /&gt;
* Venue - spordiklubis/-rajatises kasutatavad saalid ja muud treeningualad&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Treeningud:&#039;&#039;&#039;&lt;br /&gt;
* Concept (Style) - treeningustiilid ehk kontseptid&lt;br /&gt;
* Licenser (optional) - treeninguliikide litsentsid (kui on)&lt;br /&gt;
* Training - treeninguliikide andmed, seotud stiili ja vajadusel litsentsiga&lt;br /&gt;
* Trainer (User (role: Trainer) + Training) - treeninguliikide sidumine treeneritega&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tunniplaan:&#039;&#039;&#039;&lt;br /&gt;
* ScheduleItem - treeningud tunniplaanis&lt;br /&gt;
* Instructor (User (role: Trainer) + ScheduleItem) - tundide juhendajad (võib olla mitu)&lt;br /&gt;
* Registration (ScheduleItem + User (role: any)) - tundidesse tehtud registreeringud&lt;br /&gt;
&lt;br /&gt;
== XML / XSD / XSLT==&lt;br /&gt;
Projekti esimeses etapis sai loodud XML andmefail, mille ülesehitus on paika pandud XSD skeemifailis. Lisaks on olemas kaks stiilifaili: esimene neist transformeerib andmed HTML-kujule, et kuvada infot  veebilehel, teine tekitab samade andmete esitamiseks uue struktuuriga XML faili.&lt;br /&gt;
&lt;br /&gt;
[https://drive.google.com/open?id=0B84njRSbVLUtTWx5ZkZsdDBJZDQ Lae failid alla.] &lt;br /&gt;
&lt;br /&gt;
=== XML ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Fail sisaldab andmeid ühes spordiklubis pakutavate treeningute kohta. Andmed on esitatud treeninguliikide kaupa, mille juurde on lisatud ka vastava treeninguliigi tunniplaan. Treeninguliikidel on nimi ja kirjeldus ning vajadusel ära märgitud ka litsents. Failis on eraldi välja toodud treeningustiilid, instruktorid ja ruumid, kus treeningud toimuvad. Iga treeninguliik kuulub ühe või mitme stiili alla. Instruktoritel on tagasiside põhjal saadud hinne. Treeninguruumidel on vaikimisi määratud mahutavus. Tunniplaanis on ära toodud treeningu koht, algusaeg ja kestus ning instruktorid. Vajadusel saab eraldi määrata ka treeningurühma suuruse, kui see erineb tavalisest ruumi mahutavusest. Ka on võimalik treeningutunnile lisada kommentaar. Erinevate elementide andmed on omavahel seotud id-atribuutidega.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;?xml-stylesheet type=&amp;quot;text/xsl&amp;quot; href=&amp;quot;trainingsToHtml.xslt&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Trainings&amp;gt;&lt;br /&gt;
  &amp;lt;Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;![CDATA[Cardio]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
  &amp;lt;/Styles&amp;gt;&lt;br /&gt;
  &amp;lt;Instructors&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;1&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Yogafier]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;2&amp;quot; Rating=&amp;quot;4.7&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Mickey Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;3&amp;quot; Rating=&amp;quot;4.6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;4&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Donald Duck]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;5&amp;quot; Rating=&amp;quot;3.9&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Goofy]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;6&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Schwarzenegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;8&amp;quot; Rating=&amp;quot;4.8&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Kayla Weightlifter]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;9&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Margaret Strengthener]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
  &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;Venues&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;1&amp;quot; GroupSize=&amp;quot;45&amp;quot;&amp;gt;&amp;lt;![CDATA[Main Hall]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 2]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;3&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 3]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;4&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 4]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;5&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 5]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&amp;lt;![CDATA[Area 6]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;7&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&amp;lt;![CDATA[Yoga Hall]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
  &amp;lt;/Venues&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Yoga]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[Yoga is a group of physical, mental, and spiritual practices or disciplines which originated in ancient India. ]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;1&amp;quot; VenueId=&amp;quot;7&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-25T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;14&amp;quot; VenueId=&amp;quot;7&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT1H20M&amp;quot;&amp;gt;2017-03-28T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Comment&amp;gt;&lt;br /&gt;
          &amp;lt;![CDATA[Special class!]]&amp;gt;&lt;br /&gt;
        &amp;lt;/Comment&amp;gt; &lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/Nvlxn0EnmbM&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;  &lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;2&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyBalance™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[BODYBALANCE™ is the Yoga, Tai Chi, Pilates workout that builds flexibility and strength and leaves you feeling centered and calm. Based on a carefully structured series of stretches, moves and poses to music it creates a holistic workout that brings the body into a state of harmony and balance. This class will heighten your flexibility and inner strength creating a strong supple body from the inside out. Burn on average 390cals per hour.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;2&amp;quot; VenueId=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-31T12:15:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;3&amp;quot; VenueId=&amp;quot;2&amp;quot; &amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-30T13:30:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;3&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/jJxA6vBjUqY&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;3&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyJam™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;4&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[The Body Jam program is an addictive fusion of the latest dance styles to the hottest new sounds. This class isn’t just for dancers, it’s for everyone because the emphasis is put on not only having fun but also breaking a sweat. So grab a friend, get front and centre … you bring the attitude and we’ll bring the moves!]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;4&amp;quot;  VenueId=&amp;quot;3&amp;quot; &amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T16:10:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;4&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;5&amp;quot; VenueId=&amp;quot;5&amp;quot; &amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT45M&amp;quot;&amp;gt;2017-04-01T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;5&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/8PTXyg9si_4&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;4&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyPump™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[BodyPump classes are 59 minutes long and contain eight separate muscle-group specific songs or &amp;quot;tracks&amp;quot; along with an opening warm up track and closing cool-down track. There are also 45-minute and 30-minute class formats. The classes are performed to music using free weights-plates, barbells and an aerobic step. Participants choose their weights based on the exercise and their personal goals. Major muscle groups are worked via series of compound and isolation-based exercises including squats, presses, dead lifts. The focus is towards muscle endurance by moving light weights at high repetitions, what Les Mills calls the Rep Effect.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;3&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;6&amp;quot; VenueId=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;6&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;7&amp;quot; VenueId=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-23T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;6&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/zU_0XrdO3wo&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[CoreStrenght is a very hard workout! Not for beginners.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;3&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;8&amp;quot; VenueId=&amp;quot;6&amp;quot; GroupSize=&amp;quot;10&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT2H&amp;quot;&amp;gt;2017-03-23T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;9&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Comment&amp;gt;&lt;br /&gt;
          &amp;lt;![CDATA[Special challenge!]]&amp;gt;&lt;br /&gt;
        &amp;lt;/Comment&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;9&amp;quot; VenueId=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;8&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;10&amp;quot; VenueId=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-04-05T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;8&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;9&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/ZxTVmpvyUt8&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[Zumba involves dance and aerobic movements performed to energetic music. The choreography incorporates hip-hop, soca, samba, salsa, merengue and mambo. Squats and lunges are also included.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;4&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;11&amp;quot; VenueId=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT55M&amp;quot;&amp;gt;2017-03-26T15:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;12&amp;quot; VenueId=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-28T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;13&amp;quot; VenueId=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/-ZB6XIkfxnQ&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
&amp;lt;/Trainings&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSD ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Skeemifail kontrollib eelnevas andmefailis esitatud andmete vastavust kokkulepitud formaadile, samuti õigete andmetüüpide kasutamist. Alamelemendi id-atribuudi väärtus peab olema iga elemendirühma lõikes unikaalne. Kohustuslike elementide ja atribuutide kõrval on ka mõned (nt kommentaar), mille olemasolu pole alati tarvilik. Teatud puhkudel on piiratud maksimaalset elementide arvu (nt treeningutunni algusaeg). Faili üldine struktuur on kindel, aga alati pole alamelementide järjekord oluline (nt treeninguliigi puhul).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xs:schema attributeFormDefault=&amp;quot;unqualified&amp;quot; elementFormDefault=&amp;quot;qualified&amp;quot; xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xs:element name=&amp;quot;Trainings&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Styles&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Style&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
          &amp;lt;xs:unique name=&amp;quot;UniqueStyleId&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xs:selector xpath=&amp;quot;Style&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Instructors&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;Name&amp;quot; type=&amp;quot;xs:string&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:attribute name=&amp;quot;Rating&amp;quot; type=&amp;quot;xs:decimal&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
          &amp;lt;xs:unique name=&amp;quot;UniqueInstructorId&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xs:selector xpath=&amp;quot;Instructor&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Venues&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Venue&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:attribute name=&amp;quot;GroupSize&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
          &amp;lt;xs:unique name=&amp;quot;UniqueVenueId&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xs:selector xpath=&amp;quot;Venue&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Training&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:all&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Description&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Styles&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Style&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Schedule&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;ScheduleItem&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:all&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element  maxOccurs=&amp;quot;1&amp;quot; name=&amp;quot;Time&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:extension base=&amp;quot;xs:dateTime&amp;quot;&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:attribute name=&amp;quot;Duration&amp;quot; type=&amp;quot;xs:duration&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element name=&amp;quot;Instructors&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                    &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                                      &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                                        &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                                      &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                                    &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                                  &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; name=&amp;quot;Comment&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:all&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;VenueId&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;GroupSize&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;optional&amp;quot; /&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;VideoUrl&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:all&amp;gt;&lt;br /&gt;
            &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xs:attribute name=&amp;quot;Licence&amp;quot; type=&amp;quot;xs:string&amp;quot; use=&amp;quot;optional&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
    &amp;lt;xs:unique name=&amp;quot;UniqueTrainingId&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xs:selector xpath=&amp;quot;Training&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
    &amp;lt;xs:unique name=&amp;quot;UniqueScheduleItemId&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xs:selector xpath=&amp;quot;Training/Schedule/ScheduleItem&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSLT (html) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Selles transformatsioonifailis on kirjeldatud XML failis olevate andmete [http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/trainings.xml  kuvamise viis veebilehel]. Treeninguliigid on jaotatud stiiliblokkidesse (mõni treening kuulub mitme stiili alla). Iga treeninguliigi all on tabeli kujul esitatud tunniplaan ning lisatud näidisvideo ja kirjeldus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot; xmlns:msxsl=&amp;quot;urn:schemas-microsoft-com:xslt&amp;quot; exclude-result-prefixes=&amp;quot;msxsl&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:output method=&amp;quot;html&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;html&amp;gt;&lt;br /&gt;
      &amp;lt;head&amp;gt;&lt;br /&gt;
        &amp;lt;title&amp;gt;SuperSportsClub - Trainings&amp;lt;/title&amp;gt;&lt;br /&gt;
        &amp;lt;style&amp;gt;&lt;br /&gt;
          body {&lt;br /&gt;
          background:BurlyWood;&lt;br /&gt;
          text-align: center;&lt;br /&gt;
          }&lt;br /&gt;
          .section {&lt;br /&gt;
          text-align:left;&lt;br /&gt;
          width:1000px;&lt;br /&gt;
          padding:20px;&lt;br /&gt;
          background:Chocolate;&lt;br /&gt;
          margin: auto;&lt;br /&gt;
          }&lt;br /&gt;
          table, th, td, .section {&lt;br /&gt;
          border: 1px solid black;&lt;br /&gt;
          }&lt;br /&gt;
          th {&lt;br /&gt;
          text-align:left;&lt;br /&gt;
          padding-left: 10px;&lt;br /&gt;
          padding-right: 10px;&lt;br /&gt;
          }&lt;br /&gt;
          td {&lt;br /&gt;
          text-align:center;&lt;br /&gt;
          }&lt;br /&gt;
          p {&lt;br /&gt;
          text-align:justify;&lt;br /&gt;
          }&lt;br /&gt;
          .description {&lt;br /&gt;
          vertical-align:top; &lt;br /&gt;
          padding:10px;&lt;br /&gt;
          }&lt;br /&gt;
        &amp;lt;/style&amp;gt;&lt;br /&gt;
      &amp;lt;/head&amp;gt;&lt;br /&gt;
      &amp;lt;body&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;Trainings at SuperSportsClub&amp;lt;/h1&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;/Trainings/Styles/Style&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:sort select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:variable select=&amp;quot;.&amp;quot; name=&amp;quot;SelectedStyle&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;section&amp;quot; &amp;gt;&lt;br /&gt;
            &amp;lt;h2&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select=&amp;quot;$SelectedStyle&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/h2&amp;gt;&lt;br /&gt;
            &amp;lt;ul&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:for-each select=&amp;quot;/Trainings/Training&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:sort select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:variable name=&amp;quot;Training&amp;quot; select=&amp;quot;.&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:if test=&amp;quot;Styles/Style/@Id = $SelectedStyle/@Id&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;&lt;br /&gt;
                    &amp;lt;h3&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;$Training/Name&amp;quot; /&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:if test=&amp;quot;$Training/@Licence&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:text&amp;gt; (&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:value-of select=&amp;quot;$Training/@Licence&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:text&amp;gt;)&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
                    &amp;lt;/h3&amp;gt;&lt;br /&gt;
                    &amp;lt;table&amp;gt;&lt;br /&gt;
                      &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                      &amp;lt;/tr&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:for-each select=&amp;quot;$Training/Schedule/ScheduleItem&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:sort select=&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:variable name=&amp;quot;StartTime&amp;quot; select=&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:variable name=&amp;quot;Duration&amp;quot; select=&amp;quot;$StartTime/@Duration&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;tr&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;150&amp;quot; &amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;concat(&lt;br /&gt;
                                            substring($StartTime, 9, 2), &lt;br /&gt;
                                            &#039;.&#039;, &lt;br /&gt;
                                            substring($StartTime, 6, 2), &lt;br /&gt;
                                            &#039;.&#039;, &lt;br /&gt;
                                            substring($StartTime, 1, 4),&lt;br /&gt;
                                            &#039; &#039;,&lt;br /&gt;
                                            substring($StartTime, 12, 2),&lt;br /&gt;
                                            &#039;:&#039;,&lt;br /&gt;
                                            substring($StartTime, 15, 2))&lt;br /&gt;
                                            &amp;quot; /&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:if test=&amp;quot;Comment&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;br/&amp;gt;&lt;br /&gt;
                              &amp;lt;div style=&amp;quot;color:Green&amp;quot;&amp;gt;&lt;br /&gt;
                                &amp;lt;xsl:value-of select=&amp;quot;Comment&amp;quot;/&amp;gt;&lt;br /&gt;
                              &amp;lt;/div&amp;gt;&lt;br /&gt;
                            &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;substring($Duration, 3, 6)&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:variable name=&amp;quot;VenueId&amp;quot; select=&amp;quot;@VenueId&amp;quot;/&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;/Trainings/Venues/Venue[@Id=$VenueId]&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:for-each select=&amp;quot;Instructors/Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:variable name=&amp;quot;InstructorId&amp;quot; select=&amp;quot;@Id&amp;quot;&amp;gt;&amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:variable name=&amp;quot;SelectedInstructor&amp;quot; select=&amp;quot;/Trainings/Instructors/Instructor[@Id=$InstructorId]&amp;quot; /&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/Name&amp;quot;/&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:text&amp;gt; (&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/@Rating&amp;quot; /&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:text&amp;gt;)&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                              &amp;lt;br/&amp;gt;&lt;br /&gt;
                            &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;/tr&amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
                    &amp;lt;/table&amp;gt;&lt;br /&gt;
                    &amp;lt;br/&amp;gt;&lt;br /&gt;
                    &amp;lt;table&amp;gt;&lt;br /&gt;
                      &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                          &amp;lt;xsl:variable name=&amp;quot;VideoUrl&amp;quot; select=&amp;quot;$Training/VideoUrl&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;{$VideoUrl}&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                          &amp;lt;p&amp;gt;&lt;br /&gt;
                            &amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&lt;br /&gt;
                          &amp;lt;/p&amp;gt;&lt;br /&gt;
                          &amp;lt;p&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;$Training/Description&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                      &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;/table&amp;gt;&lt;br /&gt;
                  &amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
            &amp;lt;/ul&amp;gt;&lt;br /&gt;
          &amp;lt;/div&amp;gt;&lt;br /&gt;
          &amp;lt;br/&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
      &amp;lt;/body&amp;gt;&lt;br /&gt;
    &amp;lt;/html&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== HTML (transformeeritud) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/trainings.html Vaata eelneva transformatsiooni tulemust.]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;META http-equiv=&amp;quot;Content-Type&amp;quot; content=&amp;quot;text/html; charset=utf-8&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;SuperSportsClub - Trainings&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;style&amp;gt;&lt;br /&gt;
        body {&lt;br /&gt;
            background: BurlyWood;&lt;br /&gt;
            text-align: center;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        .section {&lt;br /&gt;
            text-align: left;&lt;br /&gt;
            width: 1000px;&lt;br /&gt;
            padding: 20px;&lt;br /&gt;
            background: Chocolate;&lt;br /&gt;
            margin: auto;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        table, th, td, .section {&lt;br /&gt;
            border: 1px solid black;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        th {&lt;br /&gt;
            text-align: left;&lt;br /&gt;
            padding-left: 10px;&lt;br /&gt;
            padding-right: 10px;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        td {&lt;br /&gt;
            text-align: center;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        p {&lt;br /&gt;
            text-align: justify;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        .description {&lt;br /&gt;
            vertical-align: top;&lt;br /&gt;
            padding: 10px;&lt;br /&gt;
        }&lt;br /&gt;
    &amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
    &amp;lt;h1&amp;gt;Trainings at SuperSportsClub&amp;lt;/h1&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Body&amp;amp;amp;Mind&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyBalance™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 13:30&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;1H15M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 2&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Minnie Mouse (4.6)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;31.03.2017 12:15&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;1H15M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 3&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Mickey Mouse (4.7)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/jJxA6vBjUqY&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                BODYBALANCE™ is the Yoga, Tai Chi, Pilates workout that builds flexibility and strength and leaves you feeling centered and calm. Based on a carefully structured series of stretches, moves and poses to music it creates a holistic workout that brings the body into a state of harmony and balance. This class will heighten your flexibility and inner strength creating a strong supple body from the inside out. Burn on average 390cals per hour.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;Yoga&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;25.03.2017 14:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Yoga Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Minnie Yogafier (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
                            28.03.2017 14:00&amp;lt;br&amp;gt;&amp;lt;div style=&amp;quot;color:Green&amp;quot;&amp;gt;&lt;br /&gt;
                                Special class!&lt;br /&gt;
                            &amp;lt;/div&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;1H20M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Yoga Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Minnie Yogafier (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/Nvlxn0EnmbM&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                Yoga is a group of physical, mental, and spiritual practices or disciplines which originated in ancient India.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Cardio&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyJam™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 16:10&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 3&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Donald Duck (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;01.04.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;45M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 5&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Goofy (3.9)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/8PTXyg9si_4&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                The Body Jam program is an addictive fusion of the latest dance styles to the hottest new sounds. This class isn’t just for dancers, it’s for everyone because the emphasis is put on not only having fun but also breaking a sweat. So grab a friend, get front and centre … you bring the attitude and we’ll bring the moves!&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Dance&amp;amp;amp;Fun&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyJam™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 16:10&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 3&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Donald Duck (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;01.04.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;45M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 5&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Goofy (3.9)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/8PTXyg9si_4&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                The Body Jam program is an addictive fusion of the latest dance styles to the hottest new sounds. This class isn’t just for dancers, it’s for everyone because the emphasis is put on not only having fun but also breaking a sweat. So grab a friend, get front and centre … you bring the attitude and we’ll bring the moves!&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;Zumba®&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;26.03.2017 15:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;55M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 2&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Zumbaschnegger (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;28.03.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 4&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Zumbaschnegger (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 2&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Zumbaschnegger (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/-ZB6XIkfxnQ&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                Zumba involves dance and aerobic movements performed to energetic music. The choreography incorporates hip-hop, soca, samba, salsa, merengue and mambo. Squats and lunges are also included.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Strength&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyPump™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;23.03.2017 13:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Main Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Schwarzenegger (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 13:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Main Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Schwarzenegger (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/zU_0XrdO3wo&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                BodyPump classes are 59 minutes long and contain eight separate muscle-group specific songs or &amp;quot;tracks&amp;quot; along with an opening warm up track and closing cool-down track. There are also 45-minute and 30-minute class formats. The classes are performed to music using free weights-plates, barbells and an aerobic step. Participants choose their weights based on the exercise and their personal goals. Major muscle groups are worked via series of compound and isolation-based exercises including squats, presses, dead lifts. The focus is towards muscle endurance by moving light weights at high repetitions, what Les Mills calls the Rep Effect.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;CoreStrength&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
                            23.03.2017 12:00&amp;lt;br&amp;gt;&amp;lt;div style=&amp;quot;color:Green&amp;quot;&amp;gt;&lt;br /&gt;
                                Special challenge!&lt;br /&gt;
                            &amp;lt;/div&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;2H&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Area 6&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Margaret Strengthener (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Area 6&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Kayla Weightlifter (4.8)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;05.04.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Area 6&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Kayla Weightlifter (4.8)&amp;lt;br&amp;gt;Margaret Strengthener (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/ZxTVmpvyUt8&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                CoreStrenght is a very hard workout! Not for beginners.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSLT (xml) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Selle transformatsiooniga luuakse uus [http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/schedule.xml XML fail], milles on treeningute andmed esitatud ühtse tunniplaani kujul. Algses failis erinevate elementide alla paigutatud andmed on nüüd tunniplaani alamelemendis kokku viidud. Sidumine on teostatud id-atribuutide abil. Tunniplaanis on ühes kohas kirjas treeningu nimi, stiil(id), koht, algusaeg, kestus, rühma suurus, instruktorid ja muu täiendav info.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&lt;br /&gt;
    xmlns:msxsl=&amp;quot;urn:schemas-microsoft-com:xslt&amp;quot; exclude-result-prefixes=&amp;quot;msxsl&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:output method=&amp;quot;xml&amp;quot; indent=&amp;quot;yes&amp;quot; cdata-section-elements=&amp;quot;Name Style Comment&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;/Trainings/Training&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:sort select=&amp;quot;Name&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:variable name=&amp;quot;SelectedTraining&amp;quot; select=&amp;quot;.&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;Schedule/ScheduleItem&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:sort select=&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;ScheduleItem&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:variable name=&amp;quot;VenueId&amp;quot; select=&amp;quot;@VenueId&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:variable name=&amp;quot;SelectedVenue&amp;quot; select=&amp;quot;/Trainings/Venues/Venue[@Id=$VenueId]&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:attribute name=&amp;quot;GroupSize&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;@GroupSize&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:value-of select=&amp;quot;@GroupSize&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:value-of select=&amp;quot;$SelectedVenue/@GroupSize&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
            &amp;lt;Venue&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$VenueId&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select=&amp;quot;$SelectedVenue&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/Venue&amp;gt;&lt;br /&gt;
            &amp;lt;Training&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$SelectedTraining/@Id&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:if test=&amp;quot;$SelectedTraining/@Licence&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:attribute name=&amp;quot;Licence&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:value-of select=&amp;quot;$SelectedTraining/@Licence&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
              &amp;lt;Name&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$SelectedTraining/Name&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/Name&amp;gt;&lt;br /&gt;
              &amp;lt;Styles&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:for-each select=&amp;quot;$SelectedTraining/Styles/Style&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:variable name=&amp;quot;StyleId&amp;quot; select=&amp;quot;@Id&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;Style&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:attribute name=&amp;quot;StyleId&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;$StyleId&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;/Trainings/Styles/Style[@Id=$StyleId]&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/Style&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
              &amp;lt;/Styles&amp;gt;&lt;br /&gt;
            &amp;lt;/Training&amp;gt;&lt;br /&gt;
            &amp;lt;Time&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:attribute name=&amp;quot;Duration&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;Time/@Duration&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select =&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/Time&amp;gt;&lt;br /&gt;
            &amp;lt;Instructors&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:for-each select=&amp;quot;Instructors/Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:variable name=&amp;quot;InstructorId&amp;quot; select=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:variable name=&amp;quot;SelectedInstructor&amp;quot; select=&amp;quot;/Trainings/Instructors/Instructor[@Id=$InstructorId]&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;Instructor&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;$InstructorId&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:attribute name=&amp;quot;Rating&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/@Rating&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                  &amp;lt;Name&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/Name&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/Name&amp;gt;&lt;br /&gt;
                &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
            &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:if test=&amp;quot;Comment&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;Comment&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;Comment&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/Comment&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
          &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XML (transformeeritud) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/schedule.xml Vaata eelneva transformatsiooni tulemust.]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Schedule&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;3&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot;&amp;gt;Hall 2&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;2&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyBalance™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-30T13:30:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;3&amp;quot; Rating=&amp;quot;4.6&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;2&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;3&amp;quot;&amp;gt;Hall 3&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;2&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyBalance™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-31T12:15:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;2&amp;quot; Rating=&amp;quot;4.7&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Mickey Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;4&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;3&amp;quot;&amp;gt;Hall 3&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;3&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyJam™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;![CDATA[Cardio]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T16:10:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;4&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Donald Duck]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;5&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;5&amp;quot;&amp;gt;Hall 5&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;3&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyJam™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;![CDATA[Cardio]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT45M&amp;quot;&amp;gt;2017-04-01T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;5&amp;quot; Rating=&amp;quot;3.9&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Goofy]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;7&amp;quot; GroupSize=&amp;quot;45&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;1&amp;quot;&amp;gt;Main Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;4&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyPump™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-23T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;6&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Schwarzenegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;6&amp;quot; GroupSize=&amp;quot;45&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;1&amp;quot;&amp;gt;Main Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;4&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyPump™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;6&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Schwarzenegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;8&amp;quot; GroupSize=&amp;quot;10&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot;&amp;gt;Area 6&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT2H&amp;quot;&amp;gt;2017-03-23T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;9&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Margaret Strengthener]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
    &amp;lt;Comment&amp;gt;&amp;lt;![CDATA[&lt;br /&gt;
          Special challenge!&lt;br /&gt;
        ]]&amp;gt;&amp;lt;/Comment&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;9&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot;&amp;gt;Area 6&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;8&amp;quot; Rating=&amp;quot;4.8&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Kayla Weightlifter]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;10&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot;&amp;gt;Area 6&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-04-05T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;8&amp;quot; Rating=&amp;quot;4.8&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Kayla Weightlifter]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;9&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Margaret Strengthener]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;11&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot;&amp;gt;Hall 2&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT55M&amp;quot;&amp;gt;2017-03-26T15:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;12&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;4&amp;quot;&amp;gt;Hall 4&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-28T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;13&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot;&amp;gt;Hall 2&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;1&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;7&amp;quot;&amp;gt;Yoga Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Yoga]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-25T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;1&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Yogafier]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;14&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;7&amp;quot;&amp;gt;Yoga Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Yoga]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT1H20M&amp;quot;&amp;gt;2017-03-28T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;1&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Yogafier]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
    &amp;lt;Comment&amp;gt;&amp;lt;![CDATA[&lt;br /&gt;
          Special class!&lt;br /&gt;
        ]]&amp;gt;&amp;lt;/Comment&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
&amp;lt;/Schedule&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus ==&lt;br /&gt;
Angular JS &#039;&#039;single page application&#039;&#039; eelnevalt kirjeldatud veebiteenusele. Sisse logimata saab kuvada spordiklubi tunniplaani nädalate kaupa, treeninguliike stiilide kaupa ja treenereid. Võimalik on liituda teenusega ja registreeruda treeningutele, samuti registreeringuid tühistada nii otse tunniplaanist kui ka registreeringute lehel. Esialgu põhineb süsteem ühel spordiklubil. Kasutamise eelduseks on tunniplaani olemasolu andmebaasis.&lt;br /&gt;
&lt;br /&gt;
Autentimine on lahendatud tokenipõhiselt. Eeskuju ja põhjana kasutasime näidisrakendust, mille juhend ja lähtekood on leitav [http://bitoftech.net/2014/06/09/angularjs-token-authentication-using-asp-net-web-api-2-owin-asp-net-identity/ siit].&lt;br /&gt;
&lt;br /&gt;
== Lähtekood ==&lt;br /&gt;
Eksamiks valminud veebiteenuse ja klientrakenduse kokkupakitult allalaadimiseks klõpsa [https://drive.google.com/open?id=0B84njRSbVLUtTWx5ZkZsdDBJZDQ sellel lingil]. WebApi ja Angular JS klient on eraldi lahendustes. Kliendi testimiseks brauseris (Chrome, Firefox vm) tuleb eelnevalt käivitada ka veebiteenus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;NB! Võib juhtuda, et WebApi esmakordsel käivitamisel loodavasse andmebaasi kõiki andmeid (tunniplaani ja registreerimisi jooksvasse nädalasse) ei lisandu. Sellisel juhul kustuta tekkinud andmebaas ja käivita kõigepealt samas lahenduses olev konsoolirakendus.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Retsensioonid ==&lt;br /&gt;
&lt;br /&gt;
# [https://wiki.itcollege.ee/index.php/Talk:JRT XML/XSD/XSLT retsensioon meeskonnale JRT]&lt;br /&gt;
# [Veebiteenuse retsensioon lisandub varsti]&lt;br /&gt;
# [Klientrakenduse retsensioon lisandub varsti]&lt;br /&gt;
&lt;br /&gt;
== Log ==&lt;br /&gt;
* 03.03.17 Esimene kohtumine. Idee.&lt;br /&gt;
* 17.03.17 Osa XMList valmis, osa XSLT-st valmis.&lt;br /&gt;
* 18.03.17 Teine kohtumine. XMLi täiendamine, esimene ülekäimine XSD-s.&lt;br /&gt;
* 19.03.17 XML/XSLT/XSD täiendamine ja lõpetamine.&lt;br /&gt;
* 20.03.17 XML fail, skeemifail ja stiilifailid esitatud. Projekti esimese etapi lõpp. Kevade algus.&lt;br /&gt;
* 26.03.17 XML/XSLT/XSD retsensioon esitatud.&lt;br /&gt;
* 16.04.17 Veebiteenuse analüüsi koostamine.&lt;br /&gt;
* 17.04.17 Esialgne veebiteenuse analüüs ja kavand valmis.&lt;br /&gt;
* 19.04.17 Alustasime veebiteenusega, koostegemine: Domain, DAL, Interfaces, Repostitories. Testimine konsoolis.&lt;br /&gt;
* 24.04.17 Veebiteenuse koostegemine, 2. kord: Domaini täiendamine.&lt;br /&gt;
* 29.04.17 Veebiteenuse koostegemine, 3. kord: Interfaces, Repositories, Factory + UOW. Testimine konsoolis.&lt;br /&gt;
* 01.05.17 Andmebaasi täitmine testandmetega varasemas faasis loodud XML failist.&lt;br /&gt;
* 02.05.17 Veebiteenuse koostegemine, 4. kord: alustasime BLi ja WebApi ehitamist. GET päringud.&lt;br /&gt;
* 09.05.17 Veebiteenuse koostegemine, 5. kord: lisasime Identity.&lt;br /&gt;
* 11.05.17 Veebiteenuse koostegemine, 6. kord: WebApi arendamine. POST, PUT ja DELETE päringud.&lt;br /&gt;
* 15.05.17 Veebiteenuse koostegemine, 7. kord: WebApi arendamine. Lisasime  api kontrollereid.&lt;br /&gt;
* 16.05.17 Veebiteenuse koostegemine, 8. kord: WebApi arendamine. Identity kontroll Fiddleri ja Postmaniga.&lt;br /&gt;
* 20.05.17 Klientrakenduse koostegemine, 1. kord. Testklient.&lt;br /&gt;
* 25.05.17 Klientrakenduse koostegemine, 2. kord. Klientrakenduse arendamine.&lt;br /&gt;
* 01.06.17 Klientrakenduse koostegemine, 3. kord. Klientrakenduse arendamine. Angular JS.&lt;br /&gt;
* 03.06.17 - 11.06.17 Klientrakenduse arendamine. Tokenipõhine autentimine. Veebiteenuse viimistlemine.&lt;br /&gt;
* 11.06.17 Lõpptähtaeg. Projekti esitlemine eksamil.&lt;br /&gt;
* 12.06.17 Teiste lahenduste retsenseerimine.&lt;/div&gt;</summary>
		<author><name>Otiks</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Team_SPOT&amp;diff=123526</id>
		<title>Team SPOT</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Team_SPOT&amp;diff=123526"/>
		<updated>2017-06-12T14:51:55Z</updated>

		<summary type="html">&lt;p&gt;Otiks: /* Lähtekood */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://wiki.itcollege.ee/index.php/Kodut%C3%B6%C3%B6_aines_%22V%C3%B5rgurakendused_II:_hajuss%C3%BCsteemide_ehitamine%22_2017 Kodutöö aines &amp;quot;Võrgurakendused II: hajussüsteemide ehitamine&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
[https://projectspot.visualstudio.com/PROJECTSPOT Projekti repositoorium (avaneb ainult liikmetele)]&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==Liikmed==&lt;br /&gt;
*Sigrid Pachel&lt;br /&gt;
*Oliver Tiks&lt;br /&gt;
&lt;br /&gt;
==Idee==&lt;br /&gt;
Mõttes on luua spordiklubi(de) veebiteenus ja klientrakendus, mis võimaldaks saada infot pakutavate treeningute kohta, sisestada ja kuvada tunniplaani andmeid, registreerida osalejaid tundidesse ning teha muid asjakohaseid tegevusi nii klubi(de) personalil, liikmetel kui ka juhukasutajatel.&lt;br /&gt;
&lt;br /&gt;
==Veebiteenuse analüüs==&lt;br /&gt;
SPOTi veebiteenus võimaldab saada infot erinevate klubide treeningute kohta ja end neisse registreerida. Kasutaja saab teavet, kus ja millal treeningud toimuvad (tunniplaan), mida treeningus täpsemalt tehakse, mis stiiliga on tegemist, kes on treener, kui palju üks kord maksab jms info. Kasutajakontoga liikmel on võimalik end registreerida soovitud tundi ja hallata oma registreeringuid (muuta, tühistada).&lt;br /&gt;
&lt;br /&gt;
Spordiklubide infot haldavad süsteemi administraatorid, kes saavad lisada, muuta ja kustutada kõike sprodiklubiga seonduvat. Erinevaid treeninguid ja nendega seotud konkreetset infot saavad lisada ja hallata treenerid või spordiklubi esindajad.&lt;br /&gt;
&lt;br /&gt;
Projekti realiseerimiseks kasutame REST arhitektuuri ja ASP.NET MVC Web API tehnoloogiat.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Üldine plaan:&#039;&#039;&#039;&lt;br /&gt;
* esialgu üks kett (laienemise võimalusega)&lt;br /&gt;
* mitu klubi (asukoht, saalid-treeningualad, võimalikud lisatingimused)&lt;br /&gt;
* treeningute info (stiilid ehk kontseptid, litsentsid, …)&lt;br /&gt;
* tunniplaan (aeg, koht, instruktorid, max osalejate arv, ühe korra hind)&lt;br /&gt;
* registratuur (treeningutest osavõtjad)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kasutajad (rollid):&#039;&#039;&#039;&lt;br /&gt;
* administraatorid (saavad teha muudatusi)&lt;br /&gt;
* treenerid (info kvalifikatsiooni, litsentside kohta, õigus treeninguid lisada) &lt;br /&gt;
* liikmed (saavad treeningutele registreeruda)&lt;br /&gt;
* ülejäänud (näevad klubide ja treeningute infot ning tunniplaani)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Peaks olema:&#039;&#039;&#039;&lt;br /&gt;
* kasutajate loomine&lt;br /&gt;
* kasutajate tuvastamine ja haldamine&lt;br /&gt;
* kasutajate ja kasutusstatistika logimine&lt;br /&gt;
* teenuse poole pöördumiste arvu piiramine ja piirangute haldamine&lt;br /&gt;
* klubide, treenerite ja treeningute info väljastamine&lt;br /&gt;
* tunniplaani info väljastamine&lt;br /&gt;
* treeningutesse registreerimine&lt;br /&gt;
* registreeringu tühistamine&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Võiks olla:&#039;&#039;&#039;&lt;br /&gt;
* klubide, treenerite, treeningute lisamine ja muutmine&lt;br /&gt;
* tunniplaanis treeningute tühistamine&lt;br /&gt;
* sisestatud andmete kustutamine (pehmelt)&lt;br /&gt;
* rollide-õiguste määramine (admin)&lt;br /&gt;
* asukohad mitmes riigis&lt;br /&gt;
* kliendipaketid, arveldus&lt;br /&gt;
* kontaktide tsentraliseeritud haldus&lt;br /&gt;
* sisselogimine läbi Google’i, Facebooki vmt teenuse&lt;br /&gt;
&lt;br /&gt;
===Andmebaasi skeem (lihtsustatud)===&lt;br /&gt;
&lt;br /&gt;
[[File:SPOTService ERD.JPG|border|SPOT Service ERD]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Märkus: olemite atribuutidest on välja toodud ainult peamised.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====Tabelite kirjeldused====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kasutajahaldus*:&#039;&#039;&#039;&lt;br /&gt;
* User - kasutajate andmed&lt;br /&gt;
* Role - rollid, millega määratakse kasutajate õigused (&amp;quot;Admin&amp;quot;, &amp;quot;Trainer&amp;quot;, ...)&lt;br /&gt;
* UserRole - kasutajate sidumine rolli(de)ga&lt;br /&gt;
* UserLogin - muu teenuse kaudu sisselogimiseks&lt;br /&gt;
* UserClaim - muu teenuse kaudu sisselogimiseks&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;&#039;&#039;Kasutajahalduse süsteem toetub Asp.Net Identity valmislahendusele, mida on täiendanud A. Käver.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Klubid:&#039;&#039;&#039;&lt;br /&gt;
* Chain (optional) - spordiklubikettide info&lt;br /&gt;
* Location - spordiklubi/-rajatise asukoht linna/asula täpsusega&lt;br /&gt;
* Facility - spordiklubi/-rajatise andmed, seotud asukohaga ja vajadusel ketiga.&lt;br /&gt;
* Venue - spordiklubis/-rajatises kasutatavad saalid ja muud treeningualad&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Treeningud:&#039;&#039;&#039;&lt;br /&gt;
* Concept (Style) - treeningustiilid ehk kontseptid&lt;br /&gt;
* Licenser (optional) - treeninguliikide litsentsid (kui on)&lt;br /&gt;
* Training - treeninguliikide andmed, seotud stiili ja vajadusel litsentsiga&lt;br /&gt;
* Trainer (User (role: Trainer) + Training) - treeninguliikide sidumine treeneritega&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tunniplaan:&#039;&#039;&#039;&lt;br /&gt;
* ScheduleItem - treeningud tunniplaanis&lt;br /&gt;
* Instructor (User (role: Trainer) + ScheduleItem) - tundide juhendajad (võib olla mitu)&lt;br /&gt;
* Registration (ScheduleItem + User (role: any)) - tundidesse tehtud registreeringud&lt;br /&gt;
&lt;br /&gt;
== XML / XSD / XSLT==&lt;br /&gt;
Projekti esimeses etapis sai loodud XML andmefail, mille ülesehitus on paika pandud XSD skeemifailis. Lisaks on olemas kaks stiilifaili: esimene neist transformeerib andmed HTML-kujule, et kuvada infot  veebilehel, teine tekitab samade andmete esitamiseks uue struktuuriga XML faili.&lt;br /&gt;
&lt;br /&gt;
[https://drive.google.com/open?id=0B84njRSbVLUtd0U4aEJXOUhOTG8 Lae failid alla.] &lt;br /&gt;
&lt;br /&gt;
=== XML ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Fail sisaldab andmeid ühes spordiklubis pakutavate treeningute kohta. Andmed on esitatud treeninguliikide kaupa, mille juurde on lisatud ka vastava treeninguliigi tunniplaan. Treeninguliikidel on nimi ja kirjeldus ning vajadusel ära märgitud ka litsents. Failis on eraldi välja toodud treeningustiilid, instruktorid ja ruumid, kus treeningud toimuvad. Iga treeninguliik kuulub ühe või mitme stiili alla. Instruktoritel on tagasiside põhjal saadud hinne. Treeninguruumidel on vaikimisi määratud mahutavus. Tunniplaanis on ära toodud treeningu koht, algusaeg ja kestus ning instruktorid. Vajadusel saab eraldi määrata ka treeningurühma suuruse, kui see erineb tavalisest ruumi mahutavusest. Ka on võimalik treeningutunnile lisada kommentaar. Erinevate elementide andmed on omavahel seotud id-atribuutidega.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;?xml-stylesheet type=&amp;quot;text/xsl&amp;quot; href=&amp;quot;trainingsToHtml.xslt&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Trainings&amp;gt;&lt;br /&gt;
  &amp;lt;Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;![CDATA[Cardio]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
  &amp;lt;/Styles&amp;gt;&lt;br /&gt;
  &amp;lt;Instructors&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;1&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Yogafier]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;2&amp;quot; Rating=&amp;quot;4.7&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Mickey Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;3&amp;quot; Rating=&amp;quot;4.6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;4&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Donald Duck]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;5&amp;quot; Rating=&amp;quot;3.9&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Goofy]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;6&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Schwarzenegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;8&amp;quot; Rating=&amp;quot;4.8&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Kayla Weightlifter]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;9&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Margaret Strengthener]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
  &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;Venues&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;1&amp;quot; GroupSize=&amp;quot;45&amp;quot;&amp;gt;&amp;lt;![CDATA[Main Hall]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 2]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;3&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 3]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;4&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 4]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;5&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 5]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&amp;lt;![CDATA[Area 6]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;7&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&amp;lt;![CDATA[Yoga Hall]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
  &amp;lt;/Venues&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Yoga]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[Yoga is a group of physical, mental, and spiritual practices or disciplines which originated in ancient India. ]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;1&amp;quot; VenueId=&amp;quot;7&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-25T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;14&amp;quot; VenueId=&amp;quot;7&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT1H20M&amp;quot;&amp;gt;2017-03-28T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Comment&amp;gt;&lt;br /&gt;
          &amp;lt;![CDATA[Special class!]]&amp;gt;&lt;br /&gt;
        &amp;lt;/Comment&amp;gt; &lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/Nvlxn0EnmbM&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;  &lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;2&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyBalance™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[BODYBALANCE™ is the Yoga, Tai Chi, Pilates workout that builds flexibility and strength and leaves you feeling centered and calm. Based on a carefully structured series of stretches, moves and poses to music it creates a holistic workout that brings the body into a state of harmony and balance. This class will heighten your flexibility and inner strength creating a strong supple body from the inside out. Burn on average 390cals per hour.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;2&amp;quot; VenueId=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-31T12:15:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;3&amp;quot; VenueId=&amp;quot;2&amp;quot; &amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-30T13:30:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;3&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/jJxA6vBjUqY&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;3&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyJam™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;4&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[The Body Jam program is an addictive fusion of the latest dance styles to the hottest new sounds. This class isn’t just for dancers, it’s for everyone because the emphasis is put on not only having fun but also breaking a sweat. So grab a friend, get front and centre … you bring the attitude and we’ll bring the moves!]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;4&amp;quot;  VenueId=&amp;quot;3&amp;quot; &amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T16:10:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;4&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;5&amp;quot; VenueId=&amp;quot;5&amp;quot; &amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT45M&amp;quot;&amp;gt;2017-04-01T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;5&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/8PTXyg9si_4&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;4&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyPump™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[BodyPump classes are 59 minutes long and contain eight separate muscle-group specific songs or &amp;quot;tracks&amp;quot; along with an opening warm up track and closing cool-down track. There are also 45-minute and 30-minute class formats. The classes are performed to music using free weights-plates, barbells and an aerobic step. Participants choose their weights based on the exercise and their personal goals. Major muscle groups are worked via series of compound and isolation-based exercises including squats, presses, dead lifts. The focus is towards muscle endurance by moving light weights at high repetitions, what Les Mills calls the Rep Effect.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;3&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;6&amp;quot; VenueId=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;6&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;7&amp;quot; VenueId=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-23T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;6&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/zU_0XrdO3wo&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[CoreStrenght is a very hard workout! Not for beginners.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;3&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;8&amp;quot; VenueId=&amp;quot;6&amp;quot; GroupSize=&amp;quot;10&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT2H&amp;quot;&amp;gt;2017-03-23T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;9&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Comment&amp;gt;&lt;br /&gt;
          &amp;lt;![CDATA[Special challenge!]]&amp;gt;&lt;br /&gt;
        &amp;lt;/Comment&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;9&amp;quot; VenueId=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;8&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;10&amp;quot; VenueId=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-04-05T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;8&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;9&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/ZxTVmpvyUt8&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[Zumba involves dance and aerobic movements performed to energetic music. The choreography incorporates hip-hop, soca, samba, salsa, merengue and mambo. Squats and lunges are also included.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;4&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;11&amp;quot; VenueId=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT55M&amp;quot;&amp;gt;2017-03-26T15:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;12&amp;quot; VenueId=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-28T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;13&amp;quot; VenueId=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/-ZB6XIkfxnQ&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
&amp;lt;/Trainings&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSD ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Skeemifail kontrollib eelnevas andmefailis esitatud andmete vastavust kokkulepitud formaadile, samuti õigete andmetüüpide kasutamist. Alamelemendi id-atribuudi väärtus peab olema iga elemendirühma lõikes unikaalne. Kohustuslike elementide ja atribuutide kõrval on ka mõned (nt kommentaar), mille olemasolu pole alati tarvilik. Teatud puhkudel on piiratud maksimaalset elementide arvu (nt treeningutunni algusaeg). Faili üldine struktuur on kindel, aga alati pole alamelementide järjekord oluline (nt treeninguliigi puhul).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xs:schema attributeFormDefault=&amp;quot;unqualified&amp;quot; elementFormDefault=&amp;quot;qualified&amp;quot; xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xs:element name=&amp;quot;Trainings&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Styles&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Style&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
          &amp;lt;xs:unique name=&amp;quot;UniqueStyleId&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xs:selector xpath=&amp;quot;Style&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Instructors&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;Name&amp;quot; type=&amp;quot;xs:string&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:attribute name=&amp;quot;Rating&amp;quot; type=&amp;quot;xs:decimal&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
          &amp;lt;xs:unique name=&amp;quot;UniqueInstructorId&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xs:selector xpath=&amp;quot;Instructor&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Venues&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Venue&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:attribute name=&amp;quot;GroupSize&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
          &amp;lt;xs:unique name=&amp;quot;UniqueVenueId&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xs:selector xpath=&amp;quot;Venue&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Training&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:all&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Description&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Styles&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Style&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Schedule&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;ScheduleItem&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:all&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element  maxOccurs=&amp;quot;1&amp;quot; name=&amp;quot;Time&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:extension base=&amp;quot;xs:dateTime&amp;quot;&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:attribute name=&amp;quot;Duration&amp;quot; type=&amp;quot;xs:duration&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element name=&amp;quot;Instructors&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                    &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                                      &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                                        &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                                      &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                                    &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                                  &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; name=&amp;quot;Comment&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:all&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;VenueId&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;GroupSize&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;optional&amp;quot; /&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;VideoUrl&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:all&amp;gt;&lt;br /&gt;
            &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xs:attribute name=&amp;quot;Licence&amp;quot; type=&amp;quot;xs:string&amp;quot; use=&amp;quot;optional&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
    &amp;lt;xs:unique name=&amp;quot;UniqueTrainingId&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xs:selector xpath=&amp;quot;Training&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
    &amp;lt;xs:unique name=&amp;quot;UniqueScheduleItemId&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xs:selector xpath=&amp;quot;Training/Schedule/ScheduleItem&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSLT (html) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Selles transformatsioonifailis on kirjeldatud XML failis olevate andmete [http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/trainings.xml  kuvamise viis veebilehel]. Treeninguliigid on jaotatud stiiliblokkidesse (mõni treening kuulub mitme stiili alla). Iga treeninguliigi all on tabeli kujul esitatud tunniplaan ning lisatud näidisvideo ja kirjeldus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot; xmlns:msxsl=&amp;quot;urn:schemas-microsoft-com:xslt&amp;quot; exclude-result-prefixes=&amp;quot;msxsl&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:output method=&amp;quot;html&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;html&amp;gt;&lt;br /&gt;
      &amp;lt;head&amp;gt;&lt;br /&gt;
        &amp;lt;title&amp;gt;SuperSportsClub - Trainings&amp;lt;/title&amp;gt;&lt;br /&gt;
        &amp;lt;style&amp;gt;&lt;br /&gt;
          body {&lt;br /&gt;
          background:BurlyWood;&lt;br /&gt;
          text-align: center;&lt;br /&gt;
          }&lt;br /&gt;
          .section {&lt;br /&gt;
          text-align:left;&lt;br /&gt;
          width:1000px;&lt;br /&gt;
          padding:20px;&lt;br /&gt;
          background:Chocolate;&lt;br /&gt;
          margin: auto;&lt;br /&gt;
          }&lt;br /&gt;
          table, th, td, .section {&lt;br /&gt;
          border: 1px solid black;&lt;br /&gt;
          }&lt;br /&gt;
          th {&lt;br /&gt;
          text-align:left;&lt;br /&gt;
          padding-left: 10px;&lt;br /&gt;
          padding-right: 10px;&lt;br /&gt;
          }&lt;br /&gt;
          td {&lt;br /&gt;
          text-align:center;&lt;br /&gt;
          }&lt;br /&gt;
          p {&lt;br /&gt;
          text-align:justify;&lt;br /&gt;
          }&lt;br /&gt;
          .description {&lt;br /&gt;
          vertical-align:top; &lt;br /&gt;
          padding:10px;&lt;br /&gt;
          }&lt;br /&gt;
        &amp;lt;/style&amp;gt;&lt;br /&gt;
      &amp;lt;/head&amp;gt;&lt;br /&gt;
      &amp;lt;body&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;Trainings at SuperSportsClub&amp;lt;/h1&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;/Trainings/Styles/Style&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:sort select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:variable select=&amp;quot;.&amp;quot; name=&amp;quot;SelectedStyle&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;section&amp;quot; &amp;gt;&lt;br /&gt;
            &amp;lt;h2&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select=&amp;quot;$SelectedStyle&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/h2&amp;gt;&lt;br /&gt;
            &amp;lt;ul&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:for-each select=&amp;quot;/Trainings/Training&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:sort select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:variable name=&amp;quot;Training&amp;quot; select=&amp;quot;.&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:if test=&amp;quot;Styles/Style/@Id = $SelectedStyle/@Id&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;&lt;br /&gt;
                    &amp;lt;h3&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;$Training/Name&amp;quot; /&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:if test=&amp;quot;$Training/@Licence&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:text&amp;gt; (&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:value-of select=&amp;quot;$Training/@Licence&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:text&amp;gt;)&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
                    &amp;lt;/h3&amp;gt;&lt;br /&gt;
                    &amp;lt;table&amp;gt;&lt;br /&gt;
                      &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                      &amp;lt;/tr&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:for-each select=&amp;quot;$Training/Schedule/ScheduleItem&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:sort select=&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:variable name=&amp;quot;StartTime&amp;quot; select=&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:variable name=&amp;quot;Duration&amp;quot; select=&amp;quot;$StartTime/@Duration&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;tr&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;150&amp;quot; &amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;concat(&lt;br /&gt;
                                            substring($StartTime, 9, 2), &lt;br /&gt;
                                            &#039;.&#039;, &lt;br /&gt;
                                            substring($StartTime, 6, 2), &lt;br /&gt;
                                            &#039;.&#039;, &lt;br /&gt;
                                            substring($StartTime, 1, 4),&lt;br /&gt;
                                            &#039; &#039;,&lt;br /&gt;
                                            substring($StartTime, 12, 2),&lt;br /&gt;
                                            &#039;:&#039;,&lt;br /&gt;
                                            substring($StartTime, 15, 2))&lt;br /&gt;
                                            &amp;quot; /&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:if test=&amp;quot;Comment&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;br/&amp;gt;&lt;br /&gt;
                              &amp;lt;div style=&amp;quot;color:Green&amp;quot;&amp;gt;&lt;br /&gt;
                                &amp;lt;xsl:value-of select=&amp;quot;Comment&amp;quot;/&amp;gt;&lt;br /&gt;
                              &amp;lt;/div&amp;gt;&lt;br /&gt;
                            &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;substring($Duration, 3, 6)&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:variable name=&amp;quot;VenueId&amp;quot; select=&amp;quot;@VenueId&amp;quot;/&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;/Trainings/Venues/Venue[@Id=$VenueId]&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:for-each select=&amp;quot;Instructors/Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:variable name=&amp;quot;InstructorId&amp;quot; select=&amp;quot;@Id&amp;quot;&amp;gt;&amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:variable name=&amp;quot;SelectedInstructor&amp;quot; select=&amp;quot;/Trainings/Instructors/Instructor[@Id=$InstructorId]&amp;quot; /&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/Name&amp;quot;/&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:text&amp;gt; (&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/@Rating&amp;quot; /&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:text&amp;gt;)&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                              &amp;lt;br/&amp;gt;&lt;br /&gt;
                            &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;/tr&amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
                    &amp;lt;/table&amp;gt;&lt;br /&gt;
                    &amp;lt;br/&amp;gt;&lt;br /&gt;
                    &amp;lt;table&amp;gt;&lt;br /&gt;
                      &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                          &amp;lt;xsl:variable name=&amp;quot;VideoUrl&amp;quot; select=&amp;quot;$Training/VideoUrl&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;{$VideoUrl}&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                          &amp;lt;p&amp;gt;&lt;br /&gt;
                            &amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&lt;br /&gt;
                          &amp;lt;/p&amp;gt;&lt;br /&gt;
                          &amp;lt;p&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;$Training/Description&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                      &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;/table&amp;gt;&lt;br /&gt;
                  &amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
            &amp;lt;/ul&amp;gt;&lt;br /&gt;
          &amp;lt;/div&amp;gt;&lt;br /&gt;
          &amp;lt;br/&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
      &amp;lt;/body&amp;gt;&lt;br /&gt;
    &amp;lt;/html&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== HTML (transformeeritud) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/trainings.html Vaata eelneva transformatsiooni tulemust.]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;META http-equiv=&amp;quot;Content-Type&amp;quot; content=&amp;quot;text/html; charset=utf-8&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;SuperSportsClub - Trainings&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;style&amp;gt;&lt;br /&gt;
        body {&lt;br /&gt;
            background: BurlyWood;&lt;br /&gt;
            text-align: center;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        .section {&lt;br /&gt;
            text-align: left;&lt;br /&gt;
            width: 1000px;&lt;br /&gt;
            padding: 20px;&lt;br /&gt;
            background: Chocolate;&lt;br /&gt;
            margin: auto;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        table, th, td, .section {&lt;br /&gt;
            border: 1px solid black;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        th {&lt;br /&gt;
            text-align: left;&lt;br /&gt;
            padding-left: 10px;&lt;br /&gt;
            padding-right: 10px;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        td {&lt;br /&gt;
            text-align: center;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        p {&lt;br /&gt;
            text-align: justify;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        .description {&lt;br /&gt;
            vertical-align: top;&lt;br /&gt;
            padding: 10px;&lt;br /&gt;
        }&lt;br /&gt;
    &amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
    &amp;lt;h1&amp;gt;Trainings at SuperSportsClub&amp;lt;/h1&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Body&amp;amp;amp;Mind&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyBalance™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 13:30&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;1H15M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 2&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Minnie Mouse (4.6)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;31.03.2017 12:15&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;1H15M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 3&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Mickey Mouse (4.7)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/jJxA6vBjUqY&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                BODYBALANCE™ is the Yoga, Tai Chi, Pilates workout that builds flexibility and strength and leaves you feeling centered and calm. Based on a carefully structured series of stretches, moves and poses to music it creates a holistic workout that brings the body into a state of harmony and balance. This class will heighten your flexibility and inner strength creating a strong supple body from the inside out. Burn on average 390cals per hour.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;Yoga&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;25.03.2017 14:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Yoga Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Minnie Yogafier (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
                            28.03.2017 14:00&amp;lt;br&amp;gt;&amp;lt;div style=&amp;quot;color:Green&amp;quot;&amp;gt;&lt;br /&gt;
                                Special class!&lt;br /&gt;
                            &amp;lt;/div&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;1H20M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Yoga Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Minnie Yogafier (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/Nvlxn0EnmbM&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                Yoga is a group of physical, mental, and spiritual practices or disciplines which originated in ancient India.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Cardio&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyJam™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 16:10&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 3&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Donald Duck (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;01.04.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;45M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 5&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Goofy (3.9)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/8PTXyg9si_4&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                The Body Jam program is an addictive fusion of the latest dance styles to the hottest new sounds. This class isn’t just for dancers, it’s for everyone because the emphasis is put on not only having fun but also breaking a sweat. So grab a friend, get front and centre … you bring the attitude and we’ll bring the moves!&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Dance&amp;amp;amp;Fun&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyJam™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 16:10&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 3&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Donald Duck (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;01.04.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;45M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 5&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Goofy (3.9)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/8PTXyg9si_4&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                The Body Jam program is an addictive fusion of the latest dance styles to the hottest new sounds. This class isn’t just for dancers, it’s for everyone because the emphasis is put on not only having fun but also breaking a sweat. So grab a friend, get front and centre … you bring the attitude and we’ll bring the moves!&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;Zumba®&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;26.03.2017 15:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;55M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 2&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Zumbaschnegger (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;28.03.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 4&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Zumbaschnegger (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 2&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Zumbaschnegger (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/-ZB6XIkfxnQ&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                Zumba involves dance and aerobic movements performed to energetic music. The choreography incorporates hip-hop, soca, samba, salsa, merengue and mambo. Squats and lunges are also included.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Strength&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyPump™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;23.03.2017 13:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Main Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Schwarzenegger (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 13:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Main Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Schwarzenegger (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/zU_0XrdO3wo&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                BodyPump classes are 59 minutes long and contain eight separate muscle-group specific songs or &amp;quot;tracks&amp;quot; along with an opening warm up track and closing cool-down track. There are also 45-minute and 30-minute class formats. The classes are performed to music using free weights-plates, barbells and an aerobic step. Participants choose their weights based on the exercise and their personal goals. Major muscle groups are worked via series of compound and isolation-based exercises including squats, presses, dead lifts. The focus is towards muscle endurance by moving light weights at high repetitions, what Les Mills calls the Rep Effect.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;CoreStrength&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
                            23.03.2017 12:00&amp;lt;br&amp;gt;&amp;lt;div style=&amp;quot;color:Green&amp;quot;&amp;gt;&lt;br /&gt;
                                Special challenge!&lt;br /&gt;
                            &amp;lt;/div&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;2H&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Area 6&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Margaret Strengthener (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Area 6&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Kayla Weightlifter (4.8)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;05.04.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Area 6&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Kayla Weightlifter (4.8)&amp;lt;br&amp;gt;Margaret Strengthener (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/ZxTVmpvyUt8&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                CoreStrenght is a very hard workout! Not for beginners.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSLT (xml) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Selle transformatsiooniga luuakse uus [http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/schedule.xml XML fail], milles on treeningute andmed esitatud ühtse tunniplaani kujul. Algses failis erinevate elementide alla paigutatud andmed on nüüd tunniplaani alamelemendis kokku viidud. Sidumine on teostatud id-atribuutide abil. Tunniplaanis on ühes kohas kirjas treeningu nimi, stiil(id), koht, algusaeg, kestus, rühma suurus, instruktorid ja muu täiendav info.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&lt;br /&gt;
    xmlns:msxsl=&amp;quot;urn:schemas-microsoft-com:xslt&amp;quot; exclude-result-prefixes=&amp;quot;msxsl&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:output method=&amp;quot;xml&amp;quot; indent=&amp;quot;yes&amp;quot; cdata-section-elements=&amp;quot;Name Style Comment&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;/Trainings/Training&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:sort select=&amp;quot;Name&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:variable name=&amp;quot;SelectedTraining&amp;quot; select=&amp;quot;.&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;Schedule/ScheduleItem&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:sort select=&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;ScheduleItem&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:variable name=&amp;quot;VenueId&amp;quot; select=&amp;quot;@VenueId&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:variable name=&amp;quot;SelectedVenue&amp;quot; select=&amp;quot;/Trainings/Venues/Venue[@Id=$VenueId]&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:attribute name=&amp;quot;GroupSize&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;@GroupSize&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:value-of select=&amp;quot;@GroupSize&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:value-of select=&amp;quot;$SelectedVenue/@GroupSize&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
            &amp;lt;Venue&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$VenueId&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select=&amp;quot;$SelectedVenue&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/Venue&amp;gt;&lt;br /&gt;
            &amp;lt;Training&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$SelectedTraining/@Id&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:if test=&amp;quot;$SelectedTraining/@Licence&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:attribute name=&amp;quot;Licence&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:value-of select=&amp;quot;$SelectedTraining/@Licence&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
              &amp;lt;Name&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$SelectedTraining/Name&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/Name&amp;gt;&lt;br /&gt;
              &amp;lt;Styles&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:for-each select=&amp;quot;$SelectedTraining/Styles/Style&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:variable name=&amp;quot;StyleId&amp;quot; select=&amp;quot;@Id&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;Style&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:attribute name=&amp;quot;StyleId&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;$StyleId&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;/Trainings/Styles/Style[@Id=$StyleId]&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/Style&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
              &amp;lt;/Styles&amp;gt;&lt;br /&gt;
            &amp;lt;/Training&amp;gt;&lt;br /&gt;
            &amp;lt;Time&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:attribute name=&amp;quot;Duration&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;Time/@Duration&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select =&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/Time&amp;gt;&lt;br /&gt;
            &amp;lt;Instructors&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:for-each select=&amp;quot;Instructors/Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:variable name=&amp;quot;InstructorId&amp;quot; select=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:variable name=&amp;quot;SelectedInstructor&amp;quot; select=&amp;quot;/Trainings/Instructors/Instructor[@Id=$InstructorId]&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;Instructor&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;$InstructorId&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:attribute name=&amp;quot;Rating&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/@Rating&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                  &amp;lt;Name&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/Name&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/Name&amp;gt;&lt;br /&gt;
                &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
            &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:if test=&amp;quot;Comment&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;Comment&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;Comment&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/Comment&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
          &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XML (transformeeritud) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/schedule.xml Vaata eelneva transformatsiooni tulemust.]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Schedule&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;3&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot;&amp;gt;Hall 2&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;2&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyBalance™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-30T13:30:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;3&amp;quot; Rating=&amp;quot;4.6&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;2&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;3&amp;quot;&amp;gt;Hall 3&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;2&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyBalance™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-31T12:15:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;2&amp;quot; Rating=&amp;quot;4.7&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Mickey Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;4&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;3&amp;quot;&amp;gt;Hall 3&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;3&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyJam™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;![CDATA[Cardio]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T16:10:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;4&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Donald Duck]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;5&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;5&amp;quot;&amp;gt;Hall 5&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;3&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyJam™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;![CDATA[Cardio]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT45M&amp;quot;&amp;gt;2017-04-01T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;5&amp;quot; Rating=&amp;quot;3.9&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Goofy]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;7&amp;quot; GroupSize=&amp;quot;45&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;1&amp;quot;&amp;gt;Main Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;4&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyPump™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-23T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;6&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Schwarzenegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;6&amp;quot; GroupSize=&amp;quot;45&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;1&amp;quot;&amp;gt;Main Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;4&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyPump™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;6&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Schwarzenegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;8&amp;quot; GroupSize=&amp;quot;10&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot;&amp;gt;Area 6&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT2H&amp;quot;&amp;gt;2017-03-23T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;9&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Margaret Strengthener]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
    &amp;lt;Comment&amp;gt;&amp;lt;![CDATA[&lt;br /&gt;
          Special challenge!&lt;br /&gt;
        ]]&amp;gt;&amp;lt;/Comment&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;9&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot;&amp;gt;Area 6&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;8&amp;quot; Rating=&amp;quot;4.8&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Kayla Weightlifter]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;10&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot;&amp;gt;Area 6&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-04-05T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;8&amp;quot; Rating=&amp;quot;4.8&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Kayla Weightlifter]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;9&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Margaret Strengthener]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;11&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot;&amp;gt;Hall 2&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT55M&amp;quot;&amp;gt;2017-03-26T15:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;12&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;4&amp;quot;&amp;gt;Hall 4&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-28T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;13&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot;&amp;gt;Hall 2&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;1&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;7&amp;quot;&amp;gt;Yoga Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Yoga]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-25T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;1&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Yogafier]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;14&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;7&amp;quot;&amp;gt;Yoga Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Yoga]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT1H20M&amp;quot;&amp;gt;2017-03-28T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;1&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Yogafier]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
    &amp;lt;Comment&amp;gt;&amp;lt;![CDATA[&lt;br /&gt;
          Special class!&lt;br /&gt;
        ]]&amp;gt;&amp;lt;/Comment&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
&amp;lt;/Schedule&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus ==&lt;br /&gt;
Angular JS &#039;&#039;single page application&#039;&#039; eelnevalt kirjeldatud veebiteenusele. Sisse logimata saab kuvada spordiklubi tunniplaani nädalate kaupa, treeninguliike stiilide kaupa ja treenereid. Võimalik on liituda teenusega ja registreeruda treeningutele, samuti registreeringuid tühistada nii otse tunniplaanist kui ka registreeringute lehel. Esialgu põhineb süsteem ühel spordiklubil. Kasutamise eelduseks on tunniplaani olemasolu andmebaasis.&lt;br /&gt;
&lt;br /&gt;
Autentimine on lahendatud tokenipõhiselt. Eeskuju ja põhjana kasutasime näidisrakendust, mille juhend ja lähtekood on leitav [http://bitoftech.net/2014/06/09/angularjs-token-authentication-using-asp-net-web-api-2-owin-asp-net-identity/ siit].&lt;br /&gt;
&lt;br /&gt;
== Lähtekood ==&lt;br /&gt;
Eksamiks valminud veebiteenuse ja klientrakenduse kokkupakitult allalaadimiseks klõpsa [https://drive.google.com/open?id=0B84njRSbVLUtTWx5ZkZsdDBJZDQ sellel lingil]. WebApi ja Angular JS klient on eraldi lahendustes. Kliendi testimiseks brauseris (Chrome, Firefox vm) tuleb eelnevalt käivitada ka veebiteenus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;NB! Võib juhtuda, et WebApi esmakordsel käivitamisel loodavasse andmebaasi kõiki andmeid (tunniplaani ja registreerimisi jooksvasse nädalasse) ei lisandu. Sellisel juhul kustuta tekkinud andmebaas ja käivita kõigepealt samas lahenduses olev konsoolirakendus.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Retsensioonid ==&lt;br /&gt;
&lt;br /&gt;
# [https://wiki.itcollege.ee/index.php/Talk:JRT XML/XSD/XSLT retsensioon meeskonnale JRT]&lt;br /&gt;
# [Veebiteenuse retsensioon lisandub varsti]&lt;br /&gt;
# [Klientrakenduse retsensioon lisandub varsti]&lt;br /&gt;
&lt;br /&gt;
== Log ==&lt;br /&gt;
* 03.03.17 Esimene kohtumine. Idee.&lt;br /&gt;
* 17.03.17 Osa XMList valmis, osa XSLT-st valmis.&lt;br /&gt;
* 18.03.17 Teine kohtumine. XMLi täiendamine, esimene ülekäimine XSD-s.&lt;br /&gt;
* 19.03.17 XML/XSLT/XSD täiendamine ja lõpetamine.&lt;br /&gt;
* 20.03.17 XML fail, skeemifail ja stiilifailid esitatud. Projekti esimese etapi lõpp. Kevade algus.&lt;br /&gt;
* 26.03.17 XML/XSLT/XSD retsensioon esitatud.&lt;br /&gt;
* 16.04.17 Veebiteenuse analüüsi koostamine.&lt;br /&gt;
* 17.04.17 Esialgne veebiteenuse analüüs ja kavand valmis.&lt;br /&gt;
* 19.04.17 Alustasime veebiteenusega, koostegemine: Domain, DAL, Interfaces, Repostitories. Testimine konsoolis.&lt;br /&gt;
* 24.04.17 Veebiteenuse koostegemine, 2. kord: Domaini täiendamine.&lt;br /&gt;
* 29.04.17 Veebiteenuse koostegemine, 3. kord: Interfaces, Repositories, Factory + UOW. Testimine konsoolis.&lt;br /&gt;
* 01.05.17 Andmebaasi täitmine testandmetega varasemas faasis loodud XML failist.&lt;br /&gt;
* 02.05.17 Veebiteenuse koostegemine, 4. kord: alustasime BLi ja WebApi ehitamist. GET päringud.&lt;br /&gt;
* 09.05.17 Veebiteenuse koostegemine, 5. kord: lisasime Identity.&lt;br /&gt;
* 11.05.17 Veebiteenuse koostegemine, 6. kord: WebApi arendamine. POST, PUT ja DELETE päringud.&lt;br /&gt;
* 15.05.17 Veebiteenuse koostegemine, 7. kord: WebApi arendamine. Lisasime  api kontrollereid.&lt;br /&gt;
* 16.05.17 Veebiteenuse koostegemine, 8. kord: WebApi arendamine. Identity kontroll Fiddleri ja Postmaniga.&lt;br /&gt;
* 20.05.17 Klientrakenduse koostegemine, 1. kord. Testklient.&lt;br /&gt;
* 25.05.17 Klientrakenduse koostegemine, 2. kord. Klientrakenduse arendamine.&lt;br /&gt;
* 01.06.17 Klientrakenduse koostegemine, 3. kord. Klientrakenduse arendamine. Angular JS.&lt;br /&gt;
* 03.06.17 - 11.06.17 Klientrakenduse arendamine. Tokenipõhine autentimine. Veebiteenuse viimistlemine.&lt;br /&gt;
* 11.06.17 Lõpptähtaeg. Projekti esitlemine eksamil.&lt;br /&gt;
* 12.06.17 Teiste lahenduste retsenseerimine.&lt;/div&gt;</summary>
		<author><name>Otiks</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Team_SPOT&amp;diff=123525</id>
		<title>Team SPOT</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Team_SPOT&amp;diff=123525"/>
		<updated>2017-06-12T14:51:03Z</updated>

		<summary type="html">&lt;p&gt;Otiks: /* Lähtekood */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://wiki.itcollege.ee/index.php/Kodut%C3%B6%C3%B6_aines_%22V%C3%B5rgurakendused_II:_hajuss%C3%BCsteemide_ehitamine%22_2017 Kodutöö aines &amp;quot;Võrgurakendused II: hajussüsteemide ehitamine&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
[https://projectspot.visualstudio.com/PROJECTSPOT Projekti repositoorium (avaneb ainult liikmetele)]&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==Liikmed==&lt;br /&gt;
*Sigrid Pachel&lt;br /&gt;
*Oliver Tiks&lt;br /&gt;
&lt;br /&gt;
==Idee==&lt;br /&gt;
Mõttes on luua spordiklubi(de) veebiteenus ja klientrakendus, mis võimaldaks saada infot pakutavate treeningute kohta, sisestada ja kuvada tunniplaani andmeid, registreerida osalejaid tundidesse ning teha muid asjakohaseid tegevusi nii klubi(de) personalil, liikmetel kui ka juhukasutajatel.&lt;br /&gt;
&lt;br /&gt;
==Veebiteenuse analüüs==&lt;br /&gt;
SPOTi veebiteenus võimaldab saada infot erinevate klubide treeningute kohta ja end neisse registreerida. Kasutaja saab teavet, kus ja millal treeningud toimuvad (tunniplaan), mida treeningus täpsemalt tehakse, mis stiiliga on tegemist, kes on treener, kui palju üks kord maksab jms info. Kasutajakontoga liikmel on võimalik end registreerida soovitud tundi ja hallata oma registreeringuid (muuta, tühistada).&lt;br /&gt;
&lt;br /&gt;
Spordiklubide infot haldavad süsteemi administraatorid, kes saavad lisada, muuta ja kustutada kõike sprodiklubiga seonduvat. Erinevaid treeninguid ja nendega seotud konkreetset infot saavad lisada ja hallata treenerid või spordiklubi esindajad.&lt;br /&gt;
&lt;br /&gt;
Projekti realiseerimiseks kasutame REST arhitektuuri ja ASP.NET MVC Web API tehnoloogiat.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Üldine plaan:&#039;&#039;&#039;&lt;br /&gt;
* esialgu üks kett (laienemise võimalusega)&lt;br /&gt;
* mitu klubi (asukoht, saalid-treeningualad, võimalikud lisatingimused)&lt;br /&gt;
* treeningute info (stiilid ehk kontseptid, litsentsid, …)&lt;br /&gt;
* tunniplaan (aeg, koht, instruktorid, max osalejate arv, ühe korra hind)&lt;br /&gt;
* registratuur (treeningutest osavõtjad)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kasutajad (rollid):&#039;&#039;&#039;&lt;br /&gt;
* administraatorid (saavad teha muudatusi)&lt;br /&gt;
* treenerid (info kvalifikatsiooni, litsentside kohta, õigus treeninguid lisada) &lt;br /&gt;
* liikmed (saavad treeningutele registreeruda)&lt;br /&gt;
* ülejäänud (näevad klubide ja treeningute infot ning tunniplaani)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Peaks olema:&#039;&#039;&#039;&lt;br /&gt;
* kasutajate loomine&lt;br /&gt;
* kasutajate tuvastamine ja haldamine&lt;br /&gt;
* kasutajate ja kasutusstatistika logimine&lt;br /&gt;
* teenuse poole pöördumiste arvu piiramine ja piirangute haldamine&lt;br /&gt;
* klubide, treenerite ja treeningute info väljastamine&lt;br /&gt;
* tunniplaani info väljastamine&lt;br /&gt;
* treeningutesse registreerimine&lt;br /&gt;
* registreeringu tühistamine&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Võiks olla:&#039;&#039;&#039;&lt;br /&gt;
* klubide, treenerite, treeningute lisamine ja muutmine&lt;br /&gt;
* tunniplaanis treeningute tühistamine&lt;br /&gt;
* sisestatud andmete kustutamine (pehmelt)&lt;br /&gt;
* rollide-õiguste määramine (admin)&lt;br /&gt;
* asukohad mitmes riigis&lt;br /&gt;
* kliendipaketid, arveldus&lt;br /&gt;
* kontaktide tsentraliseeritud haldus&lt;br /&gt;
* sisselogimine läbi Google’i, Facebooki vmt teenuse&lt;br /&gt;
&lt;br /&gt;
===Andmebaasi skeem (lihtsustatud)===&lt;br /&gt;
&lt;br /&gt;
[[File:SPOTService ERD.JPG|border|SPOT Service ERD]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Märkus: olemite atribuutidest on välja toodud ainult peamised.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====Tabelite kirjeldused====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kasutajahaldus*:&#039;&#039;&#039;&lt;br /&gt;
* User - kasutajate andmed&lt;br /&gt;
* Role - rollid, millega määratakse kasutajate õigused (&amp;quot;Admin&amp;quot;, &amp;quot;Trainer&amp;quot;, ...)&lt;br /&gt;
* UserRole - kasutajate sidumine rolli(de)ga&lt;br /&gt;
* UserLogin - muu teenuse kaudu sisselogimiseks&lt;br /&gt;
* UserClaim - muu teenuse kaudu sisselogimiseks&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;&#039;&#039;Kasutajahalduse süsteem toetub Asp.Net Identity valmislahendusele, mida on täiendanud A. Käver.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Klubid:&#039;&#039;&#039;&lt;br /&gt;
* Chain (optional) - spordiklubikettide info&lt;br /&gt;
* Location - spordiklubi/-rajatise asukoht linna/asula täpsusega&lt;br /&gt;
* Facility - spordiklubi/-rajatise andmed, seotud asukohaga ja vajadusel ketiga.&lt;br /&gt;
* Venue - spordiklubis/-rajatises kasutatavad saalid ja muud treeningualad&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Treeningud:&#039;&#039;&#039;&lt;br /&gt;
* Concept (Style) - treeningustiilid ehk kontseptid&lt;br /&gt;
* Licenser (optional) - treeninguliikide litsentsid (kui on)&lt;br /&gt;
* Training - treeninguliikide andmed, seotud stiili ja vajadusel litsentsiga&lt;br /&gt;
* Trainer (User (role: Trainer) + Training) - treeninguliikide sidumine treeneritega&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tunniplaan:&#039;&#039;&#039;&lt;br /&gt;
* ScheduleItem - treeningud tunniplaanis&lt;br /&gt;
* Instructor (User (role: Trainer) + ScheduleItem) - tundide juhendajad (võib olla mitu)&lt;br /&gt;
* Registration (ScheduleItem + User (role: any)) - tundidesse tehtud registreeringud&lt;br /&gt;
&lt;br /&gt;
== XML / XSD / XSLT==&lt;br /&gt;
Projekti esimeses etapis sai loodud XML andmefail, mille ülesehitus on paika pandud XSD skeemifailis. Lisaks on olemas kaks stiilifaili: esimene neist transformeerib andmed HTML-kujule, et kuvada infot  veebilehel, teine tekitab samade andmete esitamiseks uue struktuuriga XML faili.&lt;br /&gt;
&lt;br /&gt;
[https://drive.google.com/open?id=0B84njRSbVLUtd0U4aEJXOUhOTG8 Lae failid alla.] &lt;br /&gt;
&lt;br /&gt;
=== XML ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Fail sisaldab andmeid ühes spordiklubis pakutavate treeningute kohta. Andmed on esitatud treeninguliikide kaupa, mille juurde on lisatud ka vastava treeninguliigi tunniplaan. Treeninguliikidel on nimi ja kirjeldus ning vajadusel ära märgitud ka litsents. Failis on eraldi välja toodud treeningustiilid, instruktorid ja ruumid, kus treeningud toimuvad. Iga treeninguliik kuulub ühe või mitme stiili alla. Instruktoritel on tagasiside põhjal saadud hinne. Treeninguruumidel on vaikimisi määratud mahutavus. Tunniplaanis on ära toodud treeningu koht, algusaeg ja kestus ning instruktorid. Vajadusel saab eraldi määrata ka treeningurühma suuruse, kui see erineb tavalisest ruumi mahutavusest. Ka on võimalik treeningutunnile lisada kommentaar. Erinevate elementide andmed on omavahel seotud id-atribuutidega.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;?xml-stylesheet type=&amp;quot;text/xsl&amp;quot; href=&amp;quot;trainingsToHtml.xslt&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Trainings&amp;gt;&lt;br /&gt;
  &amp;lt;Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;![CDATA[Cardio]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
  &amp;lt;/Styles&amp;gt;&lt;br /&gt;
  &amp;lt;Instructors&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;1&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Yogafier]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;2&amp;quot; Rating=&amp;quot;4.7&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Mickey Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;3&amp;quot; Rating=&amp;quot;4.6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;4&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Donald Duck]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;5&amp;quot; Rating=&amp;quot;3.9&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Goofy]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;6&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Schwarzenegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;8&amp;quot; Rating=&amp;quot;4.8&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Kayla Weightlifter]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;9&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Margaret Strengthener]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
  &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;Venues&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;1&amp;quot; GroupSize=&amp;quot;45&amp;quot;&amp;gt;&amp;lt;![CDATA[Main Hall]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 2]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;3&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 3]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;4&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 4]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;5&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 5]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&amp;lt;![CDATA[Area 6]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;7&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&amp;lt;![CDATA[Yoga Hall]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
  &amp;lt;/Venues&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Yoga]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[Yoga is a group of physical, mental, and spiritual practices or disciplines which originated in ancient India. ]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;1&amp;quot; VenueId=&amp;quot;7&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-25T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;14&amp;quot; VenueId=&amp;quot;7&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT1H20M&amp;quot;&amp;gt;2017-03-28T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Comment&amp;gt;&lt;br /&gt;
          &amp;lt;![CDATA[Special class!]]&amp;gt;&lt;br /&gt;
        &amp;lt;/Comment&amp;gt; &lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/Nvlxn0EnmbM&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;  &lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;2&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyBalance™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[BODYBALANCE™ is the Yoga, Tai Chi, Pilates workout that builds flexibility and strength and leaves you feeling centered and calm. Based on a carefully structured series of stretches, moves and poses to music it creates a holistic workout that brings the body into a state of harmony and balance. This class will heighten your flexibility and inner strength creating a strong supple body from the inside out. Burn on average 390cals per hour.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;2&amp;quot; VenueId=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-31T12:15:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;3&amp;quot; VenueId=&amp;quot;2&amp;quot; &amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-30T13:30:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;3&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/jJxA6vBjUqY&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;3&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyJam™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;4&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[The Body Jam program is an addictive fusion of the latest dance styles to the hottest new sounds. This class isn’t just for dancers, it’s for everyone because the emphasis is put on not only having fun but also breaking a sweat. So grab a friend, get front and centre … you bring the attitude and we’ll bring the moves!]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;4&amp;quot;  VenueId=&amp;quot;3&amp;quot; &amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T16:10:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;4&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;5&amp;quot; VenueId=&amp;quot;5&amp;quot; &amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT45M&amp;quot;&amp;gt;2017-04-01T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;5&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/8PTXyg9si_4&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;4&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyPump™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[BodyPump classes are 59 minutes long and contain eight separate muscle-group specific songs or &amp;quot;tracks&amp;quot; along with an opening warm up track and closing cool-down track. There are also 45-minute and 30-minute class formats. The classes are performed to music using free weights-plates, barbells and an aerobic step. Participants choose their weights based on the exercise and their personal goals. Major muscle groups are worked via series of compound and isolation-based exercises including squats, presses, dead lifts. The focus is towards muscle endurance by moving light weights at high repetitions, what Les Mills calls the Rep Effect.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;3&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;6&amp;quot; VenueId=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;6&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;7&amp;quot; VenueId=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-23T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;6&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/zU_0XrdO3wo&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[CoreStrenght is a very hard workout! Not for beginners.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;3&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;8&amp;quot; VenueId=&amp;quot;6&amp;quot; GroupSize=&amp;quot;10&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT2H&amp;quot;&amp;gt;2017-03-23T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;9&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Comment&amp;gt;&lt;br /&gt;
          &amp;lt;![CDATA[Special challenge!]]&amp;gt;&lt;br /&gt;
        &amp;lt;/Comment&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;9&amp;quot; VenueId=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;8&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;10&amp;quot; VenueId=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-04-05T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;8&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;9&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/ZxTVmpvyUt8&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[Zumba involves dance and aerobic movements performed to energetic music. The choreography incorporates hip-hop, soca, samba, salsa, merengue and mambo. Squats and lunges are also included.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;4&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;11&amp;quot; VenueId=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT55M&amp;quot;&amp;gt;2017-03-26T15:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;12&amp;quot; VenueId=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-28T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;13&amp;quot; VenueId=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/-ZB6XIkfxnQ&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
&amp;lt;/Trainings&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSD ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Skeemifail kontrollib eelnevas andmefailis esitatud andmete vastavust kokkulepitud formaadile, samuti õigete andmetüüpide kasutamist. Alamelemendi id-atribuudi väärtus peab olema iga elemendirühma lõikes unikaalne. Kohustuslike elementide ja atribuutide kõrval on ka mõned (nt kommentaar), mille olemasolu pole alati tarvilik. Teatud puhkudel on piiratud maksimaalset elementide arvu (nt treeningutunni algusaeg). Faili üldine struktuur on kindel, aga alati pole alamelementide järjekord oluline (nt treeninguliigi puhul).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xs:schema attributeFormDefault=&amp;quot;unqualified&amp;quot; elementFormDefault=&amp;quot;qualified&amp;quot; xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xs:element name=&amp;quot;Trainings&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Styles&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Style&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
          &amp;lt;xs:unique name=&amp;quot;UniqueStyleId&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xs:selector xpath=&amp;quot;Style&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Instructors&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;Name&amp;quot; type=&amp;quot;xs:string&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:attribute name=&amp;quot;Rating&amp;quot; type=&amp;quot;xs:decimal&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
          &amp;lt;xs:unique name=&amp;quot;UniqueInstructorId&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xs:selector xpath=&amp;quot;Instructor&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Venues&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Venue&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:attribute name=&amp;quot;GroupSize&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
          &amp;lt;xs:unique name=&amp;quot;UniqueVenueId&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xs:selector xpath=&amp;quot;Venue&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Training&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:all&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Description&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Styles&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Style&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Schedule&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;ScheduleItem&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:all&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element  maxOccurs=&amp;quot;1&amp;quot; name=&amp;quot;Time&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:extension base=&amp;quot;xs:dateTime&amp;quot;&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:attribute name=&amp;quot;Duration&amp;quot; type=&amp;quot;xs:duration&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element name=&amp;quot;Instructors&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                    &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                                      &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                                        &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                                      &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                                    &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                                  &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; name=&amp;quot;Comment&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:all&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;VenueId&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;GroupSize&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;optional&amp;quot; /&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;VideoUrl&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:all&amp;gt;&lt;br /&gt;
            &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xs:attribute name=&amp;quot;Licence&amp;quot; type=&amp;quot;xs:string&amp;quot; use=&amp;quot;optional&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
    &amp;lt;xs:unique name=&amp;quot;UniqueTrainingId&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xs:selector xpath=&amp;quot;Training&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
    &amp;lt;xs:unique name=&amp;quot;UniqueScheduleItemId&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xs:selector xpath=&amp;quot;Training/Schedule/ScheduleItem&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSLT (html) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Selles transformatsioonifailis on kirjeldatud XML failis olevate andmete [http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/trainings.xml  kuvamise viis veebilehel]. Treeninguliigid on jaotatud stiiliblokkidesse (mõni treening kuulub mitme stiili alla). Iga treeninguliigi all on tabeli kujul esitatud tunniplaan ning lisatud näidisvideo ja kirjeldus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot; xmlns:msxsl=&amp;quot;urn:schemas-microsoft-com:xslt&amp;quot; exclude-result-prefixes=&amp;quot;msxsl&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:output method=&amp;quot;html&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;html&amp;gt;&lt;br /&gt;
      &amp;lt;head&amp;gt;&lt;br /&gt;
        &amp;lt;title&amp;gt;SuperSportsClub - Trainings&amp;lt;/title&amp;gt;&lt;br /&gt;
        &amp;lt;style&amp;gt;&lt;br /&gt;
          body {&lt;br /&gt;
          background:BurlyWood;&lt;br /&gt;
          text-align: center;&lt;br /&gt;
          }&lt;br /&gt;
          .section {&lt;br /&gt;
          text-align:left;&lt;br /&gt;
          width:1000px;&lt;br /&gt;
          padding:20px;&lt;br /&gt;
          background:Chocolate;&lt;br /&gt;
          margin: auto;&lt;br /&gt;
          }&lt;br /&gt;
          table, th, td, .section {&lt;br /&gt;
          border: 1px solid black;&lt;br /&gt;
          }&lt;br /&gt;
          th {&lt;br /&gt;
          text-align:left;&lt;br /&gt;
          padding-left: 10px;&lt;br /&gt;
          padding-right: 10px;&lt;br /&gt;
          }&lt;br /&gt;
          td {&lt;br /&gt;
          text-align:center;&lt;br /&gt;
          }&lt;br /&gt;
          p {&lt;br /&gt;
          text-align:justify;&lt;br /&gt;
          }&lt;br /&gt;
          .description {&lt;br /&gt;
          vertical-align:top; &lt;br /&gt;
          padding:10px;&lt;br /&gt;
          }&lt;br /&gt;
        &amp;lt;/style&amp;gt;&lt;br /&gt;
      &amp;lt;/head&amp;gt;&lt;br /&gt;
      &amp;lt;body&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;Trainings at SuperSportsClub&amp;lt;/h1&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;/Trainings/Styles/Style&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:sort select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:variable select=&amp;quot;.&amp;quot; name=&amp;quot;SelectedStyle&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;section&amp;quot; &amp;gt;&lt;br /&gt;
            &amp;lt;h2&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select=&amp;quot;$SelectedStyle&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/h2&amp;gt;&lt;br /&gt;
            &amp;lt;ul&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:for-each select=&amp;quot;/Trainings/Training&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:sort select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:variable name=&amp;quot;Training&amp;quot; select=&amp;quot;.&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:if test=&amp;quot;Styles/Style/@Id = $SelectedStyle/@Id&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;&lt;br /&gt;
                    &amp;lt;h3&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;$Training/Name&amp;quot; /&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:if test=&amp;quot;$Training/@Licence&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:text&amp;gt; (&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:value-of select=&amp;quot;$Training/@Licence&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:text&amp;gt;)&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
                    &amp;lt;/h3&amp;gt;&lt;br /&gt;
                    &amp;lt;table&amp;gt;&lt;br /&gt;
                      &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                      &amp;lt;/tr&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:for-each select=&amp;quot;$Training/Schedule/ScheduleItem&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:sort select=&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:variable name=&amp;quot;StartTime&amp;quot; select=&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:variable name=&amp;quot;Duration&amp;quot; select=&amp;quot;$StartTime/@Duration&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;tr&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;150&amp;quot; &amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;concat(&lt;br /&gt;
                                            substring($StartTime, 9, 2), &lt;br /&gt;
                                            &#039;.&#039;, &lt;br /&gt;
                                            substring($StartTime, 6, 2), &lt;br /&gt;
                                            &#039;.&#039;, &lt;br /&gt;
                                            substring($StartTime, 1, 4),&lt;br /&gt;
                                            &#039; &#039;,&lt;br /&gt;
                                            substring($StartTime, 12, 2),&lt;br /&gt;
                                            &#039;:&#039;,&lt;br /&gt;
                                            substring($StartTime, 15, 2))&lt;br /&gt;
                                            &amp;quot; /&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:if test=&amp;quot;Comment&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;br/&amp;gt;&lt;br /&gt;
                              &amp;lt;div style=&amp;quot;color:Green&amp;quot;&amp;gt;&lt;br /&gt;
                                &amp;lt;xsl:value-of select=&amp;quot;Comment&amp;quot;/&amp;gt;&lt;br /&gt;
                              &amp;lt;/div&amp;gt;&lt;br /&gt;
                            &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;substring($Duration, 3, 6)&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:variable name=&amp;quot;VenueId&amp;quot; select=&amp;quot;@VenueId&amp;quot;/&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;/Trainings/Venues/Venue[@Id=$VenueId]&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:for-each select=&amp;quot;Instructors/Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:variable name=&amp;quot;InstructorId&amp;quot; select=&amp;quot;@Id&amp;quot;&amp;gt;&amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:variable name=&amp;quot;SelectedInstructor&amp;quot; select=&amp;quot;/Trainings/Instructors/Instructor[@Id=$InstructorId]&amp;quot; /&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/Name&amp;quot;/&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:text&amp;gt; (&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/@Rating&amp;quot; /&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:text&amp;gt;)&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                              &amp;lt;br/&amp;gt;&lt;br /&gt;
                            &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;/tr&amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
                    &amp;lt;/table&amp;gt;&lt;br /&gt;
                    &amp;lt;br/&amp;gt;&lt;br /&gt;
                    &amp;lt;table&amp;gt;&lt;br /&gt;
                      &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                          &amp;lt;xsl:variable name=&amp;quot;VideoUrl&amp;quot; select=&amp;quot;$Training/VideoUrl&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;{$VideoUrl}&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                          &amp;lt;p&amp;gt;&lt;br /&gt;
                            &amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&lt;br /&gt;
                          &amp;lt;/p&amp;gt;&lt;br /&gt;
                          &amp;lt;p&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;$Training/Description&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                      &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;/table&amp;gt;&lt;br /&gt;
                  &amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
            &amp;lt;/ul&amp;gt;&lt;br /&gt;
          &amp;lt;/div&amp;gt;&lt;br /&gt;
          &amp;lt;br/&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
      &amp;lt;/body&amp;gt;&lt;br /&gt;
    &amp;lt;/html&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== HTML (transformeeritud) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/trainings.html Vaata eelneva transformatsiooni tulemust.]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;META http-equiv=&amp;quot;Content-Type&amp;quot; content=&amp;quot;text/html; charset=utf-8&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;SuperSportsClub - Trainings&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;style&amp;gt;&lt;br /&gt;
        body {&lt;br /&gt;
            background: BurlyWood;&lt;br /&gt;
            text-align: center;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        .section {&lt;br /&gt;
            text-align: left;&lt;br /&gt;
            width: 1000px;&lt;br /&gt;
            padding: 20px;&lt;br /&gt;
            background: Chocolate;&lt;br /&gt;
            margin: auto;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        table, th, td, .section {&lt;br /&gt;
            border: 1px solid black;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        th {&lt;br /&gt;
            text-align: left;&lt;br /&gt;
            padding-left: 10px;&lt;br /&gt;
            padding-right: 10px;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        td {&lt;br /&gt;
            text-align: center;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        p {&lt;br /&gt;
            text-align: justify;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        .description {&lt;br /&gt;
            vertical-align: top;&lt;br /&gt;
            padding: 10px;&lt;br /&gt;
        }&lt;br /&gt;
    &amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
    &amp;lt;h1&amp;gt;Trainings at SuperSportsClub&amp;lt;/h1&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Body&amp;amp;amp;Mind&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyBalance™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 13:30&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;1H15M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 2&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Minnie Mouse (4.6)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;31.03.2017 12:15&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;1H15M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 3&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Mickey Mouse (4.7)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/jJxA6vBjUqY&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                BODYBALANCE™ is the Yoga, Tai Chi, Pilates workout that builds flexibility and strength and leaves you feeling centered and calm. Based on a carefully structured series of stretches, moves and poses to music it creates a holistic workout that brings the body into a state of harmony and balance. This class will heighten your flexibility and inner strength creating a strong supple body from the inside out. Burn on average 390cals per hour.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;Yoga&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;25.03.2017 14:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Yoga Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Minnie Yogafier (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
                            28.03.2017 14:00&amp;lt;br&amp;gt;&amp;lt;div style=&amp;quot;color:Green&amp;quot;&amp;gt;&lt;br /&gt;
                                Special class!&lt;br /&gt;
                            &amp;lt;/div&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;1H20M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Yoga Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Minnie Yogafier (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/Nvlxn0EnmbM&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                Yoga is a group of physical, mental, and spiritual practices or disciplines which originated in ancient India.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Cardio&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyJam™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 16:10&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 3&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Donald Duck (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;01.04.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;45M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 5&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Goofy (3.9)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/8PTXyg9si_4&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                The Body Jam program is an addictive fusion of the latest dance styles to the hottest new sounds. This class isn’t just for dancers, it’s for everyone because the emphasis is put on not only having fun but also breaking a sweat. So grab a friend, get front and centre … you bring the attitude and we’ll bring the moves!&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Dance&amp;amp;amp;Fun&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyJam™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 16:10&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 3&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Donald Duck (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;01.04.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;45M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 5&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Goofy (3.9)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/8PTXyg9si_4&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                The Body Jam program is an addictive fusion of the latest dance styles to the hottest new sounds. This class isn’t just for dancers, it’s for everyone because the emphasis is put on not only having fun but also breaking a sweat. So grab a friend, get front and centre … you bring the attitude and we’ll bring the moves!&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;Zumba®&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;26.03.2017 15:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;55M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 2&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Zumbaschnegger (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;28.03.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 4&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Zumbaschnegger (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 2&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Zumbaschnegger (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/-ZB6XIkfxnQ&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                Zumba involves dance and aerobic movements performed to energetic music. The choreography incorporates hip-hop, soca, samba, salsa, merengue and mambo. Squats and lunges are also included.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Strength&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyPump™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;23.03.2017 13:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Main Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Schwarzenegger (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 13:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Main Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Schwarzenegger (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/zU_0XrdO3wo&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                BodyPump classes are 59 minutes long and contain eight separate muscle-group specific songs or &amp;quot;tracks&amp;quot; along with an opening warm up track and closing cool-down track. There are also 45-minute and 30-minute class formats. The classes are performed to music using free weights-plates, barbells and an aerobic step. Participants choose their weights based on the exercise and their personal goals. Major muscle groups are worked via series of compound and isolation-based exercises including squats, presses, dead lifts. The focus is towards muscle endurance by moving light weights at high repetitions, what Les Mills calls the Rep Effect.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;CoreStrength&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
                            23.03.2017 12:00&amp;lt;br&amp;gt;&amp;lt;div style=&amp;quot;color:Green&amp;quot;&amp;gt;&lt;br /&gt;
                                Special challenge!&lt;br /&gt;
                            &amp;lt;/div&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;2H&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Area 6&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Margaret Strengthener (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Area 6&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Kayla Weightlifter (4.8)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;05.04.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Area 6&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Kayla Weightlifter (4.8)&amp;lt;br&amp;gt;Margaret Strengthener (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/ZxTVmpvyUt8&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                CoreStrenght is a very hard workout! Not for beginners.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSLT (xml) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Selle transformatsiooniga luuakse uus [http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/schedule.xml XML fail], milles on treeningute andmed esitatud ühtse tunniplaani kujul. Algses failis erinevate elementide alla paigutatud andmed on nüüd tunniplaani alamelemendis kokku viidud. Sidumine on teostatud id-atribuutide abil. Tunniplaanis on ühes kohas kirjas treeningu nimi, stiil(id), koht, algusaeg, kestus, rühma suurus, instruktorid ja muu täiendav info.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&lt;br /&gt;
    xmlns:msxsl=&amp;quot;urn:schemas-microsoft-com:xslt&amp;quot; exclude-result-prefixes=&amp;quot;msxsl&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:output method=&amp;quot;xml&amp;quot; indent=&amp;quot;yes&amp;quot; cdata-section-elements=&amp;quot;Name Style Comment&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;/Trainings/Training&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:sort select=&amp;quot;Name&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:variable name=&amp;quot;SelectedTraining&amp;quot; select=&amp;quot;.&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;Schedule/ScheduleItem&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:sort select=&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;ScheduleItem&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:variable name=&amp;quot;VenueId&amp;quot; select=&amp;quot;@VenueId&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:variable name=&amp;quot;SelectedVenue&amp;quot; select=&amp;quot;/Trainings/Venues/Venue[@Id=$VenueId]&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:attribute name=&amp;quot;GroupSize&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;@GroupSize&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:value-of select=&amp;quot;@GroupSize&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:value-of select=&amp;quot;$SelectedVenue/@GroupSize&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
            &amp;lt;Venue&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$VenueId&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select=&amp;quot;$SelectedVenue&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/Venue&amp;gt;&lt;br /&gt;
            &amp;lt;Training&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$SelectedTraining/@Id&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:if test=&amp;quot;$SelectedTraining/@Licence&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:attribute name=&amp;quot;Licence&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:value-of select=&amp;quot;$SelectedTraining/@Licence&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
              &amp;lt;Name&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$SelectedTraining/Name&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/Name&amp;gt;&lt;br /&gt;
              &amp;lt;Styles&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:for-each select=&amp;quot;$SelectedTraining/Styles/Style&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:variable name=&amp;quot;StyleId&amp;quot; select=&amp;quot;@Id&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;Style&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:attribute name=&amp;quot;StyleId&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;$StyleId&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;/Trainings/Styles/Style[@Id=$StyleId]&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/Style&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
              &amp;lt;/Styles&amp;gt;&lt;br /&gt;
            &amp;lt;/Training&amp;gt;&lt;br /&gt;
            &amp;lt;Time&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:attribute name=&amp;quot;Duration&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;Time/@Duration&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select =&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/Time&amp;gt;&lt;br /&gt;
            &amp;lt;Instructors&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:for-each select=&amp;quot;Instructors/Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:variable name=&amp;quot;InstructorId&amp;quot; select=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:variable name=&amp;quot;SelectedInstructor&amp;quot; select=&amp;quot;/Trainings/Instructors/Instructor[@Id=$InstructorId]&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;Instructor&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;$InstructorId&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:attribute name=&amp;quot;Rating&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/@Rating&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                  &amp;lt;Name&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/Name&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/Name&amp;gt;&lt;br /&gt;
                &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
            &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:if test=&amp;quot;Comment&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;Comment&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;Comment&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/Comment&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
          &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XML (transformeeritud) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/schedule.xml Vaata eelneva transformatsiooni tulemust.]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Schedule&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;3&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot;&amp;gt;Hall 2&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;2&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyBalance™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-30T13:30:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;3&amp;quot; Rating=&amp;quot;4.6&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;2&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;3&amp;quot;&amp;gt;Hall 3&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;2&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyBalance™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-31T12:15:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;2&amp;quot; Rating=&amp;quot;4.7&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Mickey Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;4&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;3&amp;quot;&amp;gt;Hall 3&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;3&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyJam™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;![CDATA[Cardio]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T16:10:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;4&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Donald Duck]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;5&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;5&amp;quot;&amp;gt;Hall 5&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;3&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyJam™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;![CDATA[Cardio]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT45M&amp;quot;&amp;gt;2017-04-01T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;5&amp;quot; Rating=&amp;quot;3.9&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Goofy]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;7&amp;quot; GroupSize=&amp;quot;45&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;1&amp;quot;&amp;gt;Main Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;4&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyPump™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-23T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;6&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Schwarzenegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;6&amp;quot; GroupSize=&amp;quot;45&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;1&amp;quot;&amp;gt;Main Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;4&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyPump™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;6&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Schwarzenegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;8&amp;quot; GroupSize=&amp;quot;10&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot;&amp;gt;Area 6&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT2H&amp;quot;&amp;gt;2017-03-23T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;9&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Margaret Strengthener]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
    &amp;lt;Comment&amp;gt;&amp;lt;![CDATA[&lt;br /&gt;
          Special challenge!&lt;br /&gt;
        ]]&amp;gt;&amp;lt;/Comment&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;9&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot;&amp;gt;Area 6&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;8&amp;quot; Rating=&amp;quot;4.8&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Kayla Weightlifter]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;10&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot;&amp;gt;Area 6&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-04-05T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;8&amp;quot; Rating=&amp;quot;4.8&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Kayla Weightlifter]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;9&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Margaret Strengthener]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;11&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot;&amp;gt;Hall 2&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT55M&amp;quot;&amp;gt;2017-03-26T15:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;12&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;4&amp;quot;&amp;gt;Hall 4&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-28T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;13&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot;&amp;gt;Hall 2&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;1&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;7&amp;quot;&amp;gt;Yoga Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Yoga]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-25T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;1&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Yogafier]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;14&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;7&amp;quot;&amp;gt;Yoga Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Yoga]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT1H20M&amp;quot;&amp;gt;2017-03-28T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;1&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Yogafier]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
    &amp;lt;Comment&amp;gt;&amp;lt;![CDATA[&lt;br /&gt;
          Special class!&lt;br /&gt;
        ]]&amp;gt;&amp;lt;/Comment&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
&amp;lt;/Schedule&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus ==&lt;br /&gt;
Angular JS &#039;&#039;single page application&#039;&#039; eelnevalt kirjeldatud veebiteenusele. Sisse logimata saab kuvada spordiklubi tunniplaani nädalate kaupa, treeninguliike stiilide kaupa ja treenereid. Võimalik on liituda teenusega ja registreeruda treeningutele, samuti registreeringuid tühistada nii otse tunniplaanist kui ka registreeringute lehel. Esialgu põhineb süsteem ühel spordiklubil. Kasutamise eelduseks on tunniplaani olemasolu andmebaasis.&lt;br /&gt;
&lt;br /&gt;
Autentimine on lahendatud tokenipõhiselt. Eeskuju ja põhjana kasutasime näidisrakendust, mille juhend ja lähtekood on leitav [http://bitoftech.net/2014/06/09/angularjs-token-authentication-using-asp-net-web-api-2-owin-asp-net-identity/ siit].&lt;br /&gt;
&lt;br /&gt;
== Lähtekood ==&lt;br /&gt;
Eksamiks valminud veebiteenuse ja klientrakenduse kokkupakitult allalaadimiseks klõpsa [https://drive.google.com/file/d/0B84njRSbVLUtd0U4aEJXOUhOTG8/view?usp=sharing sellel lingil]. WebApi ja Angular JS klient on eraldi lahendustes. Kliendi testimiseks brauseris (Chrome, Firefox vm) tuleb eelnevalt käivitada ka veebiteenus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;NB! Võib juhtuda, et WebApi esmakordsel käivitamisel loodavasse andmebaasi kõiki andmeid (tunniplaani ja registreerimisi jooksvasse nädalasse) ei lisandu. Sellisel juhul kustuta tekkinud andmebaas ja käivita kõigepealt samas lahenduses olev konsoolirakendus.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Retsensioonid ==&lt;br /&gt;
&lt;br /&gt;
# [https://wiki.itcollege.ee/index.php/Talk:JRT XML/XSD/XSLT retsensioon meeskonnale JRT]&lt;br /&gt;
# [Veebiteenuse retsensioon lisandub varsti]&lt;br /&gt;
# [Klientrakenduse retsensioon lisandub varsti]&lt;br /&gt;
&lt;br /&gt;
== Log ==&lt;br /&gt;
* 03.03.17 Esimene kohtumine. Idee.&lt;br /&gt;
* 17.03.17 Osa XMList valmis, osa XSLT-st valmis.&lt;br /&gt;
* 18.03.17 Teine kohtumine. XMLi täiendamine, esimene ülekäimine XSD-s.&lt;br /&gt;
* 19.03.17 XML/XSLT/XSD täiendamine ja lõpetamine.&lt;br /&gt;
* 20.03.17 XML fail, skeemifail ja stiilifailid esitatud. Projekti esimese etapi lõpp. Kevade algus.&lt;br /&gt;
* 26.03.17 XML/XSLT/XSD retsensioon esitatud.&lt;br /&gt;
* 16.04.17 Veebiteenuse analüüsi koostamine.&lt;br /&gt;
* 17.04.17 Esialgne veebiteenuse analüüs ja kavand valmis.&lt;br /&gt;
* 19.04.17 Alustasime veebiteenusega, koostegemine: Domain, DAL, Interfaces, Repostitories. Testimine konsoolis.&lt;br /&gt;
* 24.04.17 Veebiteenuse koostegemine, 2. kord: Domaini täiendamine.&lt;br /&gt;
* 29.04.17 Veebiteenuse koostegemine, 3. kord: Interfaces, Repositories, Factory + UOW. Testimine konsoolis.&lt;br /&gt;
* 01.05.17 Andmebaasi täitmine testandmetega varasemas faasis loodud XML failist.&lt;br /&gt;
* 02.05.17 Veebiteenuse koostegemine, 4. kord: alustasime BLi ja WebApi ehitamist. GET päringud.&lt;br /&gt;
* 09.05.17 Veebiteenuse koostegemine, 5. kord: lisasime Identity.&lt;br /&gt;
* 11.05.17 Veebiteenuse koostegemine, 6. kord: WebApi arendamine. POST, PUT ja DELETE päringud.&lt;br /&gt;
* 15.05.17 Veebiteenuse koostegemine, 7. kord: WebApi arendamine. Lisasime  api kontrollereid.&lt;br /&gt;
* 16.05.17 Veebiteenuse koostegemine, 8. kord: WebApi arendamine. Identity kontroll Fiddleri ja Postmaniga.&lt;br /&gt;
* 20.05.17 Klientrakenduse koostegemine, 1. kord. Testklient.&lt;br /&gt;
* 25.05.17 Klientrakenduse koostegemine, 2. kord. Klientrakenduse arendamine.&lt;br /&gt;
* 01.06.17 Klientrakenduse koostegemine, 3. kord. Klientrakenduse arendamine. Angular JS.&lt;br /&gt;
* 03.06.17 - 11.06.17 Klientrakenduse arendamine. Tokenipõhine autentimine. Veebiteenuse viimistlemine.&lt;br /&gt;
* 11.06.17 Lõpptähtaeg. Projekti esitlemine eksamil.&lt;br /&gt;
* 12.06.17 Teiste lahenduste retsenseerimine.&lt;/div&gt;</summary>
		<author><name>Otiks</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Team_SPOT&amp;diff=123524</id>
		<title>Team SPOT</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Team_SPOT&amp;diff=123524"/>
		<updated>2017-06-12T14:50:06Z</updated>

		<summary type="html">&lt;p&gt;Otiks: /* Lähtekood */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://wiki.itcollege.ee/index.php/Kodut%C3%B6%C3%B6_aines_%22V%C3%B5rgurakendused_II:_hajuss%C3%BCsteemide_ehitamine%22_2017 Kodutöö aines &amp;quot;Võrgurakendused II: hajussüsteemide ehitamine&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
[https://projectspot.visualstudio.com/PROJECTSPOT Projekti repositoorium (avaneb ainult liikmetele)]&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==Liikmed==&lt;br /&gt;
*Sigrid Pachel&lt;br /&gt;
*Oliver Tiks&lt;br /&gt;
&lt;br /&gt;
==Idee==&lt;br /&gt;
Mõttes on luua spordiklubi(de) veebiteenus ja klientrakendus, mis võimaldaks saada infot pakutavate treeningute kohta, sisestada ja kuvada tunniplaani andmeid, registreerida osalejaid tundidesse ning teha muid asjakohaseid tegevusi nii klubi(de) personalil, liikmetel kui ka juhukasutajatel.&lt;br /&gt;
&lt;br /&gt;
==Veebiteenuse analüüs==&lt;br /&gt;
SPOTi veebiteenus võimaldab saada infot erinevate klubide treeningute kohta ja end neisse registreerida. Kasutaja saab teavet, kus ja millal treeningud toimuvad (tunniplaan), mida treeningus täpsemalt tehakse, mis stiiliga on tegemist, kes on treener, kui palju üks kord maksab jms info. Kasutajakontoga liikmel on võimalik end registreerida soovitud tundi ja hallata oma registreeringuid (muuta, tühistada).&lt;br /&gt;
&lt;br /&gt;
Spordiklubide infot haldavad süsteemi administraatorid, kes saavad lisada, muuta ja kustutada kõike sprodiklubiga seonduvat. Erinevaid treeninguid ja nendega seotud konkreetset infot saavad lisada ja hallata treenerid või spordiklubi esindajad.&lt;br /&gt;
&lt;br /&gt;
Projekti realiseerimiseks kasutame REST arhitektuuri ja ASP.NET MVC Web API tehnoloogiat.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Üldine plaan:&#039;&#039;&#039;&lt;br /&gt;
* esialgu üks kett (laienemise võimalusega)&lt;br /&gt;
* mitu klubi (asukoht, saalid-treeningualad, võimalikud lisatingimused)&lt;br /&gt;
* treeningute info (stiilid ehk kontseptid, litsentsid, …)&lt;br /&gt;
* tunniplaan (aeg, koht, instruktorid, max osalejate arv, ühe korra hind)&lt;br /&gt;
* registratuur (treeningutest osavõtjad)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kasutajad (rollid):&#039;&#039;&#039;&lt;br /&gt;
* administraatorid (saavad teha muudatusi)&lt;br /&gt;
* treenerid (info kvalifikatsiooni, litsentside kohta, õigus treeninguid lisada) &lt;br /&gt;
* liikmed (saavad treeningutele registreeruda)&lt;br /&gt;
* ülejäänud (näevad klubide ja treeningute infot ning tunniplaani)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Peaks olema:&#039;&#039;&#039;&lt;br /&gt;
* kasutajate loomine&lt;br /&gt;
* kasutajate tuvastamine ja haldamine&lt;br /&gt;
* kasutajate ja kasutusstatistika logimine&lt;br /&gt;
* teenuse poole pöördumiste arvu piiramine ja piirangute haldamine&lt;br /&gt;
* klubide, treenerite ja treeningute info väljastamine&lt;br /&gt;
* tunniplaani info väljastamine&lt;br /&gt;
* treeningutesse registreerimine&lt;br /&gt;
* registreeringu tühistamine&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Võiks olla:&#039;&#039;&#039;&lt;br /&gt;
* klubide, treenerite, treeningute lisamine ja muutmine&lt;br /&gt;
* tunniplaanis treeningute tühistamine&lt;br /&gt;
* sisestatud andmete kustutamine (pehmelt)&lt;br /&gt;
* rollide-õiguste määramine (admin)&lt;br /&gt;
* asukohad mitmes riigis&lt;br /&gt;
* kliendipaketid, arveldus&lt;br /&gt;
* kontaktide tsentraliseeritud haldus&lt;br /&gt;
* sisselogimine läbi Google’i, Facebooki vmt teenuse&lt;br /&gt;
&lt;br /&gt;
===Andmebaasi skeem (lihtsustatud)===&lt;br /&gt;
&lt;br /&gt;
[[File:SPOTService ERD.JPG|border|SPOT Service ERD]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Märkus: olemite atribuutidest on välja toodud ainult peamised.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====Tabelite kirjeldused====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kasutajahaldus*:&#039;&#039;&#039;&lt;br /&gt;
* User - kasutajate andmed&lt;br /&gt;
* Role - rollid, millega määratakse kasutajate õigused (&amp;quot;Admin&amp;quot;, &amp;quot;Trainer&amp;quot;, ...)&lt;br /&gt;
* UserRole - kasutajate sidumine rolli(de)ga&lt;br /&gt;
* UserLogin - muu teenuse kaudu sisselogimiseks&lt;br /&gt;
* UserClaim - muu teenuse kaudu sisselogimiseks&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;&#039;&#039;Kasutajahalduse süsteem toetub Asp.Net Identity valmislahendusele, mida on täiendanud A. Käver.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Klubid:&#039;&#039;&#039;&lt;br /&gt;
* Chain (optional) - spordiklubikettide info&lt;br /&gt;
* Location - spordiklubi/-rajatise asukoht linna/asula täpsusega&lt;br /&gt;
* Facility - spordiklubi/-rajatise andmed, seotud asukohaga ja vajadusel ketiga.&lt;br /&gt;
* Venue - spordiklubis/-rajatises kasutatavad saalid ja muud treeningualad&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Treeningud:&#039;&#039;&#039;&lt;br /&gt;
* Concept (Style) - treeningustiilid ehk kontseptid&lt;br /&gt;
* Licenser (optional) - treeninguliikide litsentsid (kui on)&lt;br /&gt;
* Training - treeninguliikide andmed, seotud stiili ja vajadusel litsentsiga&lt;br /&gt;
* Trainer (User (role: Trainer) + Training) - treeninguliikide sidumine treeneritega&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tunniplaan:&#039;&#039;&#039;&lt;br /&gt;
* ScheduleItem - treeningud tunniplaanis&lt;br /&gt;
* Instructor (User (role: Trainer) + ScheduleItem) - tundide juhendajad (võib olla mitu)&lt;br /&gt;
* Registration (ScheduleItem + User (role: any)) - tundidesse tehtud registreeringud&lt;br /&gt;
&lt;br /&gt;
== XML / XSD / XSLT==&lt;br /&gt;
Projekti esimeses etapis sai loodud XML andmefail, mille ülesehitus on paika pandud XSD skeemifailis. Lisaks on olemas kaks stiilifaili: esimene neist transformeerib andmed HTML-kujule, et kuvada infot  veebilehel, teine tekitab samade andmete esitamiseks uue struktuuriga XML faili.&lt;br /&gt;
&lt;br /&gt;
[https://drive.google.com/open?id=0B84njRSbVLUtd0U4aEJXOUhOTG8 Lae failid alla.] &lt;br /&gt;
&lt;br /&gt;
=== XML ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Fail sisaldab andmeid ühes spordiklubis pakutavate treeningute kohta. Andmed on esitatud treeninguliikide kaupa, mille juurde on lisatud ka vastava treeninguliigi tunniplaan. Treeninguliikidel on nimi ja kirjeldus ning vajadusel ära märgitud ka litsents. Failis on eraldi välja toodud treeningustiilid, instruktorid ja ruumid, kus treeningud toimuvad. Iga treeninguliik kuulub ühe või mitme stiili alla. Instruktoritel on tagasiside põhjal saadud hinne. Treeninguruumidel on vaikimisi määratud mahutavus. Tunniplaanis on ära toodud treeningu koht, algusaeg ja kestus ning instruktorid. Vajadusel saab eraldi määrata ka treeningurühma suuruse, kui see erineb tavalisest ruumi mahutavusest. Ka on võimalik treeningutunnile lisada kommentaar. Erinevate elementide andmed on omavahel seotud id-atribuutidega.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;?xml-stylesheet type=&amp;quot;text/xsl&amp;quot; href=&amp;quot;trainingsToHtml.xslt&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Trainings&amp;gt;&lt;br /&gt;
  &amp;lt;Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;![CDATA[Cardio]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
  &amp;lt;/Styles&amp;gt;&lt;br /&gt;
  &amp;lt;Instructors&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;1&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Yogafier]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;2&amp;quot; Rating=&amp;quot;4.7&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Mickey Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;3&amp;quot; Rating=&amp;quot;4.6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;4&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Donald Duck]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;5&amp;quot; Rating=&amp;quot;3.9&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Goofy]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;6&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Schwarzenegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;8&amp;quot; Rating=&amp;quot;4.8&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Kayla Weightlifter]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;9&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Margaret Strengthener]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
  &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;Venues&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;1&amp;quot; GroupSize=&amp;quot;45&amp;quot;&amp;gt;&amp;lt;![CDATA[Main Hall]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 2]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;3&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 3]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;4&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 4]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;5&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 5]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&amp;lt;![CDATA[Area 6]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;7&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&amp;lt;![CDATA[Yoga Hall]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
  &amp;lt;/Venues&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Yoga]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[Yoga is a group of physical, mental, and spiritual practices or disciplines which originated in ancient India. ]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;1&amp;quot; VenueId=&amp;quot;7&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-25T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;14&amp;quot; VenueId=&amp;quot;7&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT1H20M&amp;quot;&amp;gt;2017-03-28T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Comment&amp;gt;&lt;br /&gt;
          &amp;lt;![CDATA[Special class!]]&amp;gt;&lt;br /&gt;
        &amp;lt;/Comment&amp;gt; &lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/Nvlxn0EnmbM&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;  &lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;2&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyBalance™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[BODYBALANCE™ is the Yoga, Tai Chi, Pilates workout that builds flexibility and strength and leaves you feeling centered and calm. Based on a carefully structured series of stretches, moves and poses to music it creates a holistic workout that brings the body into a state of harmony and balance. This class will heighten your flexibility and inner strength creating a strong supple body from the inside out. Burn on average 390cals per hour.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;2&amp;quot; VenueId=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-31T12:15:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;3&amp;quot; VenueId=&amp;quot;2&amp;quot; &amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-30T13:30:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;3&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/jJxA6vBjUqY&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;3&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyJam™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;4&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[The Body Jam program is an addictive fusion of the latest dance styles to the hottest new sounds. This class isn’t just for dancers, it’s for everyone because the emphasis is put on not only having fun but also breaking a sweat. So grab a friend, get front and centre … you bring the attitude and we’ll bring the moves!]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;4&amp;quot;  VenueId=&amp;quot;3&amp;quot; &amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T16:10:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;4&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;5&amp;quot; VenueId=&amp;quot;5&amp;quot; &amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT45M&amp;quot;&amp;gt;2017-04-01T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;5&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/8PTXyg9si_4&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;4&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyPump™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[BodyPump classes are 59 minutes long and contain eight separate muscle-group specific songs or &amp;quot;tracks&amp;quot; along with an opening warm up track and closing cool-down track. There are also 45-minute and 30-minute class formats. The classes are performed to music using free weights-plates, barbells and an aerobic step. Participants choose their weights based on the exercise and their personal goals. Major muscle groups are worked via series of compound and isolation-based exercises including squats, presses, dead lifts. The focus is towards muscle endurance by moving light weights at high repetitions, what Les Mills calls the Rep Effect.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;3&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;6&amp;quot; VenueId=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;6&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;7&amp;quot; VenueId=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-23T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;6&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/zU_0XrdO3wo&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[CoreStrenght is a very hard workout! Not for beginners.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;3&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;8&amp;quot; VenueId=&amp;quot;6&amp;quot; GroupSize=&amp;quot;10&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT2H&amp;quot;&amp;gt;2017-03-23T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;9&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Comment&amp;gt;&lt;br /&gt;
          &amp;lt;![CDATA[Special challenge!]]&amp;gt;&lt;br /&gt;
        &amp;lt;/Comment&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;9&amp;quot; VenueId=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;8&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;10&amp;quot; VenueId=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-04-05T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;8&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;9&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/ZxTVmpvyUt8&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[Zumba involves dance and aerobic movements performed to energetic music. The choreography incorporates hip-hop, soca, samba, salsa, merengue and mambo. Squats and lunges are also included.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;4&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;11&amp;quot; VenueId=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT55M&amp;quot;&amp;gt;2017-03-26T15:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;12&amp;quot; VenueId=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-28T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;13&amp;quot; VenueId=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/-ZB6XIkfxnQ&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
&amp;lt;/Trainings&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSD ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Skeemifail kontrollib eelnevas andmefailis esitatud andmete vastavust kokkulepitud formaadile, samuti õigete andmetüüpide kasutamist. Alamelemendi id-atribuudi väärtus peab olema iga elemendirühma lõikes unikaalne. Kohustuslike elementide ja atribuutide kõrval on ka mõned (nt kommentaar), mille olemasolu pole alati tarvilik. Teatud puhkudel on piiratud maksimaalset elementide arvu (nt treeningutunni algusaeg). Faili üldine struktuur on kindel, aga alati pole alamelementide järjekord oluline (nt treeninguliigi puhul).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xs:schema attributeFormDefault=&amp;quot;unqualified&amp;quot; elementFormDefault=&amp;quot;qualified&amp;quot; xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xs:element name=&amp;quot;Trainings&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Styles&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Style&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
          &amp;lt;xs:unique name=&amp;quot;UniqueStyleId&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xs:selector xpath=&amp;quot;Style&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Instructors&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;Name&amp;quot; type=&amp;quot;xs:string&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:attribute name=&amp;quot;Rating&amp;quot; type=&amp;quot;xs:decimal&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
          &amp;lt;xs:unique name=&amp;quot;UniqueInstructorId&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xs:selector xpath=&amp;quot;Instructor&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Venues&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Venue&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:attribute name=&amp;quot;GroupSize&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
          &amp;lt;xs:unique name=&amp;quot;UniqueVenueId&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xs:selector xpath=&amp;quot;Venue&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Training&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:all&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Description&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Styles&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Style&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Schedule&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;ScheduleItem&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:all&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element  maxOccurs=&amp;quot;1&amp;quot; name=&amp;quot;Time&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:extension base=&amp;quot;xs:dateTime&amp;quot;&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:attribute name=&amp;quot;Duration&amp;quot; type=&amp;quot;xs:duration&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element name=&amp;quot;Instructors&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                    &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                                      &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                                        &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                                      &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                                    &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                                  &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; name=&amp;quot;Comment&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:all&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;VenueId&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;GroupSize&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;optional&amp;quot; /&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;VideoUrl&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:all&amp;gt;&lt;br /&gt;
            &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xs:attribute name=&amp;quot;Licence&amp;quot; type=&amp;quot;xs:string&amp;quot; use=&amp;quot;optional&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
    &amp;lt;xs:unique name=&amp;quot;UniqueTrainingId&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xs:selector xpath=&amp;quot;Training&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
    &amp;lt;xs:unique name=&amp;quot;UniqueScheduleItemId&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xs:selector xpath=&amp;quot;Training/Schedule/ScheduleItem&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSLT (html) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Selles transformatsioonifailis on kirjeldatud XML failis olevate andmete [http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/trainings.xml  kuvamise viis veebilehel]. Treeninguliigid on jaotatud stiiliblokkidesse (mõni treening kuulub mitme stiili alla). Iga treeninguliigi all on tabeli kujul esitatud tunniplaan ning lisatud näidisvideo ja kirjeldus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot; xmlns:msxsl=&amp;quot;urn:schemas-microsoft-com:xslt&amp;quot; exclude-result-prefixes=&amp;quot;msxsl&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:output method=&amp;quot;html&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;html&amp;gt;&lt;br /&gt;
      &amp;lt;head&amp;gt;&lt;br /&gt;
        &amp;lt;title&amp;gt;SuperSportsClub - Trainings&amp;lt;/title&amp;gt;&lt;br /&gt;
        &amp;lt;style&amp;gt;&lt;br /&gt;
          body {&lt;br /&gt;
          background:BurlyWood;&lt;br /&gt;
          text-align: center;&lt;br /&gt;
          }&lt;br /&gt;
          .section {&lt;br /&gt;
          text-align:left;&lt;br /&gt;
          width:1000px;&lt;br /&gt;
          padding:20px;&lt;br /&gt;
          background:Chocolate;&lt;br /&gt;
          margin: auto;&lt;br /&gt;
          }&lt;br /&gt;
          table, th, td, .section {&lt;br /&gt;
          border: 1px solid black;&lt;br /&gt;
          }&lt;br /&gt;
          th {&lt;br /&gt;
          text-align:left;&lt;br /&gt;
          padding-left: 10px;&lt;br /&gt;
          padding-right: 10px;&lt;br /&gt;
          }&lt;br /&gt;
          td {&lt;br /&gt;
          text-align:center;&lt;br /&gt;
          }&lt;br /&gt;
          p {&lt;br /&gt;
          text-align:justify;&lt;br /&gt;
          }&lt;br /&gt;
          .description {&lt;br /&gt;
          vertical-align:top; &lt;br /&gt;
          padding:10px;&lt;br /&gt;
          }&lt;br /&gt;
        &amp;lt;/style&amp;gt;&lt;br /&gt;
      &amp;lt;/head&amp;gt;&lt;br /&gt;
      &amp;lt;body&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;Trainings at SuperSportsClub&amp;lt;/h1&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;/Trainings/Styles/Style&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:sort select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:variable select=&amp;quot;.&amp;quot; name=&amp;quot;SelectedStyle&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;section&amp;quot; &amp;gt;&lt;br /&gt;
            &amp;lt;h2&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select=&amp;quot;$SelectedStyle&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/h2&amp;gt;&lt;br /&gt;
            &amp;lt;ul&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:for-each select=&amp;quot;/Trainings/Training&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:sort select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:variable name=&amp;quot;Training&amp;quot; select=&amp;quot;.&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:if test=&amp;quot;Styles/Style/@Id = $SelectedStyle/@Id&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;&lt;br /&gt;
                    &amp;lt;h3&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;$Training/Name&amp;quot; /&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:if test=&amp;quot;$Training/@Licence&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:text&amp;gt; (&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:value-of select=&amp;quot;$Training/@Licence&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:text&amp;gt;)&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
                    &amp;lt;/h3&amp;gt;&lt;br /&gt;
                    &amp;lt;table&amp;gt;&lt;br /&gt;
                      &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                      &amp;lt;/tr&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:for-each select=&amp;quot;$Training/Schedule/ScheduleItem&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:sort select=&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:variable name=&amp;quot;StartTime&amp;quot; select=&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:variable name=&amp;quot;Duration&amp;quot; select=&amp;quot;$StartTime/@Duration&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;tr&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;150&amp;quot; &amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;concat(&lt;br /&gt;
                                            substring($StartTime, 9, 2), &lt;br /&gt;
                                            &#039;.&#039;, &lt;br /&gt;
                                            substring($StartTime, 6, 2), &lt;br /&gt;
                                            &#039;.&#039;, &lt;br /&gt;
                                            substring($StartTime, 1, 4),&lt;br /&gt;
                                            &#039; &#039;,&lt;br /&gt;
                                            substring($StartTime, 12, 2),&lt;br /&gt;
                                            &#039;:&#039;,&lt;br /&gt;
                                            substring($StartTime, 15, 2))&lt;br /&gt;
                                            &amp;quot; /&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:if test=&amp;quot;Comment&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;br/&amp;gt;&lt;br /&gt;
                              &amp;lt;div style=&amp;quot;color:Green&amp;quot;&amp;gt;&lt;br /&gt;
                                &amp;lt;xsl:value-of select=&amp;quot;Comment&amp;quot;/&amp;gt;&lt;br /&gt;
                              &amp;lt;/div&amp;gt;&lt;br /&gt;
                            &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;substring($Duration, 3, 6)&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:variable name=&amp;quot;VenueId&amp;quot; select=&amp;quot;@VenueId&amp;quot;/&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;/Trainings/Venues/Venue[@Id=$VenueId]&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:for-each select=&amp;quot;Instructors/Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:variable name=&amp;quot;InstructorId&amp;quot; select=&amp;quot;@Id&amp;quot;&amp;gt;&amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:variable name=&amp;quot;SelectedInstructor&amp;quot; select=&amp;quot;/Trainings/Instructors/Instructor[@Id=$InstructorId]&amp;quot; /&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/Name&amp;quot;/&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:text&amp;gt; (&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/@Rating&amp;quot; /&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:text&amp;gt;)&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                              &amp;lt;br/&amp;gt;&lt;br /&gt;
                            &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;/tr&amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
                    &amp;lt;/table&amp;gt;&lt;br /&gt;
                    &amp;lt;br/&amp;gt;&lt;br /&gt;
                    &amp;lt;table&amp;gt;&lt;br /&gt;
                      &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                          &amp;lt;xsl:variable name=&amp;quot;VideoUrl&amp;quot; select=&amp;quot;$Training/VideoUrl&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;{$VideoUrl}&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                          &amp;lt;p&amp;gt;&lt;br /&gt;
                            &amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&lt;br /&gt;
                          &amp;lt;/p&amp;gt;&lt;br /&gt;
                          &amp;lt;p&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;$Training/Description&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                      &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;/table&amp;gt;&lt;br /&gt;
                  &amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
            &amp;lt;/ul&amp;gt;&lt;br /&gt;
          &amp;lt;/div&amp;gt;&lt;br /&gt;
          &amp;lt;br/&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
      &amp;lt;/body&amp;gt;&lt;br /&gt;
    &amp;lt;/html&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== HTML (transformeeritud) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/trainings.html Vaata eelneva transformatsiooni tulemust.]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;META http-equiv=&amp;quot;Content-Type&amp;quot; content=&amp;quot;text/html; charset=utf-8&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;SuperSportsClub - Trainings&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;style&amp;gt;&lt;br /&gt;
        body {&lt;br /&gt;
            background: BurlyWood;&lt;br /&gt;
            text-align: center;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        .section {&lt;br /&gt;
            text-align: left;&lt;br /&gt;
            width: 1000px;&lt;br /&gt;
            padding: 20px;&lt;br /&gt;
            background: Chocolate;&lt;br /&gt;
            margin: auto;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        table, th, td, .section {&lt;br /&gt;
            border: 1px solid black;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        th {&lt;br /&gt;
            text-align: left;&lt;br /&gt;
            padding-left: 10px;&lt;br /&gt;
            padding-right: 10px;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        td {&lt;br /&gt;
            text-align: center;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        p {&lt;br /&gt;
            text-align: justify;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        .description {&lt;br /&gt;
            vertical-align: top;&lt;br /&gt;
            padding: 10px;&lt;br /&gt;
        }&lt;br /&gt;
    &amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
    &amp;lt;h1&amp;gt;Trainings at SuperSportsClub&amp;lt;/h1&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Body&amp;amp;amp;Mind&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyBalance™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 13:30&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;1H15M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 2&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Minnie Mouse (4.6)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;31.03.2017 12:15&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;1H15M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 3&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Mickey Mouse (4.7)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/jJxA6vBjUqY&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                BODYBALANCE™ is the Yoga, Tai Chi, Pilates workout that builds flexibility and strength and leaves you feeling centered and calm. Based on a carefully structured series of stretches, moves and poses to music it creates a holistic workout that brings the body into a state of harmony and balance. This class will heighten your flexibility and inner strength creating a strong supple body from the inside out. Burn on average 390cals per hour.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;Yoga&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;25.03.2017 14:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Yoga Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Minnie Yogafier (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
                            28.03.2017 14:00&amp;lt;br&amp;gt;&amp;lt;div style=&amp;quot;color:Green&amp;quot;&amp;gt;&lt;br /&gt;
                                Special class!&lt;br /&gt;
                            &amp;lt;/div&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;1H20M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Yoga Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Minnie Yogafier (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/Nvlxn0EnmbM&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                Yoga is a group of physical, mental, and spiritual practices or disciplines which originated in ancient India.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Cardio&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyJam™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 16:10&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 3&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Donald Duck (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;01.04.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;45M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 5&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Goofy (3.9)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/8PTXyg9si_4&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                The Body Jam program is an addictive fusion of the latest dance styles to the hottest new sounds. This class isn’t just for dancers, it’s for everyone because the emphasis is put on not only having fun but also breaking a sweat. So grab a friend, get front and centre … you bring the attitude and we’ll bring the moves!&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Dance&amp;amp;amp;Fun&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyJam™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 16:10&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 3&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Donald Duck (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;01.04.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;45M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 5&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Goofy (3.9)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/8PTXyg9si_4&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                The Body Jam program is an addictive fusion of the latest dance styles to the hottest new sounds. This class isn’t just for dancers, it’s for everyone because the emphasis is put on not only having fun but also breaking a sweat. So grab a friend, get front and centre … you bring the attitude and we’ll bring the moves!&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;Zumba®&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;26.03.2017 15:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;55M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 2&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Zumbaschnegger (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;28.03.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 4&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Zumbaschnegger (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 2&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Zumbaschnegger (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/-ZB6XIkfxnQ&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                Zumba involves dance and aerobic movements performed to energetic music. The choreography incorporates hip-hop, soca, samba, salsa, merengue and mambo. Squats and lunges are also included.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Strength&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyPump™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;23.03.2017 13:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Main Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Schwarzenegger (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 13:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Main Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Schwarzenegger (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/zU_0XrdO3wo&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                BodyPump classes are 59 minutes long and contain eight separate muscle-group specific songs or &amp;quot;tracks&amp;quot; along with an opening warm up track and closing cool-down track. There are also 45-minute and 30-minute class formats. The classes are performed to music using free weights-plates, barbells and an aerobic step. Participants choose their weights based on the exercise and their personal goals. Major muscle groups are worked via series of compound and isolation-based exercises including squats, presses, dead lifts. The focus is towards muscle endurance by moving light weights at high repetitions, what Les Mills calls the Rep Effect.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;CoreStrength&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
                            23.03.2017 12:00&amp;lt;br&amp;gt;&amp;lt;div style=&amp;quot;color:Green&amp;quot;&amp;gt;&lt;br /&gt;
                                Special challenge!&lt;br /&gt;
                            &amp;lt;/div&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;2H&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Area 6&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Margaret Strengthener (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Area 6&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Kayla Weightlifter (4.8)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;05.04.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Area 6&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Kayla Weightlifter (4.8)&amp;lt;br&amp;gt;Margaret Strengthener (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/ZxTVmpvyUt8&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                CoreStrenght is a very hard workout! Not for beginners.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSLT (xml) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Selle transformatsiooniga luuakse uus [http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/schedule.xml XML fail], milles on treeningute andmed esitatud ühtse tunniplaani kujul. Algses failis erinevate elementide alla paigutatud andmed on nüüd tunniplaani alamelemendis kokku viidud. Sidumine on teostatud id-atribuutide abil. Tunniplaanis on ühes kohas kirjas treeningu nimi, stiil(id), koht, algusaeg, kestus, rühma suurus, instruktorid ja muu täiendav info.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&lt;br /&gt;
    xmlns:msxsl=&amp;quot;urn:schemas-microsoft-com:xslt&amp;quot; exclude-result-prefixes=&amp;quot;msxsl&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:output method=&amp;quot;xml&amp;quot; indent=&amp;quot;yes&amp;quot; cdata-section-elements=&amp;quot;Name Style Comment&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;/Trainings/Training&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:sort select=&amp;quot;Name&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:variable name=&amp;quot;SelectedTraining&amp;quot; select=&amp;quot;.&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;Schedule/ScheduleItem&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:sort select=&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;ScheduleItem&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:variable name=&amp;quot;VenueId&amp;quot; select=&amp;quot;@VenueId&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:variable name=&amp;quot;SelectedVenue&amp;quot; select=&amp;quot;/Trainings/Venues/Venue[@Id=$VenueId]&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:attribute name=&amp;quot;GroupSize&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;@GroupSize&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:value-of select=&amp;quot;@GroupSize&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:value-of select=&amp;quot;$SelectedVenue/@GroupSize&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
            &amp;lt;Venue&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$VenueId&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select=&amp;quot;$SelectedVenue&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/Venue&amp;gt;&lt;br /&gt;
            &amp;lt;Training&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$SelectedTraining/@Id&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:if test=&amp;quot;$SelectedTraining/@Licence&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:attribute name=&amp;quot;Licence&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:value-of select=&amp;quot;$SelectedTraining/@Licence&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
              &amp;lt;Name&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$SelectedTraining/Name&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/Name&amp;gt;&lt;br /&gt;
              &amp;lt;Styles&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:for-each select=&amp;quot;$SelectedTraining/Styles/Style&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:variable name=&amp;quot;StyleId&amp;quot; select=&amp;quot;@Id&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;Style&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:attribute name=&amp;quot;StyleId&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;$StyleId&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;/Trainings/Styles/Style[@Id=$StyleId]&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/Style&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
              &amp;lt;/Styles&amp;gt;&lt;br /&gt;
            &amp;lt;/Training&amp;gt;&lt;br /&gt;
            &amp;lt;Time&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:attribute name=&amp;quot;Duration&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;Time/@Duration&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select =&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/Time&amp;gt;&lt;br /&gt;
            &amp;lt;Instructors&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:for-each select=&amp;quot;Instructors/Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:variable name=&amp;quot;InstructorId&amp;quot; select=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:variable name=&amp;quot;SelectedInstructor&amp;quot; select=&amp;quot;/Trainings/Instructors/Instructor[@Id=$InstructorId]&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;Instructor&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;$InstructorId&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:attribute name=&amp;quot;Rating&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/@Rating&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                  &amp;lt;Name&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/Name&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/Name&amp;gt;&lt;br /&gt;
                &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
            &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:if test=&amp;quot;Comment&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;Comment&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;Comment&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/Comment&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
          &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XML (transformeeritud) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/schedule.xml Vaata eelneva transformatsiooni tulemust.]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Schedule&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;3&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot;&amp;gt;Hall 2&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;2&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyBalance™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-30T13:30:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;3&amp;quot; Rating=&amp;quot;4.6&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;2&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;3&amp;quot;&amp;gt;Hall 3&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;2&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyBalance™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-31T12:15:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;2&amp;quot; Rating=&amp;quot;4.7&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Mickey Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;4&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;3&amp;quot;&amp;gt;Hall 3&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;3&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyJam™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;![CDATA[Cardio]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T16:10:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;4&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Donald Duck]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;5&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;5&amp;quot;&amp;gt;Hall 5&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;3&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyJam™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;![CDATA[Cardio]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT45M&amp;quot;&amp;gt;2017-04-01T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;5&amp;quot; Rating=&amp;quot;3.9&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Goofy]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;7&amp;quot; GroupSize=&amp;quot;45&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;1&amp;quot;&amp;gt;Main Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;4&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyPump™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-23T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;6&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Schwarzenegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;6&amp;quot; GroupSize=&amp;quot;45&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;1&amp;quot;&amp;gt;Main Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;4&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyPump™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;6&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Schwarzenegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;8&amp;quot; GroupSize=&amp;quot;10&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot;&amp;gt;Area 6&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT2H&amp;quot;&amp;gt;2017-03-23T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;9&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Margaret Strengthener]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
    &amp;lt;Comment&amp;gt;&amp;lt;![CDATA[&lt;br /&gt;
          Special challenge!&lt;br /&gt;
        ]]&amp;gt;&amp;lt;/Comment&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;9&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot;&amp;gt;Area 6&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;8&amp;quot; Rating=&amp;quot;4.8&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Kayla Weightlifter]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;10&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot;&amp;gt;Area 6&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-04-05T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;8&amp;quot; Rating=&amp;quot;4.8&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Kayla Weightlifter]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;9&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Margaret Strengthener]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;11&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot;&amp;gt;Hall 2&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT55M&amp;quot;&amp;gt;2017-03-26T15:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;12&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;4&amp;quot;&amp;gt;Hall 4&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-28T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;13&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot;&amp;gt;Hall 2&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;1&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;7&amp;quot;&amp;gt;Yoga Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Yoga]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-25T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;1&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Yogafier]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;14&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;7&amp;quot;&amp;gt;Yoga Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Yoga]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT1H20M&amp;quot;&amp;gt;2017-03-28T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;1&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Yogafier]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
    &amp;lt;Comment&amp;gt;&amp;lt;![CDATA[&lt;br /&gt;
          Special class!&lt;br /&gt;
        ]]&amp;gt;&amp;lt;/Comment&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
&amp;lt;/Schedule&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus ==&lt;br /&gt;
Angular JS &#039;&#039;single page application&#039;&#039; eelnevalt kirjeldatud veebiteenusele. Sisse logimata saab kuvada spordiklubi tunniplaani nädalate kaupa, treeninguliike stiilide kaupa ja treenereid. Võimalik on liituda teenusega ja registreeruda treeningutele, samuti registreeringuid tühistada nii otse tunniplaanist kui ka registreeringute lehel. Esialgu põhineb süsteem ühel spordiklubil. Kasutamise eelduseks on tunniplaani olemasolu andmebaasis.&lt;br /&gt;
&lt;br /&gt;
Autentimine on lahendatud tokenipõhiselt. Eeskuju ja põhjana kasutasime näidisrakendust, mille juhend ja lähtekood on leitav [http://bitoftech.net/2014/06/09/angularjs-token-authentication-using-asp-net-web-api-2-owin-asp-net-identity/ siit].&lt;br /&gt;
&lt;br /&gt;
== Lähtekood ==&lt;br /&gt;
Eksamiks valminud veebiteenuse ja klientrakenduse kokkupakitult allalaadimiseks klõpsa [https://drive.google.com/open?id=0B84njRSbVLUtd0U4aEJXOUhOTG8 sellel lingil]. WebApi ja Angular JS klient on eraldi lahendustes. Kliendi testimiseks brauseris (Chrome, Firefox vm) tuleb eelnevalt käivitada ka veebiteenus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;NB! Võib juhtuda, et WebApi esmakordsel käivitamisel loodavasse andmebaasi kõiki andmeid (tunniplaani ja registreerimisi jooksvasse nädalasse) ei lisandu. Sellisel juhul kustuta tekkinud andmebaas ja käivita kõigepealt samas lahenduses olev konsoolirakendus.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Retsensioonid ==&lt;br /&gt;
&lt;br /&gt;
# [https://wiki.itcollege.ee/index.php/Talk:JRT XML/XSD/XSLT retsensioon meeskonnale JRT]&lt;br /&gt;
# [Veebiteenuse retsensioon lisandub varsti]&lt;br /&gt;
# [Klientrakenduse retsensioon lisandub varsti]&lt;br /&gt;
&lt;br /&gt;
== Log ==&lt;br /&gt;
* 03.03.17 Esimene kohtumine. Idee.&lt;br /&gt;
* 17.03.17 Osa XMList valmis, osa XSLT-st valmis.&lt;br /&gt;
* 18.03.17 Teine kohtumine. XMLi täiendamine, esimene ülekäimine XSD-s.&lt;br /&gt;
* 19.03.17 XML/XSLT/XSD täiendamine ja lõpetamine.&lt;br /&gt;
* 20.03.17 XML fail, skeemifail ja stiilifailid esitatud. Projekti esimese etapi lõpp. Kevade algus.&lt;br /&gt;
* 26.03.17 XML/XSLT/XSD retsensioon esitatud.&lt;br /&gt;
* 16.04.17 Veebiteenuse analüüsi koostamine.&lt;br /&gt;
* 17.04.17 Esialgne veebiteenuse analüüs ja kavand valmis.&lt;br /&gt;
* 19.04.17 Alustasime veebiteenusega, koostegemine: Domain, DAL, Interfaces, Repostitories. Testimine konsoolis.&lt;br /&gt;
* 24.04.17 Veebiteenuse koostegemine, 2. kord: Domaini täiendamine.&lt;br /&gt;
* 29.04.17 Veebiteenuse koostegemine, 3. kord: Interfaces, Repositories, Factory + UOW. Testimine konsoolis.&lt;br /&gt;
* 01.05.17 Andmebaasi täitmine testandmetega varasemas faasis loodud XML failist.&lt;br /&gt;
* 02.05.17 Veebiteenuse koostegemine, 4. kord: alustasime BLi ja WebApi ehitamist. GET päringud.&lt;br /&gt;
* 09.05.17 Veebiteenuse koostegemine, 5. kord: lisasime Identity.&lt;br /&gt;
* 11.05.17 Veebiteenuse koostegemine, 6. kord: WebApi arendamine. POST, PUT ja DELETE päringud.&lt;br /&gt;
* 15.05.17 Veebiteenuse koostegemine, 7. kord: WebApi arendamine. Lisasime  api kontrollereid.&lt;br /&gt;
* 16.05.17 Veebiteenuse koostegemine, 8. kord: WebApi arendamine. Identity kontroll Fiddleri ja Postmaniga.&lt;br /&gt;
* 20.05.17 Klientrakenduse koostegemine, 1. kord. Testklient.&lt;br /&gt;
* 25.05.17 Klientrakenduse koostegemine, 2. kord. Klientrakenduse arendamine.&lt;br /&gt;
* 01.06.17 Klientrakenduse koostegemine, 3. kord. Klientrakenduse arendamine. Angular JS.&lt;br /&gt;
* 03.06.17 - 11.06.17 Klientrakenduse arendamine. Tokenipõhine autentimine. Veebiteenuse viimistlemine.&lt;br /&gt;
* 11.06.17 Lõpptähtaeg. Projekti esitlemine eksamil.&lt;br /&gt;
* 12.06.17 Teiste lahenduste retsenseerimine.&lt;/div&gt;</summary>
		<author><name>Otiks</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Team_SPOT&amp;diff=123523</id>
		<title>Team SPOT</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Team_SPOT&amp;diff=123523"/>
		<updated>2017-06-12T14:49:07Z</updated>

		<summary type="html">&lt;p&gt;Otiks: /* XML / XSD / XSLT */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://wiki.itcollege.ee/index.php/Kodut%C3%B6%C3%B6_aines_%22V%C3%B5rgurakendused_II:_hajuss%C3%BCsteemide_ehitamine%22_2017 Kodutöö aines &amp;quot;Võrgurakendused II: hajussüsteemide ehitamine&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
[https://projectspot.visualstudio.com/PROJECTSPOT Projekti repositoorium (avaneb ainult liikmetele)]&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==Liikmed==&lt;br /&gt;
*Sigrid Pachel&lt;br /&gt;
*Oliver Tiks&lt;br /&gt;
&lt;br /&gt;
==Idee==&lt;br /&gt;
Mõttes on luua spordiklubi(de) veebiteenus ja klientrakendus, mis võimaldaks saada infot pakutavate treeningute kohta, sisestada ja kuvada tunniplaani andmeid, registreerida osalejaid tundidesse ning teha muid asjakohaseid tegevusi nii klubi(de) personalil, liikmetel kui ka juhukasutajatel.&lt;br /&gt;
&lt;br /&gt;
==Veebiteenuse analüüs==&lt;br /&gt;
SPOTi veebiteenus võimaldab saada infot erinevate klubide treeningute kohta ja end neisse registreerida. Kasutaja saab teavet, kus ja millal treeningud toimuvad (tunniplaan), mida treeningus täpsemalt tehakse, mis stiiliga on tegemist, kes on treener, kui palju üks kord maksab jms info. Kasutajakontoga liikmel on võimalik end registreerida soovitud tundi ja hallata oma registreeringuid (muuta, tühistada).&lt;br /&gt;
&lt;br /&gt;
Spordiklubide infot haldavad süsteemi administraatorid, kes saavad lisada, muuta ja kustutada kõike sprodiklubiga seonduvat. Erinevaid treeninguid ja nendega seotud konkreetset infot saavad lisada ja hallata treenerid või spordiklubi esindajad.&lt;br /&gt;
&lt;br /&gt;
Projekti realiseerimiseks kasutame REST arhitektuuri ja ASP.NET MVC Web API tehnoloogiat.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Üldine plaan:&#039;&#039;&#039;&lt;br /&gt;
* esialgu üks kett (laienemise võimalusega)&lt;br /&gt;
* mitu klubi (asukoht, saalid-treeningualad, võimalikud lisatingimused)&lt;br /&gt;
* treeningute info (stiilid ehk kontseptid, litsentsid, …)&lt;br /&gt;
* tunniplaan (aeg, koht, instruktorid, max osalejate arv, ühe korra hind)&lt;br /&gt;
* registratuur (treeningutest osavõtjad)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kasutajad (rollid):&#039;&#039;&#039;&lt;br /&gt;
* administraatorid (saavad teha muudatusi)&lt;br /&gt;
* treenerid (info kvalifikatsiooni, litsentside kohta, õigus treeninguid lisada) &lt;br /&gt;
* liikmed (saavad treeningutele registreeruda)&lt;br /&gt;
* ülejäänud (näevad klubide ja treeningute infot ning tunniplaani)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Peaks olema:&#039;&#039;&#039;&lt;br /&gt;
* kasutajate loomine&lt;br /&gt;
* kasutajate tuvastamine ja haldamine&lt;br /&gt;
* kasutajate ja kasutusstatistika logimine&lt;br /&gt;
* teenuse poole pöördumiste arvu piiramine ja piirangute haldamine&lt;br /&gt;
* klubide, treenerite ja treeningute info väljastamine&lt;br /&gt;
* tunniplaani info väljastamine&lt;br /&gt;
* treeningutesse registreerimine&lt;br /&gt;
* registreeringu tühistamine&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Võiks olla:&#039;&#039;&#039;&lt;br /&gt;
* klubide, treenerite, treeningute lisamine ja muutmine&lt;br /&gt;
* tunniplaanis treeningute tühistamine&lt;br /&gt;
* sisestatud andmete kustutamine (pehmelt)&lt;br /&gt;
* rollide-õiguste määramine (admin)&lt;br /&gt;
* asukohad mitmes riigis&lt;br /&gt;
* kliendipaketid, arveldus&lt;br /&gt;
* kontaktide tsentraliseeritud haldus&lt;br /&gt;
* sisselogimine läbi Google’i, Facebooki vmt teenuse&lt;br /&gt;
&lt;br /&gt;
===Andmebaasi skeem (lihtsustatud)===&lt;br /&gt;
&lt;br /&gt;
[[File:SPOTService ERD.JPG|border|SPOT Service ERD]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Märkus: olemite atribuutidest on välja toodud ainult peamised.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====Tabelite kirjeldused====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kasutajahaldus*:&#039;&#039;&#039;&lt;br /&gt;
* User - kasutajate andmed&lt;br /&gt;
* Role - rollid, millega määratakse kasutajate õigused (&amp;quot;Admin&amp;quot;, &amp;quot;Trainer&amp;quot;, ...)&lt;br /&gt;
* UserRole - kasutajate sidumine rolli(de)ga&lt;br /&gt;
* UserLogin - muu teenuse kaudu sisselogimiseks&lt;br /&gt;
* UserClaim - muu teenuse kaudu sisselogimiseks&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;&#039;&#039;Kasutajahalduse süsteem toetub Asp.Net Identity valmislahendusele, mida on täiendanud A. Käver.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Klubid:&#039;&#039;&#039;&lt;br /&gt;
* Chain (optional) - spordiklubikettide info&lt;br /&gt;
* Location - spordiklubi/-rajatise asukoht linna/asula täpsusega&lt;br /&gt;
* Facility - spordiklubi/-rajatise andmed, seotud asukohaga ja vajadusel ketiga.&lt;br /&gt;
* Venue - spordiklubis/-rajatises kasutatavad saalid ja muud treeningualad&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Treeningud:&#039;&#039;&#039;&lt;br /&gt;
* Concept (Style) - treeningustiilid ehk kontseptid&lt;br /&gt;
* Licenser (optional) - treeninguliikide litsentsid (kui on)&lt;br /&gt;
* Training - treeninguliikide andmed, seotud stiili ja vajadusel litsentsiga&lt;br /&gt;
* Trainer (User (role: Trainer) + Training) - treeninguliikide sidumine treeneritega&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tunniplaan:&#039;&#039;&#039;&lt;br /&gt;
* ScheduleItem - treeningud tunniplaanis&lt;br /&gt;
* Instructor (User (role: Trainer) + ScheduleItem) - tundide juhendajad (võib olla mitu)&lt;br /&gt;
* Registration (ScheduleItem + User (role: any)) - tundidesse tehtud registreeringud&lt;br /&gt;
&lt;br /&gt;
== XML / XSD / XSLT==&lt;br /&gt;
Projekti esimeses etapis sai loodud XML andmefail, mille ülesehitus on paika pandud XSD skeemifailis. Lisaks on olemas kaks stiilifaili: esimene neist transformeerib andmed HTML-kujule, et kuvada infot  veebilehel, teine tekitab samade andmete esitamiseks uue struktuuriga XML faili.&lt;br /&gt;
&lt;br /&gt;
[https://drive.google.com/open?id=0B84njRSbVLUtd0U4aEJXOUhOTG8 Lae failid alla.] &lt;br /&gt;
&lt;br /&gt;
=== XML ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Fail sisaldab andmeid ühes spordiklubis pakutavate treeningute kohta. Andmed on esitatud treeninguliikide kaupa, mille juurde on lisatud ka vastava treeninguliigi tunniplaan. Treeninguliikidel on nimi ja kirjeldus ning vajadusel ära märgitud ka litsents. Failis on eraldi välja toodud treeningustiilid, instruktorid ja ruumid, kus treeningud toimuvad. Iga treeninguliik kuulub ühe või mitme stiili alla. Instruktoritel on tagasiside põhjal saadud hinne. Treeninguruumidel on vaikimisi määratud mahutavus. Tunniplaanis on ära toodud treeningu koht, algusaeg ja kestus ning instruktorid. Vajadusel saab eraldi määrata ka treeningurühma suuruse, kui see erineb tavalisest ruumi mahutavusest. Ka on võimalik treeningutunnile lisada kommentaar. Erinevate elementide andmed on omavahel seotud id-atribuutidega.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;?xml-stylesheet type=&amp;quot;text/xsl&amp;quot; href=&amp;quot;trainingsToHtml.xslt&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Trainings&amp;gt;&lt;br /&gt;
  &amp;lt;Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;![CDATA[Cardio]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
  &amp;lt;/Styles&amp;gt;&lt;br /&gt;
  &amp;lt;Instructors&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;1&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Yogafier]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;2&amp;quot; Rating=&amp;quot;4.7&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Mickey Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;3&amp;quot; Rating=&amp;quot;4.6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;4&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Donald Duck]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;5&amp;quot; Rating=&amp;quot;3.9&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Goofy]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;6&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Schwarzenegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;8&amp;quot; Rating=&amp;quot;4.8&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Kayla Weightlifter]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;9&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Margaret Strengthener]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
  &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;Venues&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;1&amp;quot; GroupSize=&amp;quot;45&amp;quot;&amp;gt;&amp;lt;![CDATA[Main Hall]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 2]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;3&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 3]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;4&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 4]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;5&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 5]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&amp;lt;![CDATA[Area 6]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;7&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&amp;lt;![CDATA[Yoga Hall]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
  &amp;lt;/Venues&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Yoga]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[Yoga is a group of physical, mental, and spiritual practices or disciplines which originated in ancient India. ]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;1&amp;quot; VenueId=&amp;quot;7&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-25T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;14&amp;quot; VenueId=&amp;quot;7&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT1H20M&amp;quot;&amp;gt;2017-03-28T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Comment&amp;gt;&lt;br /&gt;
          &amp;lt;![CDATA[Special class!]]&amp;gt;&lt;br /&gt;
        &amp;lt;/Comment&amp;gt; &lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/Nvlxn0EnmbM&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;  &lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;2&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyBalance™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[BODYBALANCE™ is the Yoga, Tai Chi, Pilates workout that builds flexibility and strength and leaves you feeling centered and calm. Based on a carefully structured series of stretches, moves and poses to music it creates a holistic workout that brings the body into a state of harmony and balance. This class will heighten your flexibility and inner strength creating a strong supple body from the inside out. Burn on average 390cals per hour.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;2&amp;quot; VenueId=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-31T12:15:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;3&amp;quot; VenueId=&amp;quot;2&amp;quot; &amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-30T13:30:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;3&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/jJxA6vBjUqY&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;3&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyJam™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;4&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[The Body Jam program is an addictive fusion of the latest dance styles to the hottest new sounds. This class isn’t just for dancers, it’s for everyone because the emphasis is put on not only having fun but also breaking a sweat. So grab a friend, get front and centre … you bring the attitude and we’ll bring the moves!]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;4&amp;quot;  VenueId=&amp;quot;3&amp;quot; &amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T16:10:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;4&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;5&amp;quot; VenueId=&amp;quot;5&amp;quot; &amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT45M&amp;quot;&amp;gt;2017-04-01T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;5&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/8PTXyg9si_4&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;4&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyPump™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[BodyPump classes are 59 minutes long and contain eight separate muscle-group specific songs or &amp;quot;tracks&amp;quot; along with an opening warm up track and closing cool-down track. There are also 45-minute and 30-minute class formats. The classes are performed to music using free weights-plates, barbells and an aerobic step. Participants choose their weights based on the exercise and their personal goals. Major muscle groups are worked via series of compound and isolation-based exercises including squats, presses, dead lifts. The focus is towards muscle endurance by moving light weights at high repetitions, what Les Mills calls the Rep Effect.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;3&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;6&amp;quot; VenueId=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;6&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;7&amp;quot; VenueId=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-23T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;6&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/zU_0XrdO3wo&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[CoreStrenght is a very hard workout! Not for beginners.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;3&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;8&amp;quot; VenueId=&amp;quot;6&amp;quot; GroupSize=&amp;quot;10&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT2H&amp;quot;&amp;gt;2017-03-23T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;9&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Comment&amp;gt;&lt;br /&gt;
          &amp;lt;![CDATA[Special challenge!]]&amp;gt;&lt;br /&gt;
        &amp;lt;/Comment&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;9&amp;quot; VenueId=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;8&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;10&amp;quot; VenueId=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-04-05T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;8&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;9&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/ZxTVmpvyUt8&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[Zumba involves dance and aerobic movements performed to energetic music. The choreography incorporates hip-hop, soca, samba, salsa, merengue and mambo. Squats and lunges are also included.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;4&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;11&amp;quot; VenueId=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT55M&amp;quot;&amp;gt;2017-03-26T15:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;12&amp;quot; VenueId=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-28T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;13&amp;quot; VenueId=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/-ZB6XIkfxnQ&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
&amp;lt;/Trainings&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSD ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Skeemifail kontrollib eelnevas andmefailis esitatud andmete vastavust kokkulepitud formaadile, samuti õigete andmetüüpide kasutamist. Alamelemendi id-atribuudi väärtus peab olema iga elemendirühma lõikes unikaalne. Kohustuslike elementide ja atribuutide kõrval on ka mõned (nt kommentaar), mille olemasolu pole alati tarvilik. Teatud puhkudel on piiratud maksimaalset elementide arvu (nt treeningutunni algusaeg). Faili üldine struktuur on kindel, aga alati pole alamelementide järjekord oluline (nt treeninguliigi puhul).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xs:schema attributeFormDefault=&amp;quot;unqualified&amp;quot; elementFormDefault=&amp;quot;qualified&amp;quot; xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xs:element name=&amp;quot;Trainings&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Styles&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Style&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
          &amp;lt;xs:unique name=&amp;quot;UniqueStyleId&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xs:selector xpath=&amp;quot;Style&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Instructors&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;Name&amp;quot; type=&amp;quot;xs:string&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:attribute name=&amp;quot;Rating&amp;quot; type=&amp;quot;xs:decimal&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
          &amp;lt;xs:unique name=&amp;quot;UniqueInstructorId&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xs:selector xpath=&amp;quot;Instructor&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Venues&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Venue&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:attribute name=&amp;quot;GroupSize&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
          &amp;lt;xs:unique name=&amp;quot;UniqueVenueId&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xs:selector xpath=&amp;quot;Venue&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Training&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:all&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Description&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Styles&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Style&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Schedule&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;ScheduleItem&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:all&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element  maxOccurs=&amp;quot;1&amp;quot; name=&amp;quot;Time&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:extension base=&amp;quot;xs:dateTime&amp;quot;&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:attribute name=&amp;quot;Duration&amp;quot; type=&amp;quot;xs:duration&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element name=&amp;quot;Instructors&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                    &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                                      &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                                        &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                                      &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                                    &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                                  &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; name=&amp;quot;Comment&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:all&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;VenueId&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;GroupSize&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;optional&amp;quot; /&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;VideoUrl&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:all&amp;gt;&lt;br /&gt;
            &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xs:attribute name=&amp;quot;Licence&amp;quot; type=&amp;quot;xs:string&amp;quot; use=&amp;quot;optional&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
    &amp;lt;xs:unique name=&amp;quot;UniqueTrainingId&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xs:selector xpath=&amp;quot;Training&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
    &amp;lt;xs:unique name=&amp;quot;UniqueScheduleItemId&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xs:selector xpath=&amp;quot;Training/Schedule/ScheduleItem&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSLT (html) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Selles transformatsioonifailis on kirjeldatud XML failis olevate andmete [http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/trainings.xml  kuvamise viis veebilehel]. Treeninguliigid on jaotatud stiiliblokkidesse (mõni treening kuulub mitme stiili alla). Iga treeninguliigi all on tabeli kujul esitatud tunniplaan ning lisatud näidisvideo ja kirjeldus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot; xmlns:msxsl=&amp;quot;urn:schemas-microsoft-com:xslt&amp;quot; exclude-result-prefixes=&amp;quot;msxsl&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:output method=&amp;quot;html&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;html&amp;gt;&lt;br /&gt;
      &amp;lt;head&amp;gt;&lt;br /&gt;
        &amp;lt;title&amp;gt;SuperSportsClub - Trainings&amp;lt;/title&amp;gt;&lt;br /&gt;
        &amp;lt;style&amp;gt;&lt;br /&gt;
          body {&lt;br /&gt;
          background:BurlyWood;&lt;br /&gt;
          text-align: center;&lt;br /&gt;
          }&lt;br /&gt;
          .section {&lt;br /&gt;
          text-align:left;&lt;br /&gt;
          width:1000px;&lt;br /&gt;
          padding:20px;&lt;br /&gt;
          background:Chocolate;&lt;br /&gt;
          margin: auto;&lt;br /&gt;
          }&lt;br /&gt;
          table, th, td, .section {&lt;br /&gt;
          border: 1px solid black;&lt;br /&gt;
          }&lt;br /&gt;
          th {&lt;br /&gt;
          text-align:left;&lt;br /&gt;
          padding-left: 10px;&lt;br /&gt;
          padding-right: 10px;&lt;br /&gt;
          }&lt;br /&gt;
          td {&lt;br /&gt;
          text-align:center;&lt;br /&gt;
          }&lt;br /&gt;
          p {&lt;br /&gt;
          text-align:justify;&lt;br /&gt;
          }&lt;br /&gt;
          .description {&lt;br /&gt;
          vertical-align:top; &lt;br /&gt;
          padding:10px;&lt;br /&gt;
          }&lt;br /&gt;
        &amp;lt;/style&amp;gt;&lt;br /&gt;
      &amp;lt;/head&amp;gt;&lt;br /&gt;
      &amp;lt;body&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;Trainings at SuperSportsClub&amp;lt;/h1&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;/Trainings/Styles/Style&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:sort select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:variable select=&amp;quot;.&amp;quot; name=&amp;quot;SelectedStyle&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;section&amp;quot; &amp;gt;&lt;br /&gt;
            &amp;lt;h2&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select=&amp;quot;$SelectedStyle&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/h2&amp;gt;&lt;br /&gt;
            &amp;lt;ul&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:for-each select=&amp;quot;/Trainings/Training&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:sort select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:variable name=&amp;quot;Training&amp;quot; select=&amp;quot;.&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:if test=&amp;quot;Styles/Style/@Id = $SelectedStyle/@Id&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;&lt;br /&gt;
                    &amp;lt;h3&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;$Training/Name&amp;quot; /&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:if test=&amp;quot;$Training/@Licence&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:text&amp;gt; (&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:value-of select=&amp;quot;$Training/@Licence&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:text&amp;gt;)&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
                    &amp;lt;/h3&amp;gt;&lt;br /&gt;
                    &amp;lt;table&amp;gt;&lt;br /&gt;
                      &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                      &amp;lt;/tr&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:for-each select=&amp;quot;$Training/Schedule/ScheduleItem&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:sort select=&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:variable name=&amp;quot;StartTime&amp;quot; select=&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:variable name=&amp;quot;Duration&amp;quot; select=&amp;quot;$StartTime/@Duration&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;tr&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;150&amp;quot; &amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;concat(&lt;br /&gt;
                                            substring($StartTime, 9, 2), &lt;br /&gt;
                                            &#039;.&#039;, &lt;br /&gt;
                                            substring($StartTime, 6, 2), &lt;br /&gt;
                                            &#039;.&#039;, &lt;br /&gt;
                                            substring($StartTime, 1, 4),&lt;br /&gt;
                                            &#039; &#039;,&lt;br /&gt;
                                            substring($StartTime, 12, 2),&lt;br /&gt;
                                            &#039;:&#039;,&lt;br /&gt;
                                            substring($StartTime, 15, 2))&lt;br /&gt;
                                            &amp;quot; /&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:if test=&amp;quot;Comment&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;br/&amp;gt;&lt;br /&gt;
                              &amp;lt;div style=&amp;quot;color:Green&amp;quot;&amp;gt;&lt;br /&gt;
                                &amp;lt;xsl:value-of select=&amp;quot;Comment&amp;quot;/&amp;gt;&lt;br /&gt;
                              &amp;lt;/div&amp;gt;&lt;br /&gt;
                            &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;substring($Duration, 3, 6)&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:variable name=&amp;quot;VenueId&amp;quot; select=&amp;quot;@VenueId&amp;quot;/&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;/Trainings/Venues/Venue[@Id=$VenueId]&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:for-each select=&amp;quot;Instructors/Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:variable name=&amp;quot;InstructorId&amp;quot; select=&amp;quot;@Id&amp;quot;&amp;gt;&amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:variable name=&amp;quot;SelectedInstructor&amp;quot; select=&amp;quot;/Trainings/Instructors/Instructor[@Id=$InstructorId]&amp;quot; /&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/Name&amp;quot;/&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:text&amp;gt; (&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/@Rating&amp;quot; /&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:text&amp;gt;)&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                              &amp;lt;br/&amp;gt;&lt;br /&gt;
                            &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;/tr&amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
                    &amp;lt;/table&amp;gt;&lt;br /&gt;
                    &amp;lt;br/&amp;gt;&lt;br /&gt;
                    &amp;lt;table&amp;gt;&lt;br /&gt;
                      &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                          &amp;lt;xsl:variable name=&amp;quot;VideoUrl&amp;quot; select=&amp;quot;$Training/VideoUrl&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;{$VideoUrl}&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                          &amp;lt;p&amp;gt;&lt;br /&gt;
                            &amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&lt;br /&gt;
                          &amp;lt;/p&amp;gt;&lt;br /&gt;
                          &amp;lt;p&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;$Training/Description&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                      &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;/table&amp;gt;&lt;br /&gt;
                  &amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
            &amp;lt;/ul&amp;gt;&lt;br /&gt;
          &amp;lt;/div&amp;gt;&lt;br /&gt;
          &amp;lt;br/&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
      &amp;lt;/body&amp;gt;&lt;br /&gt;
    &amp;lt;/html&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== HTML (transformeeritud) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/trainings.html Vaata eelneva transformatsiooni tulemust.]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;META http-equiv=&amp;quot;Content-Type&amp;quot; content=&amp;quot;text/html; charset=utf-8&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;SuperSportsClub - Trainings&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;style&amp;gt;&lt;br /&gt;
        body {&lt;br /&gt;
            background: BurlyWood;&lt;br /&gt;
            text-align: center;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        .section {&lt;br /&gt;
            text-align: left;&lt;br /&gt;
            width: 1000px;&lt;br /&gt;
            padding: 20px;&lt;br /&gt;
            background: Chocolate;&lt;br /&gt;
            margin: auto;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        table, th, td, .section {&lt;br /&gt;
            border: 1px solid black;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        th {&lt;br /&gt;
            text-align: left;&lt;br /&gt;
            padding-left: 10px;&lt;br /&gt;
            padding-right: 10px;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        td {&lt;br /&gt;
            text-align: center;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        p {&lt;br /&gt;
            text-align: justify;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        .description {&lt;br /&gt;
            vertical-align: top;&lt;br /&gt;
            padding: 10px;&lt;br /&gt;
        }&lt;br /&gt;
    &amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
    &amp;lt;h1&amp;gt;Trainings at SuperSportsClub&amp;lt;/h1&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Body&amp;amp;amp;Mind&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyBalance™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 13:30&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;1H15M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 2&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Minnie Mouse (4.6)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;31.03.2017 12:15&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;1H15M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 3&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Mickey Mouse (4.7)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/jJxA6vBjUqY&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                BODYBALANCE™ is the Yoga, Tai Chi, Pilates workout that builds flexibility and strength and leaves you feeling centered and calm. Based on a carefully structured series of stretches, moves and poses to music it creates a holistic workout that brings the body into a state of harmony and balance. This class will heighten your flexibility and inner strength creating a strong supple body from the inside out. Burn on average 390cals per hour.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;Yoga&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;25.03.2017 14:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Yoga Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Minnie Yogafier (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
                            28.03.2017 14:00&amp;lt;br&amp;gt;&amp;lt;div style=&amp;quot;color:Green&amp;quot;&amp;gt;&lt;br /&gt;
                                Special class!&lt;br /&gt;
                            &amp;lt;/div&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;1H20M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Yoga Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Minnie Yogafier (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/Nvlxn0EnmbM&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                Yoga is a group of physical, mental, and spiritual practices or disciplines which originated in ancient India.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Cardio&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyJam™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 16:10&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 3&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Donald Duck (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;01.04.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;45M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 5&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Goofy (3.9)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/8PTXyg9si_4&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                The Body Jam program is an addictive fusion of the latest dance styles to the hottest new sounds. This class isn’t just for dancers, it’s for everyone because the emphasis is put on not only having fun but also breaking a sweat. So grab a friend, get front and centre … you bring the attitude and we’ll bring the moves!&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Dance&amp;amp;amp;Fun&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyJam™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 16:10&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 3&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Donald Duck (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;01.04.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;45M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 5&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Goofy (3.9)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/8PTXyg9si_4&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                The Body Jam program is an addictive fusion of the latest dance styles to the hottest new sounds. This class isn’t just for dancers, it’s for everyone because the emphasis is put on not only having fun but also breaking a sweat. So grab a friend, get front and centre … you bring the attitude and we’ll bring the moves!&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;Zumba®&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;26.03.2017 15:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;55M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 2&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Zumbaschnegger (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;28.03.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 4&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Zumbaschnegger (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 2&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Zumbaschnegger (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/-ZB6XIkfxnQ&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                Zumba involves dance and aerobic movements performed to energetic music. The choreography incorporates hip-hop, soca, samba, salsa, merengue and mambo. Squats and lunges are also included.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Strength&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyPump™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;23.03.2017 13:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Main Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Schwarzenegger (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 13:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Main Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Schwarzenegger (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/zU_0XrdO3wo&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                BodyPump classes are 59 minutes long and contain eight separate muscle-group specific songs or &amp;quot;tracks&amp;quot; along with an opening warm up track and closing cool-down track. There are also 45-minute and 30-minute class formats. The classes are performed to music using free weights-plates, barbells and an aerobic step. Participants choose their weights based on the exercise and their personal goals. Major muscle groups are worked via series of compound and isolation-based exercises including squats, presses, dead lifts. The focus is towards muscle endurance by moving light weights at high repetitions, what Les Mills calls the Rep Effect.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;CoreStrength&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
                            23.03.2017 12:00&amp;lt;br&amp;gt;&amp;lt;div style=&amp;quot;color:Green&amp;quot;&amp;gt;&lt;br /&gt;
                                Special challenge!&lt;br /&gt;
                            &amp;lt;/div&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;2H&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Area 6&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Margaret Strengthener (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Area 6&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Kayla Weightlifter (4.8)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;05.04.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Area 6&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Kayla Weightlifter (4.8)&amp;lt;br&amp;gt;Margaret Strengthener (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/ZxTVmpvyUt8&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                CoreStrenght is a very hard workout! Not for beginners.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSLT (xml) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Selle transformatsiooniga luuakse uus [http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/schedule.xml XML fail], milles on treeningute andmed esitatud ühtse tunniplaani kujul. Algses failis erinevate elementide alla paigutatud andmed on nüüd tunniplaani alamelemendis kokku viidud. Sidumine on teostatud id-atribuutide abil. Tunniplaanis on ühes kohas kirjas treeningu nimi, stiil(id), koht, algusaeg, kestus, rühma suurus, instruktorid ja muu täiendav info.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&lt;br /&gt;
    xmlns:msxsl=&amp;quot;urn:schemas-microsoft-com:xslt&amp;quot; exclude-result-prefixes=&amp;quot;msxsl&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:output method=&amp;quot;xml&amp;quot; indent=&amp;quot;yes&amp;quot; cdata-section-elements=&amp;quot;Name Style Comment&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;/Trainings/Training&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:sort select=&amp;quot;Name&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:variable name=&amp;quot;SelectedTraining&amp;quot; select=&amp;quot;.&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;Schedule/ScheduleItem&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:sort select=&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;ScheduleItem&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:variable name=&amp;quot;VenueId&amp;quot; select=&amp;quot;@VenueId&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:variable name=&amp;quot;SelectedVenue&amp;quot; select=&amp;quot;/Trainings/Venues/Venue[@Id=$VenueId]&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:attribute name=&amp;quot;GroupSize&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;@GroupSize&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:value-of select=&amp;quot;@GroupSize&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:value-of select=&amp;quot;$SelectedVenue/@GroupSize&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
            &amp;lt;Venue&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$VenueId&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select=&amp;quot;$SelectedVenue&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/Venue&amp;gt;&lt;br /&gt;
            &amp;lt;Training&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$SelectedTraining/@Id&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:if test=&amp;quot;$SelectedTraining/@Licence&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:attribute name=&amp;quot;Licence&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:value-of select=&amp;quot;$SelectedTraining/@Licence&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
              &amp;lt;Name&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$SelectedTraining/Name&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/Name&amp;gt;&lt;br /&gt;
              &amp;lt;Styles&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:for-each select=&amp;quot;$SelectedTraining/Styles/Style&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:variable name=&amp;quot;StyleId&amp;quot; select=&amp;quot;@Id&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;Style&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:attribute name=&amp;quot;StyleId&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;$StyleId&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;/Trainings/Styles/Style[@Id=$StyleId]&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/Style&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
              &amp;lt;/Styles&amp;gt;&lt;br /&gt;
            &amp;lt;/Training&amp;gt;&lt;br /&gt;
            &amp;lt;Time&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:attribute name=&amp;quot;Duration&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;Time/@Duration&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select =&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/Time&amp;gt;&lt;br /&gt;
            &amp;lt;Instructors&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:for-each select=&amp;quot;Instructors/Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:variable name=&amp;quot;InstructorId&amp;quot; select=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:variable name=&amp;quot;SelectedInstructor&amp;quot; select=&amp;quot;/Trainings/Instructors/Instructor[@Id=$InstructorId]&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;Instructor&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;$InstructorId&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:attribute name=&amp;quot;Rating&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/@Rating&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                  &amp;lt;Name&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/Name&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/Name&amp;gt;&lt;br /&gt;
                &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
            &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:if test=&amp;quot;Comment&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;Comment&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;Comment&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/Comment&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
          &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XML (transformeeritud) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/schedule.xml Vaata eelneva transformatsiooni tulemust.]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Schedule&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;3&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot;&amp;gt;Hall 2&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;2&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyBalance™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-30T13:30:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;3&amp;quot; Rating=&amp;quot;4.6&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;2&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;3&amp;quot;&amp;gt;Hall 3&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;2&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyBalance™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-31T12:15:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;2&amp;quot; Rating=&amp;quot;4.7&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Mickey Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;4&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;3&amp;quot;&amp;gt;Hall 3&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;3&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyJam™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;![CDATA[Cardio]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T16:10:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;4&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Donald Duck]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;5&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;5&amp;quot;&amp;gt;Hall 5&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;3&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyJam™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;![CDATA[Cardio]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT45M&amp;quot;&amp;gt;2017-04-01T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;5&amp;quot; Rating=&amp;quot;3.9&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Goofy]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;7&amp;quot; GroupSize=&amp;quot;45&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;1&amp;quot;&amp;gt;Main Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;4&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyPump™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-23T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;6&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Schwarzenegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;6&amp;quot; GroupSize=&amp;quot;45&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;1&amp;quot;&amp;gt;Main Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;4&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyPump™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;6&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Schwarzenegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;8&amp;quot; GroupSize=&amp;quot;10&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot;&amp;gt;Area 6&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT2H&amp;quot;&amp;gt;2017-03-23T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;9&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Margaret Strengthener]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
    &amp;lt;Comment&amp;gt;&amp;lt;![CDATA[&lt;br /&gt;
          Special challenge!&lt;br /&gt;
        ]]&amp;gt;&amp;lt;/Comment&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;9&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot;&amp;gt;Area 6&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;8&amp;quot; Rating=&amp;quot;4.8&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Kayla Weightlifter]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;10&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot;&amp;gt;Area 6&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-04-05T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;8&amp;quot; Rating=&amp;quot;4.8&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Kayla Weightlifter]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;9&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Margaret Strengthener]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;11&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot;&amp;gt;Hall 2&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT55M&amp;quot;&amp;gt;2017-03-26T15:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;12&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;4&amp;quot;&amp;gt;Hall 4&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-28T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;13&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot;&amp;gt;Hall 2&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;1&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;7&amp;quot;&amp;gt;Yoga Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Yoga]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-25T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;1&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Yogafier]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;14&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;7&amp;quot;&amp;gt;Yoga Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Yoga]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT1H20M&amp;quot;&amp;gt;2017-03-28T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;1&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Yogafier]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
    &amp;lt;Comment&amp;gt;&amp;lt;![CDATA[&lt;br /&gt;
          Special class!&lt;br /&gt;
        ]]&amp;gt;&amp;lt;/Comment&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
&amp;lt;/Schedule&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus ==&lt;br /&gt;
Angular JS &#039;&#039;single page application&#039;&#039; eelnevalt kirjeldatud veebiteenusele. Sisse logimata saab kuvada spordiklubi tunniplaani nädalate kaupa, treeninguliike stiilide kaupa ja treenereid. Võimalik on liituda teenusega ja registreeruda treeningutele, samuti registreeringuid tühistada nii otse tunniplaanist kui ka registreeringute lehel. Esialgu põhineb süsteem ühel spordiklubil. Kasutamise eelduseks on tunniplaani olemasolu andmebaasis.&lt;br /&gt;
&lt;br /&gt;
Autentimine on lahendatud tokenipõhiselt. Eeskuju ja põhjana kasutasime näidisrakendust, mille juhend ja lähtekood on leitav [http://bitoftech.net/2014/06/09/angularjs-token-authentication-using-asp-net-web-api-2-owin-asp-net-identity/ siit].&lt;br /&gt;
&lt;br /&gt;
== Lähtekood ==&lt;br /&gt;
Eksamiks valminud veebiteenuse ja klientrakenduse kokkupakitult allalaadimiseks klõpsa [http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/solution/ProjectSPOT.zip sellel lingil]. WebApi ja Angular JS klient on eraldi lahendustes. Kliendi testimiseks brauseris (Chrome, Firefox vm) tuleb eelnevalt käivitada ka veebiteenus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;NB! Võib juhtuda, et WebApi esmakordsel käivitamisel loodavasse andmebaasi kõiki andmeid (tunniplaani ja registreerimisi jooksvasse nädalasse) ei lisandu. Sellisel juhul kustuta tekkinud andmebaas ja käivita kõigepealt samas lahenduses olev konsoolirakendus.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Retsensioonid ==&lt;br /&gt;
&lt;br /&gt;
# [https://wiki.itcollege.ee/index.php/Talk:JRT XML/XSD/XSLT retsensioon meeskonnale JRT]&lt;br /&gt;
# [Veebiteenuse retsensioon lisandub varsti]&lt;br /&gt;
# [Klientrakenduse retsensioon lisandub varsti]&lt;br /&gt;
&lt;br /&gt;
== Log ==&lt;br /&gt;
* 03.03.17 Esimene kohtumine. Idee.&lt;br /&gt;
* 17.03.17 Osa XMList valmis, osa XSLT-st valmis.&lt;br /&gt;
* 18.03.17 Teine kohtumine. XMLi täiendamine, esimene ülekäimine XSD-s.&lt;br /&gt;
* 19.03.17 XML/XSLT/XSD täiendamine ja lõpetamine.&lt;br /&gt;
* 20.03.17 XML fail, skeemifail ja stiilifailid esitatud. Projekti esimese etapi lõpp. Kevade algus.&lt;br /&gt;
* 26.03.17 XML/XSLT/XSD retsensioon esitatud.&lt;br /&gt;
* 16.04.17 Veebiteenuse analüüsi koostamine.&lt;br /&gt;
* 17.04.17 Esialgne veebiteenuse analüüs ja kavand valmis.&lt;br /&gt;
* 19.04.17 Alustasime veebiteenusega, koostegemine: Domain, DAL, Interfaces, Repostitories. Testimine konsoolis.&lt;br /&gt;
* 24.04.17 Veebiteenuse koostegemine, 2. kord: Domaini täiendamine.&lt;br /&gt;
* 29.04.17 Veebiteenuse koostegemine, 3. kord: Interfaces, Repositories, Factory + UOW. Testimine konsoolis.&lt;br /&gt;
* 01.05.17 Andmebaasi täitmine testandmetega varasemas faasis loodud XML failist.&lt;br /&gt;
* 02.05.17 Veebiteenuse koostegemine, 4. kord: alustasime BLi ja WebApi ehitamist. GET päringud.&lt;br /&gt;
* 09.05.17 Veebiteenuse koostegemine, 5. kord: lisasime Identity.&lt;br /&gt;
* 11.05.17 Veebiteenuse koostegemine, 6. kord: WebApi arendamine. POST, PUT ja DELETE päringud.&lt;br /&gt;
* 15.05.17 Veebiteenuse koostegemine, 7. kord: WebApi arendamine. Lisasime  api kontrollereid.&lt;br /&gt;
* 16.05.17 Veebiteenuse koostegemine, 8. kord: WebApi arendamine. Identity kontroll Fiddleri ja Postmaniga.&lt;br /&gt;
* 20.05.17 Klientrakenduse koostegemine, 1. kord. Testklient.&lt;br /&gt;
* 25.05.17 Klientrakenduse koostegemine, 2. kord. Klientrakenduse arendamine.&lt;br /&gt;
* 01.06.17 Klientrakenduse koostegemine, 3. kord. Klientrakenduse arendamine. Angular JS.&lt;br /&gt;
* 03.06.17 - 11.06.17 Klientrakenduse arendamine. Tokenipõhine autentimine. Veebiteenuse viimistlemine.&lt;br /&gt;
* 11.06.17 Lõpptähtaeg. Projekti esitlemine eksamil.&lt;br /&gt;
* 12.06.17 Teiste lahenduste retsenseerimine.&lt;/div&gt;</summary>
		<author><name>Otiks</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Team_SPOT&amp;diff=123522</id>
		<title>Team SPOT</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Team_SPOT&amp;diff=123522"/>
		<updated>2017-06-12T14:48:28Z</updated>

		<summary type="html">&lt;p&gt;Otiks: /* XML / XSD / XSLT */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://wiki.itcollege.ee/index.php/Kodut%C3%B6%C3%B6_aines_%22V%C3%B5rgurakendused_II:_hajuss%C3%BCsteemide_ehitamine%22_2017 Kodutöö aines &amp;quot;Võrgurakendused II: hajussüsteemide ehitamine&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
[https://projectspot.visualstudio.com/PROJECTSPOT Projekti repositoorium (avaneb ainult liikmetele)]&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==Liikmed==&lt;br /&gt;
*Sigrid Pachel&lt;br /&gt;
*Oliver Tiks&lt;br /&gt;
&lt;br /&gt;
==Idee==&lt;br /&gt;
Mõttes on luua spordiklubi(de) veebiteenus ja klientrakendus, mis võimaldaks saada infot pakutavate treeningute kohta, sisestada ja kuvada tunniplaani andmeid, registreerida osalejaid tundidesse ning teha muid asjakohaseid tegevusi nii klubi(de) personalil, liikmetel kui ka juhukasutajatel.&lt;br /&gt;
&lt;br /&gt;
==Veebiteenuse analüüs==&lt;br /&gt;
SPOTi veebiteenus võimaldab saada infot erinevate klubide treeningute kohta ja end neisse registreerida. Kasutaja saab teavet, kus ja millal treeningud toimuvad (tunniplaan), mida treeningus täpsemalt tehakse, mis stiiliga on tegemist, kes on treener, kui palju üks kord maksab jms info. Kasutajakontoga liikmel on võimalik end registreerida soovitud tundi ja hallata oma registreeringuid (muuta, tühistada).&lt;br /&gt;
&lt;br /&gt;
Spordiklubide infot haldavad süsteemi administraatorid, kes saavad lisada, muuta ja kustutada kõike sprodiklubiga seonduvat. Erinevaid treeninguid ja nendega seotud konkreetset infot saavad lisada ja hallata treenerid või spordiklubi esindajad.&lt;br /&gt;
&lt;br /&gt;
Projekti realiseerimiseks kasutame REST arhitektuuri ja ASP.NET MVC Web API tehnoloogiat.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Üldine plaan:&#039;&#039;&#039;&lt;br /&gt;
* esialgu üks kett (laienemise võimalusega)&lt;br /&gt;
* mitu klubi (asukoht, saalid-treeningualad, võimalikud lisatingimused)&lt;br /&gt;
* treeningute info (stiilid ehk kontseptid, litsentsid, …)&lt;br /&gt;
* tunniplaan (aeg, koht, instruktorid, max osalejate arv, ühe korra hind)&lt;br /&gt;
* registratuur (treeningutest osavõtjad)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kasutajad (rollid):&#039;&#039;&#039;&lt;br /&gt;
* administraatorid (saavad teha muudatusi)&lt;br /&gt;
* treenerid (info kvalifikatsiooni, litsentside kohta, õigus treeninguid lisada) &lt;br /&gt;
* liikmed (saavad treeningutele registreeruda)&lt;br /&gt;
* ülejäänud (näevad klubide ja treeningute infot ning tunniplaani)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Peaks olema:&#039;&#039;&#039;&lt;br /&gt;
* kasutajate loomine&lt;br /&gt;
* kasutajate tuvastamine ja haldamine&lt;br /&gt;
* kasutajate ja kasutusstatistika logimine&lt;br /&gt;
* teenuse poole pöördumiste arvu piiramine ja piirangute haldamine&lt;br /&gt;
* klubide, treenerite ja treeningute info väljastamine&lt;br /&gt;
* tunniplaani info väljastamine&lt;br /&gt;
* treeningutesse registreerimine&lt;br /&gt;
* registreeringu tühistamine&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Võiks olla:&#039;&#039;&#039;&lt;br /&gt;
* klubide, treenerite, treeningute lisamine ja muutmine&lt;br /&gt;
* tunniplaanis treeningute tühistamine&lt;br /&gt;
* sisestatud andmete kustutamine (pehmelt)&lt;br /&gt;
* rollide-õiguste määramine (admin)&lt;br /&gt;
* asukohad mitmes riigis&lt;br /&gt;
* kliendipaketid, arveldus&lt;br /&gt;
* kontaktide tsentraliseeritud haldus&lt;br /&gt;
* sisselogimine läbi Google’i, Facebooki vmt teenuse&lt;br /&gt;
&lt;br /&gt;
===Andmebaasi skeem (lihtsustatud)===&lt;br /&gt;
&lt;br /&gt;
[[File:SPOTService ERD.JPG|border|SPOT Service ERD]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Märkus: olemite atribuutidest on välja toodud ainult peamised.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====Tabelite kirjeldused====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kasutajahaldus*:&#039;&#039;&#039;&lt;br /&gt;
* User - kasutajate andmed&lt;br /&gt;
* Role - rollid, millega määratakse kasutajate õigused (&amp;quot;Admin&amp;quot;, &amp;quot;Trainer&amp;quot;, ...)&lt;br /&gt;
* UserRole - kasutajate sidumine rolli(de)ga&lt;br /&gt;
* UserLogin - muu teenuse kaudu sisselogimiseks&lt;br /&gt;
* UserClaim - muu teenuse kaudu sisselogimiseks&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;&#039;&#039;Kasutajahalduse süsteem toetub Asp.Net Identity valmislahendusele, mida on täiendanud A. Käver.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Klubid:&#039;&#039;&#039;&lt;br /&gt;
* Chain (optional) - spordiklubikettide info&lt;br /&gt;
* Location - spordiklubi/-rajatise asukoht linna/asula täpsusega&lt;br /&gt;
* Facility - spordiklubi/-rajatise andmed, seotud asukohaga ja vajadusel ketiga.&lt;br /&gt;
* Venue - spordiklubis/-rajatises kasutatavad saalid ja muud treeningualad&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Treeningud:&#039;&#039;&#039;&lt;br /&gt;
* Concept (Style) - treeningustiilid ehk kontseptid&lt;br /&gt;
* Licenser (optional) - treeninguliikide litsentsid (kui on)&lt;br /&gt;
* Training - treeninguliikide andmed, seotud stiili ja vajadusel litsentsiga&lt;br /&gt;
* Trainer (User (role: Trainer) + Training) - treeninguliikide sidumine treeneritega&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tunniplaan:&#039;&#039;&#039;&lt;br /&gt;
* ScheduleItem - treeningud tunniplaanis&lt;br /&gt;
* Instructor (User (role: Trainer) + ScheduleItem) - tundide juhendajad (võib olla mitu)&lt;br /&gt;
* Registration (ScheduleItem + User (role: any)) - tundidesse tehtud registreeringud&lt;br /&gt;
&lt;br /&gt;
== XML / XSD / XSLT==&lt;br /&gt;
Projekti esimeses etapis sai loodud XML andmefail, mille ülesehitus on paika pandud XSD skeemifailis. Lisaks on olemas kaks stiilifaili: esimene neist transformeerib andmed HTML-kujule, et kuvada infot  veebilehel, teine tekitab samade andmete esitamiseks uue struktuuriga XML faili.&lt;br /&gt;
&lt;br /&gt;
[https://drive.google.com/open?id=0B84njRSbVLUtTWx5ZkZsdDBJZDQ Lae failid alla.] &lt;br /&gt;
&lt;br /&gt;
=== XML ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Fail sisaldab andmeid ühes spordiklubis pakutavate treeningute kohta. Andmed on esitatud treeninguliikide kaupa, mille juurde on lisatud ka vastava treeninguliigi tunniplaan. Treeninguliikidel on nimi ja kirjeldus ning vajadusel ära märgitud ka litsents. Failis on eraldi välja toodud treeningustiilid, instruktorid ja ruumid, kus treeningud toimuvad. Iga treeninguliik kuulub ühe või mitme stiili alla. Instruktoritel on tagasiside põhjal saadud hinne. Treeninguruumidel on vaikimisi määratud mahutavus. Tunniplaanis on ära toodud treeningu koht, algusaeg ja kestus ning instruktorid. Vajadusel saab eraldi määrata ka treeningurühma suuruse, kui see erineb tavalisest ruumi mahutavusest. Ka on võimalik treeningutunnile lisada kommentaar. Erinevate elementide andmed on omavahel seotud id-atribuutidega.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;?xml-stylesheet type=&amp;quot;text/xsl&amp;quot; href=&amp;quot;trainingsToHtml.xslt&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Trainings&amp;gt;&lt;br /&gt;
  &amp;lt;Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;![CDATA[Cardio]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
  &amp;lt;/Styles&amp;gt;&lt;br /&gt;
  &amp;lt;Instructors&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;1&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Yogafier]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;2&amp;quot; Rating=&amp;quot;4.7&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Mickey Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;3&amp;quot; Rating=&amp;quot;4.6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;4&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Donald Duck]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;5&amp;quot; Rating=&amp;quot;3.9&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Goofy]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;6&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Schwarzenegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;8&amp;quot; Rating=&amp;quot;4.8&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Kayla Weightlifter]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;9&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Margaret Strengthener]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
  &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;Venues&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;1&amp;quot; GroupSize=&amp;quot;45&amp;quot;&amp;gt;&amp;lt;![CDATA[Main Hall]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 2]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;3&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 3]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;4&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 4]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;5&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 5]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&amp;lt;![CDATA[Area 6]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;7&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&amp;lt;![CDATA[Yoga Hall]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
  &amp;lt;/Venues&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Yoga]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[Yoga is a group of physical, mental, and spiritual practices or disciplines which originated in ancient India. ]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;1&amp;quot; VenueId=&amp;quot;7&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-25T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;14&amp;quot; VenueId=&amp;quot;7&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT1H20M&amp;quot;&amp;gt;2017-03-28T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Comment&amp;gt;&lt;br /&gt;
          &amp;lt;![CDATA[Special class!]]&amp;gt;&lt;br /&gt;
        &amp;lt;/Comment&amp;gt; &lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/Nvlxn0EnmbM&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;  &lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;2&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyBalance™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[BODYBALANCE™ is the Yoga, Tai Chi, Pilates workout that builds flexibility and strength and leaves you feeling centered and calm. Based on a carefully structured series of stretches, moves and poses to music it creates a holistic workout that brings the body into a state of harmony and balance. This class will heighten your flexibility and inner strength creating a strong supple body from the inside out. Burn on average 390cals per hour.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;2&amp;quot; VenueId=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-31T12:15:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;3&amp;quot; VenueId=&amp;quot;2&amp;quot; &amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-30T13:30:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;3&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/jJxA6vBjUqY&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;3&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyJam™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;4&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[The Body Jam program is an addictive fusion of the latest dance styles to the hottest new sounds. This class isn’t just for dancers, it’s for everyone because the emphasis is put on not only having fun but also breaking a sweat. So grab a friend, get front and centre … you bring the attitude and we’ll bring the moves!]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;4&amp;quot;  VenueId=&amp;quot;3&amp;quot; &amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T16:10:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;4&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;5&amp;quot; VenueId=&amp;quot;5&amp;quot; &amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT45M&amp;quot;&amp;gt;2017-04-01T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;5&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/8PTXyg9si_4&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;4&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyPump™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[BodyPump classes are 59 minutes long and contain eight separate muscle-group specific songs or &amp;quot;tracks&amp;quot; along with an opening warm up track and closing cool-down track. There are also 45-minute and 30-minute class formats. The classes are performed to music using free weights-plates, barbells and an aerobic step. Participants choose their weights based on the exercise and their personal goals. Major muscle groups are worked via series of compound and isolation-based exercises including squats, presses, dead lifts. The focus is towards muscle endurance by moving light weights at high repetitions, what Les Mills calls the Rep Effect.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;3&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;6&amp;quot; VenueId=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;6&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;7&amp;quot; VenueId=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-23T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;6&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/zU_0XrdO3wo&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[CoreStrenght is a very hard workout! Not for beginners.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;3&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;8&amp;quot; VenueId=&amp;quot;6&amp;quot; GroupSize=&amp;quot;10&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT2H&amp;quot;&amp;gt;2017-03-23T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;9&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Comment&amp;gt;&lt;br /&gt;
          &amp;lt;![CDATA[Special challenge!]]&amp;gt;&lt;br /&gt;
        &amp;lt;/Comment&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;9&amp;quot; VenueId=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;8&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;10&amp;quot; VenueId=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-04-05T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;8&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;9&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/ZxTVmpvyUt8&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[Zumba involves dance and aerobic movements performed to energetic music. The choreography incorporates hip-hop, soca, samba, salsa, merengue and mambo. Squats and lunges are also included.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;4&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;11&amp;quot; VenueId=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT55M&amp;quot;&amp;gt;2017-03-26T15:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;12&amp;quot; VenueId=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-28T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;13&amp;quot; VenueId=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/-ZB6XIkfxnQ&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
&amp;lt;/Trainings&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSD ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Skeemifail kontrollib eelnevas andmefailis esitatud andmete vastavust kokkulepitud formaadile, samuti õigete andmetüüpide kasutamist. Alamelemendi id-atribuudi väärtus peab olema iga elemendirühma lõikes unikaalne. Kohustuslike elementide ja atribuutide kõrval on ka mõned (nt kommentaar), mille olemasolu pole alati tarvilik. Teatud puhkudel on piiratud maksimaalset elementide arvu (nt treeningutunni algusaeg). Faili üldine struktuur on kindel, aga alati pole alamelementide järjekord oluline (nt treeninguliigi puhul).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xs:schema attributeFormDefault=&amp;quot;unqualified&amp;quot; elementFormDefault=&amp;quot;qualified&amp;quot; xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xs:element name=&amp;quot;Trainings&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Styles&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Style&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
          &amp;lt;xs:unique name=&amp;quot;UniqueStyleId&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xs:selector xpath=&amp;quot;Style&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Instructors&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;Name&amp;quot; type=&amp;quot;xs:string&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:attribute name=&amp;quot;Rating&amp;quot; type=&amp;quot;xs:decimal&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
          &amp;lt;xs:unique name=&amp;quot;UniqueInstructorId&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xs:selector xpath=&amp;quot;Instructor&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Venues&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Venue&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:attribute name=&amp;quot;GroupSize&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
          &amp;lt;xs:unique name=&amp;quot;UniqueVenueId&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xs:selector xpath=&amp;quot;Venue&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Training&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:all&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Description&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Styles&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Style&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Schedule&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;ScheduleItem&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:all&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element  maxOccurs=&amp;quot;1&amp;quot; name=&amp;quot;Time&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:extension base=&amp;quot;xs:dateTime&amp;quot;&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:attribute name=&amp;quot;Duration&amp;quot; type=&amp;quot;xs:duration&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element name=&amp;quot;Instructors&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                    &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                                      &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                                        &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                                      &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                                    &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                                  &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; name=&amp;quot;Comment&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:all&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;VenueId&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;GroupSize&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;optional&amp;quot; /&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;VideoUrl&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:all&amp;gt;&lt;br /&gt;
            &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xs:attribute name=&amp;quot;Licence&amp;quot; type=&amp;quot;xs:string&amp;quot; use=&amp;quot;optional&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
    &amp;lt;xs:unique name=&amp;quot;UniqueTrainingId&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xs:selector xpath=&amp;quot;Training&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
    &amp;lt;xs:unique name=&amp;quot;UniqueScheduleItemId&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xs:selector xpath=&amp;quot;Training/Schedule/ScheduleItem&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSLT (html) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Selles transformatsioonifailis on kirjeldatud XML failis olevate andmete [http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/trainings.xml  kuvamise viis veebilehel]. Treeninguliigid on jaotatud stiiliblokkidesse (mõni treening kuulub mitme stiili alla). Iga treeninguliigi all on tabeli kujul esitatud tunniplaan ning lisatud näidisvideo ja kirjeldus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot; xmlns:msxsl=&amp;quot;urn:schemas-microsoft-com:xslt&amp;quot; exclude-result-prefixes=&amp;quot;msxsl&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:output method=&amp;quot;html&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;html&amp;gt;&lt;br /&gt;
      &amp;lt;head&amp;gt;&lt;br /&gt;
        &amp;lt;title&amp;gt;SuperSportsClub - Trainings&amp;lt;/title&amp;gt;&lt;br /&gt;
        &amp;lt;style&amp;gt;&lt;br /&gt;
          body {&lt;br /&gt;
          background:BurlyWood;&lt;br /&gt;
          text-align: center;&lt;br /&gt;
          }&lt;br /&gt;
          .section {&lt;br /&gt;
          text-align:left;&lt;br /&gt;
          width:1000px;&lt;br /&gt;
          padding:20px;&lt;br /&gt;
          background:Chocolate;&lt;br /&gt;
          margin: auto;&lt;br /&gt;
          }&lt;br /&gt;
          table, th, td, .section {&lt;br /&gt;
          border: 1px solid black;&lt;br /&gt;
          }&lt;br /&gt;
          th {&lt;br /&gt;
          text-align:left;&lt;br /&gt;
          padding-left: 10px;&lt;br /&gt;
          padding-right: 10px;&lt;br /&gt;
          }&lt;br /&gt;
          td {&lt;br /&gt;
          text-align:center;&lt;br /&gt;
          }&lt;br /&gt;
          p {&lt;br /&gt;
          text-align:justify;&lt;br /&gt;
          }&lt;br /&gt;
          .description {&lt;br /&gt;
          vertical-align:top; &lt;br /&gt;
          padding:10px;&lt;br /&gt;
          }&lt;br /&gt;
        &amp;lt;/style&amp;gt;&lt;br /&gt;
      &amp;lt;/head&amp;gt;&lt;br /&gt;
      &amp;lt;body&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;Trainings at SuperSportsClub&amp;lt;/h1&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;/Trainings/Styles/Style&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:sort select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:variable select=&amp;quot;.&amp;quot; name=&amp;quot;SelectedStyle&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;section&amp;quot; &amp;gt;&lt;br /&gt;
            &amp;lt;h2&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select=&amp;quot;$SelectedStyle&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/h2&amp;gt;&lt;br /&gt;
            &amp;lt;ul&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:for-each select=&amp;quot;/Trainings/Training&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:sort select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:variable name=&amp;quot;Training&amp;quot; select=&amp;quot;.&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:if test=&amp;quot;Styles/Style/@Id = $SelectedStyle/@Id&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;&lt;br /&gt;
                    &amp;lt;h3&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;$Training/Name&amp;quot; /&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:if test=&amp;quot;$Training/@Licence&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:text&amp;gt; (&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:value-of select=&amp;quot;$Training/@Licence&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:text&amp;gt;)&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
                    &amp;lt;/h3&amp;gt;&lt;br /&gt;
                    &amp;lt;table&amp;gt;&lt;br /&gt;
                      &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                      &amp;lt;/tr&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:for-each select=&amp;quot;$Training/Schedule/ScheduleItem&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:sort select=&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:variable name=&amp;quot;StartTime&amp;quot; select=&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:variable name=&amp;quot;Duration&amp;quot; select=&amp;quot;$StartTime/@Duration&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;tr&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;150&amp;quot; &amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;concat(&lt;br /&gt;
                                            substring($StartTime, 9, 2), &lt;br /&gt;
                                            &#039;.&#039;, &lt;br /&gt;
                                            substring($StartTime, 6, 2), &lt;br /&gt;
                                            &#039;.&#039;, &lt;br /&gt;
                                            substring($StartTime, 1, 4),&lt;br /&gt;
                                            &#039; &#039;,&lt;br /&gt;
                                            substring($StartTime, 12, 2),&lt;br /&gt;
                                            &#039;:&#039;,&lt;br /&gt;
                                            substring($StartTime, 15, 2))&lt;br /&gt;
                                            &amp;quot; /&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:if test=&amp;quot;Comment&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;br/&amp;gt;&lt;br /&gt;
                              &amp;lt;div style=&amp;quot;color:Green&amp;quot;&amp;gt;&lt;br /&gt;
                                &amp;lt;xsl:value-of select=&amp;quot;Comment&amp;quot;/&amp;gt;&lt;br /&gt;
                              &amp;lt;/div&amp;gt;&lt;br /&gt;
                            &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;substring($Duration, 3, 6)&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:variable name=&amp;quot;VenueId&amp;quot; select=&amp;quot;@VenueId&amp;quot;/&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;/Trainings/Venues/Venue[@Id=$VenueId]&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:for-each select=&amp;quot;Instructors/Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:variable name=&amp;quot;InstructorId&amp;quot; select=&amp;quot;@Id&amp;quot;&amp;gt;&amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:variable name=&amp;quot;SelectedInstructor&amp;quot; select=&amp;quot;/Trainings/Instructors/Instructor[@Id=$InstructorId]&amp;quot; /&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/Name&amp;quot;/&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:text&amp;gt; (&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/@Rating&amp;quot; /&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:text&amp;gt;)&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                              &amp;lt;br/&amp;gt;&lt;br /&gt;
                            &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;/tr&amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
                    &amp;lt;/table&amp;gt;&lt;br /&gt;
                    &amp;lt;br/&amp;gt;&lt;br /&gt;
                    &amp;lt;table&amp;gt;&lt;br /&gt;
                      &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                          &amp;lt;xsl:variable name=&amp;quot;VideoUrl&amp;quot; select=&amp;quot;$Training/VideoUrl&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;{$VideoUrl}&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                          &amp;lt;p&amp;gt;&lt;br /&gt;
                            &amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&lt;br /&gt;
                          &amp;lt;/p&amp;gt;&lt;br /&gt;
                          &amp;lt;p&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;$Training/Description&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                      &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;/table&amp;gt;&lt;br /&gt;
                  &amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
            &amp;lt;/ul&amp;gt;&lt;br /&gt;
          &amp;lt;/div&amp;gt;&lt;br /&gt;
          &amp;lt;br/&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
      &amp;lt;/body&amp;gt;&lt;br /&gt;
    &amp;lt;/html&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== HTML (transformeeritud) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/trainings.html Vaata eelneva transformatsiooni tulemust.]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;META http-equiv=&amp;quot;Content-Type&amp;quot; content=&amp;quot;text/html; charset=utf-8&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;SuperSportsClub - Trainings&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;style&amp;gt;&lt;br /&gt;
        body {&lt;br /&gt;
            background: BurlyWood;&lt;br /&gt;
            text-align: center;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        .section {&lt;br /&gt;
            text-align: left;&lt;br /&gt;
            width: 1000px;&lt;br /&gt;
            padding: 20px;&lt;br /&gt;
            background: Chocolate;&lt;br /&gt;
            margin: auto;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        table, th, td, .section {&lt;br /&gt;
            border: 1px solid black;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        th {&lt;br /&gt;
            text-align: left;&lt;br /&gt;
            padding-left: 10px;&lt;br /&gt;
            padding-right: 10px;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        td {&lt;br /&gt;
            text-align: center;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        p {&lt;br /&gt;
            text-align: justify;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        .description {&lt;br /&gt;
            vertical-align: top;&lt;br /&gt;
            padding: 10px;&lt;br /&gt;
        }&lt;br /&gt;
    &amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
    &amp;lt;h1&amp;gt;Trainings at SuperSportsClub&amp;lt;/h1&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Body&amp;amp;amp;Mind&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyBalance™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 13:30&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;1H15M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 2&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Minnie Mouse (4.6)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;31.03.2017 12:15&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;1H15M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 3&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Mickey Mouse (4.7)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/jJxA6vBjUqY&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                BODYBALANCE™ is the Yoga, Tai Chi, Pilates workout that builds flexibility and strength and leaves you feeling centered and calm. Based on a carefully structured series of stretches, moves and poses to music it creates a holistic workout that brings the body into a state of harmony and balance. This class will heighten your flexibility and inner strength creating a strong supple body from the inside out. Burn on average 390cals per hour.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;Yoga&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;25.03.2017 14:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Yoga Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Minnie Yogafier (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
                            28.03.2017 14:00&amp;lt;br&amp;gt;&amp;lt;div style=&amp;quot;color:Green&amp;quot;&amp;gt;&lt;br /&gt;
                                Special class!&lt;br /&gt;
                            &amp;lt;/div&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;1H20M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Yoga Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Minnie Yogafier (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/Nvlxn0EnmbM&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                Yoga is a group of physical, mental, and spiritual practices or disciplines which originated in ancient India.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Cardio&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyJam™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 16:10&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 3&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Donald Duck (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;01.04.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;45M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 5&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Goofy (3.9)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/8PTXyg9si_4&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                The Body Jam program is an addictive fusion of the latest dance styles to the hottest new sounds. This class isn’t just for dancers, it’s for everyone because the emphasis is put on not only having fun but also breaking a sweat. So grab a friend, get front and centre … you bring the attitude and we’ll bring the moves!&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Dance&amp;amp;amp;Fun&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyJam™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 16:10&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 3&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Donald Duck (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;01.04.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;45M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 5&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Goofy (3.9)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/8PTXyg9si_4&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                The Body Jam program is an addictive fusion of the latest dance styles to the hottest new sounds. This class isn’t just for dancers, it’s for everyone because the emphasis is put on not only having fun but also breaking a sweat. So grab a friend, get front and centre … you bring the attitude and we’ll bring the moves!&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;Zumba®&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;26.03.2017 15:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;55M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 2&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Zumbaschnegger (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;28.03.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 4&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Zumbaschnegger (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 2&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Zumbaschnegger (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/-ZB6XIkfxnQ&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                Zumba involves dance and aerobic movements performed to energetic music. The choreography incorporates hip-hop, soca, samba, salsa, merengue and mambo. Squats and lunges are also included.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Strength&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyPump™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;23.03.2017 13:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Main Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Schwarzenegger (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 13:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Main Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Schwarzenegger (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/zU_0XrdO3wo&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                BodyPump classes are 59 minutes long and contain eight separate muscle-group specific songs or &amp;quot;tracks&amp;quot; along with an opening warm up track and closing cool-down track. There are also 45-minute and 30-minute class formats. The classes are performed to music using free weights-plates, barbells and an aerobic step. Participants choose their weights based on the exercise and their personal goals. Major muscle groups are worked via series of compound and isolation-based exercises including squats, presses, dead lifts. The focus is towards muscle endurance by moving light weights at high repetitions, what Les Mills calls the Rep Effect.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;CoreStrength&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
                            23.03.2017 12:00&amp;lt;br&amp;gt;&amp;lt;div style=&amp;quot;color:Green&amp;quot;&amp;gt;&lt;br /&gt;
                                Special challenge!&lt;br /&gt;
                            &amp;lt;/div&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;2H&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Area 6&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Margaret Strengthener (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Area 6&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Kayla Weightlifter (4.8)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;05.04.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Area 6&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Kayla Weightlifter (4.8)&amp;lt;br&amp;gt;Margaret Strengthener (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/ZxTVmpvyUt8&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                CoreStrenght is a very hard workout! Not for beginners.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSLT (xml) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Selle transformatsiooniga luuakse uus [http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/schedule.xml XML fail], milles on treeningute andmed esitatud ühtse tunniplaani kujul. Algses failis erinevate elementide alla paigutatud andmed on nüüd tunniplaani alamelemendis kokku viidud. Sidumine on teostatud id-atribuutide abil. Tunniplaanis on ühes kohas kirjas treeningu nimi, stiil(id), koht, algusaeg, kestus, rühma suurus, instruktorid ja muu täiendav info.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&lt;br /&gt;
    xmlns:msxsl=&amp;quot;urn:schemas-microsoft-com:xslt&amp;quot; exclude-result-prefixes=&amp;quot;msxsl&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:output method=&amp;quot;xml&amp;quot; indent=&amp;quot;yes&amp;quot; cdata-section-elements=&amp;quot;Name Style Comment&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;/Trainings/Training&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:sort select=&amp;quot;Name&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:variable name=&amp;quot;SelectedTraining&amp;quot; select=&amp;quot;.&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;Schedule/ScheduleItem&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:sort select=&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;ScheduleItem&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:variable name=&amp;quot;VenueId&amp;quot; select=&amp;quot;@VenueId&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:variable name=&amp;quot;SelectedVenue&amp;quot; select=&amp;quot;/Trainings/Venues/Venue[@Id=$VenueId]&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:attribute name=&amp;quot;GroupSize&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;@GroupSize&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:value-of select=&amp;quot;@GroupSize&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:value-of select=&amp;quot;$SelectedVenue/@GroupSize&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
            &amp;lt;Venue&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$VenueId&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select=&amp;quot;$SelectedVenue&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/Venue&amp;gt;&lt;br /&gt;
            &amp;lt;Training&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$SelectedTraining/@Id&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:if test=&amp;quot;$SelectedTraining/@Licence&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:attribute name=&amp;quot;Licence&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:value-of select=&amp;quot;$SelectedTraining/@Licence&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
              &amp;lt;Name&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$SelectedTraining/Name&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/Name&amp;gt;&lt;br /&gt;
              &amp;lt;Styles&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:for-each select=&amp;quot;$SelectedTraining/Styles/Style&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:variable name=&amp;quot;StyleId&amp;quot; select=&amp;quot;@Id&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;Style&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:attribute name=&amp;quot;StyleId&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;$StyleId&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;/Trainings/Styles/Style[@Id=$StyleId]&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/Style&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
              &amp;lt;/Styles&amp;gt;&lt;br /&gt;
            &amp;lt;/Training&amp;gt;&lt;br /&gt;
            &amp;lt;Time&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:attribute name=&amp;quot;Duration&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;Time/@Duration&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select =&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/Time&amp;gt;&lt;br /&gt;
            &amp;lt;Instructors&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:for-each select=&amp;quot;Instructors/Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:variable name=&amp;quot;InstructorId&amp;quot; select=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:variable name=&amp;quot;SelectedInstructor&amp;quot; select=&amp;quot;/Trainings/Instructors/Instructor[@Id=$InstructorId]&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;Instructor&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;$InstructorId&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:attribute name=&amp;quot;Rating&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/@Rating&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                  &amp;lt;Name&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/Name&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/Name&amp;gt;&lt;br /&gt;
                &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
            &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:if test=&amp;quot;Comment&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;Comment&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;Comment&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/Comment&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
          &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XML (transformeeritud) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/schedule.xml Vaata eelneva transformatsiooni tulemust.]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Schedule&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;3&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot;&amp;gt;Hall 2&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;2&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyBalance™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-30T13:30:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;3&amp;quot; Rating=&amp;quot;4.6&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;2&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;3&amp;quot;&amp;gt;Hall 3&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;2&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyBalance™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-31T12:15:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;2&amp;quot; Rating=&amp;quot;4.7&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Mickey Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;4&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;3&amp;quot;&amp;gt;Hall 3&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;3&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyJam™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;![CDATA[Cardio]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T16:10:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;4&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Donald Duck]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;5&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;5&amp;quot;&amp;gt;Hall 5&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;3&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyJam™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;![CDATA[Cardio]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT45M&amp;quot;&amp;gt;2017-04-01T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;5&amp;quot; Rating=&amp;quot;3.9&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Goofy]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;7&amp;quot; GroupSize=&amp;quot;45&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;1&amp;quot;&amp;gt;Main Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;4&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyPump™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-23T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;6&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Schwarzenegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;6&amp;quot; GroupSize=&amp;quot;45&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;1&amp;quot;&amp;gt;Main Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;4&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyPump™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;6&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Schwarzenegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;8&amp;quot; GroupSize=&amp;quot;10&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot;&amp;gt;Area 6&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT2H&amp;quot;&amp;gt;2017-03-23T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;9&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Margaret Strengthener]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
    &amp;lt;Comment&amp;gt;&amp;lt;![CDATA[&lt;br /&gt;
          Special challenge!&lt;br /&gt;
        ]]&amp;gt;&amp;lt;/Comment&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;9&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot;&amp;gt;Area 6&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;8&amp;quot; Rating=&amp;quot;4.8&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Kayla Weightlifter]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;10&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot;&amp;gt;Area 6&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-04-05T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;8&amp;quot; Rating=&amp;quot;4.8&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Kayla Weightlifter]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;9&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Margaret Strengthener]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;11&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot;&amp;gt;Hall 2&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT55M&amp;quot;&amp;gt;2017-03-26T15:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;12&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;4&amp;quot;&amp;gt;Hall 4&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-28T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;13&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot;&amp;gt;Hall 2&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;1&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;7&amp;quot;&amp;gt;Yoga Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Yoga]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-25T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;1&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Yogafier]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;14&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;7&amp;quot;&amp;gt;Yoga Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Yoga]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT1H20M&amp;quot;&amp;gt;2017-03-28T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;1&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Yogafier]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
    &amp;lt;Comment&amp;gt;&amp;lt;![CDATA[&lt;br /&gt;
          Special class!&lt;br /&gt;
        ]]&amp;gt;&amp;lt;/Comment&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
&amp;lt;/Schedule&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus ==&lt;br /&gt;
Angular JS &#039;&#039;single page application&#039;&#039; eelnevalt kirjeldatud veebiteenusele. Sisse logimata saab kuvada spordiklubi tunniplaani nädalate kaupa, treeninguliike stiilide kaupa ja treenereid. Võimalik on liituda teenusega ja registreeruda treeningutele, samuti registreeringuid tühistada nii otse tunniplaanist kui ka registreeringute lehel. Esialgu põhineb süsteem ühel spordiklubil. Kasutamise eelduseks on tunniplaani olemasolu andmebaasis.&lt;br /&gt;
&lt;br /&gt;
Autentimine on lahendatud tokenipõhiselt. Eeskuju ja põhjana kasutasime näidisrakendust, mille juhend ja lähtekood on leitav [http://bitoftech.net/2014/06/09/angularjs-token-authentication-using-asp-net-web-api-2-owin-asp-net-identity/ siit].&lt;br /&gt;
&lt;br /&gt;
== Lähtekood ==&lt;br /&gt;
Eksamiks valminud veebiteenuse ja klientrakenduse kokkupakitult allalaadimiseks klõpsa [http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/solution/ProjectSPOT.zip sellel lingil]. WebApi ja Angular JS klient on eraldi lahendustes. Kliendi testimiseks brauseris (Chrome, Firefox vm) tuleb eelnevalt käivitada ka veebiteenus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;NB! Võib juhtuda, et WebApi esmakordsel käivitamisel loodavasse andmebaasi kõiki andmeid (tunniplaani ja registreerimisi jooksvasse nädalasse) ei lisandu. Sellisel juhul kustuta tekkinud andmebaas ja käivita kõigepealt samas lahenduses olev konsoolirakendus.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Retsensioonid ==&lt;br /&gt;
&lt;br /&gt;
# [https://wiki.itcollege.ee/index.php/Talk:JRT XML/XSD/XSLT retsensioon meeskonnale JRT]&lt;br /&gt;
# [Veebiteenuse retsensioon lisandub varsti]&lt;br /&gt;
# [Klientrakenduse retsensioon lisandub varsti]&lt;br /&gt;
&lt;br /&gt;
== Log ==&lt;br /&gt;
* 03.03.17 Esimene kohtumine. Idee.&lt;br /&gt;
* 17.03.17 Osa XMList valmis, osa XSLT-st valmis.&lt;br /&gt;
* 18.03.17 Teine kohtumine. XMLi täiendamine, esimene ülekäimine XSD-s.&lt;br /&gt;
* 19.03.17 XML/XSLT/XSD täiendamine ja lõpetamine.&lt;br /&gt;
* 20.03.17 XML fail, skeemifail ja stiilifailid esitatud. Projekti esimese etapi lõpp. Kevade algus.&lt;br /&gt;
* 26.03.17 XML/XSLT/XSD retsensioon esitatud.&lt;br /&gt;
* 16.04.17 Veebiteenuse analüüsi koostamine.&lt;br /&gt;
* 17.04.17 Esialgne veebiteenuse analüüs ja kavand valmis.&lt;br /&gt;
* 19.04.17 Alustasime veebiteenusega, koostegemine: Domain, DAL, Interfaces, Repostitories. Testimine konsoolis.&lt;br /&gt;
* 24.04.17 Veebiteenuse koostegemine, 2. kord: Domaini täiendamine.&lt;br /&gt;
* 29.04.17 Veebiteenuse koostegemine, 3. kord: Interfaces, Repositories, Factory + UOW. Testimine konsoolis.&lt;br /&gt;
* 01.05.17 Andmebaasi täitmine testandmetega varasemas faasis loodud XML failist.&lt;br /&gt;
* 02.05.17 Veebiteenuse koostegemine, 4. kord: alustasime BLi ja WebApi ehitamist. GET päringud.&lt;br /&gt;
* 09.05.17 Veebiteenuse koostegemine, 5. kord: lisasime Identity.&lt;br /&gt;
* 11.05.17 Veebiteenuse koostegemine, 6. kord: WebApi arendamine. POST, PUT ja DELETE päringud.&lt;br /&gt;
* 15.05.17 Veebiteenuse koostegemine, 7. kord: WebApi arendamine. Lisasime  api kontrollereid.&lt;br /&gt;
* 16.05.17 Veebiteenuse koostegemine, 8. kord: WebApi arendamine. Identity kontroll Fiddleri ja Postmaniga.&lt;br /&gt;
* 20.05.17 Klientrakenduse koostegemine, 1. kord. Testklient.&lt;br /&gt;
* 25.05.17 Klientrakenduse koostegemine, 2. kord. Klientrakenduse arendamine.&lt;br /&gt;
* 01.06.17 Klientrakenduse koostegemine, 3. kord. Klientrakenduse arendamine. Angular JS.&lt;br /&gt;
* 03.06.17 - 11.06.17 Klientrakenduse arendamine. Tokenipõhine autentimine. Veebiteenuse viimistlemine.&lt;br /&gt;
* 11.06.17 Lõpptähtaeg. Projekti esitlemine eksamil.&lt;br /&gt;
* 12.06.17 Teiste lahenduste retsenseerimine.&lt;/div&gt;</summary>
		<author><name>Otiks</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Team_SPOT&amp;diff=123513</id>
		<title>Team SPOT</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Team_SPOT&amp;diff=123513"/>
		<updated>2017-06-12T13:34:21Z</updated>

		<summary type="html">&lt;p&gt;Otiks: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://wiki.itcollege.ee/index.php/Kodut%C3%B6%C3%B6_aines_%22V%C3%B5rgurakendused_II:_hajuss%C3%BCsteemide_ehitamine%22_2017 Kodutöö aines &amp;quot;Võrgurakendused II: hajussüsteemide ehitamine&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
[https://projectspot.visualstudio.com/PROJECTSPOT Projekti repositoorium (avaneb ainult liikmetele)]&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==Liikmed==&lt;br /&gt;
*Sigrid Pachel&lt;br /&gt;
*Oliver Tiks&lt;br /&gt;
&lt;br /&gt;
==Idee==&lt;br /&gt;
Mõttes on luua spordiklubi(de) veebiteenus ja klientrakendus, mis võimaldaks saada infot pakutavate treeningute kohta, sisestada ja kuvada tunniplaani andmeid, registreerida osalejaid tundidesse ning teha muid asjakohaseid tegevusi nii klubi(de) personalil, liikmetel kui ka juhukasutajatel.&lt;br /&gt;
&lt;br /&gt;
==Veebiteenuse analüüs==&lt;br /&gt;
SPOTi veebiteenus võimaldab saada infot erinevate klubide treeningute kohta ja end neisse registreerida. Kasutaja saab teavet, kus ja millal treeningud toimuvad (tunniplaan), mida treeningus täpsemalt tehakse, mis stiiliga on tegemist, kes on treener, kui palju üks kord maksab jms info. Kasutajakontoga liikmel on võimalik end registreerida soovitud tundi ja hallata oma registreeringuid (muuta, tühistada).&lt;br /&gt;
&lt;br /&gt;
Spordiklubide infot haldavad süsteemi administraatorid, kes saavad lisada, muuta ja kustutada kõike sprodiklubiga seonduvat. Erinevaid treeninguid ja nendega seotud konkreetset infot saavad lisada ja hallata treenerid või spordiklubi esindajad.&lt;br /&gt;
&lt;br /&gt;
Projekti realiseerimiseks kasutame REST arhitektuuri ja ASP.NET MVC Web API tehnoloogiat.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Üldine plaan:&#039;&#039;&#039;&lt;br /&gt;
* esialgu üks kett (laienemise võimalusega)&lt;br /&gt;
* mitu klubi (asukoht, saalid-treeningualad, võimalikud lisatingimused)&lt;br /&gt;
* treeningute info (stiilid ehk kontseptid, litsentsid, …)&lt;br /&gt;
* tunniplaan (aeg, koht, instruktorid, max osalejate arv, ühe korra hind)&lt;br /&gt;
* registratuur (treeningutest osavõtjad)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kasutajad (rollid):&#039;&#039;&#039;&lt;br /&gt;
* administraatorid (saavad teha muudatusi)&lt;br /&gt;
* treenerid (info kvalifikatsiooni, litsentside kohta, õigus treeninguid lisada) &lt;br /&gt;
* liikmed (saavad treeningutele registreeruda)&lt;br /&gt;
* ülejäänud (näevad klubide ja treeningute infot ning tunniplaani)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Peaks olema:&#039;&#039;&#039;&lt;br /&gt;
* kasutajate loomine&lt;br /&gt;
* kasutajate tuvastamine ja haldamine&lt;br /&gt;
* kasutajate ja kasutusstatistika logimine&lt;br /&gt;
* teenuse poole pöördumiste arvu piiramine ja piirangute haldamine&lt;br /&gt;
* klubide, treenerite ja treeningute info väljastamine&lt;br /&gt;
* tunniplaani info väljastamine&lt;br /&gt;
* treeningutesse registreerimine&lt;br /&gt;
* registreeringu tühistamine&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Võiks olla:&#039;&#039;&#039;&lt;br /&gt;
* klubide, treenerite, treeningute lisamine ja muutmine&lt;br /&gt;
* tunniplaanis treeningute tühistamine&lt;br /&gt;
* sisestatud andmete kustutamine (pehmelt)&lt;br /&gt;
* rollide-õiguste määramine (admin)&lt;br /&gt;
* asukohad mitmes riigis&lt;br /&gt;
* kliendipaketid, arveldus&lt;br /&gt;
* kontaktide tsentraliseeritud haldus&lt;br /&gt;
* sisselogimine läbi Google’i, Facebooki vmt teenuse&lt;br /&gt;
&lt;br /&gt;
===Andmebaasi skeem (lihtsustatud)===&lt;br /&gt;
&lt;br /&gt;
[[File:SPOTService ERD.JPG|border|SPOT Service ERD]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Märkus: olemite atribuutidest on välja toodud ainult peamised.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====Tabelite kirjeldused====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kasutajahaldus*:&#039;&#039;&#039;&lt;br /&gt;
* User - kasutajate andmed&lt;br /&gt;
* Role - rollid, millega määratakse kasutajate õigused (&amp;quot;Admin&amp;quot;, &amp;quot;Trainer&amp;quot;, ...)&lt;br /&gt;
* UserRole - kasutajate sidumine rolli(de)ga&lt;br /&gt;
* UserLogin - muu teenuse kaudu sisselogimiseks&lt;br /&gt;
* UserClaim - muu teenuse kaudu sisselogimiseks&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;&#039;&#039;Kasutajahalduse süsteem toetub Asp.Net Identity valmislahendusele, mida on täiendanud A. Käver.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Klubid:&#039;&#039;&#039;&lt;br /&gt;
* Chain (optional) - spordiklubikettide info&lt;br /&gt;
* Location - spordiklubi/-rajatise asukoht linna/asula täpsusega&lt;br /&gt;
* Facility - spordiklubi/-rajatise andmed, seotud asukohaga ja vajadusel ketiga.&lt;br /&gt;
* Venue - spordiklubis/-rajatises kasutatavad saalid ja muud treeningualad&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Treeningud:&#039;&#039;&#039;&lt;br /&gt;
* Concept (Style) - treeningustiilid ehk kontseptid&lt;br /&gt;
* Licenser (optional) - treeninguliikide litsentsid (kui on)&lt;br /&gt;
* Training - treeninguliikide andmed, seotud stiili ja vajadusel litsentsiga&lt;br /&gt;
* Trainer (User (role: Trainer) + Training) - treeninguliikide sidumine treeneritega&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tunniplaan:&#039;&#039;&#039;&lt;br /&gt;
* ScheduleItem - treeningud tunniplaanis&lt;br /&gt;
* Instructor (User (role: Trainer) + ScheduleItem) - tundide juhendajad (võib olla mitu)&lt;br /&gt;
* Registration (ScheduleItem + User (role: any)) - tundidesse tehtud registreeringud&lt;br /&gt;
&lt;br /&gt;
== XML / XSD / XSLT==&lt;br /&gt;
Projekti esimeses etapis sai loodud XML andmefail, mille ülesehitus on paika pandud XSD skeemifailis. Lisaks on olemas kaks stiilifaili: esimene neist transformeerib andmed HTML-kujule, et kuvada infot  veebilehel, teine tekitab samade andmete esitamiseks uue struktuuriga XML faili.&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/ProjectSPOT_ScheduleXml.zip Lae failid alla.] &lt;br /&gt;
&lt;br /&gt;
=== XML ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Fail sisaldab andmeid ühes spordiklubis pakutavate treeningute kohta. Andmed on esitatud treeninguliikide kaupa, mille juurde on lisatud ka vastava treeninguliigi tunniplaan. Treeninguliikidel on nimi ja kirjeldus ning vajadusel ära märgitud ka litsents. Failis on eraldi välja toodud treeningustiilid, instruktorid ja ruumid, kus treeningud toimuvad. Iga treeninguliik kuulub ühe või mitme stiili alla. Instruktoritel on tagasiside põhjal saadud hinne. Treeninguruumidel on vaikimisi määratud mahutavus. Tunniplaanis on ära toodud treeningu koht, algusaeg ja kestus ning instruktorid. Vajadusel saab eraldi määrata ka treeningurühma suuruse, kui see erineb tavalisest ruumi mahutavusest. Ka on võimalik treeningutunnile lisada kommentaar. Erinevate elementide andmed on omavahel seotud id-atribuutidega.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;?xml-stylesheet type=&amp;quot;text/xsl&amp;quot; href=&amp;quot;trainingsToHtml.xslt&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Trainings&amp;gt;&lt;br /&gt;
  &amp;lt;Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;![CDATA[Cardio]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
  &amp;lt;/Styles&amp;gt;&lt;br /&gt;
  &amp;lt;Instructors&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;1&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Yogafier]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;2&amp;quot; Rating=&amp;quot;4.7&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Mickey Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;3&amp;quot; Rating=&amp;quot;4.6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;4&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Donald Duck]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;5&amp;quot; Rating=&amp;quot;3.9&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Goofy]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;6&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Schwarzenegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;8&amp;quot; Rating=&amp;quot;4.8&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Kayla Weightlifter]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;9&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Margaret Strengthener]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
  &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;Venues&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;1&amp;quot; GroupSize=&amp;quot;45&amp;quot;&amp;gt;&amp;lt;![CDATA[Main Hall]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 2]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;3&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 3]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;4&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 4]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;5&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 5]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&amp;lt;![CDATA[Area 6]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;7&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&amp;lt;![CDATA[Yoga Hall]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
  &amp;lt;/Venues&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Yoga]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[Yoga is a group of physical, mental, and spiritual practices or disciplines which originated in ancient India. ]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;1&amp;quot; VenueId=&amp;quot;7&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-25T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;14&amp;quot; VenueId=&amp;quot;7&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT1H20M&amp;quot;&amp;gt;2017-03-28T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Comment&amp;gt;&lt;br /&gt;
          &amp;lt;![CDATA[Special class!]]&amp;gt;&lt;br /&gt;
        &amp;lt;/Comment&amp;gt; &lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/Nvlxn0EnmbM&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;  &lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;2&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyBalance™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[BODYBALANCE™ is the Yoga, Tai Chi, Pilates workout that builds flexibility and strength and leaves you feeling centered and calm. Based on a carefully structured series of stretches, moves and poses to music it creates a holistic workout that brings the body into a state of harmony and balance. This class will heighten your flexibility and inner strength creating a strong supple body from the inside out. Burn on average 390cals per hour.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;2&amp;quot; VenueId=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-31T12:15:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;3&amp;quot; VenueId=&amp;quot;2&amp;quot; &amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-30T13:30:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;3&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/jJxA6vBjUqY&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;3&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyJam™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;4&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[The Body Jam program is an addictive fusion of the latest dance styles to the hottest new sounds. This class isn’t just for dancers, it’s for everyone because the emphasis is put on not only having fun but also breaking a sweat. So grab a friend, get front and centre … you bring the attitude and we’ll bring the moves!]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;4&amp;quot;  VenueId=&amp;quot;3&amp;quot; &amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T16:10:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;4&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;5&amp;quot; VenueId=&amp;quot;5&amp;quot; &amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT45M&amp;quot;&amp;gt;2017-04-01T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;5&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/8PTXyg9si_4&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;4&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyPump™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[BodyPump classes are 59 minutes long and contain eight separate muscle-group specific songs or &amp;quot;tracks&amp;quot; along with an opening warm up track and closing cool-down track. There are also 45-minute and 30-minute class formats. The classes are performed to music using free weights-plates, barbells and an aerobic step. Participants choose their weights based on the exercise and their personal goals. Major muscle groups are worked via series of compound and isolation-based exercises including squats, presses, dead lifts. The focus is towards muscle endurance by moving light weights at high repetitions, what Les Mills calls the Rep Effect.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;3&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;6&amp;quot; VenueId=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;6&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;7&amp;quot; VenueId=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-23T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;6&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/zU_0XrdO3wo&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[CoreStrenght is a very hard workout! Not for beginners.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;3&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;8&amp;quot; VenueId=&amp;quot;6&amp;quot; GroupSize=&amp;quot;10&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT2H&amp;quot;&amp;gt;2017-03-23T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;9&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Comment&amp;gt;&lt;br /&gt;
          &amp;lt;![CDATA[Special challenge!]]&amp;gt;&lt;br /&gt;
        &amp;lt;/Comment&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;9&amp;quot; VenueId=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;8&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;10&amp;quot; VenueId=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-04-05T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;8&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;9&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/ZxTVmpvyUt8&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[Zumba involves dance and aerobic movements performed to energetic music. The choreography incorporates hip-hop, soca, samba, salsa, merengue and mambo. Squats and lunges are also included.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;4&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;11&amp;quot; VenueId=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT55M&amp;quot;&amp;gt;2017-03-26T15:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;12&amp;quot; VenueId=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-28T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;13&amp;quot; VenueId=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/-ZB6XIkfxnQ&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
&amp;lt;/Trainings&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSD ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Skeemifail kontrollib eelnevas andmefailis esitatud andmete vastavust kokkulepitud formaadile, samuti õigete andmetüüpide kasutamist. Alamelemendi id-atribuudi väärtus peab olema iga elemendirühma lõikes unikaalne. Kohustuslike elementide ja atribuutide kõrval on ka mõned (nt kommentaar), mille olemasolu pole alati tarvilik. Teatud puhkudel on piiratud maksimaalset elementide arvu (nt treeningutunni algusaeg). Faili üldine struktuur on kindel, aga alati pole alamelementide järjekord oluline (nt treeninguliigi puhul).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xs:schema attributeFormDefault=&amp;quot;unqualified&amp;quot; elementFormDefault=&amp;quot;qualified&amp;quot; xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xs:element name=&amp;quot;Trainings&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Styles&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Style&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
          &amp;lt;xs:unique name=&amp;quot;UniqueStyleId&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xs:selector xpath=&amp;quot;Style&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Instructors&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;Name&amp;quot; type=&amp;quot;xs:string&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:attribute name=&amp;quot;Rating&amp;quot; type=&amp;quot;xs:decimal&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
          &amp;lt;xs:unique name=&amp;quot;UniqueInstructorId&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xs:selector xpath=&amp;quot;Instructor&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Venues&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Venue&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:attribute name=&amp;quot;GroupSize&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
          &amp;lt;xs:unique name=&amp;quot;UniqueVenueId&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xs:selector xpath=&amp;quot;Venue&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Training&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:all&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Description&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Styles&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Style&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Schedule&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;ScheduleItem&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:all&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element  maxOccurs=&amp;quot;1&amp;quot; name=&amp;quot;Time&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:extension base=&amp;quot;xs:dateTime&amp;quot;&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:attribute name=&amp;quot;Duration&amp;quot; type=&amp;quot;xs:duration&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element name=&amp;quot;Instructors&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                    &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                                      &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                                        &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                                      &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                                    &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                                  &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; name=&amp;quot;Comment&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:all&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;VenueId&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;GroupSize&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;optional&amp;quot; /&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;VideoUrl&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:all&amp;gt;&lt;br /&gt;
            &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xs:attribute name=&amp;quot;Licence&amp;quot; type=&amp;quot;xs:string&amp;quot; use=&amp;quot;optional&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
    &amp;lt;xs:unique name=&amp;quot;UniqueTrainingId&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xs:selector xpath=&amp;quot;Training&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
    &amp;lt;xs:unique name=&amp;quot;UniqueScheduleItemId&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xs:selector xpath=&amp;quot;Training/Schedule/ScheduleItem&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSLT (html) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Selles transformatsioonifailis on kirjeldatud XML failis olevate andmete [http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/trainings.xml  kuvamise viis veebilehel]. Treeninguliigid on jaotatud stiiliblokkidesse (mõni treening kuulub mitme stiili alla). Iga treeninguliigi all on tabeli kujul esitatud tunniplaan ning lisatud näidisvideo ja kirjeldus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot; xmlns:msxsl=&amp;quot;urn:schemas-microsoft-com:xslt&amp;quot; exclude-result-prefixes=&amp;quot;msxsl&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:output method=&amp;quot;html&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;html&amp;gt;&lt;br /&gt;
      &amp;lt;head&amp;gt;&lt;br /&gt;
        &amp;lt;title&amp;gt;SuperSportsClub - Trainings&amp;lt;/title&amp;gt;&lt;br /&gt;
        &amp;lt;style&amp;gt;&lt;br /&gt;
          body {&lt;br /&gt;
          background:BurlyWood;&lt;br /&gt;
          text-align: center;&lt;br /&gt;
          }&lt;br /&gt;
          .section {&lt;br /&gt;
          text-align:left;&lt;br /&gt;
          width:1000px;&lt;br /&gt;
          padding:20px;&lt;br /&gt;
          background:Chocolate;&lt;br /&gt;
          margin: auto;&lt;br /&gt;
          }&lt;br /&gt;
          table, th, td, .section {&lt;br /&gt;
          border: 1px solid black;&lt;br /&gt;
          }&lt;br /&gt;
          th {&lt;br /&gt;
          text-align:left;&lt;br /&gt;
          padding-left: 10px;&lt;br /&gt;
          padding-right: 10px;&lt;br /&gt;
          }&lt;br /&gt;
          td {&lt;br /&gt;
          text-align:center;&lt;br /&gt;
          }&lt;br /&gt;
          p {&lt;br /&gt;
          text-align:justify;&lt;br /&gt;
          }&lt;br /&gt;
          .description {&lt;br /&gt;
          vertical-align:top; &lt;br /&gt;
          padding:10px;&lt;br /&gt;
          }&lt;br /&gt;
        &amp;lt;/style&amp;gt;&lt;br /&gt;
      &amp;lt;/head&amp;gt;&lt;br /&gt;
      &amp;lt;body&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;Trainings at SuperSportsClub&amp;lt;/h1&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;/Trainings/Styles/Style&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:sort select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:variable select=&amp;quot;.&amp;quot; name=&amp;quot;SelectedStyle&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;section&amp;quot; &amp;gt;&lt;br /&gt;
            &amp;lt;h2&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select=&amp;quot;$SelectedStyle&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/h2&amp;gt;&lt;br /&gt;
            &amp;lt;ul&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:for-each select=&amp;quot;/Trainings/Training&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:sort select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:variable name=&amp;quot;Training&amp;quot; select=&amp;quot;.&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:if test=&amp;quot;Styles/Style/@Id = $SelectedStyle/@Id&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;&lt;br /&gt;
                    &amp;lt;h3&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;$Training/Name&amp;quot; /&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:if test=&amp;quot;$Training/@Licence&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:text&amp;gt; (&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:value-of select=&amp;quot;$Training/@Licence&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:text&amp;gt;)&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
                    &amp;lt;/h3&amp;gt;&lt;br /&gt;
                    &amp;lt;table&amp;gt;&lt;br /&gt;
                      &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                      &amp;lt;/tr&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:for-each select=&amp;quot;$Training/Schedule/ScheduleItem&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:sort select=&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:variable name=&amp;quot;StartTime&amp;quot; select=&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:variable name=&amp;quot;Duration&amp;quot; select=&amp;quot;$StartTime/@Duration&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;tr&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;150&amp;quot; &amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;concat(&lt;br /&gt;
                                            substring($StartTime, 9, 2), &lt;br /&gt;
                                            &#039;.&#039;, &lt;br /&gt;
                                            substring($StartTime, 6, 2), &lt;br /&gt;
                                            &#039;.&#039;, &lt;br /&gt;
                                            substring($StartTime, 1, 4),&lt;br /&gt;
                                            &#039; &#039;,&lt;br /&gt;
                                            substring($StartTime, 12, 2),&lt;br /&gt;
                                            &#039;:&#039;,&lt;br /&gt;
                                            substring($StartTime, 15, 2))&lt;br /&gt;
                                            &amp;quot; /&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:if test=&amp;quot;Comment&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;br/&amp;gt;&lt;br /&gt;
                              &amp;lt;div style=&amp;quot;color:Green&amp;quot;&amp;gt;&lt;br /&gt;
                                &amp;lt;xsl:value-of select=&amp;quot;Comment&amp;quot;/&amp;gt;&lt;br /&gt;
                              &amp;lt;/div&amp;gt;&lt;br /&gt;
                            &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;substring($Duration, 3, 6)&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:variable name=&amp;quot;VenueId&amp;quot; select=&amp;quot;@VenueId&amp;quot;/&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;/Trainings/Venues/Venue[@Id=$VenueId]&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:for-each select=&amp;quot;Instructors/Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:variable name=&amp;quot;InstructorId&amp;quot; select=&amp;quot;@Id&amp;quot;&amp;gt;&amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:variable name=&amp;quot;SelectedInstructor&amp;quot; select=&amp;quot;/Trainings/Instructors/Instructor[@Id=$InstructorId]&amp;quot; /&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/Name&amp;quot;/&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:text&amp;gt; (&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/@Rating&amp;quot; /&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:text&amp;gt;)&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                              &amp;lt;br/&amp;gt;&lt;br /&gt;
                            &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;/tr&amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
                    &amp;lt;/table&amp;gt;&lt;br /&gt;
                    &amp;lt;br/&amp;gt;&lt;br /&gt;
                    &amp;lt;table&amp;gt;&lt;br /&gt;
                      &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                          &amp;lt;xsl:variable name=&amp;quot;VideoUrl&amp;quot; select=&amp;quot;$Training/VideoUrl&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;{$VideoUrl}&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                          &amp;lt;p&amp;gt;&lt;br /&gt;
                            &amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&lt;br /&gt;
                          &amp;lt;/p&amp;gt;&lt;br /&gt;
                          &amp;lt;p&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;$Training/Description&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                      &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;/table&amp;gt;&lt;br /&gt;
                  &amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
            &amp;lt;/ul&amp;gt;&lt;br /&gt;
          &amp;lt;/div&amp;gt;&lt;br /&gt;
          &amp;lt;br/&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
      &amp;lt;/body&amp;gt;&lt;br /&gt;
    &amp;lt;/html&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== HTML (transformeeritud) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/trainings.html Vaata eelneva transformatsiooni tulemust.]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;META http-equiv=&amp;quot;Content-Type&amp;quot; content=&amp;quot;text/html; charset=utf-8&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;SuperSportsClub - Trainings&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;style&amp;gt;&lt;br /&gt;
        body {&lt;br /&gt;
            background: BurlyWood;&lt;br /&gt;
            text-align: center;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        .section {&lt;br /&gt;
            text-align: left;&lt;br /&gt;
            width: 1000px;&lt;br /&gt;
            padding: 20px;&lt;br /&gt;
            background: Chocolate;&lt;br /&gt;
            margin: auto;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        table, th, td, .section {&lt;br /&gt;
            border: 1px solid black;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        th {&lt;br /&gt;
            text-align: left;&lt;br /&gt;
            padding-left: 10px;&lt;br /&gt;
            padding-right: 10px;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        td {&lt;br /&gt;
            text-align: center;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        p {&lt;br /&gt;
            text-align: justify;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        .description {&lt;br /&gt;
            vertical-align: top;&lt;br /&gt;
            padding: 10px;&lt;br /&gt;
        }&lt;br /&gt;
    &amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
    &amp;lt;h1&amp;gt;Trainings at SuperSportsClub&amp;lt;/h1&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Body&amp;amp;amp;Mind&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyBalance™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 13:30&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;1H15M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 2&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Minnie Mouse (4.6)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;31.03.2017 12:15&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;1H15M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 3&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Mickey Mouse (4.7)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/jJxA6vBjUqY&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                BODYBALANCE™ is the Yoga, Tai Chi, Pilates workout that builds flexibility and strength and leaves you feeling centered and calm. Based on a carefully structured series of stretches, moves and poses to music it creates a holistic workout that brings the body into a state of harmony and balance. This class will heighten your flexibility and inner strength creating a strong supple body from the inside out. Burn on average 390cals per hour.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;Yoga&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;25.03.2017 14:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Yoga Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Minnie Yogafier (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
                            28.03.2017 14:00&amp;lt;br&amp;gt;&amp;lt;div style=&amp;quot;color:Green&amp;quot;&amp;gt;&lt;br /&gt;
                                Special class!&lt;br /&gt;
                            &amp;lt;/div&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;1H20M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Yoga Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Minnie Yogafier (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/Nvlxn0EnmbM&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                Yoga is a group of physical, mental, and spiritual practices or disciplines which originated in ancient India.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Cardio&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyJam™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 16:10&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 3&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Donald Duck (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;01.04.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;45M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 5&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Goofy (3.9)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/8PTXyg9si_4&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                The Body Jam program is an addictive fusion of the latest dance styles to the hottest new sounds. This class isn’t just for dancers, it’s for everyone because the emphasis is put on not only having fun but also breaking a sweat. So grab a friend, get front and centre … you bring the attitude and we’ll bring the moves!&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Dance&amp;amp;amp;Fun&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyJam™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 16:10&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 3&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Donald Duck (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;01.04.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;45M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 5&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Goofy (3.9)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/8PTXyg9si_4&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                The Body Jam program is an addictive fusion of the latest dance styles to the hottest new sounds. This class isn’t just for dancers, it’s for everyone because the emphasis is put on not only having fun but also breaking a sweat. So grab a friend, get front and centre … you bring the attitude and we’ll bring the moves!&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;Zumba®&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;26.03.2017 15:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;55M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 2&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Zumbaschnegger (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;28.03.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 4&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Zumbaschnegger (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 2&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Zumbaschnegger (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/-ZB6XIkfxnQ&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                Zumba involves dance and aerobic movements performed to energetic music. The choreography incorporates hip-hop, soca, samba, salsa, merengue and mambo. Squats and lunges are also included.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Strength&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyPump™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;23.03.2017 13:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Main Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Schwarzenegger (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 13:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Main Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Schwarzenegger (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/zU_0XrdO3wo&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                BodyPump classes are 59 minutes long and contain eight separate muscle-group specific songs or &amp;quot;tracks&amp;quot; along with an opening warm up track and closing cool-down track. There are also 45-minute and 30-minute class formats. The classes are performed to music using free weights-plates, barbells and an aerobic step. Participants choose their weights based on the exercise and their personal goals. Major muscle groups are worked via series of compound and isolation-based exercises including squats, presses, dead lifts. The focus is towards muscle endurance by moving light weights at high repetitions, what Les Mills calls the Rep Effect.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;CoreStrength&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
                            23.03.2017 12:00&amp;lt;br&amp;gt;&amp;lt;div style=&amp;quot;color:Green&amp;quot;&amp;gt;&lt;br /&gt;
                                Special challenge!&lt;br /&gt;
                            &amp;lt;/div&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;2H&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Area 6&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Margaret Strengthener (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Area 6&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Kayla Weightlifter (4.8)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;05.04.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Area 6&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Kayla Weightlifter (4.8)&amp;lt;br&amp;gt;Margaret Strengthener (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/ZxTVmpvyUt8&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                CoreStrenght is a very hard workout! Not for beginners.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSLT (xml) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Selle transformatsiooniga luuakse uus [http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/schedule.xml XML fail], milles on treeningute andmed esitatud ühtse tunniplaani kujul. Algses failis erinevate elementide alla paigutatud andmed on nüüd tunniplaani alamelemendis kokku viidud. Sidumine on teostatud id-atribuutide abil. Tunniplaanis on ühes kohas kirjas treeningu nimi, stiil(id), koht, algusaeg, kestus, rühma suurus, instruktorid ja muu täiendav info.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&lt;br /&gt;
    xmlns:msxsl=&amp;quot;urn:schemas-microsoft-com:xslt&amp;quot; exclude-result-prefixes=&amp;quot;msxsl&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:output method=&amp;quot;xml&amp;quot; indent=&amp;quot;yes&amp;quot; cdata-section-elements=&amp;quot;Name Style Comment&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;/Trainings/Training&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:sort select=&amp;quot;Name&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:variable name=&amp;quot;SelectedTraining&amp;quot; select=&amp;quot;.&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;Schedule/ScheduleItem&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:sort select=&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;ScheduleItem&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:variable name=&amp;quot;VenueId&amp;quot; select=&amp;quot;@VenueId&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:variable name=&amp;quot;SelectedVenue&amp;quot; select=&amp;quot;/Trainings/Venues/Venue[@Id=$VenueId]&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:attribute name=&amp;quot;GroupSize&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;@GroupSize&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:value-of select=&amp;quot;@GroupSize&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:value-of select=&amp;quot;$SelectedVenue/@GroupSize&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
            &amp;lt;Venue&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$VenueId&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select=&amp;quot;$SelectedVenue&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/Venue&amp;gt;&lt;br /&gt;
            &amp;lt;Training&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$SelectedTraining/@Id&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:if test=&amp;quot;$SelectedTraining/@Licence&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:attribute name=&amp;quot;Licence&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:value-of select=&amp;quot;$SelectedTraining/@Licence&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
              &amp;lt;Name&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$SelectedTraining/Name&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/Name&amp;gt;&lt;br /&gt;
              &amp;lt;Styles&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:for-each select=&amp;quot;$SelectedTraining/Styles/Style&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:variable name=&amp;quot;StyleId&amp;quot; select=&amp;quot;@Id&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;Style&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:attribute name=&amp;quot;StyleId&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;$StyleId&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;/Trainings/Styles/Style[@Id=$StyleId]&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/Style&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
              &amp;lt;/Styles&amp;gt;&lt;br /&gt;
            &amp;lt;/Training&amp;gt;&lt;br /&gt;
            &amp;lt;Time&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:attribute name=&amp;quot;Duration&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;Time/@Duration&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select =&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/Time&amp;gt;&lt;br /&gt;
            &amp;lt;Instructors&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:for-each select=&amp;quot;Instructors/Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:variable name=&amp;quot;InstructorId&amp;quot; select=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:variable name=&amp;quot;SelectedInstructor&amp;quot; select=&amp;quot;/Trainings/Instructors/Instructor[@Id=$InstructorId]&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;Instructor&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;$InstructorId&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:attribute name=&amp;quot;Rating&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/@Rating&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                  &amp;lt;Name&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/Name&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/Name&amp;gt;&lt;br /&gt;
                &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
            &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:if test=&amp;quot;Comment&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;Comment&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;Comment&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/Comment&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
          &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XML (transformeeritud) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/schedule.xml Vaata eelneva transformatsiooni tulemust.]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Schedule&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;3&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot;&amp;gt;Hall 2&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;2&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyBalance™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-30T13:30:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;3&amp;quot; Rating=&amp;quot;4.6&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;2&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;3&amp;quot;&amp;gt;Hall 3&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;2&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyBalance™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-31T12:15:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;2&amp;quot; Rating=&amp;quot;4.7&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Mickey Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;4&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;3&amp;quot;&amp;gt;Hall 3&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;3&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyJam™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;![CDATA[Cardio]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T16:10:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;4&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Donald Duck]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;5&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;5&amp;quot;&amp;gt;Hall 5&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;3&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyJam™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;![CDATA[Cardio]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT45M&amp;quot;&amp;gt;2017-04-01T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;5&amp;quot; Rating=&amp;quot;3.9&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Goofy]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;7&amp;quot; GroupSize=&amp;quot;45&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;1&amp;quot;&amp;gt;Main Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;4&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyPump™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-23T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;6&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Schwarzenegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;6&amp;quot; GroupSize=&amp;quot;45&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;1&amp;quot;&amp;gt;Main Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;4&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyPump™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;6&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Schwarzenegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;8&amp;quot; GroupSize=&amp;quot;10&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot;&amp;gt;Area 6&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT2H&amp;quot;&amp;gt;2017-03-23T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;9&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Margaret Strengthener]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
    &amp;lt;Comment&amp;gt;&amp;lt;![CDATA[&lt;br /&gt;
          Special challenge!&lt;br /&gt;
        ]]&amp;gt;&amp;lt;/Comment&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;9&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot;&amp;gt;Area 6&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;8&amp;quot; Rating=&amp;quot;4.8&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Kayla Weightlifter]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;10&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot;&amp;gt;Area 6&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-04-05T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;8&amp;quot; Rating=&amp;quot;4.8&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Kayla Weightlifter]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;9&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Margaret Strengthener]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;11&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot;&amp;gt;Hall 2&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT55M&amp;quot;&amp;gt;2017-03-26T15:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;12&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;4&amp;quot;&amp;gt;Hall 4&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-28T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;13&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot;&amp;gt;Hall 2&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;1&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;7&amp;quot;&amp;gt;Yoga Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Yoga]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-25T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;1&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Yogafier]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;14&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;7&amp;quot;&amp;gt;Yoga Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Yoga]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT1H20M&amp;quot;&amp;gt;2017-03-28T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;1&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Yogafier]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
    &amp;lt;Comment&amp;gt;&amp;lt;![CDATA[&lt;br /&gt;
          Special class!&lt;br /&gt;
        ]]&amp;gt;&amp;lt;/Comment&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
&amp;lt;/Schedule&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus ==&lt;br /&gt;
Angular JS &#039;&#039;single page application&#039;&#039; eelnevalt kirjeldatud veebiteenusele. Sisse logimata saab kuvada spordiklubi tunniplaani nädalate kaupa, treeninguliike stiilide kaupa ja treenereid. Võimalik on liituda teenusega ja registreeruda treeningutele, samuti registreeringuid tühistada nii otse tunniplaanist kui ka registreeringute lehel. Esialgu põhineb süsteem ühel spordiklubil. Kasutamise eelduseks on tunniplaani olemasolu andmebaasis.&lt;br /&gt;
&lt;br /&gt;
Autentimine on lahendatud tokenipõhiselt. Eeskuju ja põhjana kasutasime näidisrakendust, mille juhend ja lähtekood on leitav [http://bitoftech.net/2014/06/09/angularjs-token-authentication-using-asp-net-web-api-2-owin-asp-net-identity/ siit].&lt;br /&gt;
&lt;br /&gt;
== Lähtekood ==&lt;br /&gt;
Eksamiks valminud veebiteenuse ja klientrakenduse kokkupakitult allalaadimiseks klõpsa [http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/solution/ProjectSPOT.zip sellel lingil]. WebApi ja Angular JS klient on eraldi lahendustes. Kliendi testimiseks brauseris (Chrome, Firefox vm) tuleb eelnevalt käivitada ka veebiteenus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;NB! Võib juhtuda, et WebApi esmakordsel käivitamisel loodavasse andmebaasi kõiki andmeid (tunniplaani ja registreerimisi jooksvasse nädalasse) ei lisandu. Sellisel juhul kustuta tekkinud andmebaas ja käivita kõigepealt samas lahenduses olev konsoolirakendus.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Retsensioonid ==&lt;br /&gt;
&lt;br /&gt;
# [https://wiki.itcollege.ee/index.php/Talk:JRT XML/XSD/XSLT retsensioon meeskonnale JRT]&lt;br /&gt;
# [Veebiteenuse retsensioon lisandub varsti]&lt;br /&gt;
# [Klientrakenduse retsensioon lisandub varsti]&lt;br /&gt;
&lt;br /&gt;
== Log ==&lt;br /&gt;
* 03.03.17 Esimene kohtumine. Idee.&lt;br /&gt;
* 17.03.17 Osa XMList valmis, osa XSLT-st valmis.&lt;br /&gt;
* 18.03.17 Teine kohtumine. XMLi täiendamine, esimene ülekäimine XSD-s.&lt;br /&gt;
* 19.03.17 XML/XSLT/XSD täiendamine ja lõpetamine.&lt;br /&gt;
* 20.03.17 XML fail, skeemifail ja stiilifailid esitatud. Projekti esimese etapi lõpp. Kevade algus.&lt;br /&gt;
* 26.03.17 XML/XSLT/XSD retsensioon esitatud.&lt;br /&gt;
* 16.04.17 Veebiteenuse analüüsi koostamine.&lt;br /&gt;
* 17.04.17 Esialgne veebiteenuse analüüs ja kavand valmis.&lt;br /&gt;
* 19.04.17 Alustasime veebiteenusega, koostegemine: Domain, DAL, Interfaces, Repostitories. Testimine konsoolis.&lt;br /&gt;
* 24.04.17 Veebiteenuse koostegemine, 2. kord: Domaini täiendamine.&lt;br /&gt;
* 29.04.17 Veebiteenuse koostegemine, 3. kord: Interfaces, Repositories, Factory + UOW. Testimine konsoolis.&lt;br /&gt;
* 01.05.17 Andmebaasi täitmine testandmetega varasemas faasis loodud XML failist.&lt;br /&gt;
* 02.05.17 Veebiteenuse koostegemine, 4. kord: alustasime BLi ja WebApi ehitamist. GET päringud.&lt;br /&gt;
* 09.05.17 Veebiteenuse koostegemine, 5. kord: lisasime Identity.&lt;br /&gt;
* 11.05.17 Veebiteenuse koostegemine, 6. kord: WebApi arendamine. POST, PUT ja DELETE päringud.&lt;br /&gt;
* 15.05.17 Veebiteenuse koostegemine, 7. kord: WebApi arendamine. Lisasime  api kontrollereid.&lt;br /&gt;
* 16.05.17 Veebiteenuse koostegemine, 8. kord: WebApi arendamine. Identity kontroll Fiddleri ja Postmaniga.&lt;br /&gt;
* 20.05.17 Klientrakenduse koostegemine, 1. kord. Testklient.&lt;br /&gt;
* 25.05.17 Klientrakenduse koostegemine, 2. kord. Klientrakenduse arendamine.&lt;br /&gt;
* 01.06.17 Klientrakenduse koostegemine, 3. kord. Klientrakenduse arendamine. Angular JS.&lt;br /&gt;
* 03.06.17 - 11.06.17 Klientrakenduse arendamine. Tokenipõhine autentimine. Veebiteenuse viimistlemine.&lt;br /&gt;
* 11.06.17 Lõpptähtaeg. Projekti esitlemine eksamil.&lt;br /&gt;
* 12.06.17 Teiste lahenduste retsenseerimine.&lt;/div&gt;</summary>
		<author><name>Otiks</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Team_SPOT&amp;diff=123512</id>
		<title>Team SPOT</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Team_SPOT&amp;diff=123512"/>
		<updated>2017-06-12T13:33:25Z</updated>

		<summary type="html">&lt;p&gt;Otiks: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://wiki.itcollege.ee/index.php/Kodut%C3%B6%C3%B6_aines_%22V%C3%B5rgurakendused_II:_hajuss%C3%BCsteemide_ehitamine%22_2017 Kodutöö aines &amp;quot;Võrgurakendused II: hajussüsteemide ehitamine&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
[https://projectspot.visualstudio.com/PROJECTSPOT Projekti kodu Visual Studio lehel (avaneb ainult liikmetele)]&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==Liikmed==&lt;br /&gt;
*Sigrid Pachel&lt;br /&gt;
*Oliver Tiks&lt;br /&gt;
&lt;br /&gt;
==Idee==&lt;br /&gt;
Mõttes on luua spordiklubi(de) veebiteenus ja klientrakendus, mis võimaldaks saada infot pakutavate treeningute kohta, sisestada ja kuvada tunniplaani andmeid, registreerida osalejaid tundidesse ning teha muid asjakohaseid tegevusi nii klubi(de) personalil, liikmetel kui ka juhukasutajatel.&lt;br /&gt;
&lt;br /&gt;
==Veebiteenuse analüüs==&lt;br /&gt;
SPOTi veebiteenus võimaldab saada infot erinevate klubide treeningute kohta ja end neisse registreerida. Kasutaja saab teavet, kus ja millal treeningud toimuvad (tunniplaan), mida treeningus täpsemalt tehakse, mis stiiliga on tegemist, kes on treener, kui palju üks kord maksab jms info. Kasutajakontoga liikmel on võimalik end registreerida soovitud tundi ja hallata oma registreeringuid (muuta, tühistada).&lt;br /&gt;
&lt;br /&gt;
Spordiklubide infot haldavad süsteemi administraatorid, kes saavad lisada, muuta ja kustutada kõike sprodiklubiga seonduvat. Erinevaid treeninguid ja nendega seotud konkreetset infot saavad lisada ja hallata treenerid või spordiklubi esindajad.&lt;br /&gt;
&lt;br /&gt;
Projekti realiseerimiseks kasutame REST arhitektuuri ja ASP.NET MVC Web API tehnoloogiat.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Üldine plaan:&#039;&#039;&#039;&lt;br /&gt;
* esialgu üks kett (laienemise võimalusega)&lt;br /&gt;
* mitu klubi (asukoht, saalid-treeningualad, võimalikud lisatingimused)&lt;br /&gt;
* treeningute info (stiilid ehk kontseptid, litsentsid, …)&lt;br /&gt;
* tunniplaan (aeg, koht, instruktorid, max osalejate arv, ühe korra hind)&lt;br /&gt;
* registratuur (treeningutest osavõtjad)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kasutajad (rollid):&#039;&#039;&#039;&lt;br /&gt;
* administraatorid (saavad teha muudatusi)&lt;br /&gt;
* treenerid (info kvalifikatsiooni, litsentside kohta, õigus treeninguid lisada) &lt;br /&gt;
* liikmed (saavad treeningutele registreeruda)&lt;br /&gt;
* ülejäänud (näevad klubide ja treeningute infot ning tunniplaani)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Peaks olema:&#039;&#039;&#039;&lt;br /&gt;
* kasutajate loomine&lt;br /&gt;
* kasutajate tuvastamine ja haldamine&lt;br /&gt;
* kasutajate ja kasutusstatistika logimine&lt;br /&gt;
* teenuse poole pöördumiste arvu piiramine ja piirangute haldamine&lt;br /&gt;
* klubide, treenerite ja treeningute info väljastamine&lt;br /&gt;
* tunniplaani info väljastamine&lt;br /&gt;
* treeningutesse registreerimine&lt;br /&gt;
* registreeringu tühistamine&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Võiks olla:&#039;&#039;&#039;&lt;br /&gt;
* klubide, treenerite, treeningute lisamine ja muutmine&lt;br /&gt;
* tunniplaanis treeningute tühistamine&lt;br /&gt;
* sisestatud andmete kustutamine (pehmelt)&lt;br /&gt;
* rollide-õiguste määramine (admin)&lt;br /&gt;
* asukohad mitmes riigis&lt;br /&gt;
* kliendipaketid, arveldus&lt;br /&gt;
* kontaktide tsentraliseeritud haldus&lt;br /&gt;
* sisselogimine läbi Google’i, Facebooki vmt teenuse&lt;br /&gt;
&lt;br /&gt;
===Andmebaasi skeem (lihtsustatud)===&lt;br /&gt;
&lt;br /&gt;
[[File:SPOTService ERD.JPG|border|SPOT Service ERD]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Märkus: olemite atribuutidest on välja toodud ainult peamised.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====Tabelite kirjeldused====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kasutajahaldus*:&#039;&#039;&#039;&lt;br /&gt;
* User - kasutajate andmed&lt;br /&gt;
* Role - rollid, millega määratakse kasutajate õigused (&amp;quot;Admin&amp;quot;, &amp;quot;Trainer&amp;quot;, ...)&lt;br /&gt;
* UserRole - kasutajate sidumine rolli(de)ga&lt;br /&gt;
* UserLogin - muu teenuse kaudu sisselogimiseks&lt;br /&gt;
* UserClaim - muu teenuse kaudu sisselogimiseks&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;&#039;&#039;Kasutajahalduse süsteem toetub Asp.Net Identity valmislahendusele, mida on täiendanud A. Käver.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Klubid:&#039;&#039;&#039;&lt;br /&gt;
* Chain (optional) - spordiklubikettide info&lt;br /&gt;
* Location - spordiklubi/-rajatise asukoht linna/asula täpsusega&lt;br /&gt;
* Facility - spordiklubi/-rajatise andmed, seotud asukohaga ja vajadusel ketiga.&lt;br /&gt;
* Venue - spordiklubis/-rajatises kasutatavad saalid ja muud treeningualad&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Treeningud:&#039;&#039;&#039;&lt;br /&gt;
* Concept (Style) - treeningustiilid ehk kontseptid&lt;br /&gt;
* Licenser (optional) - treeninguliikide litsentsid (kui on)&lt;br /&gt;
* Training - treeninguliikide andmed, seotud stiili ja vajadusel litsentsiga&lt;br /&gt;
* Trainer (User (role: Trainer) + Training) - treeninguliikide sidumine treeneritega&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tunniplaan:&#039;&#039;&#039;&lt;br /&gt;
* ScheduleItem - treeningud tunniplaanis&lt;br /&gt;
* Instructor (User (role: Trainer) + ScheduleItem) - tundide juhendajad (võib olla mitu)&lt;br /&gt;
* Registration (ScheduleItem + User (role: any)) - tundidesse tehtud registreeringud&lt;br /&gt;
&lt;br /&gt;
== XML / XSD / XSLT==&lt;br /&gt;
Projekti esimeses etapis sai loodud XML andmefail, mille ülesehitus on paika pandud XSD skeemifailis. Lisaks on olemas kaks stiilifaili: esimene neist transformeerib andmed HTML-kujule, et kuvada infot  veebilehel, teine tekitab samade andmete esitamiseks uue struktuuriga XML faili.&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/ProjectSPOT_ScheduleXml.zip Lae failid alla.] &lt;br /&gt;
&lt;br /&gt;
=== XML ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Fail sisaldab andmeid ühes spordiklubis pakutavate treeningute kohta. Andmed on esitatud treeninguliikide kaupa, mille juurde on lisatud ka vastava treeninguliigi tunniplaan. Treeninguliikidel on nimi ja kirjeldus ning vajadusel ära märgitud ka litsents. Failis on eraldi välja toodud treeningustiilid, instruktorid ja ruumid, kus treeningud toimuvad. Iga treeninguliik kuulub ühe või mitme stiili alla. Instruktoritel on tagasiside põhjal saadud hinne. Treeninguruumidel on vaikimisi määratud mahutavus. Tunniplaanis on ära toodud treeningu koht, algusaeg ja kestus ning instruktorid. Vajadusel saab eraldi määrata ka treeningurühma suuruse, kui see erineb tavalisest ruumi mahutavusest. Ka on võimalik treeningutunnile lisada kommentaar. Erinevate elementide andmed on omavahel seotud id-atribuutidega.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;?xml-stylesheet type=&amp;quot;text/xsl&amp;quot; href=&amp;quot;trainingsToHtml.xslt&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Trainings&amp;gt;&lt;br /&gt;
  &amp;lt;Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;![CDATA[Cardio]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
  &amp;lt;/Styles&amp;gt;&lt;br /&gt;
  &amp;lt;Instructors&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;1&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Yogafier]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;2&amp;quot; Rating=&amp;quot;4.7&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Mickey Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;3&amp;quot; Rating=&amp;quot;4.6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;4&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Donald Duck]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;5&amp;quot; Rating=&amp;quot;3.9&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Goofy]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;6&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Schwarzenegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;8&amp;quot; Rating=&amp;quot;4.8&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Kayla Weightlifter]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;9&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Margaret Strengthener]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
  &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;Venues&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;1&amp;quot; GroupSize=&amp;quot;45&amp;quot;&amp;gt;&amp;lt;![CDATA[Main Hall]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 2]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;3&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 3]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;4&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 4]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;5&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 5]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&amp;lt;![CDATA[Area 6]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;7&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&amp;lt;![CDATA[Yoga Hall]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
  &amp;lt;/Venues&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Yoga]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[Yoga is a group of physical, mental, and spiritual practices or disciplines which originated in ancient India. ]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;1&amp;quot; VenueId=&amp;quot;7&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-25T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;14&amp;quot; VenueId=&amp;quot;7&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT1H20M&amp;quot;&amp;gt;2017-03-28T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Comment&amp;gt;&lt;br /&gt;
          &amp;lt;![CDATA[Special class!]]&amp;gt;&lt;br /&gt;
        &amp;lt;/Comment&amp;gt; &lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/Nvlxn0EnmbM&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;  &lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;2&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyBalance™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[BODYBALANCE™ is the Yoga, Tai Chi, Pilates workout that builds flexibility and strength and leaves you feeling centered and calm. Based on a carefully structured series of stretches, moves and poses to music it creates a holistic workout that brings the body into a state of harmony and balance. This class will heighten your flexibility and inner strength creating a strong supple body from the inside out. Burn on average 390cals per hour.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;2&amp;quot; VenueId=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-31T12:15:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;3&amp;quot; VenueId=&amp;quot;2&amp;quot; &amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-30T13:30:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;3&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/jJxA6vBjUqY&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;3&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyJam™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;4&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[The Body Jam program is an addictive fusion of the latest dance styles to the hottest new sounds. This class isn’t just for dancers, it’s for everyone because the emphasis is put on not only having fun but also breaking a sweat. So grab a friend, get front and centre … you bring the attitude and we’ll bring the moves!]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;4&amp;quot;  VenueId=&amp;quot;3&amp;quot; &amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T16:10:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;4&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;5&amp;quot; VenueId=&amp;quot;5&amp;quot; &amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT45M&amp;quot;&amp;gt;2017-04-01T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;5&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/8PTXyg9si_4&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;4&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyPump™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[BodyPump classes are 59 minutes long and contain eight separate muscle-group specific songs or &amp;quot;tracks&amp;quot; along with an opening warm up track and closing cool-down track. There are also 45-minute and 30-minute class formats. The classes are performed to music using free weights-plates, barbells and an aerobic step. Participants choose their weights based on the exercise and their personal goals. Major muscle groups are worked via series of compound and isolation-based exercises including squats, presses, dead lifts. The focus is towards muscle endurance by moving light weights at high repetitions, what Les Mills calls the Rep Effect.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;3&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;6&amp;quot; VenueId=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;6&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;7&amp;quot; VenueId=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-23T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;6&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/zU_0XrdO3wo&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[CoreStrenght is a very hard workout! Not for beginners.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;3&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;8&amp;quot; VenueId=&amp;quot;6&amp;quot; GroupSize=&amp;quot;10&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT2H&amp;quot;&amp;gt;2017-03-23T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;9&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Comment&amp;gt;&lt;br /&gt;
          &amp;lt;![CDATA[Special challenge!]]&amp;gt;&lt;br /&gt;
        &amp;lt;/Comment&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;9&amp;quot; VenueId=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;8&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;10&amp;quot; VenueId=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-04-05T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;8&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;9&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/ZxTVmpvyUt8&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[Zumba involves dance and aerobic movements performed to energetic music. The choreography incorporates hip-hop, soca, samba, salsa, merengue and mambo. Squats and lunges are also included.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;4&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;11&amp;quot; VenueId=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT55M&amp;quot;&amp;gt;2017-03-26T15:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;12&amp;quot; VenueId=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-28T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;13&amp;quot; VenueId=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/-ZB6XIkfxnQ&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
&amp;lt;/Trainings&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSD ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Skeemifail kontrollib eelnevas andmefailis esitatud andmete vastavust kokkulepitud formaadile, samuti õigete andmetüüpide kasutamist. Alamelemendi id-atribuudi väärtus peab olema iga elemendirühma lõikes unikaalne. Kohustuslike elementide ja atribuutide kõrval on ka mõned (nt kommentaar), mille olemasolu pole alati tarvilik. Teatud puhkudel on piiratud maksimaalset elementide arvu (nt treeningutunni algusaeg). Faili üldine struktuur on kindel, aga alati pole alamelementide järjekord oluline (nt treeninguliigi puhul).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xs:schema attributeFormDefault=&amp;quot;unqualified&amp;quot; elementFormDefault=&amp;quot;qualified&amp;quot; xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xs:element name=&amp;quot;Trainings&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Styles&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Style&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
          &amp;lt;xs:unique name=&amp;quot;UniqueStyleId&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xs:selector xpath=&amp;quot;Style&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Instructors&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;Name&amp;quot; type=&amp;quot;xs:string&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:attribute name=&amp;quot;Rating&amp;quot; type=&amp;quot;xs:decimal&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
          &amp;lt;xs:unique name=&amp;quot;UniqueInstructorId&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xs:selector xpath=&amp;quot;Instructor&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Venues&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Venue&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:attribute name=&amp;quot;GroupSize&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
          &amp;lt;xs:unique name=&amp;quot;UniqueVenueId&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xs:selector xpath=&amp;quot;Venue&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Training&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:all&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Description&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Styles&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Style&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Schedule&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;ScheduleItem&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:all&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element  maxOccurs=&amp;quot;1&amp;quot; name=&amp;quot;Time&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:extension base=&amp;quot;xs:dateTime&amp;quot;&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:attribute name=&amp;quot;Duration&amp;quot; type=&amp;quot;xs:duration&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element name=&amp;quot;Instructors&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                    &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                                      &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                                        &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                                      &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                                    &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                                  &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; name=&amp;quot;Comment&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:all&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;VenueId&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;GroupSize&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;optional&amp;quot; /&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;VideoUrl&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:all&amp;gt;&lt;br /&gt;
            &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xs:attribute name=&amp;quot;Licence&amp;quot; type=&amp;quot;xs:string&amp;quot; use=&amp;quot;optional&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
    &amp;lt;xs:unique name=&amp;quot;UniqueTrainingId&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xs:selector xpath=&amp;quot;Training&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
    &amp;lt;xs:unique name=&amp;quot;UniqueScheduleItemId&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xs:selector xpath=&amp;quot;Training/Schedule/ScheduleItem&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSLT (html) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Selles transformatsioonifailis on kirjeldatud XML failis olevate andmete [http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/trainings.xml  kuvamise viis veebilehel]. Treeninguliigid on jaotatud stiiliblokkidesse (mõni treening kuulub mitme stiili alla). Iga treeninguliigi all on tabeli kujul esitatud tunniplaan ning lisatud näidisvideo ja kirjeldus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot; xmlns:msxsl=&amp;quot;urn:schemas-microsoft-com:xslt&amp;quot; exclude-result-prefixes=&amp;quot;msxsl&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:output method=&amp;quot;html&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;html&amp;gt;&lt;br /&gt;
      &amp;lt;head&amp;gt;&lt;br /&gt;
        &amp;lt;title&amp;gt;SuperSportsClub - Trainings&amp;lt;/title&amp;gt;&lt;br /&gt;
        &amp;lt;style&amp;gt;&lt;br /&gt;
          body {&lt;br /&gt;
          background:BurlyWood;&lt;br /&gt;
          text-align: center;&lt;br /&gt;
          }&lt;br /&gt;
          .section {&lt;br /&gt;
          text-align:left;&lt;br /&gt;
          width:1000px;&lt;br /&gt;
          padding:20px;&lt;br /&gt;
          background:Chocolate;&lt;br /&gt;
          margin: auto;&lt;br /&gt;
          }&lt;br /&gt;
          table, th, td, .section {&lt;br /&gt;
          border: 1px solid black;&lt;br /&gt;
          }&lt;br /&gt;
          th {&lt;br /&gt;
          text-align:left;&lt;br /&gt;
          padding-left: 10px;&lt;br /&gt;
          padding-right: 10px;&lt;br /&gt;
          }&lt;br /&gt;
          td {&lt;br /&gt;
          text-align:center;&lt;br /&gt;
          }&lt;br /&gt;
          p {&lt;br /&gt;
          text-align:justify;&lt;br /&gt;
          }&lt;br /&gt;
          .description {&lt;br /&gt;
          vertical-align:top; &lt;br /&gt;
          padding:10px;&lt;br /&gt;
          }&lt;br /&gt;
        &amp;lt;/style&amp;gt;&lt;br /&gt;
      &amp;lt;/head&amp;gt;&lt;br /&gt;
      &amp;lt;body&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;Trainings at SuperSportsClub&amp;lt;/h1&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;/Trainings/Styles/Style&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:sort select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:variable select=&amp;quot;.&amp;quot; name=&amp;quot;SelectedStyle&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;section&amp;quot; &amp;gt;&lt;br /&gt;
            &amp;lt;h2&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select=&amp;quot;$SelectedStyle&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/h2&amp;gt;&lt;br /&gt;
            &amp;lt;ul&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:for-each select=&amp;quot;/Trainings/Training&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:sort select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:variable name=&amp;quot;Training&amp;quot; select=&amp;quot;.&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:if test=&amp;quot;Styles/Style/@Id = $SelectedStyle/@Id&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;&lt;br /&gt;
                    &amp;lt;h3&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;$Training/Name&amp;quot; /&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:if test=&amp;quot;$Training/@Licence&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:text&amp;gt; (&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:value-of select=&amp;quot;$Training/@Licence&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:text&amp;gt;)&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
                    &amp;lt;/h3&amp;gt;&lt;br /&gt;
                    &amp;lt;table&amp;gt;&lt;br /&gt;
                      &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                      &amp;lt;/tr&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:for-each select=&amp;quot;$Training/Schedule/ScheduleItem&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:sort select=&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:variable name=&amp;quot;StartTime&amp;quot; select=&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:variable name=&amp;quot;Duration&amp;quot; select=&amp;quot;$StartTime/@Duration&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;tr&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;150&amp;quot; &amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;concat(&lt;br /&gt;
                                            substring($StartTime, 9, 2), &lt;br /&gt;
                                            &#039;.&#039;, &lt;br /&gt;
                                            substring($StartTime, 6, 2), &lt;br /&gt;
                                            &#039;.&#039;, &lt;br /&gt;
                                            substring($StartTime, 1, 4),&lt;br /&gt;
                                            &#039; &#039;,&lt;br /&gt;
                                            substring($StartTime, 12, 2),&lt;br /&gt;
                                            &#039;:&#039;,&lt;br /&gt;
                                            substring($StartTime, 15, 2))&lt;br /&gt;
                                            &amp;quot; /&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:if test=&amp;quot;Comment&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;br/&amp;gt;&lt;br /&gt;
                              &amp;lt;div style=&amp;quot;color:Green&amp;quot;&amp;gt;&lt;br /&gt;
                                &amp;lt;xsl:value-of select=&amp;quot;Comment&amp;quot;/&amp;gt;&lt;br /&gt;
                              &amp;lt;/div&amp;gt;&lt;br /&gt;
                            &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;substring($Duration, 3, 6)&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:variable name=&amp;quot;VenueId&amp;quot; select=&amp;quot;@VenueId&amp;quot;/&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;/Trainings/Venues/Venue[@Id=$VenueId]&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:for-each select=&amp;quot;Instructors/Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:variable name=&amp;quot;InstructorId&amp;quot; select=&amp;quot;@Id&amp;quot;&amp;gt;&amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:variable name=&amp;quot;SelectedInstructor&amp;quot; select=&amp;quot;/Trainings/Instructors/Instructor[@Id=$InstructorId]&amp;quot; /&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/Name&amp;quot;/&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:text&amp;gt; (&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/@Rating&amp;quot; /&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:text&amp;gt;)&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                              &amp;lt;br/&amp;gt;&lt;br /&gt;
                            &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;/tr&amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
                    &amp;lt;/table&amp;gt;&lt;br /&gt;
                    &amp;lt;br/&amp;gt;&lt;br /&gt;
                    &amp;lt;table&amp;gt;&lt;br /&gt;
                      &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                          &amp;lt;xsl:variable name=&amp;quot;VideoUrl&amp;quot; select=&amp;quot;$Training/VideoUrl&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;{$VideoUrl}&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                          &amp;lt;p&amp;gt;&lt;br /&gt;
                            &amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&lt;br /&gt;
                          &amp;lt;/p&amp;gt;&lt;br /&gt;
                          &amp;lt;p&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;$Training/Description&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                      &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;/table&amp;gt;&lt;br /&gt;
                  &amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
            &amp;lt;/ul&amp;gt;&lt;br /&gt;
          &amp;lt;/div&amp;gt;&lt;br /&gt;
          &amp;lt;br/&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
      &amp;lt;/body&amp;gt;&lt;br /&gt;
    &amp;lt;/html&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== HTML (transformeeritud) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/trainings.html Vaata eelneva transformatsiooni tulemust.]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;META http-equiv=&amp;quot;Content-Type&amp;quot; content=&amp;quot;text/html; charset=utf-8&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;SuperSportsClub - Trainings&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;style&amp;gt;&lt;br /&gt;
        body {&lt;br /&gt;
            background: BurlyWood;&lt;br /&gt;
            text-align: center;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        .section {&lt;br /&gt;
            text-align: left;&lt;br /&gt;
            width: 1000px;&lt;br /&gt;
            padding: 20px;&lt;br /&gt;
            background: Chocolate;&lt;br /&gt;
            margin: auto;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        table, th, td, .section {&lt;br /&gt;
            border: 1px solid black;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        th {&lt;br /&gt;
            text-align: left;&lt;br /&gt;
            padding-left: 10px;&lt;br /&gt;
            padding-right: 10px;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        td {&lt;br /&gt;
            text-align: center;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        p {&lt;br /&gt;
            text-align: justify;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        .description {&lt;br /&gt;
            vertical-align: top;&lt;br /&gt;
            padding: 10px;&lt;br /&gt;
        }&lt;br /&gt;
    &amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
    &amp;lt;h1&amp;gt;Trainings at SuperSportsClub&amp;lt;/h1&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Body&amp;amp;amp;Mind&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyBalance™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 13:30&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;1H15M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 2&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Minnie Mouse (4.6)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;31.03.2017 12:15&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;1H15M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 3&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Mickey Mouse (4.7)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/jJxA6vBjUqY&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                BODYBALANCE™ is the Yoga, Tai Chi, Pilates workout that builds flexibility and strength and leaves you feeling centered and calm. Based on a carefully structured series of stretches, moves and poses to music it creates a holistic workout that brings the body into a state of harmony and balance. This class will heighten your flexibility and inner strength creating a strong supple body from the inside out. Burn on average 390cals per hour.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;Yoga&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;25.03.2017 14:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Yoga Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Minnie Yogafier (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
                            28.03.2017 14:00&amp;lt;br&amp;gt;&amp;lt;div style=&amp;quot;color:Green&amp;quot;&amp;gt;&lt;br /&gt;
                                Special class!&lt;br /&gt;
                            &amp;lt;/div&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;1H20M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Yoga Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Minnie Yogafier (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/Nvlxn0EnmbM&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                Yoga is a group of physical, mental, and spiritual practices or disciplines which originated in ancient India.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Cardio&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyJam™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 16:10&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 3&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Donald Duck (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;01.04.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;45M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 5&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Goofy (3.9)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/8PTXyg9si_4&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                The Body Jam program is an addictive fusion of the latest dance styles to the hottest new sounds. This class isn’t just for dancers, it’s for everyone because the emphasis is put on not only having fun but also breaking a sweat. So grab a friend, get front and centre … you bring the attitude and we’ll bring the moves!&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Dance&amp;amp;amp;Fun&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyJam™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 16:10&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 3&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Donald Duck (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;01.04.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;45M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 5&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Goofy (3.9)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/8PTXyg9si_4&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                The Body Jam program is an addictive fusion of the latest dance styles to the hottest new sounds. This class isn’t just for dancers, it’s for everyone because the emphasis is put on not only having fun but also breaking a sweat. So grab a friend, get front and centre … you bring the attitude and we’ll bring the moves!&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;Zumba®&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;26.03.2017 15:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;55M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 2&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Zumbaschnegger (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;28.03.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 4&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Zumbaschnegger (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 2&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Zumbaschnegger (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/-ZB6XIkfxnQ&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                Zumba involves dance and aerobic movements performed to energetic music. The choreography incorporates hip-hop, soca, samba, salsa, merengue and mambo. Squats and lunges are also included.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Strength&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyPump™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;23.03.2017 13:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Main Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Schwarzenegger (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 13:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Main Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Schwarzenegger (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/zU_0XrdO3wo&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                BodyPump classes are 59 minutes long and contain eight separate muscle-group specific songs or &amp;quot;tracks&amp;quot; along with an opening warm up track and closing cool-down track. There are also 45-minute and 30-minute class formats. The classes are performed to music using free weights-plates, barbells and an aerobic step. Participants choose their weights based on the exercise and their personal goals. Major muscle groups are worked via series of compound and isolation-based exercises including squats, presses, dead lifts. The focus is towards muscle endurance by moving light weights at high repetitions, what Les Mills calls the Rep Effect.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;CoreStrength&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
                            23.03.2017 12:00&amp;lt;br&amp;gt;&amp;lt;div style=&amp;quot;color:Green&amp;quot;&amp;gt;&lt;br /&gt;
                                Special challenge!&lt;br /&gt;
                            &amp;lt;/div&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;2H&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Area 6&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Margaret Strengthener (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Area 6&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Kayla Weightlifter (4.8)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;05.04.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Area 6&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Kayla Weightlifter (4.8)&amp;lt;br&amp;gt;Margaret Strengthener (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/ZxTVmpvyUt8&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                CoreStrenght is a very hard workout! Not for beginners.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSLT (xml) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Selle transformatsiooniga luuakse uus [http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/schedule.xml XML fail], milles on treeningute andmed esitatud ühtse tunniplaani kujul. Algses failis erinevate elementide alla paigutatud andmed on nüüd tunniplaani alamelemendis kokku viidud. Sidumine on teostatud id-atribuutide abil. Tunniplaanis on ühes kohas kirjas treeningu nimi, stiil(id), koht, algusaeg, kestus, rühma suurus, instruktorid ja muu täiendav info.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&lt;br /&gt;
    xmlns:msxsl=&amp;quot;urn:schemas-microsoft-com:xslt&amp;quot; exclude-result-prefixes=&amp;quot;msxsl&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:output method=&amp;quot;xml&amp;quot; indent=&amp;quot;yes&amp;quot; cdata-section-elements=&amp;quot;Name Style Comment&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;/Trainings/Training&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:sort select=&amp;quot;Name&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:variable name=&amp;quot;SelectedTraining&amp;quot; select=&amp;quot;.&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;Schedule/ScheduleItem&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:sort select=&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;ScheduleItem&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:variable name=&amp;quot;VenueId&amp;quot; select=&amp;quot;@VenueId&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:variable name=&amp;quot;SelectedVenue&amp;quot; select=&amp;quot;/Trainings/Venues/Venue[@Id=$VenueId]&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:attribute name=&amp;quot;GroupSize&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;@GroupSize&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:value-of select=&amp;quot;@GroupSize&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:value-of select=&amp;quot;$SelectedVenue/@GroupSize&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
            &amp;lt;Venue&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$VenueId&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select=&amp;quot;$SelectedVenue&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/Venue&amp;gt;&lt;br /&gt;
            &amp;lt;Training&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$SelectedTraining/@Id&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:if test=&amp;quot;$SelectedTraining/@Licence&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:attribute name=&amp;quot;Licence&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:value-of select=&amp;quot;$SelectedTraining/@Licence&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
              &amp;lt;Name&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$SelectedTraining/Name&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/Name&amp;gt;&lt;br /&gt;
              &amp;lt;Styles&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:for-each select=&amp;quot;$SelectedTraining/Styles/Style&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:variable name=&amp;quot;StyleId&amp;quot; select=&amp;quot;@Id&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;Style&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:attribute name=&amp;quot;StyleId&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;$StyleId&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;/Trainings/Styles/Style[@Id=$StyleId]&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/Style&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
              &amp;lt;/Styles&amp;gt;&lt;br /&gt;
            &amp;lt;/Training&amp;gt;&lt;br /&gt;
            &amp;lt;Time&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:attribute name=&amp;quot;Duration&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;Time/@Duration&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select =&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/Time&amp;gt;&lt;br /&gt;
            &amp;lt;Instructors&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:for-each select=&amp;quot;Instructors/Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:variable name=&amp;quot;InstructorId&amp;quot; select=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:variable name=&amp;quot;SelectedInstructor&amp;quot; select=&amp;quot;/Trainings/Instructors/Instructor[@Id=$InstructorId]&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;Instructor&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;$InstructorId&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:attribute name=&amp;quot;Rating&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/@Rating&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                  &amp;lt;Name&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/Name&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/Name&amp;gt;&lt;br /&gt;
                &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
            &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:if test=&amp;quot;Comment&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;Comment&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;Comment&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/Comment&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
          &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XML (transformeeritud) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/schedule.xml Vaata eelneva transformatsiooni tulemust.]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Schedule&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;3&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot;&amp;gt;Hall 2&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;2&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyBalance™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-30T13:30:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;3&amp;quot; Rating=&amp;quot;4.6&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;2&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;3&amp;quot;&amp;gt;Hall 3&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;2&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyBalance™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-31T12:15:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;2&amp;quot; Rating=&amp;quot;4.7&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Mickey Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;4&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;3&amp;quot;&amp;gt;Hall 3&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;3&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyJam™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;![CDATA[Cardio]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T16:10:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;4&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Donald Duck]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;5&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;5&amp;quot;&amp;gt;Hall 5&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;3&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyJam™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;![CDATA[Cardio]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT45M&amp;quot;&amp;gt;2017-04-01T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;5&amp;quot; Rating=&amp;quot;3.9&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Goofy]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;7&amp;quot; GroupSize=&amp;quot;45&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;1&amp;quot;&amp;gt;Main Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;4&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyPump™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-23T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;6&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Schwarzenegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;6&amp;quot; GroupSize=&amp;quot;45&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;1&amp;quot;&amp;gt;Main Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;4&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyPump™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;6&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Schwarzenegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;8&amp;quot; GroupSize=&amp;quot;10&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot;&amp;gt;Area 6&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT2H&amp;quot;&amp;gt;2017-03-23T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;9&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Margaret Strengthener]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
    &amp;lt;Comment&amp;gt;&amp;lt;![CDATA[&lt;br /&gt;
          Special challenge!&lt;br /&gt;
        ]]&amp;gt;&amp;lt;/Comment&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;9&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot;&amp;gt;Area 6&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;8&amp;quot; Rating=&amp;quot;4.8&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Kayla Weightlifter]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;10&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot;&amp;gt;Area 6&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-04-05T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;8&amp;quot; Rating=&amp;quot;4.8&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Kayla Weightlifter]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;9&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Margaret Strengthener]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;11&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot;&amp;gt;Hall 2&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT55M&amp;quot;&amp;gt;2017-03-26T15:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;12&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;4&amp;quot;&amp;gt;Hall 4&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-28T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;13&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot;&amp;gt;Hall 2&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;1&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;7&amp;quot;&amp;gt;Yoga Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Yoga]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-25T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;1&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Yogafier]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;14&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;7&amp;quot;&amp;gt;Yoga Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Yoga]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT1H20M&amp;quot;&amp;gt;2017-03-28T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;1&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Yogafier]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
    &amp;lt;Comment&amp;gt;&amp;lt;![CDATA[&lt;br /&gt;
          Special class!&lt;br /&gt;
        ]]&amp;gt;&amp;lt;/Comment&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
&amp;lt;/Schedule&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus ==&lt;br /&gt;
Angular JS &#039;&#039;single page application&#039;&#039; eelnevalt kirjeldatud veebiteenusele. Sisse logimata saab kuvada spordiklubi tunniplaani nädalate kaupa, treeninguliike stiilide kaupa ja treenereid. Võimalik on liituda teenusega ja registreeruda treeningutele, samuti registreeringuid tühistada nii otse tunniplaanist kui ka registreeringute lehel. Esialgu põhineb süsteem ühel spordiklubil. Kasutamise eelduseks on tunniplaani olemasolu andmebaasis.&lt;br /&gt;
&lt;br /&gt;
Autentimine on lahendatud tokenipõhiselt. Eeskuju ja põhjana kasutasime näidisrakendust, mille juhend ja lähtekood on leitav [http://bitoftech.net/2014/06/09/angularjs-token-authentication-using-asp-net-web-api-2-owin-asp-net-identity/ siit].&lt;br /&gt;
&lt;br /&gt;
== Lähtekood ==&lt;br /&gt;
Eksamiks valminud veebiteenuse ja klientrakenduse kokkupakitult allalaadimiseks klõpsa [http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/solution/ProjectSPOT.zip sellel lingil]. WebApi ja Angular JS klient on eraldi lahendustes. Kliendi testimiseks brauseris (Chrome, Firefox vm) tuleb eelnevalt käivitada ka veebiteenus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;NB! Võib juhtuda, et WebApi esmakordsel käivitamisel loodavasse andmebaasi kõiki andmeid (tunniplaani ja registreerimisi jooksvasse nädalasse) ei lisandu. Sellisel juhul kustuta tekkinud andmebaas ja käivita kõigepealt samas lahenduses olev konsoolirakendus.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Retsensioonid ==&lt;br /&gt;
&lt;br /&gt;
# [https://wiki.itcollege.ee/index.php/Talk:JRT XML/XSD/XSLT retsensioon meeskonnale JRT]&lt;br /&gt;
# [Veebiteenuse retsensioon lisandub varsti]&lt;br /&gt;
# [Klientrakenduse retsensioon lisandub varsti]&lt;br /&gt;
&lt;br /&gt;
== Log ==&lt;br /&gt;
* 03.03.17 Esimene kohtumine. Idee.&lt;br /&gt;
* 17.03.17 Osa XMList valmis, osa XSLT-st valmis.&lt;br /&gt;
* 18.03.17 Teine kohtumine. XMLi täiendamine, esimene ülekäimine XSD-s.&lt;br /&gt;
* 19.03.17 XML/XSLT/XSD täiendamine ja lõpetamine.&lt;br /&gt;
* 20.03.17 XML fail, skeemifail ja stiilifailid esitatud. Projekti esimese etapi lõpp. Kevade algus.&lt;br /&gt;
* 26.03.17 XML/XSLT/XSD retsensioon esitatud.&lt;br /&gt;
* 16.04.17 Veebiteenuse analüüsi koostamine.&lt;br /&gt;
* 17.04.17 Esialgne veebiteenuse analüüs ja kavand valmis.&lt;br /&gt;
* 19.04.17 Alustasime veebiteenusega, koostegemine: Domain, DAL, Interfaces, Repostitories. Testimine konsoolis.&lt;br /&gt;
* 24.04.17 Veebiteenuse koostegemine, 2. kord: Domaini täiendamine.&lt;br /&gt;
* 29.04.17 Veebiteenuse koostegemine, 3. kord: Interfaces, Repositories, Factory + UOW. Testimine konsoolis.&lt;br /&gt;
* 01.05.17 Andmebaasi täitmine testandmetega varasemas faasis loodud XML failist.&lt;br /&gt;
* 02.05.17 Veebiteenuse koostegemine, 4. kord: alustasime BLi ja WebApi ehitamist. GET päringud.&lt;br /&gt;
* 09.05.17 Veebiteenuse koostegemine, 5. kord: lisasime Identity.&lt;br /&gt;
* 11.05.17 Veebiteenuse koostegemine, 6. kord: WebApi arendamine. POST, PUT ja DELETE päringud.&lt;br /&gt;
* 15.05.17 Veebiteenuse koostegemine, 7. kord: WebApi arendamine. Lisasime  api kontrollereid.&lt;br /&gt;
* 16.05.17 Veebiteenuse koostegemine, 8. kord: WebApi arendamine. Identity kontroll Fiddleri ja Postmaniga.&lt;br /&gt;
* 20.05.17 Klientrakenduse koostegemine, 1. kord. Testklient.&lt;br /&gt;
* 25.05.17 Klientrakenduse koostegemine, 2. kord. Klientrakenduse arendamine.&lt;br /&gt;
* 01.06.17 Klientrakenduse koostegemine, 3. kord. Klientrakenduse arendamine. Angular JS.&lt;br /&gt;
* 03.06.17 - 11.06.17 Klientrakenduse arendamine. Tokenipõhine autentimine. Veebiteenuse viimistlemine.&lt;br /&gt;
* 11.06.17 Lõpptähtaeg. Projekti esitlemine eksamil.&lt;br /&gt;
* 12.06.17 Teiste lahenduste retsenseerimine.&lt;/div&gt;</summary>
		<author><name>Otiks</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Team_SPOT&amp;diff=123511</id>
		<title>Team SPOT</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Team_SPOT&amp;diff=123511"/>
		<updated>2017-06-12T13:33:01Z</updated>

		<summary type="html">&lt;p&gt;Otiks: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://wiki.itcollege.ee/index.php/Kodut%C3%B6%C3%B6_aines_%22V%C3%B5rgurakendused_II:_hajuss%C3%BCsteemide_ehitamine%22_2017 Kodutöö aines &amp;quot;Võrgurakendused II: hajussüsteemide ehitamine&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
[https://projectspot.visualstudio.com/PROJECTSPOT Projekti kodu Visual Studio keskkonnas (avaneb ainult liikmetele)]&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==Liikmed==&lt;br /&gt;
*Sigrid Pachel&lt;br /&gt;
*Oliver Tiks&lt;br /&gt;
&lt;br /&gt;
==Idee==&lt;br /&gt;
Mõttes on luua spordiklubi(de) veebiteenus ja klientrakendus, mis võimaldaks saada infot pakutavate treeningute kohta, sisestada ja kuvada tunniplaani andmeid, registreerida osalejaid tundidesse ning teha muid asjakohaseid tegevusi nii klubi(de) personalil, liikmetel kui ka juhukasutajatel.&lt;br /&gt;
&lt;br /&gt;
==Veebiteenuse analüüs==&lt;br /&gt;
SPOTi veebiteenus võimaldab saada infot erinevate klubide treeningute kohta ja end neisse registreerida. Kasutaja saab teavet, kus ja millal treeningud toimuvad (tunniplaan), mida treeningus täpsemalt tehakse, mis stiiliga on tegemist, kes on treener, kui palju üks kord maksab jms info. Kasutajakontoga liikmel on võimalik end registreerida soovitud tundi ja hallata oma registreeringuid (muuta, tühistada).&lt;br /&gt;
&lt;br /&gt;
Spordiklubide infot haldavad süsteemi administraatorid, kes saavad lisada, muuta ja kustutada kõike sprodiklubiga seonduvat. Erinevaid treeninguid ja nendega seotud konkreetset infot saavad lisada ja hallata treenerid või spordiklubi esindajad.&lt;br /&gt;
&lt;br /&gt;
Projekti realiseerimiseks kasutame REST arhitektuuri ja ASP.NET MVC Web API tehnoloogiat.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Üldine plaan:&#039;&#039;&#039;&lt;br /&gt;
* esialgu üks kett (laienemise võimalusega)&lt;br /&gt;
* mitu klubi (asukoht, saalid-treeningualad, võimalikud lisatingimused)&lt;br /&gt;
* treeningute info (stiilid ehk kontseptid, litsentsid, …)&lt;br /&gt;
* tunniplaan (aeg, koht, instruktorid, max osalejate arv, ühe korra hind)&lt;br /&gt;
* registratuur (treeningutest osavõtjad)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kasutajad (rollid):&#039;&#039;&#039;&lt;br /&gt;
* administraatorid (saavad teha muudatusi)&lt;br /&gt;
* treenerid (info kvalifikatsiooni, litsentside kohta, õigus treeninguid lisada) &lt;br /&gt;
* liikmed (saavad treeningutele registreeruda)&lt;br /&gt;
* ülejäänud (näevad klubide ja treeningute infot ning tunniplaani)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Peaks olema:&#039;&#039;&#039;&lt;br /&gt;
* kasutajate loomine&lt;br /&gt;
* kasutajate tuvastamine ja haldamine&lt;br /&gt;
* kasutajate ja kasutusstatistika logimine&lt;br /&gt;
* teenuse poole pöördumiste arvu piiramine ja piirangute haldamine&lt;br /&gt;
* klubide, treenerite ja treeningute info väljastamine&lt;br /&gt;
* tunniplaani info väljastamine&lt;br /&gt;
* treeningutesse registreerimine&lt;br /&gt;
* registreeringu tühistamine&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Võiks olla:&#039;&#039;&#039;&lt;br /&gt;
* klubide, treenerite, treeningute lisamine ja muutmine&lt;br /&gt;
* tunniplaanis treeningute tühistamine&lt;br /&gt;
* sisestatud andmete kustutamine (pehmelt)&lt;br /&gt;
* rollide-õiguste määramine (admin)&lt;br /&gt;
* asukohad mitmes riigis&lt;br /&gt;
* kliendipaketid, arveldus&lt;br /&gt;
* kontaktide tsentraliseeritud haldus&lt;br /&gt;
* sisselogimine läbi Google’i, Facebooki vmt teenuse&lt;br /&gt;
&lt;br /&gt;
===Andmebaasi skeem (lihtsustatud)===&lt;br /&gt;
&lt;br /&gt;
[[File:SPOTService ERD.JPG|border|SPOT Service ERD]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Märkus: olemite atribuutidest on välja toodud ainult peamised.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====Tabelite kirjeldused====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kasutajahaldus*:&#039;&#039;&#039;&lt;br /&gt;
* User - kasutajate andmed&lt;br /&gt;
* Role - rollid, millega määratakse kasutajate õigused (&amp;quot;Admin&amp;quot;, &amp;quot;Trainer&amp;quot;, ...)&lt;br /&gt;
* UserRole - kasutajate sidumine rolli(de)ga&lt;br /&gt;
* UserLogin - muu teenuse kaudu sisselogimiseks&lt;br /&gt;
* UserClaim - muu teenuse kaudu sisselogimiseks&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;&#039;&#039;Kasutajahalduse süsteem toetub Asp.Net Identity valmislahendusele, mida on täiendanud A. Käver.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Klubid:&#039;&#039;&#039;&lt;br /&gt;
* Chain (optional) - spordiklubikettide info&lt;br /&gt;
* Location - spordiklubi/-rajatise asukoht linna/asula täpsusega&lt;br /&gt;
* Facility - spordiklubi/-rajatise andmed, seotud asukohaga ja vajadusel ketiga.&lt;br /&gt;
* Venue - spordiklubis/-rajatises kasutatavad saalid ja muud treeningualad&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Treeningud:&#039;&#039;&#039;&lt;br /&gt;
* Concept (Style) - treeningustiilid ehk kontseptid&lt;br /&gt;
* Licenser (optional) - treeninguliikide litsentsid (kui on)&lt;br /&gt;
* Training - treeninguliikide andmed, seotud stiili ja vajadusel litsentsiga&lt;br /&gt;
* Trainer (User (role: Trainer) + Training) - treeninguliikide sidumine treeneritega&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tunniplaan:&#039;&#039;&#039;&lt;br /&gt;
* ScheduleItem - treeningud tunniplaanis&lt;br /&gt;
* Instructor (User (role: Trainer) + ScheduleItem) - tundide juhendajad (võib olla mitu)&lt;br /&gt;
* Registration (ScheduleItem + User (role: any)) - tundidesse tehtud registreeringud&lt;br /&gt;
&lt;br /&gt;
== XML / XSD / XSLT==&lt;br /&gt;
Projekti esimeses etapis sai loodud XML andmefail, mille ülesehitus on paika pandud XSD skeemifailis. Lisaks on olemas kaks stiilifaili: esimene neist transformeerib andmed HTML-kujule, et kuvada infot  veebilehel, teine tekitab samade andmete esitamiseks uue struktuuriga XML faili.&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/ProjectSPOT_ScheduleXml.zip Lae failid alla.] &lt;br /&gt;
&lt;br /&gt;
=== XML ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Fail sisaldab andmeid ühes spordiklubis pakutavate treeningute kohta. Andmed on esitatud treeninguliikide kaupa, mille juurde on lisatud ka vastava treeninguliigi tunniplaan. Treeninguliikidel on nimi ja kirjeldus ning vajadusel ära märgitud ka litsents. Failis on eraldi välja toodud treeningustiilid, instruktorid ja ruumid, kus treeningud toimuvad. Iga treeninguliik kuulub ühe või mitme stiili alla. Instruktoritel on tagasiside põhjal saadud hinne. Treeninguruumidel on vaikimisi määratud mahutavus. Tunniplaanis on ära toodud treeningu koht, algusaeg ja kestus ning instruktorid. Vajadusel saab eraldi määrata ka treeningurühma suuruse, kui see erineb tavalisest ruumi mahutavusest. Ka on võimalik treeningutunnile lisada kommentaar. Erinevate elementide andmed on omavahel seotud id-atribuutidega.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;?xml-stylesheet type=&amp;quot;text/xsl&amp;quot; href=&amp;quot;trainingsToHtml.xslt&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Trainings&amp;gt;&lt;br /&gt;
  &amp;lt;Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;![CDATA[Cardio]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
  &amp;lt;/Styles&amp;gt;&lt;br /&gt;
  &amp;lt;Instructors&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;1&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Yogafier]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;2&amp;quot; Rating=&amp;quot;4.7&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Mickey Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;3&amp;quot; Rating=&amp;quot;4.6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;4&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Donald Duck]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;5&amp;quot; Rating=&amp;quot;3.9&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Goofy]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;6&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Schwarzenegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;8&amp;quot; Rating=&amp;quot;4.8&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Kayla Weightlifter]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;9&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Margaret Strengthener]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
  &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;Venues&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;1&amp;quot; GroupSize=&amp;quot;45&amp;quot;&amp;gt;&amp;lt;![CDATA[Main Hall]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 2]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;3&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 3]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;4&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 4]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;5&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 5]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&amp;lt;![CDATA[Area 6]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;7&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&amp;lt;![CDATA[Yoga Hall]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
  &amp;lt;/Venues&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Yoga]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[Yoga is a group of physical, mental, and spiritual practices or disciplines which originated in ancient India. ]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;1&amp;quot; VenueId=&amp;quot;7&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-25T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;14&amp;quot; VenueId=&amp;quot;7&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT1H20M&amp;quot;&amp;gt;2017-03-28T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Comment&amp;gt;&lt;br /&gt;
          &amp;lt;![CDATA[Special class!]]&amp;gt;&lt;br /&gt;
        &amp;lt;/Comment&amp;gt; &lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/Nvlxn0EnmbM&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;  &lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;2&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyBalance™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[BODYBALANCE™ is the Yoga, Tai Chi, Pilates workout that builds flexibility and strength and leaves you feeling centered and calm. Based on a carefully structured series of stretches, moves and poses to music it creates a holistic workout that brings the body into a state of harmony and balance. This class will heighten your flexibility and inner strength creating a strong supple body from the inside out. Burn on average 390cals per hour.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;2&amp;quot; VenueId=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-31T12:15:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;3&amp;quot; VenueId=&amp;quot;2&amp;quot; &amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-30T13:30:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;3&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/jJxA6vBjUqY&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;3&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyJam™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;4&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[The Body Jam program is an addictive fusion of the latest dance styles to the hottest new sounds. This class isn’t just for dancers, it’s for everyone because the emphasis is put on not only having fun but also breaking a sweat. So grab a friend, get front and centre … you bring the attitude and we’ll bring the moves!]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;4&amp;quot;  VenueId=&amp;quot;3&amp;quot; &amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T16:10:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;4&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;5&amp;quot; VenueId=&amp;quot;5&amp;quot; &amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT45M&amp;quot;&amp;gt;2017-04-01T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;5&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/8PTXyg9si_4&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;4&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyPump™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[BodyPump classes are 59 minutes long and contain eight separate muscle-group specific songs or &amp;quot;tracks&amp;quot; along with an opening warm up track and closing cool-down track. There are also 45-minute and 30-minute class formats. The classes are performed to music using free weights-plates, barbells and an aerobic step. Participants choose their weights based on the exercise and their personal goals. Major muscle groups are worked via series of compound and isolation-based exercises including squats, presses, dead lifts. The focus is towards muscle endurance by moving light weights at high repetitions, what Les Mills calls the Rep Effect.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;3&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;6&amp;quot; VenueId=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;6&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;7&amp;quot; VenueId=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-23T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;6&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/zU_0XrdO3wo&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[CoreStrenght is a very hard workout! Not for beginners.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;3&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;8&amp;quot; VenueId=&amp;quot;6&amp;quot; GroupSize=&amp;quot;10&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT2H&amp;quot;&amp;gt;2017-03-23T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;9&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Comment&amp;gt;&lt;br /&gt;
          &amp;lt;![CDATA[Special challenge!]]&amp;gt;&lt;br /&gt;
        &amp;lt;/Comment&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;9&amp;quot; VenueId=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;8&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;10&amp;quot; VenueId=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-04-05T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;8&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;9&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/ZxTVmpvyUt8&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[Zumba involves dance and aerobic movements performed to energetic music. The choreography incorporates hip-hop, soca, samba, salsa, merengue and mambo. Squats and lunges are also included.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;4&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;11&amp;quot; VenueId=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT55M&amp;quot;&amp;gt;2017-03-26T15:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;12&amp;quot; VenueId=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-28T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;13&amp;quot; VenueId=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/-ZB6XIkfxnQ&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
&amp;lt;/Trainings&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSD ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Skeemifail kontrollib eelnevas andmefailis esitatud andmete vastavust kokkulepitud formaadile, samuti õigete andmetüüpide kasutamist. Alamelemendi id-atribuudi väärtus peab olema iga elemendirühma lõikes unikaalne. Kohustuslike elementide ja atribuutide kõrval on ka mõned (nt kommentaar), mille olemasolu pole alati tarvilik. Teatud puhkudel on piiratud maksimaalset elementide arvu (nt treeningutunni algusaeg). Faili üldine struktuur on kindel, aga alati pole alamelementide järjekord oluline (nt treeninguliigi puhul).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xs:schema attributeFormDefault=&amp;quot;unqualified&amp;quot; elementFormDefault=&amp;quot;qualified&amp;quot; xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xs:element name=&amp;quot;Trainings&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Styles&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Style&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
          &amp;lt;xs:unique name=&amp;quot;UniqueStyleId&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xs:selector xpath=&amp;quot;Style&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Instructors&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;Name&amp;quot; type=&amp;quot;xs:string&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:attribute name=&amp;quot;Rating&amp;quot; type=&amp;quot;xs:decimal&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
          &amp;lt;xs:unique name=&amp;quot;UniqueInstructorId&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xs:selector xpath=&amp;quot;Instructor&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Venues&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Venue&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:attribute name=&amp;quot;GroupSize&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
          &amp;lt;xs:unique name=&amp;quot;UniqueVenueId&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xs:selector xpath=&amp;quot;Venue&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Training&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:all&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Description&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Styles&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Style&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Schedule&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;ScheduleItem&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:all&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element  maxOccurs=&amp;quot;1&amp;quot; name=&amp;quot;Time&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:extension base=&amp;quot;xs:dateTime&amp;quot;&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:attribute name=&amp;quot;Duration&amp;quot; type=&amp;quot;xs:duration&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element name=&amp;quot;Instructors&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                    &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                                      &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                                        &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                                      &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                                    &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                                  &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; name=&amp;quot;Comment&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:all&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;VenueId&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;GroupSize&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;optional&amp;quot; /&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;VideoUrl&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:all&amp;gt;&lt;br /&gt;
            &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xs:attribute name=&amp;quot;Licence&amp;quot; type=&amp;quot;xs:string&amp;quot; use=&amp;quot;optional&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
    &amp;lt;xs:unique name=&amp;quot;UniqueTrainingId&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xs:selector xpath=&amp;quot;Training&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
    &amp;lt;xs:unique name=&amp;quot;UniqueScheduleItemId&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xs:selector xpath=&amp;quot;Training/Schedule/ScheduleItem&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSLT (html) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Selles transformatsioonifailis on kirjeldatud XML failis olevate andmete [http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/trainings.xml  kuvamise viis veebilehel]. Treeninguliigid on jaotatud stiiliblokkidesse (mõni treening kuulub mitme stiili alla). Iga treeninguliigi all on tabeli kujul esitatud tunniplaan ning lisatud näidisvideo ja kirjeldus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot; xmlns:msxsl=&amp;quot;urn:schemas-microsoft-com:xslt&amp;quot; exclude-result-prefixes=&amp;quot;msxsl&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:output method=&amp;quot;html&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;html&amp;gt;&lt;br /&gt;
      &amp;lt;head&amp;gt;&lt;br /&gt;
        &amp;lt;title&amp;gt;SuperSportsClub - Trainings&amp;lt;/title&amp;gt;&lt;br /&gt;
        &amp;lt;style&amp;gt;&lt;br /&gt;
          body {&lt;br /&gt;
          background:BurlyWood;&lt;br /&gt;
          text-align: center;&lt;br /&gt;
          }&lt;br /&gt;
          .section {&lt;br /&gt;
          text-align:left;&lt;br /&gt;
          width:1000px;&lt;br /&gt;
          padding:20px;&lt;br /&gt;
          background:Chocolate;&lt;br /&gt;
          margin: auto;&lt;br /&gt;
          }&lt;br /&gt;
          table, th, td, .section {&lt;br /&gt;
          border: 1px solid black;&lt;br /&gt;
          }&lt;br /&gt;
          th {&lt;br /&gt;
          text-align:left;&lt;br /&gt;
          padding-left: 10px;&lt;br /&gt;
          padding-right: 10px;&lt;br /&gt;
          }&lt;br /&gt;
          td {&lt;br /&gt;
          text-align:center;&lt;br /&gt;
          }&lt;br /&gt;
          p {&lt;br /&gt;
          text-align:justify;&lt;br /&gt;
          }&lt;br /&gt;
          .description {&lt;br /&gt;
          vertical-align:top; &lt;br /&gt;
          padding:10px;&lt;br /&gt;
          }&lt;br /&gt;
        &amp;lt;/style&amp;gt;&lt;br /&gt;
      &amp;lt;/head&amp;gt;&lt;br /&gt;
      &amp;lt;body&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;Trainings at SuperSportsClub&amp;lt;/h1&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;/Trainings/Styles/Style&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:sort select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:variable select=&amp;quot;.&amp;quot; name=&amp;quot;SelectedStyle&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;section&amp;quot; &amp;gt;&lt;br /&gt;
            &amp;lt;h2&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select=&amp;quot;$SelectedStyle&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/h2&amp;gt;&lt;br /&gt;
            &amp;lt;ul&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:for-each select=&amp;quot;/Trainings/Training&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:sort select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:variable name=&amp;quot;Training&amp;quot; select=&amp;quot;.&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:if test=&amp;quot;Styles/Style/@Id = $SelectedStyle/@Id&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;&lt;br /&gt;
                    &amp;lt;h3&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;$Training/Name&amp;quot; /&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:if test=&amp;quot;$Training/@Licence&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:text&amp;gt; (&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:value-of select=&amp;quot;$Training/@Licence&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:text&amp;gt;)&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
                    &amp;lt;/h3&amp;gt;&lt;br /&gt;
                    &amp;lt;table&amp;gt;&lt;br /&gt;
                      &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                      &amp;lt;/tr&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:for-each select=&amp;quot;$Training/Schedule/ScheduleItem&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:sort select=&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:variable name=&amp;quot;StartTime&amp;quot; select=&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:variable name=&amp;quot;Duration&amp;quot; select=&amp;quot;$StartTime/@Duration&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;tr&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;150&amp;quot; &amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;concat(&lt;br /&gt;
                                            substring($StartTime, 9, 2), &lt;br /&gt;
                                            &#039;.&#039;, &lt;br /&gt;
                                            substring($StartTime, 6, 2), &lt;br /&gt;
                                            &#039;.&#039;, &lt;br /&gt;
                                            substring($StartTime, 1, 4),&lt;br /&gt;
                                            &#039; &#039;,&lt;br /&gt;
                                            substring($StartTime, 12, 2),&lt;br /&gt;
                                            &#039;:&#039;,&lt;br /&gt;
                                            substring($StartTime, 15, 2))&lt;br /&gt;
                                            &amp;quot; /&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:if test=&amp;quot;Comment&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;br/&amp;gt;&lt;br /&gt;
                              &amp;lt;div style=&amp;quot;color:Green&amp;quot;&amp;gt;&lt;br /&gt;
                                &amp;lt;xsl:value-of select=&amp;quot;Comment&amp;quot;/&amp;gt;&lt;br /&gt;
                              &amp;lt;/div&amp;gt;&lt;br /&gt;
                            &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;substring($Duration, 3, 6)&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:variable name=&amp;quot;VenueId&amp;quot; select=&amp;quot;@VenueId&amp;quot;/&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;/Trainings/Venues/Venue[@Id=$VenueId]&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:for-each select=&amp;quot;Instructors/Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:variable name=&amp;quot;InstructorId&amp;quot; select=&amp;quot;@Id&amp;quot;&amp;gt;&amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:variable name=&amp;quot;SelectedInstructor&amp;quot; select=&amp;quot;/Trainings/Instructors/Instructor[@Id=$InstructorId]&amp;quot; /&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/Name&amp;quot;/&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:text&amp;gt; (&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/@Rating&amp;quot; /&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:text&amp;gt;)&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                              &amp;lt;br/&amp;gt;&lt;br /&gt;
                            &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;/tr&amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
                    &amp;lt;/table&amp;gt;&lt;br /&gt;
                    &amp;lt;br/&amp;gt;&lt;br /&gt;
                    &amp;lt;table&amp;gt;&lt;br /&gt;
                      &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                          &amp;lt;xsl:variable name=&amp;quot;VideoUrl&amp;quot; select=&amp;quot;$Training/VideoUrl&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;{$VideoUrl}&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                          &amp;lt;p&amp;gt;&lt;br /&gt;
                            &amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&lt;br /&gt;
                          &amp;lt;/p&amp;gt;&lt;br /&gt;
                          &amp;lt;p&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;$Training/Description&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                      &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;/table&amp;gt;&lt;br /&gt;
                  &amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
            &amp;lt;/ul&amp;gt;&lt;br /&gt;
          &amp;lt;/div&amp;gt;&lt;br /&gt;
          &amp;lt;br/&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
      &amp;lt;/body&amp;gt;&lt;br /&gt;
    &amp;lt;/html&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== HTML (transformeeritud) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/trainings.html Vaata eelneva transformatsiooni tulemust.]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;META http-equiv=&amp;quot;Content-Type&amp;quot; content=&amp;quot;text/html; charset=utf-8&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;SuperSportsClub - Trainings&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;style&amp;gt;&lt;br /&gt;
        body {&lt;br /&gt;
            background: BurlyWood;&lt;br /&gt;
            text-align: center;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        .section {&lt;br /&gt;
            text-align: left;&lt;br /&gt;
            width: 1000px;&lt;br /&gt;
            padding: 20px;&lt;br /&gt;
            background: Chocolate;&lt;br /&gt;
            margin: auto;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        table, th, td, .section {&lt;br /&gt;
            border: 1px solid black;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        th {&lt;br /&gt;
            text-align: left;&lt;br /&gt;
            padding-left: 10px;&lt;br /&gt;
            padding-right: 10px;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        td {&lt;br /&gt;
            text-align: center;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        p {&lt;br /&gt;
            text-align: justify;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        .description {&lt;br /&gt;
            vertical-align: top;&lt;br /&gt;
            padding: 10px;&lt;br /&gt;
        }&lt;br /&gt;
    &amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
    &amp;lt;h1&amp;gt;Trainings at SuperSportsClub&amp;lt;/h1&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Body&amp;amp;amp;Mind&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyBalance™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 13:30&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;1H15M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 2&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Minnie Mouse (4.6)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;31.03.2017 12:15&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;1H15M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 3&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Mickey Mouse (4.7)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/jJxA6vBjUqY&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                BODYBALANCE™ is the Yoga, Tai Chi, Pilates workout that builds flexibility and strength and leaves you feeling centered and calm. Based on a carefully structured series of stretches, moves and poses to music it creates a holistic workout that brings the body into a state of harmony and balance. This class will heighten your flexibility and inner strength creating a strong supple body from the inside out. Burn on average 390cals per hour.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;Yoga&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;25.03.2017 14:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Yoga Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Minnie Yogafier (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
                            28.03.2017 14:00&amp;lt;br&amp;gt;&amp;lt;div style=&amp;quot;color:Green&amp;quot;&amp;gt;&lt;br /&gt;
                                Special class!&lt;br /&gt;
                            &amp;lt;/div&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;1H20M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Yoga Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Minnie Yogafier (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/Nvlxn0EnmbM&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                Yoga is a group of physical, mental, and spiritual practices or disciplines which originated in ancient India.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Cardio&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyJam™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 16:10&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 3&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Donald Duck (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;01.04.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;45M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 5&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Goofy (3.9)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/8PTXyg9si_4&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                The Body Jam program is an addictive fusion of the latest dance styles to the hottest new sounds. This class isn’t just for dancers, it’s for everyone because the emphasis is put on not only having fun but also breaking a sweat. So grab a friend, get front and centre … you bring the attitude and we’ll bring the moves!&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Dance&amp;amp;amp;Fun&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyJam™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 16:10&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 3&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Donald Duck (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;01.04.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;45M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 5&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Goofy (3.9)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/8PTXyg9si_4&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                The Body Jam program is an addictive fusion of the latest dance styles to the hottest new sounds. This class isn’t just for dancers, it’s for everyone because the emphasis is put on not only having fun but also breaking a sweat. So grab a friend, get front and centre … you bring the attitude and we’ll bring the moves!&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;Zumba®&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;26.03.2017 15:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;55M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 2&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Zumbaschnegger (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;28.03.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 4&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Zumbaschnegger (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 2&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Zumbaschnegger (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/-ZB6XIkfxnQ&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                Zumba involves dance and aerobic movements performed to energetic music. The choreography incorporates hip-hop, soca, samba, salsa, merengue and mambo. Squats and lunges are also included.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Strength&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyPump™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;23.03.2017 13:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Main Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Schwarzenegger (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 13:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Main Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Schwarzenegger (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/zU_0XrdO3wo&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                BodyPump classes are 59 minutes long and contain eight separate muscle-group specific songs or &amp;quot;tracks&amp;quot; along with an opening warm up track and closing cool-down track. There are also 45-minute and 30-minute class formats. The classes are performed to music using free weights-plates, barbells and an aerobic step. Participants choose their weights based on the exercise and their personal goals. Major muscle groups are worked via series of compound and isolation-based exercises including squats, presses, dead lifts. The focus is towards muscle endurance by moving light weights at high repetitions, what Les Mills calls the Rep Effect.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;CoreStrength&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
                            23.03.2017 12:00&amp;lt;br&amp;gt;&amp;lt;div style=&amp;quot;color:Green&amp;quot;&amp;gt;&lt;br /&gt;
                                Special challenge!&lt;br /&gt;
                            &amp;lt;/div&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;2H&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Area 6&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Margaret Strengthener (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Area 6&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Kayla Weightlifter (4.8)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;05.04.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Area 6&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Kayla Weightlifter (4.8)&amp;lt;br&amp;gt;Margaret Strengthener (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/ZxTVmpvyUt8&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                CoreStrenght is a very hard workout! Not for beginners.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSLT (xml) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Selle transformatsiooniga luuakse uus [http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/schedule.xml XML fail], milles on treeningute andmed esitatud ühtse tunniplaani kujul. Algses failis erinevate elementide alla paigutatud andmed on nüüd tunniplaani alamelemendis kokku viidud. Sidumine on teostatud id-atribuutide abil. Tunniplaanis on ühes kohas kirjas treeningu nimi, stiil(id), koht, algusaeg, kestus, rühma suurus, instruktorid ja muu täiendav info.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&lt;br /&gt;
    xmlns:msxsl=&amp;quot;urn:schemas-microsoft-com:xslt&amp;quot; exclude-result-prefixes=&amp;quot;msxsl&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:output method=&amp;quot;xml&amp;quot; indent=&amp;quot;yes&amp;quot; cdata-section-elements=&amp;quot;Name Style Comment&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;/Trainings/Training&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:sort select=&amp;quot;Name&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:variable name=&amp;quot;SelectedTraining&amp;quot; select=&amp;quot;.&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;Schedule/ScheduleItem&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:sort select=&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;ScheduleItem&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:variable name=&amp;quot;VenueId&amp;quot; select=&amp;quot;@VenueId&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:variable name=&amp;quot;SelectedVenue&amp;quot; select=&amp;quot;/Trainings/Venues/Venue[@Id=$VenueId]&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:attribute name=&amp;quot;GroupSize&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;@GroupSize&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:value-of select=&amp;quot;@GroupSize&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:value-of select=&amp;quot;$SelectedVenue/@GroupSize&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
            &amp;lt;Venue&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$VenueId&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select=&amp;quot;$SelectedVenue&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/Venue&amp;gt;&lt;br /&gt;
            &amp;lt;Training&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$SelectedTraining/@Id&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:if test=&amp;quot;$SelectedTraining/@Licence&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:attribute name=&amp;quot;Licence&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:value-of select=&amp;quot;$SelectedTraining/@Licence&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
              &amp;lt;Name&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$SelectedTraining/Name&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/Name&amp;gt;&lt;br /&gt;
              &amp;lt;Styles&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:for-each select=&amp;quot;$SelectedTraining/Styles/Style&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:variable name=&amp;quot;StyleId&amp;quot; select=&amp;quot;@Id&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;Style&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:attribute name=&amp;quot;StyleId&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;$StyleId&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;/Trainings/Styles/Style[@Id=$StyleId]&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/Style&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
              &amp;lt;/Styles&amp;gt;&lt;br /&gt;
            &amp;lt;/Training&amp;gt;&lt;br /&gt;
            &amp;lt;Time&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:attribute name=&amp;quot;Duration&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;Time/@Duration&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select =&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/Time&amp;gt;&lt;br /&gt;
            &amp;lt;Instructors&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:for-each select=&amp;quot;Instructors/Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:variable name=&amp;quot;InstructorId&amp;quot; select=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:variable name=&amp;quot;SelectedInstructor&amp;quot; select=&amp;quot;/Trainings/Instructors/Instructor[@Id=$InstructorId]&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;Instructor&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;$InstructorId&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:attribute name=&amp;quot;Rating&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/@Rating&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                  &amp;lt;Name&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/Name&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/Name&amp;gt;&lt;br /&gt;
                &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
            &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:if test=&amp;quot;Comment&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;Comment&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;Comment&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/Comment&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
          &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XML (transformeeritud) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/schedule.xml Vaata eelneva transformatsiooni tulemust.]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Schedule&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;3&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot;&amp;gt;Hall 2&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;2&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyBalance™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-30T13:30:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;3&amp;quot; Rating=&amp;quot;4.6&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;2&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;3&amp;quot;&amp;gt;Hall 3&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;2&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyBalance™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-31T12:15:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;2&amp;quot; Rating=&amp;quot;4.7&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Mickey Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;4&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;3&amp;quot;&amp;gt;Hall 3&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;3&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyJam™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;![CDATA[Cardio]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T16:10:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;4&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Donald Duck]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;5&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;5&amp;quot;&amp;gt;Hall 5&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;3&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyJam™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;![CDATA[Cardio]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT45M&amp;quot;&amp;gt;2017-04-01T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;5&amp;quot; Rating=&amp;quot;3.9&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Goofy]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;7&amp;quot; GroupSize=&amp;quot;45&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;1&amp;quot;&amp;gt;Main Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;4&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyPump™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-23T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;6&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Schwarzenegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;6&amp;quot; GroupSize=&amp;quot;45&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;1&amp;quot;&amp;gt;Main Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;4&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyPump™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;6&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Schwarzenegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;8&amp;quot; GroupSize=&amp;quot;10&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot;&amp;gt;Area 6&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT2H&amp;quot;&amp;gt;2017-03-23T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;9&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Margaret Strengthener]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
    &amp;lt;Comment&amp;gt;&amp;lt;![CDATA[&lt;br /&gt;
          Special challenge!&lt;br /&gt;
        ]]&amp;gt;&amp;lt;/Comment&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;9&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot;&amp;gt;Area 6&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;8&amp;quot; Rating=&amp;quot;4.8&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Kayla Weightlifter]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;10&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot;&amp;gt;Area 6&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-04-05T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;8&amp;quot; Rating=&amp;quot;4.8&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Kayla Weightlifter]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;9&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Margaret Strengthener]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;11&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot;&amp;gt;Hall 2&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT55M&amp;quot;&amp;gt;2017-03-26T15:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;12&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;4&amp;quot;&amp;gt;Hall 4&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-28T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;13&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot;&amp;gt;Hall 2&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;1&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;7&amp;quot;&amp;gt;Yoga Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Yoga]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-25T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;1&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Yogafier]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;14&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;7&amp;quot;&amp;gt;Yoga Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Yoga]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT1H20M&amp;quot;&amp;gt;2017-03-28T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;1&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Yogafier]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
    &amp;lt;Comment&amp;gt;&amp;lt;![CDATA[&lt;br /&gt;
          Special class!&lt;br /&gt;
        ]]&amp;gt;&amp;lt;/Comment&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
&amp;lt;/Schedule&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus ==&lt;br /&gt;
Angular JS &#039;&#039;single page application&#039;&#039; eelnevalt kirjeldatud veebiteenusele. Sisse logimata saab kuvada spordiklubi tunniplaani nädalate kaupa, treeninguliike stiilide kaupa ja treenereid. Võimalik on liituda teenusega ja registreeruda treeningutele, samuti registreeringuid tühistada nii otse tunniplaanist kui ka registreeringute lehel. Esialgu põhineb süsteem ühel spordiklubil. Kasutamise eelduseks on tunniplaani olemasolu andmebaasis.&lt;br /&gt;
&lt;br /&gt;
Autentimine on lahendatud tokenipõhiselt. Eeskuju ja põhjana kasutasime näidisrakendust, mille juhend ja lähtekood on leitav [http://bitoftech.net/2014/06/09/angularjs-token-authentication-using-asp-net-web-api-2-owin-asp-net-identity/ siit].&lt;br /&gt;
&lt;br /&gt;
== Lähtekood ==&lt;br /&gt;
Eksamiks valminud veebiteenuse ja klientrakenduse kokkupakitult allalaadimiseks klõpsa [http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/solution/ProjectSPOT.zip sellel lingil]. WebApi ja Angular JS klient on eraldi lahendustes. Kliendi testimiseks brauseris (Chrome, Firefox vm) tuleb eelnevalt käivitada ka veebiteenus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;NB! Võib juhtuda, et WebApi esmakordsel käivitamisel loodavasse andmebaasi kõiki andmeid (tunniplaani ja registreerimisi jooksvasse nädalasse) ei lisandu. Sellisel juhul kustuta tekkinud andmebaas ja käivita kõigepealt samas lahenduses olev konsoolirakendus.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Retsensioonid ==&lt;br /&gt;
&lt;br /&gt;
# [https://wiki.itcollege.ee/index.php/Talk:JRT XML/XSD/XSLT retsensioon meeskonnale JRT]&lt;br /&gt;
# [Veebiteenuse retsensioon lisandub varsti]&lt;br /&gt;
# [Klientrakenduse retsensioon lisandub varsti]&lt;br /&gt;
&lt;br /&gt;
== Log ==&lt;br /&gt;
* 03.03.17 Esimene kohtumine. Idee.&lt;br /&gt;
* 17.03.17 Osa XMList valmis, osa XSLT-st valmis.&lt;br /&gt;
* 18.03.17 Teine kohtumine. XMLi täiendamine, esimene ülekäimine XSD-s.&lt;br /&gt;
* 19.03.17 XML/XSLT/XSD täiendamine ja lõpetamine.&lt;br /&gt;
* 20.03.17 XML fail, skeemifail ja stiilifailid esitatud. Projekti esimese etapi lõpp. Kevade algus.&lt;br /&gt;
* 26.03.17 XML/XSLT/XSD retsensioon esitatud.&lt;br /&gt;
* 16.04.17 Veebiteenuse analüüsi koostamine.&lt;br /&gt;
* 17.04.17 Esialgne veebiteenuse analüüs ja kavand valmis.&lt;br /&gt;
* 19.04.17 Alustasime veebiteenusega, koostegemine: Domain, DAL, Interfaces, Repostitories. Testimine konsoolis.&lt;br /&gt;
* 24.04.17 Veebiteenuse koostegemine, 2. kord: Domaini täiendamine.&lt;br /&gt;
* 29.04.17 Veebiteenuse koostegemine, 3. kord: Interfaces, Repositories, Factory + UOW. Testimine konsoolis.&lt;br /&gt;
* 01.05.17 Andmebaasi täitmine testandmetega varasemas faasis loodud XML failist.&lt;br /&gt;
* 02.05.17 Veebiteenuse koostegemine, 4. kord: alustasime BLi ja WebApi ehitamist. GET päringud.&lt;br /&gt;
* 09.05.17 Veebiteenuse koostegemine, 5. kord: lisasime Identity.&lt;br /&gt;
* 11.05.17 Veebiteenuse koostegemine, 6. kord: WebApi arendamine. POST, PUT ja DELETE päringud.&lt;br /&gt;
* 15.05.17 Veebiteenuse koostegemine, 7. kord: WebApi arendamine. Lisasime  api kontrollereid.&lt;br /&gt;
* 16.05.17 Veebiteenuse koostegemine, 8. kord: WebApi arendamine. Identity kontroll Fiddleri ja Postmaniga.&lt;br /&gt;
* 20.05.17 Klientrakenduse koostegemine, 1. kord. Testklient.&lt;br /&gt;
* 25.05.17 Klientrakenduse koostegemine, 2. kord. Klientrakenduse arendamine.&lt;br /&gt;
* 01.06.17 Klientrakenduse koostegemine, 3. kord. Klientrakenduse arendamine. Angular JS.&lt;br /&gt;
* 03.06.17 - 11.06.17 Klientrakenduse arendamine. Tokenipõhine autentimine. Veebiteenuse viimistlemine.&lt;br /&gt;
* 11.06.17 Lõpptähtaeg. Projekti esitlemine eksamil.&lt;br /&gt;
* 12.06.17 Teiste lahenduste retsenseerimine.&lt;/div&gt;</summary>
		<author><name>Otiks</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Team_SPOT&amp;diff=123485</id>
		<title>Team SPOT</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Team_SPOT&amp;diff=123485"/>
		<updated>2017-06-12T02:44:46Z</updated>

		<summary type="html">&lt;p&gt;Otiks: /* Klientrakendus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://wiki.itcollege.ee/index.php/Kodut%C3%B6%C3%B6_aines_%22V%C3%B5rgurakendused_II:_hajuss%C3%BCsteemide_ehitamine%22_2017 Kodutöö aines &amp;quot;Võrgurakendused II: hajussüsteemide ehitamine&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
[https://projectspot.visualstudio.com/PROJECTSPOT Projekti kodu (avaneb ainult liikmetele)]&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==Liikmed==&lt;br /&gt;
*Sigrid Pachel&lt;br /&gt;
*Oliver Tiks&lt;br /&gt;
&lt;br /&gt;
==Idee==&lt;br /&gt;
Mõttes on luua spordiklubi(de) veebiteenus ja klientrakendus, mis võimaldaks saada infot pakutavate treeningute kohta, sisestada ja kuvada tunniplaani andmeid, registreerida osalejaid tundidesse ning teha muid asjakohaseid tegevusi nii klubi(de) personalil, liikmetel kui ka juhukasutajatel.&lt;br /&gt;
&lt;br /&gt;
==Veebiteenuse analüüs==&lt;br /&gt;
SPOTi veebiteenus võimaldab saada infot erinevate klubide treeningute kohta ja end neisse registreerida. Kasutaja saab teavet, kus ja millal treeningud toimuvad (tunniplaan), mida treeningus täpsemalt tehakse, mis stiiliga on tegemist, kes on treener, kui palju üks kord maksab jms info. Kasutajakontoga liikmel on võimalik end registreerida soovitud tundi ja hallata oma registreeringuid (muuta, tühistada).&lt;br /&gt;
&lt;br /&gt;
Spordiklubide infot haldavad süsteemi administraatorid, kes saavad lisada, muuta ja kustutada kõike sprodiklubiga seonduvat. Erinevaid treeninguid ja nendega seotud konkreetset infot saavad lisada ja hallata treenerid või spordiklubi esindajad.&lt;br /&gt;
&lt;br /&gt;
Projekti realiseerimiseks kasutame REST arhitektuuri ja ASP.NET MVC Web API tehnoloogiat.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Üldine plaan:&#039;&#039;&#039;&lt;br /&gt;
* esialgu üks kett (laienemise võimalusega)&lt;br /&gt;
* mitu klubi (asukoht, saalid-treeningualad, võimalikud lisatingimused)&lt;br /&gt;
* treeningute info (stiilid ehk kontseptid, litsentsid, …)&lt;br /&gt;
* tunniplaan (aeg, koht, instruktorid, max osalejate arv, ühe korra hind)&lt;br /&gt;
* registratuur (treeningutest osavõtjad)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kasutajad (rollid):&#039;&#039;&#039;&lt;br /&gt;
* administraatorid (saavad teha muudatusi)&lt;br /&gt;
* treenerid (info kvalifikatsiooni, litsentside kohta, õigus treeninguid lisada) &lt;br /&gt;
* liikmed (saavad treeningutele registreeruda)&lt;br /&gt;
* ülejäänud (näevad klubide ja treeningute infot ning tunniplaani)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Peaks olema:&#039;&#039;&#039;&lt;br /&gt;
* kasutajate loomine&lt;br /&gt;
* kasutajate tuvastamine ja haldamine&lt;br /&gt;
* kasutajate ja kasutusstatistika logimine&lt;br /&gt;
* teenuse poole pöördumiste arvu piiramine ja piirangute haldamine&lt;br /&gt;
* klubide, treenerite ja treeningute info väljastamine&lt;br /&gt;
* tunniplaani info väljastamine&lt;br /&gt;
* treeningutesse registreerimine&lt;br /&gt;
* registreeringu tühistamine&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Võiks olla:&#039;&#039;&#039;&lt;br /&gt;
* klubide, treenerite, treeningute lisamine ja muutmine&lt;br /&gt;
* tunniplaanis treeningute tühistamine&lt;br /&gt;
* sisestatud andmete kustutamine (pehmelt)&lt;br /&gt;
* rollide-õiguste määramine (admin)&lt;br /&gt;
* asukohad mitmes riigis&lt;br /&gt;
* kliendipaketid, arveldus&lt;br /&gt;
* kontaktide tsentraliseeritud haldus&lt;br /&gt;
* sisselogimine läbi Google’i, Facebooki vmt teenuse&lt;br /&gt;
&lt;br /&gt;
===Andmebaasi skeem (lihtsustatud)===&lt;br /&gt;
&lt;br /&gt;
[[File:SPOTService ERD.JPG|border|SPOT Service ERD]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Märkus: olemite atribuutidest on välja toodud ainult peamised.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====Tabelite kirjeldused====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kasutajahaldus*:&#039;&#039;&#039;&lt;br /&gt;
* User - kasutajate andmed&lt;br /&gt;
* Role - rollid, millega määratakse kasutajate õigused (&amp;quot;Admin&amp;quot;, &amp;quot;Trainer&amp;quot;, ...)&lt;br /&gt;
* UserRole - kasutajate sidumine rolli(de)ga&lt;br /&gt;
* UserLogin - muu teenuse kaudu sisselogimiseks&lt;br /&gt;
* UserClaim - muu teenuse kaudu sisselogimiseks&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;&#039;&#039;Kasutajahalduse süsteem toetub Asp.Net Identity valmislahendusele, mida on täiendanud A. Käver.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Klubid:&#039;&#039;&#039;&lt;br /&gt;
* Chain (optional) - spordiklubikettide info&lt;br /&gt;
* Location - spordiklubi/-rajatise asukoht linna/asula täpsusega&lt;br /&gt;
* Facility - spordiklubi/-rajatise andmed, seotud asukohaga ja vajadusel ketiga.&lt;br /&gt;
* Venue - spordiklubis/-rajatises kasutatavad saalid ja muud treeningualad&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Treeningud:&#039;&#039;&#039;&lt;br /&gt;
* Concept (Style) - treeningustiilid ehk kontseptid&lt;br /&gt;
* Licenser (optional) - treeninguliikide litsentsid (kui on)&lt;br /&gt;
* Training - treeninguliikide andmed, seotud stiili ja vajadusel litsentsiga&lt;br /&gt;
* Trainer (User (role: Trainer) + Training) - treeninguliikide sidumine treeneritega&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tunniplaan:&#039;&#039;&#039;&lt;br /&gt;
* ScheduleItem - treeningud tunniplaanis&lt;br /&gt;
* Instructor (User (role: Trainer) + ScheduleItem) - tundide juhendajad (võib olla mitu)&lt;br /&gt;
* Registration (ScheduleItem + User (role: any)) - tundidesse tehtud registreeringud&lt;br /&gt;
&lt;br /&gt;
== XML / XSD / XSLT==&lt;br /&gt;
Projekti esimeses etapis sai loodud XML andmefail, mille ülesehitus on paika pandud XSD skeemifailis. Lisaks on olemas kaks stiilifaili: esimene neist transformeerib andmed HTML-kujule, et kuvada infot  veebilehel, teine tekitab samade andmete esitamiseks uue struktuuriga XML faili.&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/ProjectSPOT_ScheduleXml.zip Lae failid alla.] &lt;br /&gt;
&lt;br /&gt;
=== XML ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Fail sisaldab andmeid ühes spordiklubis pakutavate treeningute kohta. Andmed on esitatud treeninguliikide kaupa, mille juurde on lisatud ka vastava treeninguliigi tunniplaan. Treeninguliikidel on nimi ja kirjeldus ning vajadusel ära märgitud ka litsents. Failis on eraldi välja toodud treeningustiilid, instruktorid ja ruumid, kus treeningud toimuvad. Iga treeninguliik kuulub ühe või mitme stiili alla. Instruktoritel on tagasiside põhjal saadud hinne. Treeninguruumidel on vaikimisi määratud mahutavus. Tunniplaanis on ära toodud treeningu koht, algusaeg ja kestus ning instruktorid. Vajadusel saab eraldi määrata ka treeningurühma suuruse, kui see erineb tavalisest ruumi mahutavusest. Ka on võimalik treeningutunnile lisada kommentaar. Erinevate elementide andmed on omavahel seotud id-atribuutidega.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;?xml-stylesheet type=&amp;quot;text/xsl&amp;quot; href=&amp;quot;trainingsToHtml.xslt&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Trainings&amp;gt;&lt;br /&gt;
  &amp;lt;Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;![CDATA[Cardio]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
  &amp;lt;/Styles&amp;gt;&lt;br /&gt;
  &amp;lt;Instructors&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;1&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Yogafier]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;2&amp;quot; Rating=&amp;quot;4.7&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Mickey Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;3&amp;quot; Rating=&amp;quot;4.6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;4&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Donald Duck]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;5&amp;quot; Rating=&amp;quot;3.9&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Goofy]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;6&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Schwarzenegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;8&amp;quot; Rating=&amp;quot;4.8&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Kayla Weightlifter]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;9&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Margaret Strengthener]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
  &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;Venues&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;1&amp;quot; GroupSize=&amp;quot;45&amp;quot;&amp;gt;&amp;lt;![CDATA[Main Hall]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 2]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;3&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 3]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;4&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 4]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;5&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 5]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&amp;lt;![CDATA[Area 6]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;7&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&amp;lt;![CDATA[Yoga Hall]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
  &amp;lt;/Venues&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Yoga]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[Yoga is a group of physical, mental, and spiritual practices or disciplines which originated in ancient India. ]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;1&amp;quot; VenueId=&amp;quot;7&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-25T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;14&amp;quot; VenueId=&amp;quot;7&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT1H20M&amp;quot;&amp;gt;2017-03-28T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Comment&amp;gt;&lt;br /&gt;
          &amp;lt;![CDATA[Special class!]]&amp;gt;&lt;br /&gt;
        &amp;lt;/Comment&amp;gt; &lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/Nvlxn0EnmbM&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;  &lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;2&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyBalance™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[BODYBALANCE™ is the Yoga, Tai Chi, Pilates workout that builds flexibility and strength and leaves you feeling centered and calm. Based on a carefully structured series of stretches, moves and poses to music it creates a holistic workout that brings the body into a state of harmony and balance. This class will heighten your flexibility and inner strength creating a strong supple body from the inside out. Burn on average 390cals per hour.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;2&amp;quot; VenueId=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-31T12:15:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;3&amp;quot; VenueId=&amp;quot;2&amp;quot; &amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-30T13:30:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;3&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/jJxA6vBjUqY&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;3&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyJam™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;4&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[The Body Jam program is an addictive fusion of the latest dance styles to the hottest new sounds. This class isn’t just for dancers, it’s for everyone because the emphasis is put on not only having fun but also breaking a sweat. So grab a friend, get front and centre … you bring the attitude and we’ll bring the moves!]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;4&amp;quot;  VenueId=&amp;quot;3&amp;quot; &amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T16:10:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;4&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;5&amp;quot; VenueId=&amp;quot;5&amp;quot; &amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT45M&amp;quot;&amp;gt;2017-04-01T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;5&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/8PTXyg9si_4&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;4&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyPump™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[BodyPump classes are 59 minutes long and contain eight separate muscle-group specific songs or &amp;quot;tracks&amp;quot; along with an opening warm up track and closing cool-down track. There are also 45-minute and 30-minute class formats. The classes are performed to music using free weights-plates, barbells and an aerobic step. Participants choose their weights based on the exercise and their personal goals. Major muscle groups are worked via series of compound and isolation-based exercises including squats, presses, dead lifts. The focus is towards muscle endurance by moving light weights at high repetitions, what Les Mills calls the Rep Effect.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;3&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;6&amp;quot; VenueId=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;6&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;7&amp;quot; VenueId=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-23T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;6&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/zU_0XrdO3wo&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[CoreStrenght is a very hard workout! Not for beginners.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;3&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;8&amp;quot; VenueId=&amp;quot;6&amp;quot; GroupSize=&amp;quot;10&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT2H&amp;quot;&amp;gt;2017-03-23T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;9&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Comment&amp;gt;&lt;br /&gt;
          &amp;lt;![CDATA[Special challenge!]]&amp;gt;&lt;br /&gt;
        &amp;lt;/Comment&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;9&amp;quot; VenueId=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;8&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;10&amp;quot; VenueId=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-04-05T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;8&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;9&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/ZxTVmpvyUt8&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[Zumba involves dance and aerobic movements performed to energetic music. The choreography incorporates hip-hop, soca, samba, salsa, merengue and mambo. Squats and lunges are also included.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;4&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;11&amp;quot; VenueId=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT55M&amp;quot;&amp;gt;2017-03-26T15:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;12&amp;quot; VenueId=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-28T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;13&amp;quot; VenueId=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/-ZB6XIkfxnQ&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
&amp;lt;/Trainings&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSD ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Skeemifail kontrollib eelnevas andmefailis esitatud andmete vastavust kokkulepitud formaadile, samuti õigete andmetüüpide kasutamist. Alamelemendi id-atribuudi väärtus peab olema iga elemendirühma lõikes unikaalne. Kohustuslike elementide ja atribuutide kõrval on ka mõned (nt kommentaar), mille olemasolu pole alati tarvilik. Teatud puhkudel on piiratud maksimaalset elementide arvu (nt treeningutunni algusaeg). Faili üldine struktuur on kindel, aga alati pole alamelementide järjekord oluline (nt treeninguliigi puhul).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xs:schema attributeFormDefault=&amp;quot;unqualified&amp;quot; elementFormDefault=&amp;quot;qualified&amp;quot; xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xs:element name=&amp;quot;Trainings&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Styles&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Style&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
          &amp;lt;xs:unique name=&amp;quot;UniqueStyleId&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xs:selector xpath=&amp;quot;Style&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Instructors&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;Name&amp;quot; type=&amp;quot;xs:string&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:attribute name=&amp;quot;Rating&amp;quot; type=&amp;quot;xs:decimal&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
          &amp;lt;xs:unique name=&amp;quot;UniqueInstructorId&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xs:selector xpath=&amp;quot;Instructor&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Venues&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Venue&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:attribute name=&amp;quot;GroupSize&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
          &amp;lt;xs:unique name=&amp;quot;UniqueVenueId&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xs:selector xpath=&amp;quot;Venue&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Training&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:all&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Description&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Styles&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Style&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Schedule&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;ScheduleItem&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:all&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element  maxOccurs=&amp;quot;1&amp;quot; name=&amp;quot;Time&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:extension base=&amp;quot;xs:dateTime&amp;quot;&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:attribute name=&amp;quot;Duration&amp;quot; type=&amp;quot;xs:duration&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element name=&amp;quot;Instructors&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                    &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                                      &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                                        &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                                      &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                                    &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                                  &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; name=&amp;quot;Comment&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:all&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;VenueId&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;GroupSize&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;optional&amp;quot; /&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;VideoUrl&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:all&amp;gt;&lt;br /&gt;
            &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xs:attribute name=&amp;quot;Licence&amp;quot; type=&amp;quot;xs:string&amp;quot; use=&amp;quot;optional&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
    &amp;lt;xs:unique name=&amp;quot;UniqueTrainingId&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xs:selector xpath=&amp;quot;Training&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
    &amp;lt;xs:unique name=&amp;quot;UniqueScheduleItemId&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xs:selector xpath=&amp;quot;Training/Schedule/ScheduleItem&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSLT (html) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Selles transformatsioonifailis on kirjeldatud XML failis olevate andmete [http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/trainings.xml  kuvamise viis veebilehel]. Treeninguliigid on jaotatud stiiliblokkidesse (mõni treening kuulub mitme stiili alla). Iga treeninguliigi all on tabeli kujul esitatud tunniplaan ning lisatud näidisvideo ja kirjeldus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot; xmlns:msxsl=&amp;quot;urn:schemas-microsoft-com:xslt&amp;quot; exclude-result-prefixes=&amp;quot;msxsl&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:output method=&amp;quot;html&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;html&amp;gt;&lt;br /&gt;
      &amp;lt;head&amp;gt;&lt;br /&gt;
        &amp;lt;title&amp;gt;SuperSportsClub - Trainings&amp;lt;/title&amp;gt;&lt;br /&gt;
        &amp;lt;style&amp;gt;&lt;br /&gt;
          body {&lt;br /&gt;
          background:BurlyWood;&lt;br /&gt;
          text-align: center;&lt;br /&gt;
          }&lt;br /&gt;
          .section {&lt;br /&gt;
          text-align:left;&lt;br /&gt;
          width:1000px;&lt;br /&gt;
          padding:20px;&lt;br /&gt;
          background:Chocolate;&lt;br /&gt;
          margin: auto;&lt;br /&gt;
          }&lt;br /&gt;
          table, th, td, .section {&lt;br /&gt;
          border: 1px solid black;&lt;br /&gt;
          }&lt;br /&gt;
          th {&lt;br /&gt;
          text-align:left;&lt;br /&gt;
          padding-left: 10px;&lt;br /&gt;
          padding-right: 10px;&lt;br /&gt;
          }&lt;br /&gt;
          td {&lt;br /&gt;
          text-align:center;&lt;br /&gt;
          }&lt;br /&gt;
          p {&lt;br /&gt;
          text-align:justify;&lt;br /&gt;
          }&lt;br /&gt;
          .description {&lt;br /&gt;
          vertical-align:top; &lt;br /&gt;
          padding:10px;&lt;br /&gt;
          }&lt;br /&gt;
        &amp;lt;/style&amp;gt;&lt;br /&gt;
      &amp;lt;/head&amp;gt;&lt;br /&gt;
      &amp;lt;body&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;Trainings at SuperSportsClub&amp;lt;/h1&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;/Trainings/Styles/Style&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:sort select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:variable select=&amp;quot;.&amp;quot; name=&amp;quot;SelectedStyle&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;section&amp;quot; &amp;gt;&lt;br /&gt;
            &amp;lt;h2&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select=&amp;quot;$SelectedStyle&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/h2&amp;gt;&lt;br /&gt;
            &amp;lt;ul&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:for-each select=&amp;quot;/Trainings/Training&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:sort select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:variable name=&amp;quot;Training&amp;quot; select=&amp;quot;.&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:if test=&amp;quot;Styles/Style/@Id = $SelectedStyle/@Id&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;&lt;br /&gt;
                    &amp;lt;h3&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;$Training/Name&amp;quot; /&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:if test=&amp;quot;$Training/@Licence&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:text&amp;gt; (&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:value-of select=&amp;quot;$Training/@Licence&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:text&amp;gt;)&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
                    &amp;lt;/h3&amp;gt;&lt;br /&gt;
                    &amp;lt;table&amp;gt;&lt;br /&gt;
                      &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                      &amp;lt;/tr&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:for-each select=&amp;quot;$Training/Schedule/ScheduleItem&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:sort select=&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:variable name=&amp;quot;StartTime&amp;quot; select=&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:variable name=&amp;quot;Duration&amp;quot; select=&amp;quot;$StartTime/@Duration&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;tr&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;150&amp;quot; &amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;concat(&lt;br /&gt;
                                            substring($StartTime, 9, 2), &lt;br /&gt;
                                            &#039;.&#039;, &lt;br /&gt;
                                            substring($StartTime, 6, 2), &lt;br /&gt;
                                            &#039;.&#039;, &lt;br /&gt;
                                            substring($StartTime, 1, 4),&lt;br /&gt;
                                            &#039; &#039;,&lt;br /&gt;
                                            substring($StartTime, 12, 2),&lt;br /&gt;
                                            &#039;:&#039;,&lt;br /&gt;
                                            substring($StartTime, 15, 2))&lt;br /&gt;
                                            &amp;quot; /&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:if test=&amp;quot;Comment&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;br/&amp;gt;&lt;br /&gt;
                              &amp;lt;div style=&amp;quot;color:Green&amp;quot;&amp;gt;&lt;br /&gt;
                                &amp;lt;xsl:value-of select=&amp;quot;Comment&amp;quot;/&amp;gt;&lt;br /&gt;
                              &amp;lt;/div&amp;gt;&lt;br /&gt;
                            &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;substring($Duration, 3, 6)&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:variable name=&amp;quot;VenueId&amp;quot; select=&amp;quot;@VenueId&amp;quot;/&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;/Trainings/Venues/Venue[@Id=$VenueId]&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:for-each select=&amp;quot;Instructors/Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:variable name=&amp;quot;InstructorId&amp;quot; select=&amp;quot;@Id&amp;quot;&amp;gt;&amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:variable name=&amp;quot;SelectedInstructor&amp;quot; select=&amp;quot;/Trainings/Instructors/Instructor[@Id=$InstructorId]&amp;quot; /&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/Name&amp;quot;/&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:text&amp;gt; (&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/@Rating&amp;quot; /&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:text&amp;gt;)&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                              &amp;lt;br/&amp;gt;&lt;br /&gt;
                            &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;/tr&amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
                    &amp;lt;/table&amp;gt;&lt;br /&gt;
                    &amp;lt;br/&amp;gt;&lt;br /&gt;
                    &amp;lt;table&amp;gt;&lt;br /&gt;
                      &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                          &amp;lt;xsl:variable name=&amp;quot;VideoUrl&amp;quot; select=&amp;quot;$Training/VideoUrl&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;{$VideoUrl}&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                          &amp;lt;p&amp;gt;&lt;br /&gt;
                            &amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&lt;br /&gt;
                          &amp;lt;/p&amp;gt;&lt;br /&gt;
                          &amp;lt;p&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;$Training/Description&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                      &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;/table&amp;gt;&lt;br /&gt;
                  &amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
            &amp;lt;/ul&amp;gt;&lt;br /&gt;
          &amp;lt;/div&amp;gt;&lt;br /&gt;
          &amp;lt;br/&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
      &amp;lt;/body&amp;gt;&lt;br /&gt;
    &amp;lt;/html&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== HTML (transformeeritud) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/trainings.html Vaata eelneva transformatsiooni tulemust.]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;META http-equiv=&amp;quot;Content-Type&amp;quot; content=&amp;quot;text/html; charset=utf-8&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;SuperSportsClub - Trainings&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;style&amp;gt;&lt;br /&gt;
        body {&lt;br /&gt;
            background: BurlyWood;&lt;br /&gt;
            text-align: center;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        .section {&lt;br /&gt;
            text-align: left;&lt;br /&gt;
            width: 1000px;&lt;br /&gt;
            padding: 20px;&lt;br /&gt;
            background: Chocolate;&lt;br /&gt;
            margin: auto;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        table, th, td, .section {&lt;br /&gt;
            border: 1px solid black;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        th {&lt;br /&gt;
            text-align: left;&lt;br /&gt;
            padding-left: 10px;&lt;br /&gt;
            padding-right: 10px;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        td {&lt;br /&gt;
            text-align: center;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        p {&lt;br /&gt;
            text-align: justify;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        .description {&lt;br /&gt;
            vertical-align: top;&lt;br /&gt;
            padding: 10px;&lt;br /&gt;
        }&lt;br /&gt;
    &amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
    &amp;lt;h1&amp;gt;Trainings at SuperSportsClub&amp;lt;/h1&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Body&amp;amp;amp;Mind&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyBalance™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 13:30&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;1H15M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 2&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Minnie Mouse (4.6)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;31.03.2017 12:15&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;1H15M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 3&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Mickey Mouse (4.7)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/jJxA6vBjUqY&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                BODYBALANCE™ is the Yoga, Tai Chi, Pilates workout that builds flexibility and strength and leaves you feeling centered and calm. Based on a carefully structured series of stretches, moves and poses to music it creates a holistic workout that brings the body into a state of harmony and balance. This class will heighten your flexibility and inner strength creating a strong supple body from the inside out. Burn on average 390cals per hour.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;Yoga&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;25.03.2017 14:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Yoga Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Minnie Yogafier (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
                            28.03.2017 14:00&amp;lt;br&amp;gt;&amp;lt;div style=&amp;quot;color:Green&amp;quot;&amp;gt;&lt;br /&gt;
                                Special class!&lt;br /&gt;
                            &amp;lt;/div&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;1H20M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Yoga Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Minnie Yogafier (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/Nvlxn0EnmbM&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                Yoga is a group of physical, mental, and spiritual practices or disciplines which originated in ancient India.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Cardio&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyJam™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 16:10&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 3&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Donald Duck (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;01.04.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;45M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 5&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Goofy (3.9)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/8PTXyg9si_4&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                The Body Jam program is an addictive fusion of the latest dance styles to the hottest new sounds. This class isn’t just for dancers, it’s for everyone because the emphasis is put on not only having fun but also breaking a sweat. So grab a friend, get front and centre … you bring the attitude and we’ll bring the moves!&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Dance&amp;amp;amp;Fun&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyJam™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 16:10&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 3&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Donald Duck (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;01.04.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;45M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 5&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Goofy (3.9)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/8PTXyg9si_4&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                The Body Jam program is an addictive fusion of the latest dance styles to the hottest new sounds. This class isn’t just for dancers, it’s for everyone because the emphasis is put on not only having fun but also breaking a sweat. So grab a friend, get front and centre … you bring the attitude and we’ll bring the moves!&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;Zumba®&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;26.03.2017 15:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;55M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 2&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Zumbaschnegger (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;28.03.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 4&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Zumbaschnegger (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 2&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Zumbaschnegger (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/-ZB6XIkfxnQ&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                Zumba involves dance and aerobic movements performed to energetic music. The choreography incorporates hip-hop, soca, samba, salsa, merengue and mambo. Squats and lunges are also included.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Strength&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyPump™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;23.03.2017 13:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Main Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Schwarzenegger (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 13:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Main Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Schwarzenegger (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/zU_0XrdO3wo&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                BodyPump classes are 59 minutes long and contain eight separate muscle-group specific songs or &amp;quot;tracks&amp;quot; along with an opening warm up track and closing cool-down track. There are also 45-minute and 30-minute class formats. The classes are performed to music using free weights-plates, barbells and an aerobic step. Participants choose their weights based on the exercise and their personal goals. Major muscle groups are worked via series of compound and isolation-based exercises including squats, presses, dead lifts. The focus is towards muscle endurance by moving light weights at high repetitions, what Les Mills calls the Rep Effect.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;CoreStrength&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
                            23.03.2017 12:00&amp;lt;br&amp;gt;&amp;lt;div style=&amp;quot;color:Green&amp;quot;&amp;gt;&lt;br /&gt;
                                Special challenge!&lt;br /&gt;
                            &amp;lt;/div&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;2H&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Area 6&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Margaret Strengthener (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Area 6&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Kayla Weightlifter (4.8)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;05.04.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Area 6&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Kayla Weightlifter (4.8)&amp;lt;br&amp;gt;Margaret Strengthener (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/ZxTVmpvyUt8&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                CoreStrenght is a very hard workout! Not for beginners.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSLT (xml) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Selle transformatsiooniga luuakse uus [http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/schedule.xml XML fail], milles on treeningute andmed esitatud ühtse tunniplaani kujul. Algses failis erinevate elementide alla paigutatud andmed on nüüd tunniplaani alamelemendis kokku viidud. Sidumine on teostatud id-atribuutide abil. Tunniplaanis on ühes kohas kirjas treeningu nimi, stiil(id), koht, algusaeg, kestus, rühma suurus, instruktorid ja muu täiendav info.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&lt;br /&gt;
    xmlns:msxsl=&amp;quot;urn:schemas-microsoft-com:xslt&amp;quot; exclude-result-prefixes=&amp;quot;msxsl&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:output method=&amp;quot;xml&amp;quot; indent=&amp;quot;yes&amp;quot; cdata-section-elements=&amp;quot;Name Style Comment&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;/Trainings/Training&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:sort select=&amp;quot;Name&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:variable name=&amp;quot;SelectedTraining&amp;quot; select=&amp;quot;.&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;Schedule/ScheduleItem&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:sort select=&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;ScheduleItem&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:variable name=&amp;quot;VenueId&amp;quot; select=&amp;quot;@VenueId&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:variable name=&amp;quot;SelectedVenue&amp;quot; select=&amp;quot;/Trainings/Venues/Venue[@Id=$VenueId]&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:attribute name=&amp;quot;GroupSize&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;@GroupSize&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:value-of select=&amp;quot;@GroupSize&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:value-of select=&amp;quot;$SelectedVenue/@GroupSize&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
            &amp;lt;Venue&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$VenueId&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select=&amp;quot;$SelectedVenue&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/Venue&amp;gt;&lt;br /&gt;
            &amp;lt;Training&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$SelectedTraining/@Id&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:if test=&amp;quot;$SelectedTraining/@Licence&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:attribute name=&amp;quot;Licence&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:value-of select=&amp;quot;$SelectedTraining/@Licence&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
              &amp;lt;Name&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$SelectedTraining/Name&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/Name&amp;gt;&lt;br /&gt;
              &amp;lt;Styles&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:for-each select=&amp;quot;$SelectedTraining/Styles/Style&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:variable name=&amp;quot;StyleId&amp;quot; select=&amp;quot;@Id&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;Style&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:attribute name=&amp;quot;StyleId&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;$StyleId&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;/Trainings/Styles/Style[@Id=$StyleId]&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/Style&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
              &amp;lt;/Styles&amp;gt;&lt;br /&gt;
            &amp;lt;/Training&amp;gt;&lt;br /&gt;
            &amp;lt;Time&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:attribute name=&amp;quot;Duration&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;Time/@Duration&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select =&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/Time&amp;gt;&lt;br /&gt;
            &amp;lt;Instructors&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:for-each select=&amp;quot;Instructors/Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:variable name=&amp;quot;InstructorId&amp;quot; select=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:variable name=&amp;quot;SelectedInstructor&amp;quot; select=&amp;quot;/Trainings/Instructors/Instructor[@Id=$InstructorId]&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;Instructor&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;$InstructorId&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:attribute name=&amp;quot;Rating&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/@Rating&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                  &amp;lt;Name&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/Name&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/Name&amp;gt;&lt;br /&gt;
                &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
            &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:if test=&amp;quot;Comment&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;Comment&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;Comment&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/Comment&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
          &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XML (transformeeritud) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/schedule.xml Vaata eelneva transformatsiooni tulemust.]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Schedule&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;3&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot;&amp;gt;Hall 2&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;2&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyBalance™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-30T13:30:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;3&amp;quot; Rating=&amp;quot;4.6&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;2&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;3&amp;quot;&amp;gt;Hall 3&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;2&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyBalance™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-31T12:15:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;2&amp;quot; Rating=&amp;quot;4.7&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Mickey Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;4&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;3&amp;quot;&amp;gt;Hall 3&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;3&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyJam™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;![CDATA[Cardio]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T16:10:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;4&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Donald Duck]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;5&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;5&amp;quot;&amp;gt;Hall 5&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;3&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyJam™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;![CDATA[Cardio]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT45M&amp;quot;&amp;gt;2017-04-01T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;5&amp;quot; Rating=&amp;quot;3.9&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Goofy]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;7&amp;quot; GroupSize=&amp;quot;45&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;1&amp;quot;&amp;gt;Main Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;4&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyPump™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-23T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;6&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Schwarzenegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;6&amp;quot; GroupSize=&amp;quot;45&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;1&amp;quot;&amp;gt;Main Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;4&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyPump™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;6&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Schwarzenegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;8&amp;quot; GroupSize=&amp;quot;10&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot;&amp;gt;Area 6&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT2H&amp;quot;&amp;gt;2017-03-23T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;9&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Margaret Strengthener]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
    &amp;lt;Comment&amp;gt;&amp;lt;![CDATA[&lt;br /&gt;
          Special challenge!&lt;br /&gt;
        ]]&amp;gt;&amp;lt;/Comment&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;9&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot;&amp;gt;Area 6&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;8&amp;quot; Rating=&amp;quot;4.8&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Kayla Weightlifter]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;10&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot;&amp;gt;Area 6&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-04-05T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;8&amp;quot; Rating=&amp;quot;4.8&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Kayla Weightlifter]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;9&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Margaret Strengthener]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;11&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot;&amp;gt;Hall 2&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT55M&amp;quot;&amp;gt;2017-03-26T15:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;12&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;4&amp;quot;&amp;gt;Hall 4&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-28T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;13&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot;&amp;gt;Hall 2&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;1&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;7&amp;quot;&amp;gt;Yoga Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Yoga]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-25T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;1&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Yogafier]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;14&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;7&amp;quot;&amp;gt;Yoga Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Yoga]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT1H20M&amp;quot;&amp;gt;2017-03-28T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;1&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Yogafier]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
    &amp;lt;Comment&amp;gt;&amp;lt;![CDATA[&lt;br /&gt;
          Special class!&lt;br /&gt;
        ]]&amp;gt;&amp;lt;/Comment&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
&amp;lt;/Schedule&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus ==&lt;br /&gt;
Angular JS &#039;&#039;single page application&#039;&#039; eelnevalt kirjeldatud veebiteenusele. Sisse logimata saab kuvada spordiklubi tunniplaani nädalate kaupa, treeninguliike stiilide kaupa ja treenereid. Võimalik on liituda teenusega ja registreeruda treeningutele, samuti registreeringuid tühistada nii otse tunniplaanist kui ka registreeringute lehel. Esialgu põhineb süsteem ühel spordiklubil. Kasutamise eelduseks on tunniplaani olemasolu andmebaasis.&lt;br /&gt;
&lt;br /&gt;
Autentimine on lahendatud tokenipõhiselt. Eeskuju ja põhjana kasutasime näidisrakendust, mille juhend ja lähtekood on leitav [http://bitoftech.net/2014/06/09/angularjs-token-authentication-using-asp-net-web-api-2-owin-asp-net-identity/ siit].&lt;br /&gt;
&lt;br /&gt;
== Lähtekood ==&lt;br /&gt;
Eksamiks valminud veebiteenuse ja klientrakenduse kokkupakitult allalaadimiseks klõpsa [http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/solution/ProjectSPOT.zip sellel lingil]. WebApi ja Angular JS klient on eraldi lahendustes. Kliendi testimiseks brauseris (Chrome, Firefox vm) tuleb eelnevalt käivitada ka veebiteenus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;NB! Võib juhtuda, et WebApi esmakordsel käivitamisel loodavasse andmebaasi kõiki andmeid (tunniplaani ja registreerimisi jooksvasse nädalasse) ei lisandu. Sellisel juhul kustuta tekkinud andmebaas ja käivita kõigepealt samas lahenduses olev konsoolirakendus.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Retsensioonid ==&lt;br /&gt;
&lt;br /&gt;
# [https://wiki.itcollege.ee/index.php/Talk:JRT XML/XSD/XSLT retsensioon meeskonnale JRT]&lt;br /&gt;
# [Veebiteenuse retsensioon lisandub varsti]&lt;br /&gt;
# [Klientrakenduse retsensioon lisandub varsti]&lt;br /&gt;
&lt;br /&gt;
== Log ==&lt;br /&gt;
* 03.03.17 Esimene kohtumine. Idee.&lt;br /&gt;
* 17.03.17 Osa XMList valmis, osa XSLT-st valmis.&lt;br /&gt;
* 18.03.17 Teine kohtumine. XMLi täiendamine, esimene ülekäimine XSD-s.&lt;br /&gt;
* 19.03.17 XML/XSLT/XSD täiendamine ja lõpetamine.&lt;br /&gt;
* 20.03.17 XML fail, skeemifail ja stiilifailid esitatud. Projekti esimese etapi lõpp. Kevade algus.&lt;br /&gt;
* 26.03.17 XML/XSLT/XSD retsensioon esitatud.&lt;br /&gt;
* 16.04.17 Veebiteenuse analüüsi koostamine.&lt;br /&gt;
* 17.04.17 Esialgne veebiteenuse analüüs ja kavand valmis.&lt;br /&gt;
* 19.04.17 Alustasime veebiteenusega, koostegemine: Domain, DAL, Interfaces, Repostitories. Testimine konsoolis.&lt;br /&gt;
* 24.04.17 Veebiteenuse koostegemine, 2. kord: Domaini täiendamine.&lt;br /&gt;
* 29.04.17 Veebiteenuse koostegemine, 3. kord: Interfaces, Repositories, Factory + UOW. Testimine konsoolis.&lt;br /&gt;
* 01.05.17 Andmebaasi täitmine testandmetega varasemas faasis loodud XML failist.&lt;br /&gt;
* 02.05.17 Veebiteenuse koostegemine, 4. kord: alustasime BLi ja WebApi ehitamist. GET päringud.&lt;br /&gt;
* 09.05.17 Veebiteenuse koostegemine, 5. kord: lisasime Identity.&lt;br /&gt;
* 11.05.17 Veebiteenuse koostegemine, 6. kord: WebApi arendamine. POST, PUT ja DELETE päringud.&lt;br /&gt;
* 15.05.17 Veebiteenuse koostegemine, 7. kord: WebApi arendamine. Lisasime  api kontrollereid.&lt;br /&gt;
* 16.05.17 Veebiteenuse koostegemine, 8. kord: WebApi arendamine. Identity kontroll Fiddleri ja Postmaniga.&lt;br /&gt;
* 20.05.17 Klientrakenduse koostegemine, 1. kord. Testklient.&lt;br /&gt;
* 25.05.17 Klientrakenduse koostegemine, 2. kord. Klientrakenduse arendamine.&lt;br /&gt;
* 01.06.17 Klientrakenduse koostegemine, 3. kord. Klientrakenduse arendamine. Angular JS.&lt;br /&gt;
* 03.06.17 - 11.06.17 Klientrakenduse arendamine. Tokenipõhine autentimine. Veebiteenuse viimistlemine.&lt;br /&gt;
* 11.06.17 Lõpptähtaeg. Projekti esitlemine eksamil.&lt;br /&gt;
* 12.06.17 Teiste lahenduste retsenseerimine.&lt;/div&gt;</summary>
		<author><name>Otiks</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Team_SPOT&amp;diff=123484</id>
		<title>Team SPOT</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Team_SPOT&amp;diff=123484"/>
		<updated>2017-06-12T02:43:38Z</updated>

		<summary type="html">&lt;p&gt;Otiks: /* Klientrakendus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://wiki.itcollege.ee/index.php/Kodut%C3%B6%C3%B6_aines_%22V%C3%B5rgurakendused_II:_hajuss%C3%BCsteemide_ehitamine%22_2017 Kodutöö aines &amp;quot;Võrgurakendused II: hajussüsteemide ehitamine&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
[https://projectspot.visualstudio.com/PROJECTSPOT Projekti kodu (avaneb ainult liikmetele)]&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==Liikmed==&lt;br /&gt;
*Sigrid Pachel&lt;br /&gt;
*Oliver Tiks&lt;br /&gt;
&lt;br /&gt;
==Idee==&lt;br /&gt;
Mõttes on luua spordiklubi(de) veebiteenus ja klientrakendus, mis võimaldaks saada infot pakutavate treeningute kohta, sisestada ja kuvada tunniplaani andmeid, registreerida osalejaid tundidesse ning teha muid asjakohaseid tegevusi nii klubi(de) personalil, liikmetel kui ka juhukasutajatel.&lt;br /&gt;
&lt;br /&gt;
==Veebiteenuse analüüs==&lt;br /&gt;
SPOTi veebiteenus võimaldab saada infot erinevate klubide treeningute kohta ja end neisse registreerida. Kasutaja saab teavet, kus ja millal treeningud toimuvad (tunniplaan), mida treeningus täpsemalt tehakse, mis stiiliga on tegemist, kes on treener, kui palju üks kord maksab jms info. Kasutajakontoga liikmel on võimalik end registreerida soovitud tundi ja hallata oma registreeringuid (muuta, tühistada).&lt;br /&gt;
&lt;br /&gt;
Spordiklubide infot haldavad süsteemi administraatorid, kes saavad lisada, muuta ja kustutada kõike sprodiklubiga seonduvat. Erinevaid treeninguid ja nendega seotud konkreetset infot saavad lisada ja hallata treenerid või spordiklubi esindajad.&lt;br /&gt;
&lt;br /&gt;
Projekti realiseerimiseks kasutame REST arhitektuuri ja ASP.NET MVC Web API tehnoloogiat.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Üldine plaan:&#039;&#039;&#039;&lt;br /&gt;
* esialgu üks kett (laienemise võimalusega)&lt;br /&gt;
* mitu klubi (asukoht, saalid-treeningualad, võimalikud lisatingimused)&lt;br /&gt;
* treeningute info (stiilid ehk kontseptid, litsentsid, …)&lt;br /&gt;
* tunniplaan (aeg, koht, instruktorid, max osalejate arv, ühe korra hind)&lt;br /&gt;
* registratuur (treeningutest osavõtjad)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kasutajad (rollid):&#039;&#039;&#039;&lt;br /&gt;
* administraatorid (saavad teha muudatusi)&lt;br /&gt;
* treenerid (info kvalifikatsiooni, litsentside kohta, õigus treeninguid lisada) &lt;br /&gt;
* liikmed (saavad treeningutele registreeruda)&lt;br /&gt;
* ülejäänud (näevad klubide ja treeningute infot ning tunniplaani)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Peaks olema:&#039;&#039;&#039;&lt;br /&gt;
* kasutajate loomine&lt;br /&gt;
* kasutajate tuvastamine ja haldamine&lt;br /&gt;
* kasutajate ja kasutusstatistika logimine&lt;br /&gt;
* teenuse poole pöördumiste arvu piiramine ja piirangute haldamine&lt;br /&gt;
* klubide, treenerite ja treeningute info väljastamine&lt;br /&gt;
* tunniplaani info väljastamine&lt;br /&gt;
* treeningutesse registreerimine&lt;br /&gt;
* registreeringu tühistamine&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Võiks olla:&#039;&#039;&#039;&lt;br /&gt;
* klubide, treenerite, treeningute lisamine ja muutmine&lt;br /&gt;
* tunniplaanis treeningute tühistamine&lt;br /&gt;
* sisestatud andmete kustutamine (pehmelt)&lt;br /&gt;
* rollide-õiguste määramine (admin)&lt;br /&gt;
* asukohad mitmes riigis&lt;br /&gt;
* kliendipaketid, arveldus&lt;br /&gt;
* kontaktide tsentraliseeritud haldus&lt;br /&gt;
* sisselogimine läbi Google’i, Facebooki vmt teenuse&lt;br /&gt;
&lt;br /&gt;
===Andmebaasi skeem (lihtsustatud)===&lt;br /&gt;
&lt;br /&gt;
[[File:SPOTService ERD.JPG|border|SPOT Service ERD]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Märkus: olemite atribuutidest on välja toodud ainult peamised.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====Tabelite kirjeldused====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kasutajahaldus*:&#039;&#039;&#039;&lt;br /&gt;
* User - kasutajate andmed&lt;br /&gt;
* Role - rollid, millega määratakse kasutajate õigused (&amp;quot;Admin&amp;quot;, &amp;quot;Trainer&amp;quot;, ...)&lt;br /&gt;
* UserRole - kasutajate sidumine rolli(de)ga&lt;br /&gt;
* UserLogin - muu teenuse kaudu sisselogimiseks&lt;br /&gt;
* UserClaim - muu teenuse kaudu sisselogimiseks&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;&#039;&#039;Kasutajahalduse süsteem toetub Asp.Net Identity valmislahendusele, mida on täiendanud A. Käver.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Klubid:&#039;&#039;&#039;&lt;br /&gt;
* Chain (optional) - spordiklubikettide info&lt;br /&gt;
* Location - spordiklubi/-rajatise asukoht linna/asula täpsusega&lt;br /&gt;
* Facility - spordiklubi/-rajatise andmed, seotud asukohaga ja vajadusel ketiga.&lt;br /&gt;
* Venue - spordiklubis/-rajatises kasutatavad saalid ja muud treeningualad&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Treeningud:&#039;&#039;&#039;&lt;br /&gt;
* Concept (Style) - treeningustiilid ehk kontseptid&lt;br /&gt;
* Licenser (optional) - treeninguliikide litsentsid (kui on)&lt;br /&gt;
* Training - treeninguliikide andmed, seotud stiili ja vajadusel litsentsiga&lt;br /&gt;
* Trainer (User (role: Trainer) + Training) - treeninguliikide sidumine treeneritega&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tunniplaan:&#039;&#039;&#039;&lt;br /&gt;
* ScheduleItem - treeningud tunniplaanis&lt;br /&gt;
* Instructor (User (role: Trainer) + ScheduleItem) - tundide juhendajad (võib olla mitu)&lt;br /&gt;
* Registration (ScheduleItem + User (role: any)) - tundidesse tehtud registreeringud&lt;br /&gt;
&lt;br /&gt;
== XML / XSD / XSLT==&lt;br /&gt;
Projekti esimeses etapis sai loodud XML andmefail, mille ülesehitus on paika pandud XSD skeemifailis. Lisaks on olemas kaks stiilifaili: esimene neist transformeerib andmed HTML-kujule, et kuvada infot  veebilehel, teine tekitab samade andmete esitamiseks uue struktuuriga XML faili.&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/ProjectSPOT_ScheduleXml.zip Lae failid alla.] &lt;br /&gt;
&lt;br /&gt;
=== XML ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Fail sisaldab andmeid ühes spordiklubis pakutavate treeningute kohta. Andmed on esitatud treeninguliikide kaupa, mille juurde on lisatud ka vastava treeninguliigi tunniplaan. Treeninguliikidel on nimi ja kirjeldus ning vajadusel ära märgitud ka litsents. Failis on eraldi välja toodud treeningustiilid, instruktorid ja ruumid, kus treeningud toimuvad. Iga treeninguliik kuulub ühe või mitme stiili alla. Instruktoritel on tagasiside põhjal saadud hinne. Treeninguruumidel on vaikimisi määratud mahutavus. Tunniplaanis on ära toodud treeningu koht, algusaeg ja kestus ning instruktorid. Vajadusel saab eraldi määrata ka treeningurühma suuruse, kui see erineb tavalisest ruumi mahutavusest. Ka on võimalik treeningutunnile lisada kommentaar. Erinevate elementide andmed on omavahel seotud id-atribuutidega.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;?xml-stylesheet type=&amp;quot;text/xsl&amp;quot; href=&amp;quot;trainingsToHtml.xslt&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Trainings&amp;gt;&lt;br /&gt;
  &amp;lt;Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;![CDATA[Cardio]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
  &amp;lt;/Styles&amp;gt;&lt;br /&gt;
  &amp;lt;Instructors&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;1&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Yogafier]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;2&amp;quot; Rating=&amp;quot;4.7&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Mickey Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;3&amp;quot; Rating=&amp;quot;4.6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;4&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Donald Duck]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;5&amp;quot; Rating=&amp;quot;3.9&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Goofy]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;6&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Schwarzenegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;8&amp;quot; Rating=&amp;quot;4.8&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Kayla Weightlifter]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;9&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Margaret Strengthener]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
  &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;Venues&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;1&amp;quot; GroupSize=&amp;quot;45&amp;quot;&amp;gt;&amp;lt;![CDATA[Main Hall]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 2]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;3&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 3]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;4&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 4]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;5&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 5]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&amp;lt;![CDATA[Area 6]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;7&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&amp;lt;![CDATA[Yoga Hall]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
  &amp;lt;/Venues&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Yoga]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[Yoga is a group of physical, mental, and spiritual practices or disciplines which originated in ancient India. ]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;1&amp;quot; VenueId=&amp;quot;7&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-25T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;14&amp;quot; VenueId=&amp;quot;7&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT1H20M&amp;quot;&amp;gt;2017-03-28T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Comment&amp;gt;&lt;br /&gt;
          &amp;lt;![CDATA[Special class!]]&amp;gt;&lt;br /&gt;
        &amp;lt;/Comment&amp;gt; &lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/Nvlxn0EnmbM&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;  &lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;2&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyBalance™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[BODYBALANCE™ is the Yoga, Tai Chi, Pilates workout that builds flexibility and strength and leaves you feeling centered and calm. Based on a carefully structured series of stretches, moves and poses to music it creates a holistic workout that brings the body into a state of harmony and balance. This class will heighten your flexibility and inner strength creating a strong supple body from the inside out. Burn on average 390cals per hour.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;2&amp;quot; VenueId=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-31T12:15:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;3&amp;quot; VenueId=&amp;quot;2&amp;quot; &amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-30T13:30:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;3&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/jJxA6vBjUqY&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;3&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyJam™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;4&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[The Body Jam program is an addictive fusion of the latest dance styles to the hottest new sounds. This class isn’t just for dancers, it’s for everyone because the emphasis is put on not only having fun but also breaking a sweat. So grab a friend, get front and centre … you bring the attitude and we’ll bring the moves!]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;4&amp;quot;  VenueId=&amp;quot;3&amp;quot; &amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T16:10:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;4&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;5&amp;quot; VenueId=&amp;quot;5&amp;quot; &amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT45M&amp;quot;&amp;gt;2017-04-01T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;5&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/8PTXyg9si_4&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;4&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyPump™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[BodyPump classes are 59 minutes long and contain eight separate muscle-group specific songs or &amp;quot;tracks&amp;quot; along with an opening warm up track and closing cool-down track. There are also 45-minute and 30-minute class formats. The classes are performed to music using free weights-plates, barbells and an aerobic step. Participants choose their weights based on the exercise and their personal goals. Major muscle groups are worked via series of compound and isolation-based exercises including squats, presses, dead lifts. The focus is towards muscle endurance by moving light weights at high repetitions, what Les Mills calls the Rep Effect.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;3&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;6&amp;quot; VenueId=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;6&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;7&amp;quot; VenueId=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-23T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;6&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/zU_0XrdO3wo&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[CoreStrenght is a very hard workout! Not for beginners.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;3&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;8&amp;quot; VenueId=&amp;quot;6&amp;quot; GroupSize=&amp;quot;10&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT2H&amp;quot;&amp;gt;2017-03-23T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;9&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Comment&amp;gt;&lt;br /&gt;
          &amp;lt;![CDATA[Special challenge!]]&amp;gt;&lt;br /&gt;
        &amp;lt;/Comment&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;9&amp;quot; VenueId=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;8&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;10&amp;quot; VenueId=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-04-05T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;8&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;9&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/ZxTVmpvyUt8&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[Zumba involves dance and aerobic movements performed to energetic music. The choreography incorporates hip-hop, soca, samba, salsa, merengue and mambo. Squats and lunges are also included.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;4&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;11&amp;quot; VenueId=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT55M&amp;quot;&amp;gt;2017-03-26T15:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;12&amp;quot; VenueId=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-28T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;13&amp;quot; VenueId=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/-ZB6XIkfxnQ&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
&amp;lt;/Trainings&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSD ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Skeemifail kontrollib eelnevas andmefailis esitatud andmete vastavust kokkulepitud formaadile, samuti õigete andmetüüpide kasutamist. Alamelemendi id-atribuudi väärtus peab olema iga elemendirühma lõikes unikaalne. Kohustuslike elementide ja atribuutide kõrval on ka mõned (nt kommentaar), mille olemasolu pole alati tarvilik. Teatud puhkudel on piiratud maksimaalset elementide arvu (nt treeningutunni algusaeg). Faili üldine struktuur on kindel, aga alati pole alamelementide järjekord oluline (nt treeninguliigi puhul).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xs:schema attributeFormDefault=&amp;quot;unqualified&amp;quot; elementFormDefault=&amp;quot;qualified&amp;quot; xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xs:element name=&amp;quot;Trainings&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Styles&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Style&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
          &amp;lt;xs:unique name=&amp;quot;UniqueStyleId&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xs:selector xpath=&amp;quot;Style&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Instructors&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;Name&amp;quot; type=&amp;quot;xs:string&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:attribute name=&amp;quot;Rating&amp;quot; type=&amp;quot;xs:decimal&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
          &amp;lt;xs:unique name=&amp;quot;UniqueInstructorId&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xs:selector xpath=&amp;quot;Instructor&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Venues&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Venue&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:attribute name=&amp;quot;GroupSize&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
          &amp;lt;xs:unique name=&amp;quot;UniqueVenueId&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xs:selector xpath=&amp;quot;Venue&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Training&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:all&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Description&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Styles&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Style&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Schedule&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;ScheduleItem&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:all&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element  maxOccurs=&amp;quot;1&amp;quot; name=&amp;quot;Time&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:extension base=&amp;quot;xs:dateTime&amp;quot;&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:attribute name=&amp;quot;Duration&amp;quot; type=&amp;quot;xs:duration&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element name=&amp;quot;Instructors&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                    &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                                      &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                                        &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                                      &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                                    &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                                  &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; name=&amp;quot;Comment&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:all&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;VenueId&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;GroupSize&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;optional&amp;quot; /&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;VideoUrl&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:all&amp;gt;&lt;br /&gt;
            &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xs:attribute name=&amp;quot;Licence&amp;quot; type=&amp;quot;xs:string&amp;quot; use=&amp;quot;optional&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
    &amp;lt;xs:unique name=&amp;quot;UniqueTrainingId&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xs:selector xpath=&amp;quot;Training&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
    &amp;lt;xs:unique name=&amp;quot;UniqueScheduleItemId&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xs:selector xpath=&amp;quot;Training/Schedule/ScheduleItem&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSLT (html) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Selles transformatsioonifailis on kirjeldatud XML failis olevate andmete [http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/trainings.xml  kuvamise viis veebilehel]. Treeninguliigid on jaotatud stiiliblokkidesse (mõni treening kuulub mitme stiili alla). Iga treeninguliigi all on tabeli kujul esitatud tunniplaan ning lisatud näidisvideo ja kirjeldus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot; xmlns:msxsl=&amp;quot;urn:schemas-microsoft-com:xslt&amp;quot; exclude-result-prefixes=&amp;quot;msxsl&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:output method=&amp;quot;html&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;html&amp;gt;&lt;br /&gt;
      &amp;lt;head&amp;gt;&lt;br /&gt;
        &amp;lt;title&amp;gt;SuperSportsClub - Trainings&amp;lt;/title&amp;gt;&lt;br /&gt;
        &amp;lt;style&amp;gt;&lt;br /&gt;
          body {&lt;br /&gt;
          background:BurlyWood;&lt;br /&gt;
          text-align: center;&lt;br /&gt;
          }&lt;br /&gt;
          .section {&lt;br /&gt;
          text-align:left;&lt;br /&gt;
          width:1000px;&lt;br /&gt;
          padding:20px;&lt;br /&gt;
          background:Chocolate;&lt;br /&gt;
          margin: auto;&lt;br /&gt;
          }&lt;br /&gt;
          table, th, td, .section {&lt;br /&gt;
          border: 1px solid black;&lt;br /&gt;
          }&lt;br /&gt;
          th {&lt;br /&gt;
          text-align:left;&lt;br /&gt;
          padding-left: 10px;&lt;br /&gt;
          padding-right: 10px;&lt;br /&gt;
          }&lt;br /&gt;
          td {&lt;br /&gt;
          text-align:center;&lt;br /&gt;
          }&lt;br /&gt;
          p {&lt;br /&gt;
          text-align:justify;&lt;br /&gt;
          }&lt;br /&gt;
          .description {&lt;br /&gt;
          vertical-align:top; &lt;br /&gt;
          padding:10px;&lt;br /&gt;
          }&lt;br /&gt;
        &amp;lt;/style&amp;gt;&lt;br /&gt;
      &amp;lt;/head&amp;gt;&lt;br /&gt;
      &amp;lt;body&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;Trainings at SuperSportsClub&amp;lt;/h1&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;/Trainings/Styles/Style&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:sort select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:variable select=&amp;quot;.&amp;quot; name=&amp;quot;SelectedStyle&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;section&amp;quot; &amp;gt;&lt;br /&gt;
            &amp;lt;h2&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select=&amp;quot;$SelectedStyle&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/h2&amp;gt;&lt;br /&gt;
            &amp;lt;ul&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:for-each select=&amp;quot;/Trainings/Training&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:sort select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:variable name=&amp;quot;Training&amp;quot; select=&amp;quot;.&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:if test=&amp;quot;Styles/Style/@Id = $SelectedStyle/@Id&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;&lt;br /&gt;
                    &amp;lt;h3&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;$Training/Name&amp;quot; /&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:if test=&amp;quot;$Training/@Licence&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:text&amp;gt; (&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:value-of select=&amp;quot;$Training/@Licence&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:text&amp;gt;)&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
                    &amp;lt;/h3&amp;gt;&lt;br /&gt;
                    &amp;lt;table&amp;gt;&lt;br /&gt;
                      &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                      &amp;lt;/tr&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:for-each select=&amp;quot;$Training/Schedule/ScheduleItem&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:sort select=&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:variable name=&amp;quot;StartTime&amp;quot; select=&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:variable name=&amp;quot;Duration&amp;quot; select=&amp;quot;$StartTime/@Duration&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;tr&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;150&amp;quot; &amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;concat(&lt;br /&gt;
                                            substring($StartTime, 9, 2), &lt;br /&gt;
                                            &#039;.&#039;, &lt;br /&gt;
                                            substring($StartTime, 6, 2), &lt;br /&gt;
                                            &#039;.&#039;, &lt;br /&gt;
                                            substring($StartTime, 1, 4),&lt;br /&gt;
                                            &#039; &#039;,&lt;br /&gt;
                                            substring($StartTime, 12, 2),&lt;br /&gt;
                                            &#039;:&#039;,&lt;br /&gt;
                                            substring($StartTime, 15, 2))&lt;br /&gt;
                                            &amp;quot; /&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:if test=&amp;quot;Comment&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;br/&amp;gt;&lt;br /&gt;
                              &amp;lt;div style=&amp;quot;color:Green&amp;quot;&amp;gt;&lt;br /&gt;
                                &amp;lt;xsl:value-of select=&amp;quot;Comment&amp;quot;/&amp;gt;&lt;br /&gt;
                              &amp;lt;/div&amp;gt;&lt;br /&gt;
                            &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;substring($Duration, 3, 6)&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:variable name=&amp;quot;VenueId&amp;quot; select=&amp;quot;@VenueId&amp;quot;/&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;/Trainings/Venues/Venue[@Id=$VenueId]&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:for-each select=&amp;quot;Instructors/Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:variable name=&amp;quot;InstructorId&amp;quot; select=&amp;quot;@Id&amp;quot;&amp;gt;&amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:variable name=&amp;quot;SelectedInstructor&amp;quot; select=&amp;quot;/Trainings/Instructors/Instructor[@Id=$InstructorId]&amp;quot; /&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/Name&amp;quot;/&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:text&amp;gt; (&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/@Rating&amp;quot; /&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:text&amp;gt;)&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                              &amp;lt;br/&amp;gt;&lt;br /&gt;
                            &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;/tr&amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
                    &amp;lt;/table&amp;gt;&lt;br /&gt;
                    &amp;lt;br/&amp;gt;&lt;br /&gt;
                    &amp;lt;table&amp;gt;&lt;br /&gt;
                      &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                          &amp;lt;xsl:variable name=&amp;quot;VideoUrl&amp;quot; select=&amp;quot;$Training/VideoUrl&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;{$VideoUrl}&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                          &amp;lt;p&amp;gt;&lt;br /&gt;
                            &amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&lt;br /&gt;
                          &amp;lt;/p&amp;gt;&lt;br /&gt;
                          &amp;lt;p&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;$Training/Description&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                      &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;/table&amp;gt;&lt;br /&gt;
                  &amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
            &amp;lt;/ul&amp;gt;&lt;br /&gt;
          &amp;lt;/div&amp;gt;&lt;br /&gt;
          &amp;lt;br/&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
      &amp;lt;/body&amp;gt;&lt;br /&gt;
    &amp;lt;/html&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== HTML (transformeeritud) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/trainings.html Vaata eelneva transformatsiooni tulemust.]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;META http-equiv=&amp;quot;Content-Type&amp;quot; content=&amp;quot;text/html; charset=utf-8&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;SuperSportsClub - Trainings&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;style&amp;gt;&lt;br /&gt;
        body {&lt;br /&gt;
            background: BurlyWood;&lt;br /&gt;
            text-align: center;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        .section {&lt;br /&gt;
            text-align: left;&lt;br /&gt;
            width: 1000px;&lt;br /&gt;
            padding: 20px;&lt;br /&gt;
            background: Chocolate;&lt;br /&gt;
            margin: auto;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        table, th, td, .section {&lt;br /&gt;
            border: 1px solid black;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        th {&lt;br /&gt;
            text-align: left;&lt;br /&gt;
            padding-left: 10px;&lt;br /&gt;
            padding-right: 10px;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        td {&lt;br /&gt;
            text-align: center;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        p {&lt;br /&gt;
            text-align: justify;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        .description {&lt;br /&gt;
            vertical-align: top;&lt;br /&gt;
            padding: 10px;&lt;br /&gt;
        }&lt;br /&gt;
    &amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
    &amp;lt;h1&amp;gt;Trainings at SuperSportsClub&amp;lt;/h1&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Body&amp;amp;amp;Mind&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyBalance™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 13:30&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;1H15M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 2&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Minnie Mouse (4.6)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;31.03.2017 12:15&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;1H15M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 3&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Mickey Mouse (4.7)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/jJxA6vBjUqY&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                BODYBALANCE™ is the Yoga, Tai Chi, Pilates workout that builds flexibility and strength and leaves you feeling centered and calm. Based on a carefully structured series of stretches, moves and poses to music it creates a holistic workout that brings the body into a state of harmony and balance. This class will heighten your flexibility and inner strength creating a strong supple body from the inside out. Burn on average 390cals per hour.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;Yoga&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;25.03.2017 14:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Yoga Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Minnie Yogafier (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
                            28.03.2017 14:00&amp;lt;br&amp;gt;&amp;lt;div style=&amp;quot;color:Green&amp;quot;&amp;gt;&lt;br /&gt;
                                Special class!&lt;br /&gt;
                            &amp;lt;/div&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;1H20M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Yoga Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Minnie Yogafier (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/Nvlxn0EnmbM&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                Yoga is a group of physical, mental, and spiritual practices or disciplines which originated in ancient India.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Cardio&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyJam™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 16:10&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 3&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Donald Duck (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;01.04.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;45M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 5&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Goofy (3.9)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/8PTXyg9si_4&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                The Body Jam program is an addictive fusion of the latest dance styles to the hottest new sounds. This class isn’t just for dancers, it’s for everyone because the emphasis is put on not only having fun but also breaking a sweat. So grab a friend, get front and centre … you bring the attitude and we’ll bring the moves!&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Dance&amp;amp;amp;Fun&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyJam™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 16:10&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 3&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Donald Duck (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;01.04.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;45M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 5&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Goofy (3.9)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/8PTXyg9si_4&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                The Body Jam program is an addictive fusion of the latest dance styles to the hottest new sounds. This class isn’t just for dancers, it’s for everyone because the emphasis is put on not only having fun but also breaking a sweat. So grab a friend, get front and centre … you bring the attitude and we’ll bring the moves!&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;Zumba®&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;26.03.2017 15:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;55M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 2&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Zumbaschnegger (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;28.03.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 4&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Zumbaschnegger (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 2&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Zumbaschnegger (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/-ZB6XIkfxnQ&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                Zumba involves dance and aerobic movements performed to energetic music. The choreography incorporates hip-hop, soca, samba, salsa, merengue and mambo. Squats and lunges are also included.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Strength&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyPump™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;23.03.2017 13:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Main Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Schwarzenegger (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 13:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Main Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Schwarzenegger (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/zU_0XrdO3wo&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                BodyPump classes are 59 minutes long and contain eight separate muscle-group specific songs or &amp;quot;tracks&amp;quot; along with an opening warm up track and closing cool-down track. There are also 45-minute and 30-minute class formats. The classes are performed to music using free weights-plates, barbells and an aerobic step. Participants choose their weights based on the exercise and their personal goals. Major muscle groups are worked via series of compound and isolation-based exercises including squats, presses, dead lifts. The focus is towards muscle endurance by moving light weights at high repetitions, what Les Mills calls the Rep Effect.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;CoreStrength&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
                            23.03.2017 12:00&amp;lt;br&amp;gt;&amp;lt;div style=&amp;quot;color:Green&amp;quot;&amp;gt;&lt;br /&gt;
                                Special challenge!&lt;br /&gt;
                            &amp;lt;/div&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;2H&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Area 6&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Margaret Strengthener (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Area 6&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Kayla Weightlifter (4.8)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;05.04.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Area 6&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Kayla Weightlifter (4.8)&amp;lt;br&amp;gt;Margaret Strengthener (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/ZxTVmpvyUt8&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                CoreStrenght is a very hard workout! Not for beginners.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSLT (xml) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Selle transformatsiooniga luuakse uus [http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/schedule.xml XML fail], milles on treeningute andmed esitatud ühtse tunniplaani kujul. Algses failis erinevate elementide alla paigutatud andmed on nüüd tunniplaani alamelemendis kokku viidud. Sidumine on teostatud id-atribuutide abil. Tunniplaanis on ühes kohas kirjas treeningu nimi, stiil(id), koht, algusaeg, kestus, rühma suurus, instruktorid ja muu täiendav info.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&lt;br /&gt;
    xmlns:msxsl=&amp;quot;urn:schemas-microsoft-com:xslt&amp;quot; exclude-result-prefixes=&amp;quot;msxsl&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:output method=&amp;quot;xml&amp;quot; indent=&amp;quot;yes&amp;quot; cdata-section-elements=&amp;quot;Name Style Comment&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;/Trainings/Training&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:sort select=&amp;quot;Name&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:variable name=&amp;quot;SelectedTraining&amp;quot; select=&amp;quot;.&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;Schedule/ScheduleItem&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:sort select=&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;ScheduleItem&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:variable name=&amp;quot;VenueId&amp;quot; select=&amp;quot;@VenueId&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:variable name=&amp;quot;SelectedVenue&amp;quot; select=&amp;quot;/Trainings/Venues/Venue[@Id=$VenueId]&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:attribute name=&amp;quot;GroupSize&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;@GroupSize&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:value-of select=&amp;quot;@GroupSize&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:value-of select=&amp;quot;$SelectedVenue/@GroupSize&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
            &amp;lt;Venue&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$VenueId&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select=&amp;quot;$SelectedVenue&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/Venue&amp;gt;&lt;br /&gt;
            &amp;lt;Training&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$SelectedTraining/@Id&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:if test=&amp;quot;$SelectedTraining/@Licence&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:attribute name=&amp;quot;Licence&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:value-of select=&amp;quot;$SelectedTraining/@Licence&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
              &amp;lt;Name&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$SelectedTraining/Name&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/Name&amp;gt;&lt;br /&gt;
              &amp;lt;Styles&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:for-each select=&amp;quot;$SelectedTraining/Styles/Style&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:variable name=&amp;quot;StyleId&amp;quot; select=&amp;quot;@Id&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;Style&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:attribute name=&amp;quot;StyleId&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;$StyleId&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;/Trainings/Styles/Style[@Id=$StyleId]&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/Style&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
              &amp;lt;/Styles&amp;gt;&lt;br /&gt;
            &amp;lt;/Training&amp;gt;&lt;br /&gt;
            &amp;lt;Time&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:attribute name=&amp;quot;Duration&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;Time/@Duration&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select =&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/Time&amp;gt;&lt;br /&gt;
            &amp;lt;Instructors&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:for-each select=&amp;quot;Instructors/Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:variable name=&amp;quot;InstructorId&amp;quot; select=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:variable name=&amp;quot;SelectedInstructor&amp;quot; select=&amp;quot;/Trainings/Instructors/Instructor[@Id=$InstructorId]&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;Instructor&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;$InstructorId&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:attribute name=&amp;quot;Rating&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/@Rating&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                  &amp;lt;Name&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/Name&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/Name&amp;gt;&lt;br /&gt;
                &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
            &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:if test=&amp;quot;Comment&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;Comment&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;Comment&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/Comment&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
          &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XML (transformeeritud) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/schedule.xml Vaata eelneva transformatsiooni tulemust.]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Schedule&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;3&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot;&amp;gt;Hall 2&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;2&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyBalance™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-30T13:30:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;3&amp;quot; Rating=&amp;quot;4.6&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;2&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;3&amp;quot;&amp;gt;Hall 3&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;2&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyBalance™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-31T12:15:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;2&amp;quot; Rating=&amp;quot;4.7&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Mickey Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;4&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;3&amp;quot;&amp;gt;Hall 3&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;3&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyJam™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;![CDATA[Cardio]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T16:10:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;4&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Donald Duck]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;5&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;5&amp;quot;&amp;gt;Hall 5&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;3&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyJam™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;![CDATA[Cardio]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT45M&amp;quot;&amp;gt;2017-04-01T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;5&amp;quot; Rating=&amp;quot;3.9&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Goofy]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;7&amp;quot; GroupSize=&amp;quot;45&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;1&amp;quot;&amp;gt;Main Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;4&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyPump™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-23T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;6&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Schwarzenegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;6&amp;quot; GroupSize=&amp;quot;45&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;1&amp;quot;&amp;gt;Main Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;4&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyPump™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;6&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Schwarzenegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;8&amp;quot; GroupSize=&amp;quot;10&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot;&amp;gt;Area 6&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT2H&amp;quot;&amp;gt;2017-03-23T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;9&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Margaret Strengthener]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
    &amp;lt;Comment&amp;gt;&amp;lt;![CDATA[&lt;br /&gt;
          Special challenge!&lt;br /&gt;
        ]]&amp;gt;&amp;lt;/Comment&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;9&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot;&amp;gt;Area 6&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;8&amp;quot; Rating=&amp;quot;4.8&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Kayla Weightlifter]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;10&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot;&amp;gt;Area 6&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-04-05T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;8&amp;quot; Rating=&amp;quot;4.8&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Kayla Weightlifter]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;9&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Margaret Strengthener]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;11&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot;&amp;gt;Hall 2&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT55M&amp;quot;&amp;gt;2017-03-26T15:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;12&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;4&amp;quot;&amp;gt;Hall 4&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-28T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;13&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot;&amp;gt;Hall 2&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;1&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;7&amp;quot;&amp;gt;Yoga Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Yoga]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-25T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;1&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Yogafier]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;14&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;7&amp;quot;&amp;gt;Yoga Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Yoga]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT1H20M&amp;quot;&amp;gt;2017-03-28T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;1&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Yogafier]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
    &amp;lt;Comment&amp;gt;&amp;lt;![CDATA[&lt;br /&gt;
          Special class!&lt;br /&gt;
        ]]&amp;gt;&amp;lt;/Comment&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
&amp;lt;/Schedule&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus ==&lt;br /&gt;
Angular JS &#039;&#039;single page application&#039;&#039; eelnevalt kirjeldatud veebiteenusele. Sisse logimata saab kuvada spordiklubi tunniplaani nädalate kaupa, treeninguliike stiilide kaupa ja treenereid. Võimalik on liituda teenusega ja registreeruda treeningutele, samuti registreeringuid tühistada nii otse tunniplaanist kui ka registreeringute lehel. Esialgu põhineb süsteem ühel spordiklubil. Kasutamise eelduseks on tunniplaani olemasolu andmebaasis.&lt;br /&gt;
&lt;br /&gt;
Autentimine on lahendatud tokenipõhiselt. Eeskujuna kasutasime näidisrakendust, mille juhend ja lähtekood on leitav [http://bitoftech.net/2014/06/09/angularjs-token-authentication-using-asp-net-web-api-2-owin-asp-net-identity/ siit].&lt;br /&gt;
&lt;br /&gt;
== Lähtekood ==&lt;br /&gt;
Eksamiks valminud veebiteenuse ja klientrakenduse kokkupakitult allalaadimiseks klõpsa [http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/solution/ProjectSPOT.zip sellel lingil]. WebApi ja Angular JS klient on eraldi lahendustes. Kliendi testimiseks brauseris (Chrome, Firefox vm) tuleb eelnevalt käivitada ka veebiteenus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;NB! Võib juhtuda, et WebApi esmakordsel käivitamisel loodavasse andmebaasi kõiki andmeid (tunniplaani ja registreerimisi jooksvasse nädalasse) ei lisandu. Sellisel juhul kustuta tekkinud andmebaas ja käivita kõigepealt samas lahenduses olev konsoolirakendus.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Retsensioonid ==&lt;br /&gt;
&lt;br /&gt;
# [https://wiki.itcollege.ee/index.php/Talk:JRT XML/XSD/XSLT retsensioon meeskonnale JRT]&lt;br /&gt;
# [Veebiteenuse retsensioon lisandub varsti]&lt;br /&gt;
# [Klientrakenduse retsensioon lisandub varsti]&lt;br /&gt;
&lt;br /&gt;
== Log ==&lt;br /&gt;
* 03.03.17 Esimene kohtumine. Idee.&lt;br /&gt;
* 17.03.17 Osa XMList valmis, osa XSLT-st valmis.&lt;br /&gt;
* 18.03.17 Teine kohtumine. XMLi täiendamine, esimene ülekäimine XSD-s.&lt;br /&gt;
* 19.03.17 XML/XSLT/XSD täiendamine ja lõpetamine.&lt;br /&gt;
* 20.03.17 XML fail, skeemifail ja stiilifailid esitatud. Projekti esimese etapi lõpp. Kevade algus.&lt;br /&gt;
* 26.03.17 XML/XSLT/XSD retsensioon esitatud.&lt;br /&gt;
* 16.04.17 Veebiteenuse analüüsi koostamine.&lt;br /&gt;
* 17.04.17 Esialgne veebiteenuse analüüs ja kavand valmis.&lt;br /&gt;
* 19.04.17 Alustasime veebiteenusega, koostegemine: Domain, DAL, Interfaces, Repostitories. Testimine konsoolis.&lt;br /&gt;
* 24.04.17 Veebiteenuse koostegemine, 2. kord: Domaini täiendamine.&lt;br /&gt;
* 29.04.17 Veebiteenuse koostegemine, 3. kord: Interfaces, Repositories, Factory + UOW. Testimine konsoolis.&lt;br /&gt;
* 01.05.17 Andmebaasi täitmine testandmetega varasemas faasis loodud XML failist.&lt;br /&gt;
* 02.05.17 Veebiteenuse koostegemine, 4. kord: alustasime BLi ja WebApi ehitamist. GET päringud.&lt;br /&gt;
* 09.05.17 Veebiteenuse koostegemine, 5. kord: lisasime Identity.&lt;br /&gt;
* 11.05.17 Veebiteenuse koostegemine, 6. kord: WebApi arendamine. POST, PUT ja DELETE päringud.&lt;br /&gt;
* 15.05.17 Veebiteenuse koostegemine, 7. kord: WebApi arendamine. Lisasime  api kontrollereid.&lt;br /&gt;
* 16.05.17 Veebiteenuse koostegemine, 8. kord: WebApi arendamine. Identity kontroll Fiddleri ja Postmaniga.&lt;br /&gt;
* 20.05.17 Klientrakenduse koostegemine, 1. kord. Testklient.&lt;br /&gt;
* 25.05.17 Klientrakenduse koostegemine, 2. kord. Klientrakenduse arendamine.&lt;br /&gt;
* 01.06.17 Klientrakenduse koostegemine, 3. kord. Klientrakenduse arendamine. Angular JS.&lt;br /&gt;
* 03.06.17 - 11.06.17 Klientrakenduse arendamine. Tokenipõhine autentimine. Veebiteenuse viimistlemine.&lt;br /&gt;
* 11.06.17 Lõpptähtaeg. Projekti esitlemine eksamil.&lt;br /&gt;
* 12.06.17 Teiste lahenduste retsenseerimine.&lt;/div&gt;</summary>
		<author><name>Otiks</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Team_SPOT&amp;diff=123483</id>
		<title>Team SPOT</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Team_SPOT&amp;diff=123483"/>
		<updated>2017-06-12T02:36:30Z</updated>

		<summary type="html">&lt;p&gt;Otiks: /* Lähtekood */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://wiki.itcollege.ee/index.php/Kodut%C3%B6%C3%B6_aines_%22V%C3%B5rgurakendused_II:_hajuss%C3%BCsteemide_ehitamine%22_2017 Kodutöö aines &amp;quot;Võrgurakendused II: hajussüsteemide ehitamine&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
[https://projectspot.visualstudio.com/PROJECTSPOT Projekti kodu (avaneb ainult liikmetele)]&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==Liikmed==&lt;br /&gt;
*Sigrid Pachel&lt;br /&gt;
*Oliver Tiks&lt;br /&gt;
&lt;br /&gt;
==Idee==&lt;br /&gt;
Mõttes on luua spordiklubi(de) veebiteenus ja klientrakendus, mis võimaldaks saada infot pakutavate treeningute kohta, sisestada ja kuvada tunniplaani andmeid, registreerida osalejaid tundidesse ning teha muid asjakohaseid tegevusi nii klubi(de) personalil, liikmetel kui ka juhukasutajatel.&lt;br /&gt;
&lt;br /&gt;
==Veebiteenuse analüüs==&lt;br /&gt;
SPOTi veebiteenus võimaldab saada infot erinevate klubide treeningute kohta ja end neisse registreerida. Kasutaja saab teavet, kus ja millal treeningud toimuvad (tunniplaan), mida treeningus täpsemalt tehakse, mis stiiliga on tegemist, kes on treener, kui palju üks kord maksab jms info. Kasutajakontoga liikmel on võimalik end registreerida soovitud tundi ja hallata oma registreeringuid (muuta, tühistada).&lt;br /&gt;
&lt;br /&gt;
Spordiklubide infot haldavad süsteemi administraatorid, kes saavad lisada, muuta ja kustutada kõike sprodiklubiga seonduvat. Erinevaid treeninguid ja nendega seotud konkreetset infot saavad lisada ja hallata treenerid või spordiklubi esindajad.&lt;br /&gt;
&lt;br /&gt;
Projekti realiseerimiseks kasutame REST arhitektuuri ja ASP.NET MVC Web API tehnoloogiat.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Üldine plaan:&#039;&#039;&#039;&lt;br /&gt;
* esialgu üks kett (laienemise võimalusega)&lt;br /&gt;
* mitu klubi (asukoht, saalid-treeningualad, võimalikud lisatingimused)&lt;br /&gt;
* treeningute info (stiilid ehk kontseptid, litsentsid, …)&lt;br /&gt;
* tunniplaan (aeg, koht, instruktorid, max osalejate arv, ühe korra hind)&lt;br /&gt;
* registratuur (treeningutest osavõtjad)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kasutajad (rollid):&#039;&#039;&#039;&lt;br /&gt;
* administraatorid (saavad teha muudatusi)&lt;br /&gt;
* treenerid (info kvalifikatsiooni, litsentside kohta, õigus treeninguid lisada) &lt;br /&gt;
* liikmed (saavad treeningutele registreeruda)&lt;br /&gt;
* ülejäänud (näevad klubide ja treeningute infot ning tunniplaani)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Peaks olema:&#039;&#039;&#039;&lt;br /&gt;
* kasutajate loomine&lt;br /&gt;
* kasutajate tuvastamine ja haldamine&lt;br /&gt;
* kasutajate ja kasutusstatistika logimine&lt;br /&gt;
* teenuse poole pöördumiste arvu piiramine ja piirangute haldamine&lt;br /&gt;
* klubide, treenerite ja treeningute info väljastamine&lt;br /&gt;
* tunniplaani info väljastamine&lt;br /&gt;
* treeningutesse registreerimine&lt;br /&gt;
* registreeringu tühistamine&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Võiks olla:&#039;&#039;&#039;&lt;br /&gt;
* klubide, treenerite, treeningute lisamine ja muutmine&lt;br /&gt;
* tunniplaanis treeningute tühistamine&lt;br /&gt;
* sisestatud andmete kustutamine (pehmelt)&lt;br /&gt;
* rollide-õiguste määramine (admin)&lt;br /&gt;
* asukohad mitmes riigis&lt;br /&gt;
* kliendipaketid, arveldus&lt;br /&gt;
* kontaktide tsentraliseeritud haldus&lt;br /&gt;
* sisselogimine läbi Google’i, Facebooki vmt teenuse&lt;br /&gt;
&lt;br /&gt;
===Andmebaasi skeem (lihtsustatud)===&lt;br /&gt;
&lt;br /&gt;
[[File:SPOTService ERD.JPG|border|SPOT Service ERD]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Märkus: olemite atribuutidest on välja toodud ainult peamised.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====Tabelite kirjeldused====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kasutajahaldus*:&#039;&#039;&#039;&lt;br /&gt;
* User - kasutajate andmed&lt;br /&gt;
* Role - rollid, millega määratakse kasutajate õigused (&amp;quot;Admin&amp;quot;, &amp;quot;Trainer&amp;quot;, ...)&lt;br /&gt;
* UserRole - kasutajate sidumine rolli(de)ga&lt;br /&gt;
* UserLogin - muu teenuse kaudu sisselogimiseks&lt;br /&gt;
* UserClaim - muu teenuse kaudu sisselogimiseks&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;&#039;&#039;Kasutajahalduse süsteem toetub Asp.Net Identity valmislahendusele, mida on täiendanud A. Käver.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Klubid:&#039;&#039;&#039;&lt;br /&gt;
* Chain (optional) - spordiklubikettide info&lt;br /&gt;
* Location - spordiklubi/-rajatise asukoht linna/asula täpsusega&lt;br /&gt;
* Facility - spordiklubi/-rajatise andmed, seotud asukohaga ja vajadusel ketiga.&lt;br /&gt;
* Venue - spordiklubis/-rajatises kasutatavad saalid ja muud treeningualad&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Treeningud:&#039;&#039;&#039;&lt;br /&gt;
* Concept (Style) - treeningustiilid ehk kontseptid&lt;br /&gt;
* Licenser (optional) - treeninguliikide litsentsid (kui on)&lt;br /&gt;
* Training - treeninguliikide andmed, seotud stiili ja vajadusel litsentsiga&lt;br /&gt;
* Trainer (User (role: Trainer) + Training) - treeninguliikide sidumine treeneritega&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tunniplaan:&#039;&#039;&#039;&lt;br /&gt;
* ScheduleItem - treeningud tunniplaanis&lt;br /&gt;
* Instructor (User (role: Trainer) + ScheduleItem) - tundide juhendajad (võib olla mitu)&lt;br /&gt;
* Registration (ScheduleItem + User (role: any)) - tundidesse tehtud registreeringud&lt;br /&gt;
&lt;br /&gt;
== XML / XSD / XSLT==&lt;br /&gt;
Projekti esimeses etapis sai loodud XML andmefail, mille ülesehitus on paika pandud XSD skeemifailis. Lisaks on olemas kaks stiilifaili: esimene neist transformeerib andmed HTML-kujule, et kuvada infot  veebilehel, teine tekitab samade andmete esitamiseks uue struktuuriga XML faili.&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/ProjectSPOT_ScheduleXml.zip Lae failid alla.] &lt;br /&gt;
&lt;br /&gt;
=== XML ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Fail sisaldab andmeid ühes spordiklubis pakutavate treeningute kohta. Andmed on esitatud treeninguliikide kaupa, mille juurde on lisatud ka vastava treeninguliigi tunniplaan. Treeninguliikidel on nimi ja kirjeldus ning vajadusel ära märgitud ka litsents. Failis on eraldi välja toodud treeningustiilid, instruktorid ja ruumid, kus treeningud toimuvad. Iga treeninguliik kuulub ühe või mitme stiili alla. Instruktoritel on tagasiside põhjal saadud hinne. Treeninguruumidel on vaikimisi määratud mahutavus. Tunniplaanis on ära toodud treeningu koht, algusaeg ja kestus ning instruktorid. Vajadusel saab eraldi määrata ka treeningurühma suuruse, kui see erineb tavalisest ruumi mahutavusest. Ka on võimalik treeningutunnile lisada kommentaar. Erinevate elementide andmed on omavahel seotud id-atribuutidega.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;?xml-stylesheet type=&amp;quot;text/xsl&amp;quot; href=&amp;quot;trainingsToHtml.xslt&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Trainings&amp;gt;&lt;br /&gt;
  &amp;lt;Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;![CDATA[Cardio]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
  &amp;lt;/Styles&amp;gt;&lt;br /&gt;
  &amp;lt;Instructors&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;1&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Yogafier]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;2&amp;quot; Rating=&amp;quot;4.7&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Mickey Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;3&amp;quot; Rating=&amp;quot;4.6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;4&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Donald Duck]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;5&amp;quot; Rating=&amp;quot;3.9&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Goofy]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;6&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Schwarzenegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;8&amp;quot; Rating=&amp;quot;4.8&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Kayla Weightlifter]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;9&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Margaret Strengthener]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
  &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;Venues&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;1&amp;quot; GroupSize=&amp;quot;45&amp;quot;&amp;gt;&amp;lt;![CDATA[Main Hall]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 2]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;3&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 3]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;4&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 4]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;5&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 5]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&amp;lt;![CDATA[Area 6]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;7&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&amp;lt;![CDATA[Yoga Hall]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
  &amp;lt;/Venues&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Yoga]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[Yoga is a group of physical, mental, and spiritual practices or disciplines which originated in ancient India. ]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;1&amp;quot; VenueId=&amp;quot;7&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-25T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;14&amp;quot; VenueId=&amp;quot;7&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT1H20M&amp;quot;&amp;gt;2017-03-28T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Comment&amp;gt;&lt;br /&gt;
          &amp;lt;![CDATA[Special class!]]&amp;gt;&lt;br /&gt;
        &amp;lt;/Comment&amp;gt; &lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/Nvlxn0EnmbM&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;  &lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;2&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyBalance™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[BODYBALANCE™ is the Yoga, Tai Chi, Pilates workout that builds flexibility and strength and leaves you feeling centered and calm. Based on a carefully structured series of stretches, moves and poses to music it creates a holistic workout that brings the body into a state of harmony and balance. This class will heighten your flexibility and inner strength creating a strong supple body from the inside out. Burn on average 390cals per hour.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;2&amp;quot; VenueId=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-31T12:15:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;3&amp;quot; VenueId=&amp;quot;2&amp;quot; &amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-30T13:30:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;3&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/jJxA6vBjUqY&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;3&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyJam™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;4&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[The Body Jam program is an addictive fusion of the latest dance styles to the hottest new sounds. This class isn’t just for dancers, it’s for everyone because the emphasis is put on not only having fun but also breaking a sweat. So grab a friend, get front and centre … you bring the attitude and we’ll bring the moves!]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;4&amp;quot;  VenueId=&amp;quot;3&amp;quot; &amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T16:10:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;4&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;5&amp;quot; VenueId=&amp;quot;5&amp;quot; &amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT45M&amp;quot;&amp;gt;2017-04-01T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;5&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/8PTXyg9si_4&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;4&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyPump™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[BodyPump classes are 59 minutes long and contain eight separate muscle-group specific songs or &amp;quot;tracks&amp;quot; along with an opening warm up track and closing cool-down track. There are also 45-minute and 30-minute class formats. The classes are performed to music using free weights-plates, barbells and an aerobic step. Participants choose their weights based on the exercise and their personal goals. Major muscle groups are worked via series of compound and isolation-based exercises including squats, presses, dead lifts. The focus is towards muscle endurance by moving light weights at high repetitions, what Les Mills calls the Rep Effect.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;3&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;6&amp;quot; VenueId=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;6&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;7&amp;quot; VenueId=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-23T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;6&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/zU_0XrdO3wo&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[CoreStrenght is a very hard workout! Not for beginners.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;3&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;8&amp;quot; VenueId=&amp;quot;6&amp;quot; GroupSize=&amp;quot;10&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT2H&amp;quot;&amp;gt;2017-03-23T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;9&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Comment&amp;gt;&lt;br /&gt;
          &amp;lt;![CDATA[Special challenge!]]&amp;gt;&lt;br /&gt;
        &amp;lt;/Comment&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;9&amp;quot; VenueId=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;8&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;10&amp;quot; VenueId=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-04-05T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;8&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;9&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/ZxTVmpvyUt8&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[Zumba involves dance and aerobic movements performed to energetic music. The choreography incorporates hip-hop, soca, samba, salsa, merengue and mambo. Squats and lunges are also included.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;4&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;11&amp;quot; VenueId=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT55M&amp;quot;&amp;gt;2017-03-26T15:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;12&amp;quot; VenueId=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-28T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;13&amp;quot; VenueId=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/-ZB6XIkfxnQ&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
&amp;lt;/Trainings&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSD ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Skeemifail kontrollib eelnevas andmefailis esitatud andmete vastavust kokkulepitud formaadile, samuti õigete andmetüüpide kasutamist. Alamelemendi id-atribuudi väärtus peab olema iga elemendirühma lõikes unikaalne. Kohustuslike elementide ja atribuutide kõrval on ka mõned (nt kommentaar), mille olemasolu pole alati tarvilik. Teatud puhkudel on piiratud maksimaalset elementide arvu (nt treeningutunni algusaeg). Faili üldine struktuur on kindel, aga alati pole alamelementide järjekord oluline (nt treeninguliigi puhul).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xs:schema attributeFormDefault=&amp;quot;unqualified&amp;quot; elementFormDefault=&amp;quot;qualified&amp;quot; xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xs:element name=&amp;quot;Trainings&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Styles&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Style&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
          &amp;lt;xs:unique name=&amp;quot;UniqueStyleId&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xs:selector xpath=&amp;quot;Style&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Instructors&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;Name&amp;quot; type=&amp;quot;xs:string&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:attribute name=&amp;quot;Rating&amp;quot; type=&amp;quot;xs:decimal&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
          &amp;lt;xs:unique name=&amp;quot;UniqueInstructorId&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xs:selector xpath=&amp;quot;Instructor&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Venues&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Venue&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:attribute name=&amp;quot;GroupSize&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
          &amp;lt;xs:unique name=&amp;quot;UniqueVenueId&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xs:selector xpath=&amp;quot;Venue&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Training&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:all&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Description&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Styles&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Style&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Schedule&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;ScheduleItem&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:all&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element  maxOccurs=&amp;quot;1&amp;quot; name=&amp;quot;Time&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:extension base=&amp;quot;xs:dateTime&amp;quot;&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:attribute name=&amp;quot;Duration&amp;quot; type=&amp;quot;xs:duration&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element name=&amp;quot;Instructors&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                    &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                                      &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                                        &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                                      &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                                    &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                                  &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; name=&amp;quot;Comment&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:all&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;VenueId&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;GroupSize&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;optional&amp;quot; /&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;VideoUrl&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:all&amp;gt;&lt;br /&gt;
            &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xs:attribute name=&amp;quot;Licence&amp;quot; type=&amp;quot;xs:string&amp;quot; use=&amp;quot;optional&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
    &amp;lt;xs:unique name=&amp;quot;UniqueTrainingId&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xs:selector xpath=&amp;quot;Training&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
    &amp;lt;xs:unique name=&amp;quot;UniqueScheduleItemId&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xs:selector xpath=&amp;quot;Training/Schedule/ScheduleItem&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSLT (html) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Selles transformatsioonifailis on kirjeldatud XML failis olevate andmete [http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/trainings.xml  kuvamise viis veebilehel]. Treeninguliigid on jaotatud stiiliblokkidesse (mõni treening kuulub mitme stiili alla). Iga treeninguliigi all on tabeli kujul esitatud tunniplaan ning lisatud näidisvideo ja kirjeldus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot; xmlns:msxsl=&amp;quot;urn:schemas-microsoft-com:xslt&amp;quot; exclude-result-prefixes=&amp;quot;msxsl&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:output method=&amp;quot;html&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;html&amp;gt;&lt;br /&gt;
      &amp;lt;head&amp;gt;&lt;br /&gt;
        &amp;lt;title&amp;gt;SuperSportsClub - Trainings&amp;lt;/title&amp;gt;&lt;br /&gt;
        &amp;lt;style&amp;gt;&lt;br /&gt;
          body {&lt;br /&gt;
          background:BurlyWood;&lt;br /&gt;
          text-align: center;&lt;br /&gt;
          }&lt;br /&gt;
          .section {&lt;br /&gt;
          text-align:left;&lt;br /&gt;
          width:1000px;&lt;br /&gt;
          padding:20px;&lt;br /&gt;
          background:Chocolate;&lt;br /&gt;
          margin: auto;&lt;br /&gt;
          }&lt;br /&gt;
          table, th, td, .section {&lt;br /&gt;
          border: 1px solid black;&lt;br /&gt;
          }&lt;br /&gt;
          th {&lt;br /&gt;
          text-align:left;&lt;br /&gt;
          padding-left: 10px;&lt;br /&gt;
          padding-right: 10px;&lt;br /&gt;
          }&lt;br /&gt;
          td {&lt;br /&gt;
          text-align:center;&lt;br /&gt;
          }&lt;br /&gt;
          p {&lt;br /&gt;
          text-align:justify;&lt;br /&gt;
          }&lt;br /&gt;
          .description {&lt;br /&gt;
          vertical-align:top; &lt;br /&gt;
          padding:10px;&lt;br /&gt;
          }&lt;br /&gt;
        &amp;lt;/style&amp;gt;&lt;br /&gt;
      &amp;lt;/head&amp;gt;&lt;br /&gt;
      &amp;lt;body&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;Trainings at SuperSportsClub&amp;lt;/h1&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;/Trainings/Styles/Style&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:sort select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:variable select=&amp;quot;.&amp;quot; name=&amp;quot;SelectedStyle&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;section&amp;quot; &amp;gt;&lt;br /&gt;
            &amp;lt;h2&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select=&amp;quot;$SelectedStyle&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/h2&amp;gt;&lt;br /&gt;
            &amp;lt;ul&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:for-each select=&amp;quot;/Trainings/Training&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:sort select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:variable name=&amp;quot;Training&amp;quot; select=&amp;quot;.&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:if test=&amp;quot;Styles/Style/@Id = $SelectedStyle/@Id&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;&lt;br /&gt;
                    &amp;lt;h3&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;$Training/Name&amp;quot; /&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:if test=&amp;quot;$Training/@Licence&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:text&amp;gt; (&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:value-of select=&amp;quot;$Training/@Licence&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:text&amp;gt;)&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
                    &amp;lt;/h3&amp;gt;&lt;br /&gt;
                    &amp;lt;table&amp;gt;&lt;br /&gt;
                      &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                      &amp;lt;/tr&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:for-each select=&amp;quot;$Training/Schedule/ScheduleItem&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:sort select=&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:variable name=&amp;quot;StartTime&amp;quot; select=&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:variable name=&amp;quot;Duration&amp;quot; select=&amp;quot;$StartTime/@Duration&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;tr&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;150&amp;quot; &amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;concat(&lt;br /&gt;
                                            substring($StartTime, 9, 2), &lt;br /&gt;
                                            &#039;.&#039;, &lt;br /&gt;
                                            substring($StartTime, 6, 2), &lt;br /&gt;
                                            &#039;.&#039;, &lt;br /&gt;
                                            substring($StartTime, 1, 4),&lt;br /&gt;
                                            &#039; &#039;,&lt;br /&gt;
                                            substring($StartTime, 12, 2),&lt;br /&gt;
                                            &#039;:&#039;,&lt;br /&gt;
                                            substring($StartTime, 15, 2))&lt;br /&gt;
                                            &amp;quot; /&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:if test=&amp;quot;Comment&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;br/&amp;gt;&lt;br /&gt;
                              &amp;lt;div style=&amp;quot;color:Green&amp;quot;&amp;gt;&lt;br /&gt;
                                &amp;lt;xsl:value-of select=&amp;quot;Comment&amp;quot;/&amp;gt;&lt;br /&gt;
                              &amp;lt;/div&amp;gt;&lt;br /&gt;
                            &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;substring($Duration, 3, 6)&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:variable name=&amp;quot;VenueId&amp;quot; select=&amp;quot;@VenueId&amp;quot;/&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;/Trainings/Venues/Venue[@Id=$VenueId]&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:for-each select=&amp;quot;Instructors/Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:variable name=&amp;quot;InstructorId&amp;quot; select=&amp;quot;@Id&amp;quot;&amp;gt;&amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:variable name=&amp;quot;SelectedInstructor&amp;quot; select=&amp;quot;/Trainings/Instructors/Instructor[@Id=$InstructorId]&amp;quot; /&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/Name&amp;quot;/&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:text&amp;gt; (&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/@Rating&amp;quot; /&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:text&amp;gt;)&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                              &amp;lt;br/&amp;gt;&lt;br /&gt;
                            &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;/tr&amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
                    &amp;lt;/table&amp;gt;&lt;br /&gt;
                    &amp;lt;br/&amp;gt;&lt;br /&gt;
                    &amp;lt;table&amp;gt;&lt;br /&gt;
                      &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                          &amp;lt;xsl:variable name=&amp;quot;VideoUrl&amp;quot; select=&amp;quot;$Training/VideoUrl&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;{$VideoUrl}&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                          &amp;lt;p&amp;gt;&lt;br /&gt;
                            &amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&lt;br /&gt;
                          &amp;lt;/p&amp;gt;&lt;br /&gt;
                          &amp;lt;p&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;$Training/Description&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                      &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;/table&amp;gt;&lt;br /&gt;
                  &amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
            &amp;lt;/ul&amp;gt;&lt;br /&gt;
          &amp;lt;/div&amp;gt;&lt;br /&gt;
          &amp;lt;br/&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
      &amp;lt;/body&amp;gt;&lt;br /&gt;
    &amp;lt;/html&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== HTML (transformeeritud) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/trainings.html Vaata eelneva transformatsiooni tulemust.]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;META http-equiv=&amp;quot;Content-Type&amp;quot; content=&amp;quot;text/html; charset=utf-8&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;SuperSportsClub - Trainings&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;style&amp;gt;&lt;br /&gt;
        body {&lt;br /&gt;
            background: BurlyWood;&lt;br /&gt;
            text-align: center;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        .section {&lt;br /&gt;
            text-align: left;&lt;br /&gt;
            width: 1000px;&lt;br /&gt;
            padding: 20px;&lt;br /&gt;
            background: Chocolate;&lt;br /&gt;
            margin: auto;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        table, th, td, .section {&lt;br /&gt;
            border: 1px solid black;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        th {&lt;br /&gt;
            text-align: left;&lt;br /&gt;
            padding-left: 10px;&lt;br /&gt;
            padding-right: 10px;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        td {&lt;br /&gt;
            text-align: center;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        p {&lt;br /&gt;
            text-align: justify;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        .description {&lt;br /&gt;
            vertical-align: top;&lt;br /&gt;
            padding: 10px;&lt;br /&gt;
        }&lt;br /&gt;
    &amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
    &amp;lt;h1&amp;gt;Trainings at SuperSportsClub&amp;lt;/h1&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Body&amp;amp;amp;Mind&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyBalance™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 13:30&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;1H15M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 2&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Minnie Mouse (4.6)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;31.03.2017 12:15&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;1H15M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 3&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Mickey Mouse (4.7)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/jJxA6vBjUqY&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                BODYBALANCE™ is the Yoga, Tai Chi, Pilates workout that builds flexibility and strength and leaves you feeling centered and calm. Based on a carefully structured series of stretches, moves and poses to music it creates a holistic workout that brings the body into a state of harmony and balance. This class will heighten your flexibility and inner strength creating a strong supple body from the inside out. Burn on average 390cals per hour.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;Yoga&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;25.03.2017 14:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Yoga Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Minnie Yogafier (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
                            28.03.2017 14:00&amp;lt;br&amp;gt;&amp;lt;div style=&amp;quot;color:Green&amp;quot;&amp;gt;&lt;br /&gt;
                                Special class!&lt;br /&gt;
                            &amp;lt;/div&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;1H20M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Yoga Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Minnie Yogafier (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/Nvlxn0EnmbM&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                Yoga is a group of physical, mental, and spiritual practices or disciplines which originated in ancient India.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Cardio&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyJam™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 16:10&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 3&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Donald Duck (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;01.04.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;45M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 5&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Goofy (3.9)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/8PTXyg9si_4&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                The Body Jam program is an addictive fusion of the latest dance styles to the hottest new sounds. This class isn’t just for dancers, it’s for everyone because the emphasis is put on not only having fun but also breaking a sweat. So grab a friend, get front and centre … you bring the attitude and we’ll bring the moves!&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Dance&amp;amp;amp;Fun&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyJam™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 16:10&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 3&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Donald Duck (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;01.04.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;45M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 5&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Goofy (3.9)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/8PTXyg9si_4&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                The Body Jam program is an addictive fusion of the latest dance styles to the hottest new sounds. This class isn’t just for dancers, it’s for everyone because the emphasis is put on not only having fun but also breaking a sweat. So grab a friend, get front and centre … you bring the attitude and we’ll bring the moves!&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;Zumba®&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;26.03.2017 15:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;55M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 2&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Zumbaschnegger (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;28.03.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 4&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Zumbaschnegger (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 2&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Zumbaschnegger (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/-ZB6XIkfxnQ&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                Zumba involves dance and aerobic movements performed to energetic music. The choreography incorporates hip-hop, soca, samba, salsa, merengue and mambo. Squats and lunges are also included.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Strength&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyPump™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;23.03.2017 13:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Main Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Schwarzenegger (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 13:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Main Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Schwarzenegger (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/zU_0XrdO3wo&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                BodyPump classes are 59 minutes long and contain eight separate muscle-group specific songs or &amp;quot;tracks&amp;quot; along with an opening warm up track and closing cool-down track. There are also 45-minute and 30-minute class formats. The classes are performed to music using free weights-plates, barbells and an aerobic step. Participants choose their weights based on the exercise and their personal goals. Major muscle groups are worked via series of compound and isolation-based exercises including squats, presses, dead lifts. The focus is towards muscle endurance by moving light weights at high repetitions, what Les Mills calls the Rep Effect.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;CoreStrength&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
                            23.03.2017 12:00&amp;lt;br&amp;gt;&amp;lt;div style=&amp;quot;color:Green&amp;quot;&amp;gt;&lt;br /&gt;
                                Special challenge!&lt;br /&gt;
                            &amp;lt;/div&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;2H&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Area 6&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Margaret Strengthener (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Area 6&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Kayla Weightlifter (4.8)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;05.04.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Area 6&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Kayla Weightlifter (4.8)&amp;lt;br&amp;gt;Margaret Strengthener (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/ZxTVmpvyUt8&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                CoreStrenght is a very hard workout! Not for beginners.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSLT (xml) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Selle transformatsiooniga luuakse uus [http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/schedule.xml XML fail], milles on treeningute andmed esitatud ühtse tunniplaani kujul. Algses failis erinevate elementide alla paigutatud andmed on nüüd tunniplaani alamelemendis kokku viidud. Sidumine on teostatud id-atribuutide abil. Tunniplaanis on ühes kohas kirjas treeningu nimi, stiil(id), koht, algusaeg, kestus, rühma suurus, instruktorid ja muu täiendav info.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&lt;br /&gt;
    xmlns:msxsl=&amp;quot;urn:schemas-microsoft-com:xslt&amp;quot; exclude-result-prefixes=&amp;quot;msxsl&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:output method=&amp;quot;xml&amp;quot; indent=&amp;quot;yes&amp;quot; cdata-section-elements=&amp;quot;Name Style Comment&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;/Trainings/Training&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:sort select=&amp;quot;Name&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:variable name=&amp;quot;SelectedTraining&amp;quot; select=&amp;quot;.&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;Schedule/ScheduleItem&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:sort select=&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;ScheduleItem&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:variable name=&amp;quot;VenueId&amp;quot; select=&amp;quot;@VenueId&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:variable name=&amp;quot;SelectedVenue&amp;quot; select=&amp;quot;/Trainings/Venues/Venue[@Id=$VenueId]&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:attribute name=&amp;quot;GroupSize&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;@GroupSize&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:value-of select=&amp;quot;@GroupSize&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:value-of select=&amp;quot;$SelectedVenue/@GroupSize&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
            &amp;lt;Venue&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$VenueId&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select=&amp;quot;$SelectedVenue&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/Venue&amp;gt;&lt;br /&gt;
            &amp;lt;Training&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$SelectedTraining/@Id&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:if test=&amp;quot;$SelectedTraining/@Licence&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:attribute name=&amp;quot;Licence&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:value-of select=&amp;quot;$SelectedTraining/@Licence&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
              &amp;lt;Name&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$SelectedTraining/Name&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/Name&amp;gt;&lt;br /&gt;
              &amp;lt;Styles&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:for-each select=&amp;quot;$SelectedTraining/Styles/Style&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:variable name=&amp;quot;StyleId&amp;quot; select=&amp;quot;@Id&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;Style&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:attribute name=&amp;quot;StyleId&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;$StyleId&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;/Trainings/Styles/Style[@Id=$StyleId]&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/Style&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
              &amp;lt;/Styles&amp;gt;&lt;br /&gt;
            &amp;lt;/Training&amp;gt;&lt;br /&gt;
            &amp;lt;Time&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:attribute name=&amp;quot;Duration&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;Time/@Duration&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select =&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/Time&amp;gt;&lt;br /&gt;
            &amp;lt;Instructors&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:for-each select=&amp;quot;Instructors/Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:variable name=&amp;quot;InstructorId&amp;quot; select=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:variable name=&amp;quot;SelectedInstructor&amp;quot; select=&amp;quot;/Trainings/Instructors/Instructor[@Id=$InstructorId]&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;Instructor&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;$InstructorId&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:attribute name=&amp;quot;Rating&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/@Rating&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                  &amp;lt;Name&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/Name&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/Name&amp;gt;&lt;br /&gt;
                &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
            &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:if test=&amp;quot;Comment&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;Comment&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;Comment&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/Comment&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
          &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XML (transformeeritud) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/schedule.xml Vaata eelneva transformatsiooni tulemust.]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Schedule&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;3&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot;&amp;gt;Hall 2&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;2&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyBalance™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-30T13:30:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;3&amp;quot; Rating=&amp;quot;4.6&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;2&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;3&amp;quot;&amp;gt;Hall 3&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;2&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyBalance™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-31T12:15:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;2&amp;quot; Rating=&amp;quot;4.7&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Mickey Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;4&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;3&amp;quot;&amp;gt;Hall 3&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;3&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyJam™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;![CDATA[Cardio]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T16:10:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;4&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Donald Duck]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;5&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;5&amp;quot;&amp;gt;Hall 5&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;3&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyJam™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;![CDATA[Cardio]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT45M&amp;quot;&amp;gt;2017-04-01T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;5&amp;quot; Rating=&amp;quot;3.9&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Goofy]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;7&amp;quot; GroupSize=&amp;quot;45&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;1&amp;quot;&amp;gt;Main Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;4&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyPump™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-23T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;6&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Schwarzenegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;6&amp;quot; GroupSize=&amp;quot;45&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;1&amp;quot;&amp;gt;Main Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;4&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyPump™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;6&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Schwarzenegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;8&amp;quot; GroupSize=&amp;quot;10&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot;&amp;gt;Area 6&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT2H&amp;quot;&amp;gt;2017-03-23T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;9&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Margaret Strengthener]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
    &amp;lt;Comment&amp;gt;&amp;lt;![CDATA[&lt;br /&gt;
          Special challenge!&lt;br /&gt;
        ]]&amp;gt;&amp;lt;/Comment&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;9&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot;&amp;gt;Area 6&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;8&amp;quot; Rating=&amp;quot;4.8&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Kayla Weightlifter]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;10&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot;&amp;gt;Area 6&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-04-05T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;8&amp;quot; Rating=&amp;quot;4.8&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Kayla Weightlifter]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;9&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Margaret Strengthener]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;11&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot;&amp;gt;Hall 2&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT55M&amp;quot;&amp;gt;2017-03-26T15:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;12&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;4&amp;quot;&amp;gt;Hall 4&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-28T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;13&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot;&amp;gt;Hall 2&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;1&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;7&amp;quot;&amp;gt;Yoga Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Yoga]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-25T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;1&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Yogafier]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;14&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;7&amp;quot;&amp;gt;Yoga Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Yoga]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT1H20M&amp;quot;&amp;gt;2017-03-28T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;1&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Yogafier]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
    &amp;lt;Comment&amp;gt;&amp;lt;![CDATA[&lt;br /&gt;
          Special class!&lt;br /&gt;
        ]]&amp;gt;&amp;lt;/Comment&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
&amp;lt;/Schedule&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus ==&lt;br /&gt;
Angular JS &#039;&#039;single page application&#039;&#039; eelnevalt kirjeldatud veebiteenusele. Sisse logimata saab kuvada spordiklubi tunniplaani, treeningstiile ja treenereid. Võimalik on liituda teenusega ja registreeruda treeningutele, samuti registreeringuid tühistada. Esialgu põhineb süsteem ühel spordiklubil.&lt;br /&gt;
&lt;br /&gt;
Autentimine on lahendatud tokenipõhiselt. Eeskujuna kasutasime näidisrakendust, mille juhend ja lähtekood on leitav [http://bitoftech.net/2014/06/09/angularjs-token-authentication-using-asp-net-web-api-2-owin-asp-net-identity/ siit].&lt;br /&gt;
&lt;br /&gt;
== Lähtekood ==&lt;br /&gt;
Eksamiks valminud veebiteenuse ja klientrakenduse kokkupakitult allalaadimiseks klõpsa [http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/solution/ProjectSPOT.zip sellel lingil]. WebApi ja Angular JS klient on eraldi lahendustes. Kliendi testimiseks brauseris (Chrome, Firefox vm) tuleb eelnevalt käivitada ka veebiteenus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;NB! Võib juhtuda, et WebApi esmakordsel käivitamisel loodavasse andmebaasi kõiki andmeid (tunniplaani ja registreerimisi jooksvasse nädalasse) ei lisandu. Sellisel juhul kustuta tekkinud andmebaas ja käivita kõigepealt samas lahenduses olev konsoolirakendus.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Retsensioonid ==&lt;br /&gt;
&lt;br /&gt;
# [https://wiki.itcollege.ee/index.php/Talk:JRT XML/XSD/XSLT retsensioon meeskonnale JRT]&lt;br /&gt;
# [Veebiteenuse retsensioon lisandub varsti]&lt;br /&gt;
# [Klientrakenduse retsensioon lisandub varsti]&lt;br /&gt;
&lt;br /&gt;
== Log ==&lt;br /&gt;
* 03.03.17 Esimene kohtumine. Idee.&lt;br /&gt;
* 17.03.17 Osa XMList valmis, osa XSLT-st valmis.&lt;br /&gt;
* 18.03.17 Teine kohtumine. XMLi täiendamine, esimene ülekäimine XSD-s.&lt;br /&gt;
* 19.03.17 XML/XSLT/XSD täiendamine ja lõpetamine.&lt;br /&gt;
* 20.03.17 XML fail, skeemifail ja stiilifailid esitatud. Projekti esimese etapi lõpp. Kevade algus.&lt;br /&gt;
* 26.03.17 XML/XSLT/XSD retsensioon esitatud.&lt;br /&gt;
* 16.04.17 Veebiteenuse analüüsi koostamine.&lt;br /&gt;
* 17.04.17 Esialgne veebiteenuse analüüs ja kavand valmis.&lt;br /&gt;
* 19.04.17 Alustasime veebiteenusega, koostegemine: Domain, DAL, Interfaces, Repostitories. Testimine konsoolis.&lt;br /&gt;
* 24.04.17 Veebiteenuse koostegemine, 2. kord: Domaini täiendamine.&lt;br /&gt;
* 29.04.17 Veebiteenuse koostegemine, 3. kord: Interfaces, Repositories, Factory + UOW. Testimine konsoolis.&lt;br /&gt;
* 01.05.17 Andmebaasi täitmine testandmetega varasemas faasis loodud XML failist.&lt;br /&gt;
* 02.05.17 Veebiteenuse koostegemine, 4. kord: alustasime BLi ja WebApi ehitamist. GET päringud.&lt;br /&gt;
* 09.05.17 Veebiteenuse koostegemine, 5. kord: lisasime Identity.&lt;br /&gt;
* 11.05.17 Veebiteenuse koostegemine, 6. kord: WebApi arendamine. POST, PUT ja DELETE päringud.&lt;br /&gt;
* 15.05.17 Veebiteenuse koostegemine, 7. kord: WebApi arendamine. Lisasime  api kontrollereid.&lt;br /&gt;
* 16.05.17 Veebiteenuse koostegemine, 8. kord: WebApi arendamine. Identity kontroll Fiddleri ja Postmaniga.&lt;br /&gt;
* 20.05.17 Klientrakenduse koostegemine, 1. kord. Testklient.&lt;br /&gt;
* 25.05.17 Klientrakenduse koostegemine, 2. kord. Klientrakenduse arendamine.&lt;br /&gt;
* 01.06.17 Klientrakenduse koostegemine, 3. kord. Klientrakenduse arendamine. Angular JS.&lt;br /&gt;
* 03.06.17 - 11.06.17 Klientrakenduse arendamine. Tokenipõhine autentimine. Veebiteenuse viimistlemine.&lt;br /&gt;
* 11.06.17 Lõpptähtaeg. Projekti esitlemine eksamil.&lt;br /&gt;
* 12.06.17 Teiste lahenduste retsenseerimine.&lt;/div&gt;</summary>
		<author><name>Otiks</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Team_SPOT&amp;diff=123482</id>
		<title>Team SPOT</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Team_SPOT&amp;diff=123482"/>
		<updated>2017-06-12T02:35:57Z</updated>

		<summary type="html">&lt;p&gt;Otiks: /* Lähtekood */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://wiki.itcollege.ee/index.php/Kodut%C3%B6%C3%B6_aines_%22V%C3%B5rgurakendused_II:_hajuss%C3%BCsteemide_ehitamine%22_2017 Kodutöö aines &amp;quot;Võrgurakendused II: hajussüsteemide ehitamine&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
[https://projectspot.visualstudio.com/PROJECTSPOT Projekti kodu (avaneb ainult liikmetele)]&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==Liikmed==&lt;br /&gt;
*Sigrid Pachel&lt;br /&gt;
*Oliver Tiks&lt;br /&gt;
&lt;br /&gt;
==Idee==&lt;br /&gt;
Mõttes on luua spordiklubi(de) veebiteenus ja klientrakendus, mis võimaldaks saada infot pakutavate treeningute kohta, sisestada ja kuvada tunniplaani andmeid, registreerida osalejaid tundidesse ning teha muid asjakohaseid tegevusi nii klubi(de) personalil, liikmetel kui ka juhukasutajatel.&lt;br /&gt;
&lt;br /&gt;
==Veebiteenuse analüüs==&lt;br /&gt;
SPOTi veebiteenus võimaldab saada infot erinevate klubide treeningute kohta ja end neisse registreerida. Kasutaja saab teavet, kus ja millal treeningud toimuvad (tunniplaan), mida treeningus täpsemalt tehakse, mis stiiliga on tegemist, kes on treener, kui palju üks kord maksab jms info. Kasutajakontoga liikmel on võimalik end registreerida soovitud tundi ja hallata oma registreeringuid (muuta, tühistada).&lt;br /&gt;
&lt;br /&gt;
Spordiklubide infot haldavad süsteemi administraatorid, kes saavad lisada, muuta ja kustutada kõike sprodiklubiga seonduvat. Erinevaid treeninguid ja nendega seotud konkreetset infot saavad lisada ja hallata treenerid või spordiklubi esindajad.&lt;br /&gt;
&lt;br /&gt;
Projekti realiseerimiseks kasutame REST arhitektuuri ja ASP.NET MVC Web API tehnoloogiat.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Üldine plaan:&#039;&#039;&#039;&lt;br /&gt;
* esialgu üks kett (laienemise võimalusega)&lt;br /&gt;
* mitu klubi (asukoht, saalid-treeningualad, võimalikud lisatingimused)&lt;br /&gt;
* treeningute info (stiilid ehk kontseptid, litsentsid, …)&lt;br /&gt;
* tunniplaan (aeg, koht, instruktorid, max osalejate arv, ühe korra hind)&lt;br /&gt;
* registratuur (treeningutest osavõtjad)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kasutajad (rollid):&#039;&#039;&#039;&lt;br /&gt;
* administraatorid (saavad teha muudatusi)&lt;br /&gt;
* treenerid (info kvalifikatsiooni, litsentside kohta, õigus treeninguid lisada) &lt;br /&gt;
* liikmed (saavad treeningutele registreeruda)&lt;br /&gt;
* ülejäänud (näevad klubide ja treeningute infot ning tunniplaani)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Peaks olema:&#039;&#039;&#039;&lt;br /&gt;
* kasutajate loomine&lt;br /&gt;
* kasutajate tuvastamine ja haldamine&lt;br /&gt;
* kasutajate ja kasutusstatistika logimine&lt;br /&gt;
* teenuse poole pöördumiste arvu piiramine ja piirangute haldamine&lt;br /&gt;
* klubide, treenerite ja treeningute info väljastamine&lt;br /&gt;
* tunniplaani info väljastamine&lt;br /&gt;
* treeningutesse registreerimine&lt;br /&gt;
* registreeringu tühistamine&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Võiks olla:&#039;&#039;&#039;&lt;br /&gt;
* klubide, treenerite, treeningute lisamine ja muutmine&lt;br /&gt;
* tunniplaanis treeningute tühistamine&lt;br /&gt;
* sisestatud andmete kustutamine (pehmelt)&lt;br /&gt;
* rollide-õiguste määramine (admin)&lt;br /&gt;
* asukohad mitmes riigis&lt;br /&gt;
* kliendipaketid, arveldus&lt;br /&gt;
* kontaktide tsentraliseeritud haldus&lt;br /&gt;
* sisselogimine läbi Google’i, Facebooki vmt teenuse&lt;br /&gt;
&lt;br /&gt;
===Andmebaasi skeem (lihtsustatud)===&lt;br /&gt;
&lt;br /&gt;
[[File:SPOTService ERD.JPG|border|SPOT Service ERD]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Märkus: olemite atribuutidest on välja toodud ainult peamised.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====Tabelite kirjeldused====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kasutajahaldus*:&#039;&#039;&#039;&lt;br /&gt;
* User - kasutajate andmed&lt;br /&gt;
* Role - rollid, millega määratakse kasutajate õigused (&amp;quot;Admin&amp;quot;, &amp;quot;Trainer&amp;quot;, ...)&lt;br /&gt;
* UserRole - kasutajate sidumine rolli(de)ga&lt;br /&gt;
* UserLogin - muu teenuse kaudu sisselogimiseks&lt;br /&gt;
* UserClaim - muu teenuse kaudu sisselogimiseks&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;&#039;&#039;Kasutajahalduse süsteem toetub Asp.Net Identity valmislahendusele, mida on täiendanud A. Käver.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Klubid:&#039;&#039;&#039;&lt;br /&gt;
* Chain (optional) - spordiklubikettide info&lt;br /&gt;
* Location - spordiklubi/-rajatise asukoht linna/asula täpsusega&lt;br /&gt;
* Facility - spordiklubi/-rajatise andmed, seotud asukohaga ja vajadusel ketiga.&lt;br /&gt;
* Venue - spordiklubis/-rajatises kasutatavad saalid ja muud treeningualad&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Treeningud:&#039;&#039;&#039;&lt;br /&gt;
* Concept (Style) - treeningustiilid ehk kontseptid&lt;br /&gt;
* Licenser (optional) - treeninguliikide litsentsid (kui on)&lt;br /&gt;
* Training - treeninguliikide andmed, seotud stiili ja vajadusel litsentsiga&lt;br /&gt;
* Trainer (User (role: Trainer) + Training) - treeninguliikide sidumine treeneritega&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tunniplaan:&#039;&#039;&#039;&lt;br /&gt;
* ScheduleItem - treeningud tunniplaanis&lt;br /&gt;
* Instructor (User (role: Trainer) + ScheduleItem) - tundide juhendajad (võib olla mitu)&lt;br /&gt;
* Registration (ScheduleItem + User (role: any)) - tundidesse tehtud registreeringud&lt;br /&gt;
&lt;br /&gt;
== XML / XSD / XSLT==&lt;br /&gt;
Projekti esimeses etapis sai loodud XML andmefail, mille ülesehitus on paika pandud XSD skeemifailis. Lisaks on olemas kaks stiilifaili: esimene neist transformeerib andmed HTML-kujule, et kuvada infot  veebilehel, teine tekitab samade andmete esitamiseks uue struktuuriga XML faili.&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/ProjectSPOT_ScheduleXml.zip Lae failid alla.] &lt;br /&gt;
&lt;br /&gt;
=== XML ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Fail sisaldab andmeid ühes spordiklubis pakutavate treeningute kohta. Andmed on esitatud treeninguliikide kaupa, mille juurde on lisatud ka vastava treeninguliigi tunniplaan. Treeninguliikidel on nimi ja kirjeldus ning vajadusel ära märgitud ka litsents. Failis on eraldi välja toodud treeningustiilid, instruktorid ja ruumid, kus treeningud toimuvad. Iga treeninguliik kuulub ühe või mitme stiili alla. Instruktoritel on tagasiside põhjal saadud hinne. Treeninguruumidel on vaikimisi määratud mahutavus. Tunniplaanis on ära toodud treeningu koht, algusaeg ja kestus ning instruktorid. Vajadusel saab eraldi määrata ka treeningurühma suuruse, kui see erineb tavalisest ruumi mahutavusest. Ka on võimalik treeningutunnile lisada kommentaar. Erinevate elementide andmed on omavahel seotud id-atribuutidega.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;?xml-stylesheet type=&amp;quot;text/xsl&amp;quot; href=&amp;quot;trainingsToHtml.xslt&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Trainings&amp;gt;&lt;br /&gt;
  &amp;lt;Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;![CDATA[Cardio]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
  &amp;lt;/Styles&amp;gt;&lt;br /&gt;
  &amp;lt;Instructors&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;1&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Yogafier]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;2&amp;quot; Rating=&amp;quot;4.7&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Mickey Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;3&amp;quot; Rating=&amp;quot;4.6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;4&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Donald Duck]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;5&amp;quot; Rating=&amp;quot;3.9&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Goofy]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;6&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Schwarzenegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;8&amp;quot; Rating=&amp;quot;4.8&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Kayla Weightlifter]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;9&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Margaret Strengthener]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
  &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;Venues&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;1&amp;quot; GroupSize=&amp;quot;45&amp;quot;&amp;gt;&amp;lt;![CDATA[Main Hall]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 2]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;3&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 3]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;4&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 4]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;5&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 5]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&amp;lt;![CDATA[Area 6]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;7&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&amp;lt;![CDATA[Yoga Hall]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
  &amp;lt;/Venues&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Yoga]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[Yoga is a group of physical, mental, and spiritual practices or disciplines which originated in ancient India. ]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;1&amp;quot; VenueId=&amp;quot;7&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-25T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;14&amp;quot; VenueId=&amp;quot;7&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT1H20M&amp;quot;&amp;gt;2017-03-28T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Comment&amp;gt;&lt;br /&gt;
          &amp;lt;![CDATA[Special class!]]&amp;gt;&lt;br /&gt;
        &amp;lt;/Comment&amp;gt; &lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/Nvlxn0EnmbM&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;  &lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;2&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyBalance™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[BODYBALANCE™ is the Yoga, Tai Chi, Pilates workout that builds flexibility and strength and leaves you feeling centered and calm. Based on a carefully structured series of stretches, moves and poses to music it creates a holistic workout that brings the body into a state of harmony and balance. This class will heighten your flexibility and inner strength creating a strong supple body from the inside out. Burn on average 390cals per hour.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;2&amp;quot; VenueId=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-31T12:15:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;3&amp;quot; VenueId=&amp;quot;2&amp;quot; &amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-30T13:30:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;3&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/jJxA6vBjUqY&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;3&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyJam™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;4&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[The Body Jam program is an addictive fusion of the latest dance styles to the hottest new sounds. This class isn’t just for dancers, it’s for everyone because the emphasis is put on not only having fun but also breaking a sweat. So grab a friend, get front and centre … you bring the attitude and we’ll bring the moves!]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;4&amp;quot;  VenueId=&amp;quot;3&amp;quot; &amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T16:10:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;4&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;5&amp;quot; VenueId=&amp;quot;5&amp;quot; &amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT45M&amp;quot;&amp;gt;2017-04-01T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;5&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/8PTXyg9si_4&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;4&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyPump™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[BodyPump classes are 59 minutes long and contain eight separate muscle-group specific songs or &amp;quot;tracks&amp;quot; along with an opening warm up track and closing cool-down track. There are also 45-minute and 30-minute class formats. The classes are performed to music using free weights-plates, barbells and an aerobic step. Participants choose their weights based on the exercise and their personal goals. Major muscle groups are worked via series of compound and isolation-based exercises including squats, presses, dead lifts. The focus is towards muscle endurance by moving light weights at high repetitions, what Les Mills calls the Rep Effect.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;3&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;6&amp;quot; VenueId=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;6&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;7&amp;quot; VenueId=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-23T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;6&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/zU_0XrdO3wo&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[CoreStrenght is a very hard workout! Not for beginners.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;3&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;8&amp;quot; VenueId=&amp;quot;6&amp;quot; GroupSize=&amp;quot;10&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT2H&amp;quot;&amp;gt;2017-03-23T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;9&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Comment&amp;gt;&lt;br /&gt;
          &amp;lt;![CDATA[Special challenge!]]&amp;gt;&lt;br /&gt;
        &amp;lt;/Comment&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;9&amp;quot; VenueId=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;8&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;10&amp;quot; VenueId=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-04-05T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;8&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;9&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/ZxTVmpvyUt8&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[Zumba involves dance and aerobic movements performed to energetic music. The choreography incorporates hip-hop, soca, samba, salsa, merengue and mambo. Squats and lunges are also included.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;4&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;11&amp;quot; VenueId=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT55M&amp;quot;&amp;gt;2017-03-26T15:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;12&amp;quot; VenueId=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-28T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;13&amp;quot; VenueId=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/-ZB6XIkfxnQ&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
&amp;lt;/Trainings&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSD ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Skeemifail kontrollib eelnevas andmefailis esitatud andmete vastavust kokkulepitud formaadile, samuti õigete andmetüüpide kasutamist. Alamelemendi id-atribuudi väärtus peab olema iga elemendirühma lõikes unikaalne. Kohustuslike elementide ja atribuutide kõrval on ka mõned (nt kommentaar), mille olemasolu pole alati tarvilik. Teatud puhkudel on piiratud maksimaalset elementide arvu (nt treeningutunni algusaeg). Faili üldine struktuur on kindel, aga alati pole alamelementide järjekord oluline (nt treeninguliigi puhul).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xs:schema attributeFormDefault=&amp;quot;unqualified&amp;quot; elementFormDefault=&amp;quot;qualified&amp;quot; xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xs:element name=&amp;quot;Trainings&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Styles&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Style&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
          &amp;lt;xs:unique name=&amp;quot;UniqueStyleId&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xs:selector xpath=&amp;quot;Style&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Instructors&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;Name&amp;quot; type=&amp;quot;xs:string&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:attribute name=&amp;quot;Rating&amp;quot; type=&amp;quot;xs:decimal&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
          &amp;lt;xs:unique name=&amp;quot;UniqueInstructorId&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xs:selector xpath=&amp;quot;Instructor&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Venues&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Venue&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:attribute name=&amp;quot;GroupSize&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
          &amp;lt;xs:unique name=&amp;quot;UniqueVenueId&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xs:selector xpath=&amp;quot;Venue&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Training&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:all&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Description&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Styles&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Style&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Schedule&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;ScheduleItem&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:all&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element  maxOccurs=&amp;quot;1&amp;quot; name=&amp;quot;Time&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:extension base=&amp;quot;xs:dateTime&amp;quot;&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:attribute name=&amp;quot;Duration&amp;quot; type=&amp;quot;xs:duration&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element name=&amp;quot;Instructors&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                    &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                                      &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                                        &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                                      &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                                    &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                                  &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; name=&amp;quot;Comment&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:all&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;VenueId&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;GroupSize&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;optional&amp;quot; /&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;VideoUrl&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:all&amp;gt;&lt;br /&gt;
            &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xs:attribute name=&amp;quot;Licence&amp;quot; type=&amp;quot;xs:string&amp;quot; use=&amp;quot;optional&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
    &amp;lt;xs:unique name=&amp;quot;UniqueTrainingId&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xs:selector xpath=&amp;quot;Training&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
    &amp;lt;xs:unique name=&amp;quot;UniqueScheduleItemId&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xs:selector xpath=&amp;quot;Training/Schedule/ScheduleItem&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSLT (html) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Selles transformatsioonifailis on kirjeldatud XML failis olevate andmete [http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/trainings.xml  kuvamise viis veebilehel]. Treeninguliigid on jaotatud stiiliblokkidesse (mõni treening kuulub mitme stiili alla). Iga treeninguliigi all on tabeli kujul esitatud tunniplaan ning lisatud näidisvideo ja kirjeldus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot; xmlns:msxsl=&amp;quot;urn:schemas-microsoft-com:xslt&amp;quot; exclude-result-prefixes=&amp;quot;msxsl&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:output method=&amp;quot;html&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;html&amp;gt;&lt;br /&gt;
      &amp;lt;head&amp;gt;&lt;br /&gt;
        &amp;lt;title&amp;gt;SuperSportsClub - Trainings&amp;lt;/title&amp;gt;&lt;br /&gt;
        &amp;lt;style&amp;gt;&lt;br /&gt;
          body {&lt;br /&gt;
          background:BurlyWood;&lt;br /&gt;
          text-align: center;&lt;br /&gt;
          }&lt;br /&gt;
          .section {&lt;br /&gt;
          text-align:left;&lt;br /&gt;
          width:1000px;&lt;br /&gt;
          padding:20px;&lt;br /&gt;
          background:Chocolate;&lt;br /&gt;
          margin: auto;&lt;br /&gt;
          }&lt;br /&gt;
          table, th, td, .section {&lt;br /&gt;
          border: 1px solid black;&lt;br /&gt;
          }&lt;br /&gt;
          th {&lt;br /&gt;
          text-align:left;&lt;br /&gt;
          padding-left: 10px;&lt;br /&gt;
          padding-right: 10px;&lt;br /&gt;
          }&lt;br /&gt;
          td {&lt;br /&gt;
          text-align:center;&lt;br /&gt;
          }&lt;br /&gt;
          p {&lt;br /&gt;
          text-align:justify;&lt;br /&gt;
          }&lt;br /&gt;
          .description {&lt;br /&gt;
          vertical-align:top; &lt;br /&gt;
          padding:10px;&lt;br /&gt;
          }&lt;br /&gt;
        &amp;lt;/style&amp;gt;&lt;br /&gt;
      &amp;lt;/head&amp;gt;&lt;br /&gt;
      &amp;lt;body&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;Trainings at SuperSportsClub&amp;lt;/h1&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;/Trainings/Styles/Style&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:sort select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:variable select=&amp;quot;.&amp;quot; name=&amp;quot;SelectedStyle&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;section&amp;quot; &amp;gt;&lt;br /&gt;
            &amp;lt;h2&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select=&amp;quot;$SelectedStyle&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/h2&amp;gt;&lt;br /&gt;
            &amp;lt;ul&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:for-each select=&amp;quot;/Trainings/Training&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:sort select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:variable name=&amp;quot;Training&amp;quot; select=&amp;quot;.&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:if test=&amp;quot;Styles/Style/@Id = $SelectedStyle/@Id&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;&lt;br /&gt;
                    &amp;lt;h3&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;$Training/Name&amp;quot; /&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:if test=&amp;quot;$Training/@Licence&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:text&amp;gt; (&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:value-of select=&amp;quot;$Training/@Licence&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:text&amp;gt;)&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
                    &amp;lt;/h3&amp;gt;&lt;br /&gt;
                    &amp;lt;table&amp;gt;&lt;br /&gt;
                      &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                      &amp;lt;/tr&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:for-each select=&amp;quot;$Training/Schedule/ScheduleItem&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:sort select=&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:variable name=&amp;quot;StartTime&amp;quot; select=&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:variable name=&amp;quot;Duration&amp;quot; select=&amp;quot;$StartTime/@Duration&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;tr&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;150&amp;quot; &amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;concat(&lt;br /&gt;
                                            substring($StartTime, 9, 2), &lt;br /&gt;
                                            &#039;.&#039;, &lt;br /&gt;
                                            substring($StartTime, 6, 2), &lt;br /&gt;
                                            &#039;.&#039;, &lt;br /&gt;
                                            substring($StartTime, 1, 4),&lt;br /&gt;
                                            &#039; &#039;,&lt;br /&gt;
                                            substring($StartTime, 12, 2),&lt;br /&gt;
                                            &#039;:&#039;,&lt;br /&gt;
                                            substring($StartTime, 15, 2))&lt;br /&gt;
                                            &amp;quot; /&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:if test=&amp;quot;Comment&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;br/&amp;gt;&lt;br /&gt;
                              &amp;lt;div style=&amp;quot;color:Green&amp;quot;&amp;gt;&lt;br /&gt;
                                &amp;lt;xsl:value-of select=&amp;quot;Comment&amp;quot;/&amp;gt;&lt;br /&gt;
                              &amp;lt;/div&amp;gt;&lt;br /&gt;
                            &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;substring($Duration, 3, 6)&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:variable name=&amp;quot;VenueId&amp;quot; select=&amp;quot;@VenueId&amp;quot;/&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;/Trainings/Venues/Venue[@Id=$VenueId]&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:for-each select=&amp;quot;Instructors/Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:variable name=&amp;quot;InstructorId&amp;quot; select=&amp;quot;@Id&amp;quot;&amp;gt;&amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:variable name=&amp;quot;SelectedInstructor&amp;quot; select=&amp;quot;/Trainings/Instructors/Instructor[@Id=$InstructorId]&amp;quot; /&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/Name&amp;quot;/&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:text&amp;gt; (&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/@Rating&amp;quot; /&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:text&amp;gt;)&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                              &amp;lt;br/&amp;gt;&lt;br /&gt;
                            &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;/tr&amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
                    &amp;lt;/table&amp;gt;&lt;br /&gt;
                    &amp;lt;br/&amp;gt;&lt;br /&gt;
                    &amp;lt;table&amp;gt;&lt;br /&gt;
                      &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                          &amp;lt;xsl:variable name=&amp;quot;VideoUrl&amp;quot; select=&amp;quot;$Training/VideoUrl&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;{$VideoUrl}&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                          &amp;lt;p&amp;gt;&lt;br /&gt;
                            &amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&lt;br /&gt;
                          &amp;lt;/p&amp;gt;&lt;br /&gt;
                          &amp;lt;p&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;$Training/Description&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                      &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;/table&amp;gt;&lt;br /&gt;
                  &amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
            &amp;lt;/ul&amp;gt;&lt;br /&gt;
          &amp;lt;/div&amp;gt;&lt;br /&gt;
          &amp;lt;br/&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
      &amp;lt;/body&amp;gt;&lt;br /&gt;
    &amp;lt;/html&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== HTML (transformeeritud) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/trainings.html Vaata eelneva transformatsiooni tulemust.]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;META http-equiv=&amp;quot;Content-Type&amp;quot; content=&amp;quot;text/html; charset=utf-8&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;SuperSportsClub - Trainings&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;style&amp;gt;&lt;br /&gt;
        body {&lt;br /&gt;
            background: BurlyWood;&lt;br /&gt;
            text-align: center;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        .section {&lt;br /&gt;
            text-align: left;&lt;br /&gt;
            width: 1000px;&lt;br /&gt;
            padding: 20px;&lt;br /&gt;
            background: Chocolate;&lt;br /&gt;
            margin: auto;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        table, th, td, .section {&lt;br /&gt;
            border: 1px solid black;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        th {&lt;br /&gt;
            text-align: left;&lt;br /&gt;
            padding-left: 10px;&lt;br /&gt;
            padding-right: 10px;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        td {&lt;br /&gt;
            text-align: center;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        p {&lt;br /&gt;
            text-align: justify;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        .description {&lt;br /&gt;
            vertical-align: top;&lt;br /&gt;
            padding: 10px;&lt;br /&gt;
        }&lt;br /&gt;
    &amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
    &amp;lt;h1&amp;gt;Trainings at SuperSportsClub&amp;lt;/h1&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Body&amp;amp;amp;Mind&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyBalance™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 13:30&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;1H15M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 2&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Minnie Mouse (4.6)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;31.03.2017 12:15&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;1H15M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 3&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Mickey Mouse (4.7)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/jJxA6vBjUqY&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                BODYBALANCE™ is the Yoga, Tai Chi, Pilates workout that builds flexibility and strength and leaves you feeling centered and calm. Based on a carefully structured series of stretches, moves and poses to music it creates a holistic workout that brings the body into a state of harmony and balance. This class will heighten your flexibility and inner strength creating a strong supple body from the inside out. Burn on average 390cals per hour.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;Yoga&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;25.03.2017 14:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Yoga Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Minnie Yogafier (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
                            28.03.2017 14:00&amp;lt;br&amp;gt;&amp;lt;div style=&amp;quot;color:Green&amp;quot;&amp;gt;&lt;br /&gt;
                                Special class!&lt;br /&gt;
                            &amp;lt;/div&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;1H20M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Yoga Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Minnie Yogafier (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/Nvlxn0EnmbM&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                Yoga is a group of physical, mental, and spiritual practices or disciplines which originated in ancient India.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Cardio&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyJam™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 16:10&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 3&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Donald Duck (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;01.04.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;45M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 5&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Goofy (3.9)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/8PTXyg9si_4&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                The Body Jam program is an addictive fusion of the latest dance styles to the hottest new sounds. This class isn’t just for dancers, it’s for everyone because the emphasis is put on not only having fun but also breaking a sweat. So grab a friend, get front and centre … you bring the attitude and we’ll bring the moves!&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Dance&amp;amp;amp;Fun&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyJam™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 16:10&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 3&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Donald Duck (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;01.04.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;45M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 5&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Goofy (3.9)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/8PTXyg9si_4&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                The Body Jam program is an addictive fusion of the latest dance styles to the hottest new sounds. This class isn’t just for dancers, it’s for everyone because the emphasis is put on not only having fun but also breaking a sweat. So grab a friend, get front and centre … you bring the attitude and we’ll bring the moves!&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;Zumba®&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;26.03.2017 15:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;55M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 2&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Zumbaschnegger (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;28.03.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 4&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Zumbaschnegger (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 2&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Zumbaschnegger (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/-ZB6XIkfxnQ&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                Zumba involves dance and aerobic movements performed to energetic music. The choreography incorporates hip-hop, soca, samba, salsa, merengue and mambo. Squats and lunges are also included.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Strength&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyPump™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;23.03.2017 13:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Main Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Schwarzenegger (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 13:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Main Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Schwarzenegger (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/zU_0XrdO3wo&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                BodyPump classes are 59 minutes long and contain eight separate muscle-group specific songs or &amp;quot;tracks&amp;quot; along with an opening warm up track and closing cool-down track. There are also 45-minute and 30-minute class formats. The classes are performed to music using free weights-plates, barbells and an aerobic step. Participants choose their weights based on the exercise and their personal goals. Major muscle groups are worked via series of compound and isolation-based exercises including squats, presses, dead lifts. The focus is towards muscle endurance by moving light weights at high repetitions, what Les Mills calls the Rep Effect.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;CoreStrength&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
                            23.03.2017 12:00&amp;lt;br&amp;gt;&amp;lt;div style=&amp;quot;color:Green&amp;quot;&amp;gt;&lt;br /&gt;
                                Special challenge!&lt;br /&gt;
                            &amp;lt;/div&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;2H&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Area 6&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Margaret Strengthener (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Area 6&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Kayla Weightlifter (4.8)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;05.04.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Area 6&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Kayla Weightlifter (4.8)&amp;lt;br&amp;gt;Margaret Strengthener (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/ZxTVmpvyUt8&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                CoreStrenght is a very hard workout! Not for beginners.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSLT (xml) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Selle transformatsiooniga luuakse uus [http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/schedule.xml XML fail], milles on treeningute andmed esitatud ühtse tunniplaani kujul. Algses failis erinevate elementide alla paigutatud andmed on nüüd tunniplaani alamelemendis kokku viidud. Sidumine on teostatud id-atribuutide abil. Tunniplaanis on ühes kohas kirjas treeningu nimi, stiil(id), koht, algusaeg, kestus, rühma suurus, instruktorid ja muu täiendav info.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&lt;br /&gt;
    xmlns:msxsl=&amp;quot;urn:schemas-microsoft-com:xslt&amp;quot; exclude-result-prefixes=&amp;quot;msxsl&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:output method=&amp;quot;xml&amp;quot; indent=&amp;quot;yes&amp;quot; cdata-section-elements=&amp;quot;Name Style Comment&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;/Trainings/Training&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:sort select=&amp;quot;Name&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:variable name=&amp;quot;SelectedTraining&amp;quot; select=&amp;quot;.&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;Schedule/ScheduleItem&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:sort select=&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;ScheduleItem&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:variable name=&amp;quot;VenueId&amp;quot; select=&amp;quot;@VenueId&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:variable name=&amp;quot;SelectedVenue&amp;quot; select=&amp;quot;/Trainings/Venues/Venue[@Id=$VenueId]&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:attribute name=&amp;quot;GroupSize&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;@GroupSize&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:value-of select=&amp;quot;@GroupSize&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:value-of select=&amp;quot;$SelectedVenue/@GroupSize&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
            &amp;lt;Venue&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$VenueId&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select=&amp;quot;$SelectedVenue&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/Venue&amp;gt;&lt;br /&gt;
            &amp;lt;Training&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$SelectedTraining/@Id&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:if test=&amp;quot;$SelectedTraining/@Licence&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:attribute name=&amp;quot;Licence&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:value-of select=&amp;quot;$SelectedTraining/@Licence&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
              &amp;lt;Name&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$SelectedTraining/Name&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/Name&amp;gt;&lt;br /&gt;
              &amp;lt;Styles&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:for-each select=&amp;quot;$SelectedTraining/Styles/Style&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:variable name=&amp;quot;StyleId&amp;quot; select=&amp;quot;@Id&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;Style&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:attribute name=&amp;quot;StyleId&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;$StyleId&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;/Trainings/Styles/Style[@Id=$StyleId]&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/Style&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
              &amp;lt;/Styles&amp;gt;&lt;br /&gt;
            &amp;lt;/Training&amp;gt;&lt;br /&gt;
            &amp;lt;Time&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:attribute name=&amp;quot;Duration&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;Time/@Duration&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select =&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/Time&amp;gt;&lt;br /&gt;
            &amp;lt;Instructors&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:for-each select=&amp;quot;Instructors/Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:variable name=&amp;quot;InstructorId&amp;quot; select=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:variable name=&amp;quot;SelectedInstructor&amp;quot; select=&amp;quot;/Trainings/Instructors/Instructor[@Id=$InstructorId]&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;Instructor&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;$InstructorId&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:attribute name=&amp;quot;Rating&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/@Rating&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                  &amp;lt;Name&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/Name&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/Name&amp;gt;&lt;br /&gt;
                &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
            &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:if test=&amp;quot;Comment&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;Comment&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;Comment&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/Comment&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
          &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XML (transformeeritud) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/schedule.xml Vaata eelneva transformatsiooni tulemust.]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Schedule&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;3&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot;&amp;gt;Hall 2&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;2&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyBalance™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-30T13:30:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;3&amp;quot; Rating=&amp;quot;4.6&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;2&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;3&amp;quot;&amp;gt;Hall 3&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;2&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyBalance™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-31T12:15:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;2&amp;quot; Rating=&amp;quot;4.7&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Mickey Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;4&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;3&amp;quot;&amp;gt;Hall 3&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;3&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyJam™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;![CDATA[Cardio]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T16:10:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;4&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Donald Duck]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;5&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;5&amp;quot;&amp;gt;Hall 5&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;3&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyJam™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;![CDATA[Cardio]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT45M&amp;quot;&amp;gt;2017-04-01T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;5&amp;quot; Rating=&amp;quot;3.9&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Goofy]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;7&amp;quot; GroupSize=&amp;quot;45&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;1&amp;quot;&amp;gt;Main Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;4&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyPump™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-23T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;6&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Schwarzenegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;6&amp;quot; GroupSize=&amp;quot;45&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;1&amp;quot;&amp;gt;Main Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;4&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyPump™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;6&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Schwarzenegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;8&amp;quot; GroupSize=&amp;quot;10&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot;&amp;gt;Area 6&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT2H&amp;quot;&amp;gt;2017-03-23T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;9&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Margaret Strengthener]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
    &amp;lt;Comment&amp;gt;&amp;lt;![CDATA[&lt;br /&gt;
          Special challenge!&lt;br /&gt;
        ]]&amp;gt;&amp;lt;/Comment&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;9&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot;&amp;gt;Area 6&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;8&amp;quot; Rating=&amp;quot;4.8&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Kayla Weightlifter]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;10&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot;&amp;gt;Area 6&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-04-05T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;8&amp;quot; Rating=&amp;quot;4.8&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Kayla Weightlifter]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;9&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Margaret Strengthener]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;11&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot;&amp;gt;Hall 2&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT55M&amp;quot;&amp;gt;2017-03-26T15:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;12&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;4&amp;quot;&amp;gt;Hall 4&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-28T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;13&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot;&amp;gt;Hall 2&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;1&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;7&amp;quot;&amp;gt;Yoga Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Yoga]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-25T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;1&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Yogafier]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;14&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;7&amp;quot;&amp;gt;Yoga Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Yoga]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT1H20M&amp;quot;&amp;gt;2017-03-28T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;1&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Yogafier]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
    &amp;lt;Comment&amp;gt;&amp;lt;![CDATA[&lt;br /&gt;
          Special class!&lt;br /&gt;
        ]]&amp;gt;&amp;lt;/Comment&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
&amp;lt;/Schedule&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus ==&lt;br /&gt;
Angular JS &#039;&#039;single page application&#039;&#039; eelnevalt kirjeldatud veebiteenusele. Sisse logimata saab kuvada spordiklubi tunniplaani, treeningstiile ja treenereid. Võimalik on liituda teenusega ja registreeruda treeningutele, samuti registreeringuid tühistada. Esialgu põhineb süsteem ühel spordiklubil.&lt;br /&gt;
&lt;br /&gt;
Autentimine on lahendatud tokenipõhiselt. Eeskujuna kasutasime näidisrakendust, mille juhend ja lähtekood on leitav [http://bitoftech.net/2014/06/09/angularjs-token-authentication-using-asp-net-web-api-2-owin-asp-net-identity/ siit].&lt;br /&gt;
&lt;br /&gt;
== Lähtekood ==&lt;br /&gt;
Eksamiks valminud veebiteenuse ja klientrakenduse kokkupakitult allalaadimiseks klõpsa [http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/solution/ProjectSPOT.zip sellel lingil]. WebApi ja Angular JS klient on eraldi lahendustes. Kliendi testimiseks brauseris tuleb eelnevalt käivitada ka veebiteenus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;NB! Võib juhtuda, et WebApi esmakordsel käivitamisel loodavasse andmebaasi kõiki andmeid (tunniplaani ja registreerimisi jooksvasse nädalasse) ei lisandu. Sellisel juhul kustuta tekkinud andmebaas ja käivita kõigepealt samas lahenduses olev konsoolirakendus.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Retsensioonid ==&lt;br /&gt;
&lt;br /&gt;
# [https://wiki.itcollege.ee/index.php/Talk:JRT XML/XSD/XSLT retsensioon meeskonnale JRT]&lt;br /&gt;
# [Veebiteenuse retsensioon lisandub varsti]&lt;br /&gt;
# [Klientrakenduse retsensioon lisandub varsti]&lt;br /&gt;
&lt;br /&gt;
== Log ==&lt;br /&gt;
* 03.03.17 Esimene kohtumine. Idee.&lt;br /&gt;
* 17.03.17 Osa XMList valmis, osa XSLT-st valmis.&lt;br /&gt;
* 18.03.17 Teine kohtumine. XMLi täiendamine, esimene ülekäimine XSD-s.&lt;br /&gt;
* 19.03.17 XML/XSLT/XSD täiendamine ja lõpetamine.&lt;br /&gt;
* 20.03.17 XML fail, skeemifail ja stiilifailid esitatud. Projekti esimese etapi lõpp. Kevade algus.&lt;br /&gt;
* 26.03.17 XML/XSLT/XSD retsensioon esitatud.&lt;br /&gt;
* 16.04.17 Veebiteenuse analüüsi koostamine.&lt;br /&gt;
* 17.04.17 Esialgne veebiteenuse analüüs ja kavand valmis.&lt;br /&gt;
* 19.04.17 Alustasime veebiteenusega, koostegemine: Domain, DAL, Interfaces, Repostitories. Testimine konsoolis.&lt;br /&gt;
* 24.04.17 Veebiteenuse koostegemine, 2. kord: Domaini täiendamine.&lt;br /&gt;
* 29.04.17 Veebiteenuse koostegemine, 3. kord: Interfaces, Repositories, Factory + UOW. Testimine konsoolis.&lt;br /&gt;
* 01.05.17 Andmebaasi täitmine testandmetega varasemas faasis loodud XML failist.&lt;br /&gt;
* 02.05.17 Veebiteenuse koostegemine, 4. kord: alustasime BLi ja WebApi ehitamist. GET päringud.&lt;br /&gt;
* 09.05.17 Veebiteenuse koostegemine, 5. kord: lisasime Identity.&lt;br /&gt;
* 11.05.17 Veebiteenuse koostegemine, 6. kord: WebApi arendamine. POST, PUT ja DELETE päringud.&lt;br /&gt;
* 15.05.17 Veebiteenuse koostegemine, 7. kord: WebApi arendamine. Lisasime  api kontrollereid.&lt;br /&gt;
* 16.05.17 Veebiteenuse koostegemine, 8. kord: WebApi arendamine. Identity kontroll Fiddleri ja Postmaniga.&lt;br /&gt;
* 20.05.17 Klientrakenduse koostegemine, 1. kord. Testklient.&lt;br /&gt;
* 25.05.17 Klientrakenduse koostegemine, 2. kord. Klientrakenduse arendamine.&lt;br /&gt;
* 01.06.17 Klientrakenduse koostegemine, 3. kord. Klientrakenduse arendamine. Angular JS.&lt;br /&gt;
* 03.06.17 - 11.06.17 Klientrakenduse arendamine. Tokenipõhine autentimine. Veebiteenuse viimistlemine.&lt;br /&gt;
* 11.06.17 Lõpptähtaeg. Projekti esitlemine eksamil.&lt;br /&gt;
* 12.06.17 Teiste lahenduste retsenseerimine.&lt;/div&gt;</summary>
		<author><name>Otiks</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Team_SPOT&amp;diff=123481</id>
		<title>Team SPOT</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Team_SPOT&amp;diff=123481"/>
		<updated>2017-06-12T02:35:02Z</updated>

		<summary type="html">&lt;p&gt;Otiks: /* Lähtekood */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://wiki.itcollege.ee/index.php/Kodut%C3%B6%C3%B6_aines_%22V%C3%B5rgurakendused_II:_hajuss%C3%BCsteemide_ehitamine%22_2017 Kodutöö aines &amp;quot;Võrgurakendused II: hajussüsteemide ehitamine&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
[https://projectspot.visualstudio.com/PROJECTSPOT Projekti kodu (avaneb ainult liikmetele)]&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==Liikmed==&lt;br /&gt;
*Sigrid Pachel&lt;br /&gt;
*Oliver Tiks&lt;br /&gt;
&lt;br /&gt;
==Idee==&lt;br /&gt;
Mõttes on luua spordiklubi(de) veebiteenus ja klientrakendus, mis võimaldaks saada infot pakutavate treeningute kohta, sisestada ja kuvada tunniplaani andmeid, registreerida osalejaid tundidesse ning teha muid asjakohaseid tegevusi nii klubi(de) personalil, liikmetel kui ka juhukasutajatel.&lt;br /&gt;
&lt;br /&gt;
==Veebiteenuse analüüs==&lt;br /&gt;
SPOTi veebiteenus võimaldab saada infot erinevate klubide treeningute kohta ja end neisse registreerida. Kasutaja saab teavet, kus ja millal treeningud toimuvad (tunniplaan), mida treeningus täpsemalt tehakse, mis stiiliga on tegemist, kes on treener, kui palju üks kord maksab jms info. Kasutajakontoga liikmel on võimalik end registreerida soovitud tundi ja hallata oma registreeringuid (muuta, tühistada).&lt;br /&gt;
&lt;br /&gt;
Spordiklubide infot haldavad süsteemi administraatorid, kes saavad lisada, muuta ja kustutada kõike sprodiklubiga seonduvat. Erinevaid treeninguid ja nendega seotud konkreetset infot saavad lisada ja hallata treenerid või spordiklubi esindajad.&lt;br /&gt;
&lt;br /&gt;
Projekti realiseerimiseks kasutame REST arhitektuuri ja ASP.NET MVC Web API tehnoloogiat.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Üldine plaan:&#039;&#039;&#039;&lt;br /&gt;
* esialgu üks kett (laienemise võimalusega)&lt;br /&gt;
* mitu klubi (asukoht, saalid-treeningualad, võimalikud lisatingimused)&lt;br /&gt;
* treeningute info (stiilid ehk kontseptid, litsentsid, …)&lt;br /&gt;
* tunniplaan (aeg, koht, instruktorid, max osalejate arv, ühe korra hind)&lt;br /&gt;
* registratuur (treeningutest osavõtjad)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kasutajad (rollid):&#039;&#039;&#039;&lt;br /&gt;
* administraatorid (saavad teha muudatusi)&lt;br /&gt;
* treenerid (info kvalifikatsiooni, litsentside kohta, õigus treeninguid lisada) &lt;br /&gt;
* liikmed (saavad treeningutele registreeruda)&lt;br /&gt;
* ülejäänud (näevad klubide ja treeningute infot ning tunniplaani)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Peaks olema:&#039;&#039;&#039;&lt;br /&gt;
* kasutajate loomine&lt;br /&gt;
* kasutajate tuvastamine ja haldamine&lt;br /&gt;
* kasutajate ja kasutusstatistika logimine&lt;br /&gt;
* teenuse poole pöördumiste arvu piiramine ja piirangute haldamine&lt;br /&gt;
* klubide, treenerite ja treeningute info väljastamine&lt;br /&gt;
* tunniplaani info väljastamine&lt;br /&gt;
* treeningutesse registreerimine&lt;br /&gt;
* registreeringu tühistamine&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Võiks olla:&#039;&#039;&#039;&lt;br /&gt;
* klubide, treenerite, treeningute lisamine ja muutmine&lt;br /&gt;
* tunniplaanis treeningute tühistamine&lt;br /&gt;
* sisestatud andmete kustutamine (pehmelt)&lt;br /&gt;
* rollide-õiguste määramine (admin)&lt;br /&gt;
* asukohad mitmes riigis&lt;br /&gt;
* kliendipaketid, arveldus&lt;br /&gt;
* kontaktide tsentraliseeritud haldus&lt;br /&gt;
* sisselogimine läbi Google’i, Facebooki vmt teenuse&lt;br /&gt;
&lt;br /&gt;
===Andmebaasi skeem (lihtsustatud)===&lt;br /&gt;
&lt;br /&gt;
[[File:SPOTService ERD.JPG|border|SPOT Service ERD]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Märkus: olemite atribuutidest on välja toodud ainult peamised.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====Tabelite kirjeldused====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kasutajahaldus*:&#039;&#039;&#039;&lt;br /&gt;
* User - kasutajate andmed&lt;br /&gt;
* Role - rollid, millega määratakse kasutajate õigused (&amp;quot;Admin&amp;quot;, &amp;quot;Trainer&amp;quot;, ...)&lt;br /&gt;
* UserRole - kasutajate sidumine rolli(de)ga&lt;br /&gt;
* UserLogin - muu teenuse kaudu sisselogimiseks&lt;br /&gt;
* UserClaim - muu teenuse kaudu sisselogimiseks&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;&#039;&#039;Kasutajahalduse süsteem toetub Asp.Net Identity valmislahendusele, mida on täiendanud A. Käver.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Klubid:&#039;&#039;&#039;&lt;br /&gt;
* Chain (optional) - spordiklubikettide info&lt;br /&gt;
* Location - spordiklubi/-rajatise asukoht linna/asula täpsusega&lt;br /&gt;
* Facility - spordiklubi/-rajatise andmed, seotud asukohaga ja vajadusel ketiga.&lt;br /&gt;
* Venue - spordiklubis/-rajatises kasutatavad saalid ja muud treeningualad&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Treeningud:&#039;&#039;&#039;&lt;br /&gt;
* Concept (Style) - treeningustiilid ehk kontseptid&lt;br /&gt;
* Licenser (optional) - treeninguliikide litsentsid (kui on)&lt;br /&gt;
* Training - treeninguliikide andmed, seotud stiili ja vajadusel litsentsiga&lt;br /&gt;
* Trainer (User (role: Trainer) + Training) - treeninguliikide sidumine treeneritega&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tunniplaan:&#039;&#039;&#039;&lt;br /&gt;
* ScheduleItem - treeningud tunniplaanis&lt;br /&gt;
* Instructor (User (role: Trainer) + ScheduleItem) - tundide juhendajad (võib olla mitu)&lt;br /&gt;
* Registration (ScheduleItem + User (role: any)) - tundidesse tehtud registreeringud&lt;br /&gt;
&lt;br /&gt;
== XML / XSD / XSLT==&lt;br /&gt;
Projekti esimeses etapis sai loodud XML andmefail, mille ülesehitus on paika pandud XSD skeemifailis. Lisaks on olemas kaks stiilifaili: esimene neist transformeerib andmed HTML-kujule, et kuvada infot  veebilehel, teine tekitab samade andmete esitamiseks uue struktuuriga XML faili.&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/ProjectSPOT_ScheduleXml.zip Lae failid alla.] &lt;br /&gt;
&lt;br /&gt;
=== XML ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Fail sisaldab andmeid ühes spordiklubis pakutavate treeningute kohta. Andmed on esitatud treeninguliikide kaupa, mille juurde on lisatud ka vastava treeninguliigi tunniplaan. Treeninguliikidel on nimi ja kirjeldus ning vajadusel ära märgitud ka litsents. Failis on eraldi välja toodud treeningustiilid, instruktorid ja ruumid, kus treeningud toimuvad. Iga treeninguliik kuulub ühe või mitme stiili alla. Instruktoritel on tagasiside põhjal saadud hinne. Treeninguruumidel on vaikimisi määratud mahutavus. Tunniplaanis on ära toodud treeningu koht, algusaeg ja kestus ning instruktorid. Vajadusel saab eraldi määrata ka treeningurühma suuruse, kui see erineb tavalisest ruumi mahutavusest. Ka on võimalik treeningutunnile lisada kommentaar. Erinevate elementide andmed on omavahel seotud id-atribuutidega.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;?xml-stylesheet type=&amp;quot;text/xsl&amp;quot; href=&amp;quot;trainingsToHtml.xslt&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Trainings&amp;gt;&lt;br /&gt;
  &amp;lt;Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;![CDATA[Cardio]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
  &amp;lt;/Styles&amp;gt;&lt;br /&gt;
  &amp;lt;Instructors&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;1&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Yogafier]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;2&amp;quot; Rating=&amp;quot;4.7&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Mickey Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;3&amp;quot; Rating=&amp;quot;4.6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;4&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Donald Duck]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;5&amp;quot; Rating=&amp;quot;3.9&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Goofy]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;6&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Schwarzenegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;8&amp;quot; Rating=&amp;quot;4.8&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Kayla Weightlifter]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;9&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Margaret Strengthener]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
  &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;Venues&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;1&amp;quot; GroupSize=&amp;quot;45&amp;quot;&amp;gt;&amp;lt;![CDATA[Main Hall]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 2]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;3&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 3]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;4&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 4]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;5&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 5]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&amp;lt;![CDATA[Area 6]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;7&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&amp;lt;![CDATA[Yoga Hall]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
  &amp;lt;/Venues&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Yoga]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[Yoga is a group of physical, mental, and spiritual practices or disciplines which originated in ancient India. ]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;1&amp;quot; VenueId=&amp;quot;7&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-25T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;14&amp;quot; VenueId=&amp;quot;7&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT1H20M&amp;quot;&amp;gt;2017-03-28T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Comment&amp;gt;&lt;br /&gt;
          &amp;lt;![CDATA[Special class!]]&amp;gt;&lt;br /&gt;
        &amp;lt;/Comment&amp;gt; &lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/Nvlxn0EnmbM&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;  &lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;2&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyBalance™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[BODYBALANCE™ is the Yoga, Tai Chi, Pilates workout that builds flexibility and strength and leaves you feeling centered and calm. Based on a carefully structured series of stretches, moves and poses to music it creates a holistic workout that brings the body into a state of harmony and balance. This class will heighten your flexibility and inner strength creating a strong supple body from the inside out. Burn on average 390cals per hour.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;2&amp;quot; VenueId=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-31T12:15:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;3&amp;quot; VenueId=&amp;quot;2&amp;quot; &amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-30T13:30:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;3&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/jJxA6vBjUqY&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;3&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyJam™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;4&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[The Body Jam program is an addictive fusion of the latest dance styles to the hottest new sounds. This class isn’t just for dancers, it’s for everyone because the emphasis is put on not only having fun but also breaking a sweat. So grab a friend, get front and centre … you bring the attitude and we’ll bring the moves!]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;4&amp;quot;  VenueId=&amp;quot;3&amp;quot; &amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T16:10:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;4&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;5&amp;quot; VenueId=&amp;quot;5&amp;quot; &amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT45M&amp;quot;&amp;gt;2017-04-01T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;5&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/8PTXyg9si_4&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;4&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyPump™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[BodyPump classes are 59 minutes long and contain eight separate muscle-group specific songs or &amp;quot;tracks&amp;quot; along with an opening warm up track and closing cool-down track. There are also 45-minute and 30-minute class formats. The classes are performed to music using free weights-plates, barbells and an aerobic step. Participants choose their weights based on the exercise and their personal goals. Major muscle groups are worked via series of compound and isolation-based exercises including squats, presses, dead lifts. The focus is towards muscle endurance by moving light weights at high repetitions, what Les Mills calls the Rep Effect.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;3&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;6&amp;quot; VenueId=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;6&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;7&amp;quot; VenueId=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-23T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;6&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/zU_0XrdO3wo&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[CoreStrenght is a very hard workout! Not for beginners.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;3&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;8&amp;quot; VenueId=&amp;quot;6&amp;quot; GroupSize=&amp;quot;10&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT2H&amp;quot;&amp;gt;2017-03-23T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;9&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Comment&amp;gt;&lt;br /&gt;
          &amp;lt;![CDATA[Special challenge!]]&amp;gt;&lt;br /&gt;
        &amp;lt;/Comment&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;9&amp;quot; VenueId=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;8&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;10&amp;quot; VenueId=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-04-05T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;8&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;9&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/ZxTVmpvyUt8&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[Zumba involves dance and aerobic movements performed to energetic music. The choreography incorporates hip-hop, soca, samba, salsa, merengue and mambo. Squats and lunges are also included.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;4&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;11&amp;quot; VenueId=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT55M&amp;quot;&amp;gt;2017-03-26T15:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;12&amp;quot; VenueId=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-28T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;13&amp;quot; VenueId=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/-ZB6XIkfxnQ&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
&amp;lt;/Trainings&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSD ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Skeemifail kontrollib eelnevas andmefailis esitatud andmete vastavust kokkulepitud formaadile, samuti õigete andmetüüpide kasutamist. Alamelemendi id-atribuudi väärtus peab olema iga elemendirühma lõikes unikaalne. Kohustuslike elementide ja atribuutide kõrval on ka mõned (nt kommentaar), mille olemasolu pole alati tarvilik. Teatud puhkudel on piiratud maksimaalset elementide arvu (nt treeningutunni algusaeg). Faili üldine struktuur on kindel, aga alati pole alamelementide järjekord oluline (nt treeninguliigi puhul).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xs:schema attributeFormDefault=&amp;quot;unqualified&amp;quot; elementFormDefault=&amp;quot;qualified&amp;quot; xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xs:element name=&amp;quot;Trainings&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Styles&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Style&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
          &amp;lt;xs:unique name=&amp;quot;UniqueStyleId&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xs:selector xpath=&amp;quot;Style&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Instructors&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;Name&amp;quot; type=&amp;quot;xs:string&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:attribute name=&amp;quot;Rating&amp;quot; type=&amp;quot;xs:decimal&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
          &amp;lt;xs:unique name=&amp;quot;UniqueInstructorId&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xs:selector xpath=&amp;quot;Instructor&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Venues&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Venue&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:attribute name=&amp;quot;GroupSize&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
          &amp;lt;xs:unique name=&amp;quot;UniqueVenueId&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xs:selector xpath=&amp;quot;Venue&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Training&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:all&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Description&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Styles&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Style&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Schedule&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;ScheduleItem&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:all&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element  maxOccurs=&amp;quot;1&amp;quot; name=&amp;quot;Time&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:extension base=&amp;quot;xs:dateTime&amp;quot;&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:attribute name=&amp;quot;Duration&amp;quot; type=&amp;quot;xs:duration&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element name=&amp;quot;Instructors&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                    &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                                      &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                                        &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                                      &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                                    &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                                  &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; name=&amp;quot;Comment&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:all&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;VenueId&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;GroupSize&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;optional&amp;quot; /&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;VideoUrl&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:all&amp;gt;&lt;br /&gt;
            &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xs:attribute name=&amp;quot;Licence&amp;quot; type=&amp;quot;xs:string&amp;quot; use=&amp;quot;optional&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
    &amp;lt;xs:unique name=&amp;quot;UniqueTrainingId&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xs:selector xpath=&amp;quot;Training&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
    &amp;lt;xs:unique name=&amp;quot;UniqueScheduleItemId&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xs:selector xpath=&amp;quot;Training/Schedule/ScheduleItem&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSLT (html) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Selles transformatsioonifailis on kirjeldatud XML failis olevate andmete [http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/trainings.xml  kuvamise viis veebilehel]. Treeninguliigid on jaotatud stiiliblokkidesse (mõni treening kuulub mitme stiili alla). Iga treeninguliigi all on tabeli kujul esitatud tunniplaan ning lisatud näidisvideo ja kirjeldus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot; xmlns:msxsl=&amp;quot;urn:schemas-microsoft-com:xslt&amp;quot; exclude-result-prefixes=&amp;quot;msxsl&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:output method=&amp;quot;html&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;html&amp;gt;&lt;br /&gt;
      &amp;lt;head&amp;gt;&lt;br /&gt;
        &amp;lt;title&amp;gt;SuperSportsClub - Trainings&amp;lt;/title&amp;gt;&lt;br /&gt;
        &amp;lt;style&amp;gt;&lt;br /&gt;
          body {&lt;br /&gt;
          background:BurlyWood;&lt;br /&gt;
          text-align: center;&lt;br /&gt;
          }&lt;br /&gt;
          .section {&lt;br /&gt;
          text-align:left;&lt;br /&gt;
          width:1000px;&lt;br /&gt;
          padding:20px;&lt;br /&gt;
          background:Chocolate;&lt;br /&gt;
          margin: auto;&lt;br /&gt;
          }&lt;br /&gt;
          table, th, td, .section {&lt;br /&gt;
          border: 1px solid black;&lt;br /&gt;
          }&lt;br /&gt;
          th {&lt;br /&gt;
          text-align:left;&lt;br /&gt;
          padding-left: 10px;&lt;br /&gt;
          padding-right: 10px;&lt;br /&gt;
          }&lt;br /&gt;
          td {&lt;br /&gt;
          text-align:center;&lt;br /&gt;
          }&lt;br /&gt;
          p {&lt;br /&gt;
          text-align:justify;&lt;br /&gt;
          }&lt;br /&gt;
          .description {&lt;br /&gt;
          vertical-align:top; &lt;br /&gt;
          padding:10px;&lt;br /&gt;
          }&lt;br /&gt;
        &amp;lt;/style&amp;gt;&lt;br /&gt;
      &amp;lt;/head&amp;gt;&lt;br /&gt;
      &amp;lt;body&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;Trainings at SuperSportsClub&amp;lt;/h1&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;/Trainings/Styles/Style&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:sort select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:variable select=&amp;quot;.&amp;quot; name=&amp;quot;SelectedStyle&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;section&amp;quot; &amp;gt;&lt;br /&gt;
            &amp;lt;h2&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select=&amp;quot;$SelectedStyle&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/h2&amp;gt;&lt;br /&gt;
            &amp;lt;ul&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:for-each select=&amp;quot;/Trainings/Training&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:sort select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:variable name=&amp;quot;Training&amp;quot; select=&amp;quot;.&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:if test=&amp;quot;Styles/Style/@Id = $SelectedStyle/@Id&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;&lt;br /&gt;
                    &amp;lt;h3&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;$Training/Name&amp;quot; /&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:if test=&amp;quot;$Training/@Licence&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:text&amp;gt; (&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:value-of select=&amp;quot;$Training/@Licence&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:text&amp;gt;)&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
                    &amp;lt;/h3&amp;gt;&lt;br /&gt;
                    &amp;lt;table&amp;gt;&lt;br /&gt;
                      &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                      &amp;lt;/tr&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:for-each select=&amp;quot;$Training/Schedule/ScheduleItem&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:sort select=&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:variable name=&amp;quot;StartTime&amp;quot; select=&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:variable name=&amp;quot;Duration&amp;quot; select=&amp;quot;$StartTime/@Duration&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;tr&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;150&amp;quot; &amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;concat(&lt;br /&gt;
                                            substring($StartTime, 9, 2), &lt;br /&gt;
                                            &#039;.&#039;, &lt;br /&gt;
                                            substring($StartTime, 6, 2), &lt;br /&gt;
                                            &#039;.&#039;, &lt;br /&gt;
                                            substring($StartTime, 1, 4),&lt;br /&gt;
                                            &#039; &#039;,&lt;br /&gt;
                                            substring($StartTime, 12, 2),&lt;br /&gt;
                                            &#039;:&#039;,&lt;br /&gt;
                                            substring($StartTime, 15, 2))&lt;br /&gt;
                                            &amp;quot; /&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:if test=&amp;quot;Comment&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;br/&amp;gt;&lt;br /&gt;
                              &amp;lt;div style=&amp;quot;color:Green&amp;quot;&amp;gt;&lt;br /&gt;
                                &amp;lt;xsl:value-of select=&amp;quot;Comment&amp;quot;/&amp;gt;&lt;br /&gt;
                              &amp;lt;/div&amp;gt;&lt;br /&gt;
                            &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;substring($Duration, 3, 6)&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:variable name=&amp;quot;VenueId&amp;quot; select=&amp;quot;@VenueId&amp;quot;/&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;/Trainings/Venues/Venue[@Id=$VenueId]&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:for-each select=&amp;quot;Instructors/Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:variable name=&amp;quot;InstructorId&amp;quot; select=&amp;quot;@Id&amp;quot;&amp;gt;&amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:variable name=&amp;quot;SelectedInstructor&amp;quot; select=&amp;quot;/Trainings/Instructors/Instructor[@Id=$InstructorId]&amp;quot; /&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/Name&amp;quot;/&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:text&amp;gt; (&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/@Rating&amp;quot; /&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:text&amp;gt;)&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                              &amp;lt;br/&amp;gt;&lt;br /&gt;
                            &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;/tr&amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
                    &amp;lt;/table&amp;gt;&lt;br /&gt;
                    &amp;lt;br/&amp;gt;&lt;br /&gt;
                    &amp;lt;table&amp;gt;&lt;br /&gt;
                      &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                          &amp;lt;xsl:variable name=&amp;quot;VideoUrl&amp;quot; select=&amp;quot;$Training/VideoUrl&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;{$VideoUrl}&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                          &amp;lt;p&amp;gt;&lt;br /&gt;
                            &amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&lt;br /&gt;
                          &amp;lt;/p&amp;gt;&lt;br /&gt;
                          &amp;lt;p&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;$Training/Description&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                      &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;/table&amp;gt;&lt;br /&gt;
                  &amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
            &amp;lt;/ul&amp;gt;&lt;br /&gt;
          &amp;lt;/div&amp;gt;&lt;br /&gt;
          &amp;lt;br/&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
      &amp;lt;/body&amp;gt;&lt;br /&gt;
    &amp;lt;/html&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== HTML (transformeeritud) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/trainings.html Vaata eelneva transformatsiooni tulemust.]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;META http-equiv=&amp;quot;Content-Type&amp;quot; content=&amp;quot;text/html; charset=utf-8&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;SuperSportsClub - Trainings&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;style&amp;gt;&lt;br /&gt;
        body {&lt;br /&gt;
            background: BurlyWood;&lt;br /&gt;
            text-align: center;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        .section {&lt;br /&gt;
            text-align: left;&lt;br /&gt;
            width: 1000px;&lt;br /&gt;
            padding: 20px;&lt;br /&gt;
            background: Chocolate;&lt;br /&gt;
            margin: auto;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        table, th, td, .section {&lt;br /&gt;
            border: 1px solid black;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        th {&lt;br /&gt;
            text-align: left;&lt;br /&gt;
            padding-left: 10px;&lt;br /&gt;
            padding-right: 10px;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        td {&lt;br /&gt;
            text-align: center;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        p {&lt;br /&gt;
            text-align: justify;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        .description {&lt;br /&gt;
            vertical-align: top;&lt;br /&gt;
            padding: 10px;&lt;br /&gt;
        }&lt;br /&gt;
    &amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
    &amp;lt;h1&amp;gt;Trainings at SuperSportsClub&amp;lt;/h1&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Body&amp;amp;amp;Mind&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyBalance™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 13:30&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;1H15M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 2&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Minnie Mouse (4.6)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;31.03.2017 12:15&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;1H15M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 3&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Mickey Mouse (4.7)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/jJxA6vBjUqY&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                BODYBALANCE™ is the Yoga, Tai Chi, Pilates workout that builds flexibility and strength and leaves you feeling centered and calm. Based on a carefully structured series of stretches, moves and poses to music it creates a holistic workout that brings the body into a state of harmony and balance. This class will heighten your flexibility and inner strength creating a strong supple body from the inside out. Burn on average 390cals per hour.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;Yoga&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;25.03.2017 14:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Yoga Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Minnie Yogafier (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
                            28.03.2017 14:00&amp;lt;br&amp;gt;&amp;lt;div style=&amp;quot;color:Green&amp;quot;&amp;gt;&lt;br /&gt;
                                Special class!&lt;br /&gt;
                            &amp;lt;/div&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;1H20M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Yoga Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Minnie Yogafier (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/Nvlxn0EnmbM&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                Yoga is a group of physical, mental, and spiritual practices or disciplines which originated in ancient India.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Cardio&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyJam™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 16:10&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 3&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Donald Duck (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;01.04.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;45M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 5&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Goofy (3.9)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/8PTXyg9si_4&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                The Body Jam program is an addictive fusion of the latest dance styles to the hottest new sounds. This class isn’t just for dancers, it’s for everyone because the emphasis is put on not only having fun but also breaking a sweat. So grab a friend, get front and centre … you bring the attitude and we’ll bring the moves!&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Dance&amp;amp;amp;Fun&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyJam™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 16:10&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 3&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Donald Duck (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;01.04.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;45M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 5&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Goofy (3.9)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/8PTXyg9si_4&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                The Body Jam program is an addictive fusion of the latest dance styles to the hottest new sounds. This class isn’t just for dancers, it’s for everyone because the emphasis is put on not only having fun but also breaking a sweat. So grab a friend, get front and centre … you bring the attitude and we’ll bring the moves!&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;Zumba®&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;26.03.2017 15:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;55M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 2&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Zumbaschnegger (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;28.03.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 4&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Zumbaschnegger (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 2&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Zumbaschnegger (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/-ZB6XIkfxnQ&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                Zumba involves dance and aerobic movements performed to energetic music. The choreography incorporates hip-hop, soca, samba, salsa, merengue and mambo. Squats and lunges are also included.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Strength&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyPump™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;23.03.2017 13:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Main Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Schwarzenegger (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 13:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Main Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Schwarzenegger (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/zU_0XrdO3wo&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                BodyPump classes are 59 minutes long and contain eight separate muscle-group specific songs or &amp;quot;tracks&amp;quot; along with an opening warm up track and closing cool-down track. There are also 45-minute and 30-minute class formats. The classes are performed to music using free weights-plates, barbells and an aerobic step. Participants choose their weights based on the exercise and their personal goals. Major muscle groups are worked via series of compound and isolation-based exercises including squats, presses, dead lifts. The focus is towards muscle endurance by moving light weights at high repetitions, what Les Mills calls the Rep Effect.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;CoreStrength&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
                            23.03.2017 12:00&amp;lt;br&amp;gt;&amp;lt;div style=&amp;quot;color:Green&amp;quot;&amp;gt;&lt;br /&gt;
                                Special challenge!&lt;br /&gt;
                            &amp;lt;/div&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;2H&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Area 6&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Margaret Strengthener (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Area 6&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Kayla Weightlifter (4.8)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;05.04.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Area 6&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Kayla Weightlifter (4.8)&amp;lt;br&amp;gt;Margaret Strengthener (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/ZxTVmpvyUt8&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                CoreStrenght is a very hard workout! Not for beginners.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSLT (xml) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Selle transformatsiooniga luuakse uus [http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/schedule.xml XML fail], milles on treeningute andmed esitatud ühtse tunniplaani kujul. Algses failis erinevate elementide alla paigutatud andmed on nüüd tunniplaani alamelemendis kokku viidud. Sidumine on teostatud id-atribuutide abil. Tunniplaanis on ühes kohas kirjas treeningu nimi, stiil(id), koht, algusaeg, kestus, rühma suurus, instruktorid ja muu täiendav info.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&lt;br /&gt;
    xmlns:msxsl=&amp;quot;urn:schemas-microsoft-com:xslt&amp;quot; exclude-result-prefixes=&amp;quot;msxsl&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:output method=&amp;quot;xml&amp;quot; indent=&amp;quot;yes&amp;quot; cdata-section-elements=&amp;quot;Name Style Comment&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;/Trainings/Training&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:sort select=&amp;quot;Name&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:variable name=&amp;quot;SelectedTraining&amp;quot; select=&amp;quot;.&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;Schedule/ScheduleItem&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:sort select=&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;ScheduleItem&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:variable name=&amp;quot;VenueId&amp;quot; select=&amp;quot;@VenueId&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:variable name=&amp;quot;SelectedVenue&amp;quot; select=&amp;quot;/Trainings/Venues/Venue[@Id=$VenueId]&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:attribute name=&amp;quot;GroupSize&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;@GroupSize&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:value-of select=&amp;quot;@GroupSize&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:value-of select=&amp;quot;$SelectedVenue/@GroupSize&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
            &amp;lt;Venue&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$VenueId&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select=&amp;quot;$SelectedVenue&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/Venue&amp;gt;&lt;br /&gt;
            &amp;lt;Training&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$SelectedTraining/@Id&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:if test=&amp;quot;$SelectedTraining/@Licence&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:attribute name=&amp;quot;Licence&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:value-of select=&amp;quot;$SelectedTraining/@Licence&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
              &amp;lt;Name&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$SelectedTraining/Name&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/Name&amp;gt;&lt;br /&gt;
              &amp;lt;Styles&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:for-each select=&amp;quot;$SelectedTraining/Styles/Style&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:variable name=&amp;quot;StyleId&amp;quot; select=&amp;quot;@Id&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;Style&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:attribute name=&amp;quot;StyleId&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;$StyleId&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;/Trainings/Styles/Style[@Id=$StyleId]&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/Style&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
              &amp;lt;/Styles&amp;gt;&lt;br /&gt;
            &amp;lt;/Training&amp;gt;&lt;br /&gt;
            &amp;lt;Time&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:attribute name=&amp;quot;Duration&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;Time/@Duration&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select =&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/Time&amp;gt;&lt;br /&gt;
            &amp;lt;Instructors&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:for-each select=&amp;quot;Instructors/Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:variable name=&amp;quot;InstructorId&amp;quot; select=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:variable name=&amp;quot;SelectedInstructor&amp;quot; select=&amp;quot;/Trainings/Instructors/Instructor[@Id=$InstructorId]&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;Instructor&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;$InstructorId&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:attribute name=&amp;quot;Rating&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/@Rating&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                  &amp;lt;Name&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/Name&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/Name&amp;gt;&lt;br /&gt;
                &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
            &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:if test=&amp;quot;Comment&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;Comment&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;Comment&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/Comment&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
          &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XML (transformeeritud) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/schedule.xml Vaata eelneva transformatsiooni tulemust.]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Schedule&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;3&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot;&amp;gt;Hall 2&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;2&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyBalance™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-30T13:30:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;3&amp;quot; Rating=&amp;quot;4.6&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;2&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;3&amp;quot;&amp;gt;Hall 3&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;2&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyBalance™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-31T12:15:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;2&amp;quot; Rating=&amp;quot;4.7&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Mickey Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;4&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;3&amp;quot;&amp;gt;Hall 3&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;3&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyJam™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;![CDATA[Cardio]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T16:10:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;4&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Donald Duck]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;5&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;5&amp;quot;&amp;gt;Hall 5&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;3&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyJam™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;![CDATA[Cardio]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT45M&amp;quot;&amp;gt;2017-04-01T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;5&amp;quot; Rating=&amp;quot;3.9&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Goofy]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;7&amp;quot; GroupSize=&amp;quot;45&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;1&amp;quot;&amp;gt;Main Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;4&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyPump™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-23T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;6&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Schwarzenegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;6&amp;quot; GroupSize=&amp;quot;45&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;1&amp;quot;&amp;gt;Main Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;4&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyPump™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;6&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Schwarzenegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;8&amp;quot; GroupSize=&amp;quot;10&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot;&amp;gt;Area 6&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT2H&amp;quot;&amp;gt;2017-03-23T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;9&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Margaret Strengthener]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
    &amp;lt;Comment&amp;gt;&amp;lt;![CDATA[&lt;br /&gt;
          Special challenge!&lt;br /&gt;
        ]]&amp;gt;&amp;lt;/Comment&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;9&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot;&amp;gt;Area 6&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;8&amp;quot; Rating=&amp;quot;4.8&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Kayla Weightlifter]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;10&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot;&amp;gt;Area 6&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-04-05T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;8&amp;quot; Rating=&amp;quot;4.8&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Kayla Weightlifter]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;9&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Margaret Strengthener]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;11&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot;&amp;gt;Hall 2&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT55M&amp;quot;&amp;gt;2017-03-26T15:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;12&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;4&amp;quot;&amp;gt;Hall 4&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-28T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;13&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot;&amp;gt;Hall 2&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;1&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;7&amp;quot;&amp;gt;Yoga Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Yoga]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-25T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;1&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Yogafier]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;14&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;7&amp;quot;&amp;gt;Yoga Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Yoga]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT1H20M&amp;quot;&amp;gt;2017-03-28T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;1&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Yogafier]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
    &amp;lt;Comment&amp;gt;&amp;lt;![CDATA[&lt;br /&gt;
          Special class!&lt;br /&gt;
        ]]&amp;gt;&amp;lt;/Comment&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
&amp;lt;/Schedule&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus ==&lt;br /&gt;
Angular JS &#039;&#039;single page application&#039;&#039; eelnevalt kirjeldatud veebiteenusele. Sisse logimata saab kuvada spordiklubi tunniplaani, treeningstiile ja treenereid. Võimalik on liituda teenusega ja registreeruda treeningutele, samuti registreeringuid tühistada. Esialgu põhineb süsteem ühel spordiklubil.&lt;br /&gt;
&lt;br /&gt;
Autentimine on lahendatud tokenipõhiselt. Eeskujuna kasutasime näidisrakendust, mille juhend ja lähtekood on leitav [http://bitoftech.net/2014/06/09/angularjs-token-authentication-using-asp-net-web-api-2-owin-asp-net-identity/ siit].&lt;br /&gt;
&lt;br /&gt;
== Lähtekood ==&lt;br /&gt;
Eksamiks valminud veebiteenuse ja klientrakenduse kokkupakitult allalaadimiseks klõpsa [http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/solution/ProjectSPOT.zip sellel lingil]. WebApi ja Angular JS klient on eraldi lahendustes. Kliendi testimiseks brauseris tuleb eelnevalt käivitada ka veebiteenus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;NB! Võib juhtuda, et WebApi esmakordsel käivitamisel loodavasse andmebaasi kõiki andmeid (tunniplaani ja registreerimisi jooksvasse nädalasse) ei lisandu. Sellisel juhul kustutage tekkinud andmebaas ja käivitage kõigepealt samas lahenduses olev konsoolirakendus.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Retsensioonid ==&lt;br /&gt;
&lt;br /&gt;
# [https://wiki.itcollege.ee/index.php/Talk:JRT XML/XSD/XSLT retsensioon meeskonnale JRT]&lt;br /&gt;
# [Veebiteenuse retsensioon lisandub varsti]&lt;br /&gt;
# [Klientrakenduse retsensioon lisandub varsti]&lt;br /&gt;
&lt;br /&gt;
== Log ==&lt;br /&gt;
* 03.03.17 Esimene kohtumine. Idee.&lt;br /&gt;
* 17.03.17 Osa XMList valmis, osa XSLT-st valmis.&lt;br /&gt;
* 18.03.17 Teine kohtumine. XMLi täiendamine, esimene ülekäimine XSD-s.&lt;br /&gt;
* 19.03.17 XML/XSLT/XSD täiendamine ja lõpetamine.&lt;br /&gt;
* 20.03.17 XML fail, skeemifail ja stiilifailid esitatud. Projekti esimese etapi lõpp. Kevade algus.&lt;br /&gt;
* 26.03.17 XML/XSLT/XSD retsensioon esitatud.&lt;br /&gt;
* 16.04.17 Veebiteenuse analüüsi koostamine.&lt;br /&gt;
* 17.04.17 Esialgne veebiteenuse analüüs ja kavand valmis.&lt;br /&gt;
* 19.04.17 Alustasime veebiteenusega, koostegemine: Domain, DAL, Interfaces, Repostitories. Testimine konsoolis.&lt;br /&gt;
* 24.04.17 Veebiteenuse koostegemine, 2. kord: Domaini täiendamine.&lt;br /&gt;
* 29.04.17 Veebiteenuse koostegemine, 3. kord: Interfaces, Repositories, Factory + UOW. Testimine konsoolis.&lt;br /&gt;
* 01.05.17 Andmebaasi täitmine testandmetega varasemas faasis loodud XML failist.&lt;br /&gt;
* 02.05.17 Veebiteenuse koostegemine, 4. kord: alustasime BLi ja WebApi ehitamist. GET päringud.&lt;br /&gt;
* 09.05.17 Veebiteenuse koostegemine, 5. kord: lisasime Identity.&lt;br /&gt;
* 11.05.17 Veebiteenuse koostegemine, 6. kord: WebApi arendamine. POST, PUT ja DELETE päringud.&lt;br /&gt;
* 15.05.17 Veebiteenuse koostegemine, 7. kord: WebApi arendamine. Lisasime  api kontrollereid.&lt;br /&gt;
* 16.05.17 Veebiteenuse koostegemine, 8. kord: WebApi arendamine. Identity kontroll Fiddleri ja Postmaniga.&lt;br /&gt;
* 20.05.17 Klientrakenduse koostegemine, 1. kord. Testklient.&lt;br /&gt;
* 25.05.17 Klientrakenduse koostegemine, 2. kord. Klientrakenduse arendamine.&lt;br /&gt;
* 01.06.17 Klientrakenduse koostegemine, 3. kord. Klientrakenduse arendamine. Angular JS.&lt;br /&gt;
* 03.06.17 - 11.06.17 Klientrakenduse arendamine. Tokenipõhine autentimine. Veebiteenuse viimistlemine.&lt;br /&gt;
* 11.06.17 Lõpptähtaeg. Projekti esitlemine eksamil.&lt;br /&gt;
* 12.06.17 Teiste lahenduste retsenseerimine.&lt;/div&gt;</summary>
		<author><name>Otiks</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Team_SPOT&amp;diff=123480</id>
		<title>Team SPOT</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Team_SPOT&amp;diff=123480"/>
		<updated>2017-06-12T02:34:02Z</updated>

		<summary type="html">&lt;p&gt;Otiks: /* Lähtekood */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://wiki.itcollege.ee/index.php/Kodut%C3%B6%C3%B6_aines_%22V%C3%B5rgurakendused_II:_hajuss%C3%BCsteemide_ehitamine%22_2017 Kodutöö aines &amp;quot;Võrgurakendused II: hajussüsteemide ehitamine&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
[https://projectspot.visualstudio.com/PROJECTSPOT Projekti kodu (avaneb ainult liikmetele)]&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==Liikmed==&lt;br /&gt;
*Sigrid Pachel&lt;br /&gt;
*Oliver Tiks&lt;br /&gt;
&lt;br /&gt;
==Idee==&lt;br /&gt;
Mõttes on luua spordiklubi(de) veebiteenus ja klientrakendus, mis võimaldaks saada infot pakutavate treeningute kohta, sisestada ja kuvada tunniplaani andmeid, registreerida osalejaid tundidesse ning teha muid asjakohaseid tegevusi nii klubi(de) personalil, liikmetel kui ka juhukasutajatel.&lt;br /&gt;
&lt;br /&gt;
==Veebiteenuse analüüs==&lt;br /&gt;
SPOTi veebiteenus võimaldab saada infot erinevate klubide treeningute kohta ja end neisse registreerida. Kasutaja saab teavet, kus ja millal treeningud toimuvad (tunniplaan), mida treeningus täpsemalt tehakse, mis stiiliga on tegemist, kes on treener, kui palju üks kord maksab jms info. Kasutajakontoga liikmel on võimalik end registreerida soovitud tundi ja hallata oma registreeringuid (muuta, tühistada).&lt;br /&gt;
&lt;br /&gt;
Spordiklubide infot haldavad süsteemi administraatorid, kes saavad lisada, muuta ja kustutada kõike sprodiklubiga seonduvat. Erinevaid treeninguid ja nendega seotud konkreetset infot saavad lisada ja hallata treenerid või spordiklubi esindajad.&lt;br /&gt;
&lt;br /&gt;
Projekti realiseerimiseks kasutame REST arhitektuuri ja ASP.NET MVC Web API tehnoloogiat.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Üldine plaan:&#039;&#039;&#039;&lt;br /&gt;
* esialgu üks kett (laienemise võimalusega)&lt;br /&gt;
* mitu klubi (asukoht, saalid-treeningualad, võimalikud lisatingimused)&lt;br /&gt;
* treeningute info (stiilid ehk kontseptid, litsentsid, …)&lt;br /&gt;
* tunniplaan (aeg, koht, instruktorid, max osalejate arv, ühe korra hind)&lt;br /&gt;
* registratuur (treeningutest osavõtjad)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kasutajad (rollid):&#039;&#039;&#039;&lt;br /&gt;
* administraatorid (saavad teha muudatusi)&lt;br /&gt;
* treenerid (info kvalifikatsiooni, litsentside kohta, õigus treeninguid lisada) &lt;br /&gt;
* liikmed (saavad treeningutele registreeruda)&lt;br /&gt;
* ülejäänud (näevad klubide ja treeningute infot ning tunniplaani)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Peaks olema:&#039;&#039;&#039;&lt;br /&gt;
* kasutajate loomine&lt;br /&gt;
* kasutajate tuvastamine ja haldamine&lt;br /&gt;
* kasutajate ja kasutusstatistika logimine&lt;br /&gt;
* teenuse poole pöördumiste arvu piiramine ja piirangute haldamine&lt;br /&gt;
* klubide, treenerite ja treeningute info väljastamine&lt;br /&gt;
* tunniplaani info väljastamine&lt;br /&gt;
* treeningutesse registreerimine&lt;br /&gt;
* registreeringu tühistamine&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Võiks olla:&#039;&#039;&#039;&lt;br /&gt;
* klubide, treenerite, treeningute lisamine ja muutmine&lt;br /&gt;
* tunniplaanis treeningute tühistamine&lt;br /&gt;
* sisestatud andmete kustutamine (pehmelt)&lt;br /&gt;
* rollide-õiguste määramine (admin)&lt;br /&gt;
* asukohad mitmes riigis&lt;br /&gt;
* kliendipaketid, arveldus&lt;br /&gt;
* kontaktide tsentraliseeritud haldus&lt;br /&gt;
* sisselogimine läbi Google’i, Facebooki vmt teenuse&lt;br /&gt;
&lt;br /&gt;
===Andmebaasi skeem (lihtsustatud)===&lt;br /&gt;
&lt;br /&gt;
[[File:SPOTService ERD.JPG|border|SPOT Service ERD]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Märkus: olemite atribuutidest on välja toodud ainult peamised.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====Tabelite kirjeldused====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kasutajahaldus*:&#039;&#039;&#039;&lt;br /&gt;
* User - kasutajate andmed&lt;br /&gt;
* Role - rollid, millega määratakse kasutajate õigused (&amp;quot;Admin&amp;quot;, &amp;quot;Trainer&amp;quot;, ...)&lt;br /&gt;
* UserRole - kasutajate sidumine rolli(de)ga&lt;br /&gt;
* UserLogin - muu teenuse kaudu sisselogimiseks&lt;br /&gt;
* UserClaim - muu teenuse kaudu sisselogimiseks&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;&#039;&#039;Kasutajahalduse süsteem toetub Asp.Net Identity valmislahendusele, mida on täiendanud A. Käver.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Klubid:&#039;&#039;&#039;&lt;br /&gt;
* Chain (optional) - spordiklubikettide info&lt;br /&gt;
* Location - spordiklubi/-rajatise asukoht linna/asula täpsusega&lt;br /&gt;
* Facility - spordiklubi/-rajatise andmed, seotud asukohaga ja vajadusel ketiga.&lt;br /&gt;
* Venue - spordiklubis/-rajatises kasutatavad saalid ja muud treeningualad&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Treeningud:&#039;&#039;&#039;&lt;br /&gt;
* Concept (Style) - treeningustiilid ehk kontseptid&lt;br /&gt;
* Licenser (optional) - treeninguliikide litsentsid (kui on)&lt;br /&gt;
* Training - treeninguliikide andmed, seotud stiili ja vajadusel litsentsiga&lt;br /&gt;
* Trainer (User (role: Trainer) + Training) - treeninguliikide sidumine treeneritega&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tunniplaan:&#039;&#039;&#039;&lt;br /&gt;
* ScheduleItem - treeningud tunniplaanis&lt;br /&gt;
* Instructor (User (role: Trainer) + ScheduleItem) - tundide juhendajad (võib olla mitu)&lt;br /&gt;
* Registration (ScheduleItem + User (role: any)) - tundidesse tehtud registreeringud&lt;br /&gt;
&lt;br /&gt;
== XML / XSD / XSLT==&lt;br /&gt;
Projekti esimeses etapis sai loodud XML andmefail, mille ülesehitus on paika pandud XSD skeemifailis. Lisaks on olemas kaks stiilifaili: esimene neist transformeerib andmed HTML-kujule, et kuvada infot  veebilehel, teine tekitab samade andmete esitamiseks uue struktuuriga XML faili.&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/ProjectSPOT_ScheduleXml.zip Lae failid alla.] &lt;br /&gt;
&lt;br /&gt;
=== XML ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Fail sisaldab andmeid ühes spordiklubis pakutavate treeningute kohta. Andmed on esitatud treeninguliikide kaupa, mille juurde on lisatud ka vastava treeninguliigi tunniplaan. Treeninguliikidel on nimi ja kirjeldus ning vajadusel ära märgitud ka litsents. Failis on eraldi välja toodud treeningustiilid, instruktorid ja ruumid, kus treeningud toimuvad. Iga treeninguliik kuulub ühe või mitme stiili alla. Instruktoritel on tagasiside põhjal saadud hinne. Treeninguruumidel on vaikimisi määratud mahutavus. Tunniplaanis on ära toodud treeningu koht, algusaeg ja kestus ning instruktorid. Vajadusel saab eraldi määrata ka treeningurühma suuruse, kui see erineb tavalisest ruumi mahutavusest. Ka on võimalik treeningutunnile lisada kommentaar. Erinevate elementide andmed on omavahel seotud id-atribuutidega.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;?xml-stylesheet type=&amp;quot;text/xsl&amp;quot; href=&amp;quot;trainingsToHtml.xslt&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Trainings&amp;gt;&lt;br /&gt;
  &amp;lt;Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;![CDATA[Cardio]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
  &amp;lt;/Styles&amp;gt;&lt;br /&gt;
  &amp;lt;Instructors&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;1&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Yogafier]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;2&amp;quot; Rating=&amp;quot;4.7&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Mickey Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;3&amp;quot; Rating=&amp;quot;4.6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;4&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Donald Duck]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;5&amp;quot; Rating=&amp;quot;3.9&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Goofy]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;6&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Schwarzenegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;8&amp;quot; Rating=&amp;quot;4.8&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Kayla Weightlifter]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;9&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Margaret Strengthener]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
  &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;Venues&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;1&amp;quot; GroupSize=&amp;quot;45&amp;quot;&amp;gt;&amp;lt;![CDATA[Main Hall]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 2]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;3&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 3]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;4&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 4]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;5&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 5]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&amp;lt;![CDATA[Area 6]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;7&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&amp;lt;![CDATA[Yoga Hall]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
  &amp;lt;/Venues&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Yoga]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[Yoga is a group of physical, mental, and spiritual practices or disciplines which originated in ancient India. ]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;1&amp;quot; VenueId=&amp;quot;7&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-25T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;14&amp;quot; VenueId=&amp;quot;7&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT1H20M&amp;quot;&amp;gt;2017-03-28T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Comment&amp;gt;&lt;br /&gt;
          &amp;lt;![CDATA[Special class!]]&amp;gt;&lt;br /&gt;
        &amp;lt;/Comment&amp;gt; &lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/Nvlxn0EnmbM&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;  &lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;2&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyBalance™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[BODYBALANCE™ is the Yoga, Tai Chi, Pilates workout that builds flexibility and strength and leaves you feeling centered and calm. Based on a carefully structured series of stretches, moves and poses to music it creates a holistic workout that brings the body into a state of harmony and balance. This class will heighten your flexibility and inner strength creating a strong supple body from the inside out. Burn on average 390cals per hour.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;2&amp;quot; VenueId=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-31T12:15:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;3&amp;quot; VenueId=&amp;quot;2&amp;quot; &amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-30T13:30:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;3&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/jJxA6vBjUqY&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;3&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyJam™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;4&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[The Body Jam program is an addictive fusion of the latest dance styles to the hottest new sounds. This class isn’t just for dancers, it’s for everyone because the emphasis is put on not only having fun but also breaking a sweat. So grab a friend, get front and centre … you bring the attitude and we’ll bring the moves!]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;4&amp;quot;  VenueId=&amp;quot;3&amp;quot; &amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T16:10:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;4&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;5&amp;quot; VenueId=&amp;quot;5&amp;quot; &amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT45M&amp;quot;&amp;gt;2017-04-01T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;5&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/8PTXyg9si_4&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;4&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyPump™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[BodyPump classes are 59 minutes long and contain eight separate muscle-group specific songs or &amp;quot;tracks&amp;quot; along with an opening warm up track and closing cool-down track. There are also 45-minute and 30-minute class formats. The classes are performed to music using free weights-plates, barbells and an aerobic step. Participants choose their weights based on the exercise and their personal goals. Major muscle groups are worked via series of compound and isolation-based exercises including squats, presses, dead lifts. The focus is towards muscle endurance by moving light weights at high repetitions, what Les Mills calls the Rep Effect.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;3&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;6&amp;quot; VenueId=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;6&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;7&amp;quot; VenueId=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-23T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;6&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/zU_0XrdO3wo&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[CoreStrenght is a very hard workout! Not for beginners.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;3&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;8&amp;quot; VenueId=&amp;quot;6&amp;quot; GroupSize=&amp;quot;10&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT2H&amp;quot;&amp;gt;2017-03-23T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;9&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Comment&amp;gt;&lt;br /&gt;
          &amp;lt;![CDATA[Special challenge!]]&amp;gt;&lt;br /&gt;
        &amp;lt;/Comment&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;9&amp;quot; VenueId=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;8&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;10&amp;quot; VenueId=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-04-05T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;8&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;9&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/ZxTVmpvyUt8&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[Zumba involves dance and aerobic movements performed to energetic music. The choreography incorporates hip-hop, soca, samba, salsa, merengue and mambo. Squats and lunges are also included.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;4&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;11&amp;quot; VenueId=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT55M&amp;quot;&amp;gt;2017-03-26T15:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;12&amp;quot; VenueId=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-28T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;13&amp;quot; VenueId=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/-ZB6XIkfxnQ&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
&amp;lt;/Trainings&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSD ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Skeemifail kontrollib eelnevas andmefailis esitatud andmete vastavust kokkulepitud formaadile, samuti õigete andmetüüpide kasutamist. Alamelemendi id-atribuudi väärtus peab olema iga elemendirühma lõikes unikaalne. Kohustuslike elementide ja atribuutide kõrval on ka mõned (nt kommentaar), mille olemasolu pole alati tarvilik. Teatud puhkudel on piiratud maksimaalset elementide arvu (nt treeningutunni algusaeg). Faili üldine struktuur on kindel, aga alati pole alamelementide järjekord oluline (nt treeninguliigi puhul).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xs:schema attributeFormDefault=&amp;quot;unqualified&amp;quot; elementFormDefault=&amp;quot;qualified&amp;quot; xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xs:element name=&amp;quot;Trainings&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Styles&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Style&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
          &amp;lt;xs:unique name=&amp;quot;UniqueStyleId&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xs:selector xpath=&amp;quot;Style&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Instructors&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;Name&amp;quot; type=&amp;quot;xs:string&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:attribute name=&amp;quot;Rating&amp;quot; type=&amp;quot;xs:decimal&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
          &amp;lt;xs:unique name=&amp;quot;UniqueInstructorId&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xs:selector xpath=&amp;quot;Instructor&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Venues&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Venue&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:attribute name=&amp;quot;GroupSize&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
          &amp;lt;xs:unique name=&amp;quot;UniqueVenueId&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xs:selector xpath=&amp;quot;Venue&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Training&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:all&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Description&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Styles&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Style&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Schedule&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;ScheduleItem&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:all&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element  maxOccurs=&amp;quot;1&amp;quot; name=&amp;quot;Time&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:extension base=&amp;quot;xs:dateTime&amp;quot;&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:attribute name=&amp;quot;Duration&amp;quot; type=&amp;quot;xs:duration&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element name=&amp;quot;Instructors&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                    &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                                      &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                                        &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                                      &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                                    &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                                  &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; name=&amp;quot;Comment&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:all&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;VenueId&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;GroupSize&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;optional&amp;quot; /&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;VideoUrl&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:all&amp;gt;&lt;br /&gt;
            &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xs:attribute name=&amp;quot;Licence&amp;quot; type=&amp;quot;xs:string&amp;quot; use=&amp;quot;optional&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
    &amp;lt;xs:unique name=&amp;quot;UniqueTrainingId&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xs:selector xpath=&amp;quot;Training&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
    &amp;lt;xs:unique name=&amp;quot;UniqueScheduleItemId&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xs:selector xpath=&amp;quot;Training/Schedule/ScheduleItem&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSLT (html) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Selles transformatsioonifailis on kirjeldatud XML failis olevate andmete [http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/trainings.xml  kuvamise viis veebilehel]. Treeninguliigid on jaotatud stiiliblokkidesse (mõni treening kuulub mitme stiili alla). Iga treeninguliigi all on tabeli kujul esitatud tunniplaan ning lisatud näidisvideo ja kirjeldus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot; xmlns:msxsl=&amp;quot;urn:schemas-microsoft-com:xslt&amp;quot; exclude-result-prefixes=&amp;quot;msxsl&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:output method=&amp;quot;html&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;html&amp;gt;&lt;br /&gt;
      &amp;lt;head&amp;gt;&lt;br /&gt;
        &amp;lt;title&amp;gt;SuperSportsClub - Trainings&amp;lt;/title&amp;gt;&lt;br /&gt;
        &amp;lt;style&amp;gt;&lt;br /&gt;
          body {&lt;br /&gt;
          background:BurlyWood;&lt;br /&gt;
          text-align: center;&lt;br /&gt;
          }&lt;br /&gt;
          .section {&lt;br /&gt;
          text-align:left;&lt;br /&gt;
          width:1000px;&lt;br /&gt;
          padding:20px;&lt;br /&gt;
          background:Chocolate;&lt;br /&gt;
          margin: auto;&lt;br /&gt;
          }&lt;br /&gt;
          table, th, td, .section {&lt;br /&gt;
          border: 1px solid black;&lt;br /&gt;
          }&lt;br /&gt;
          th {&lt;br /&gt;
          text-align:left;&lt;br /&gt;
          padding-left: 10px;&lt;br /&gt;
          padding-right: 10px;&lt;br /&gt;
          }&lt;br /&gt;
          td {&lt;br /&gt;
          text-align:center;&lt;br /&gt;
          }&lt;br /&gt;
          p {&lt;br /&gt;
          text-align:justify;&lt;br /&gt;
          }&lt;br /&gt;
          .description {&lt;br /&gt;
          vertical-align:top; &lt;br /&gt;
          padding:10px;&lt;br /&gt;
          }&lt;br /&gt;
        &amp;lt;/style&amp;gt;&lt;br /&gt;
      &amp;lt;/head&amp;gt;&lt;br /&gt;
      &amp;lt;body&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;Trainings at SuperSportsClub&amp;lt;/h1&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;/Trainings/Styles/Style&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:sort select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:variable select=&amp;quot;.&amp;quot; name=&amp;quot;SelectedStyle&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;section&amp;quot; &amp;gt;&lt;br /&gt;
            &amp;lt;h2&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select=&amp;quot;$SelectedStyle&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/h2&amp;gt;&lt;br /&gt;
            &amp;lt;ul&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:for-each select=&amp;quot;/Trainings/Training&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:sort select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:variable name=&amp;quot;Training&amp;quot; select=&amp;quot;.&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:if test=&amp;quot;Styles/Style/@Id = $SelectedStyle/@Id&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;&lt;br /&gt;
                    &amp;lt;h3&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;$Training/Name&amp;quot; /&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:if test=&amp;quot;$Training/@Licence&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:text&amp;gt; (&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:value-of select=&amp;quot;$Training/@Licence&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:text&amp;gt;)&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
                    &amp;lt;/h3&amp;gt;&lt;br /&gt;
                    &amp;lt;table&amp;gt;&lt;br /&gt;
                      &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                      &amp;lt;/tr&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:for-each select=&amp;quot;$Training/Schedule/ScheduleItem&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:sort select=&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:variable name=&amp;quot;StartTime&amp;quot; select=&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:variable name=&amp;quot;Duration&amp;quot; select=&amp;quot;$StartTime/@Duration&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;tr&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;150&amp;quot; &amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;concat(&lt;br /&gt;
                                            substring($StartTime, 9, 2), &lt;br /&gt;
                                            &#039;.&#039;, &lt;br /&gt;
                                            substring($StartTime, 6, 2), &lt;br /&gt;
                                            &#039;.&#039;, &lt;br /&gt;
                                            substring($StartTime, 1, 4),&lt;br /&gt;
                                            &#039; &#039;,&lt;br /&gt;
                                            substring($StartTime, 12, 2),&lt;br /&gt;
                                            &#039;:&#039;,&lt;br /&gt;
                                            substring($StartTime, 15, 2))&lt;br /&gt;
                                            &amp;quot; /&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:if test=&amp;quot;Comment&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;br/&amp;gt;&lt;br /&gt;
                              &amp;lt;div style=&amp;quot;color:Green&amp;quot;&amp;gt;&lt;br /&gt;
                                &amp;lt;xsl:value-of select=&amp;quot;Comment&amp;quot;/&amp;gt;&lt;br /&gt;
                              &amp;lt;/div&amp;gt;&lt;br /&gt;
                            &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;substring($Duration, 3, 6)&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:variable name=&amp;quot;VenueId&amp;quot; select=&amp;quot;@VenueId&amp;quot;/&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;/Trainings/Venues/Venue[@Id=$VenueId]&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:for-each select=&amp;quot;Instructors/Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:variable name=&amp;quot;InstructorId&amp;quot; select=&amp;quot;@Id&amp;quot;&amp;gt;&amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:variable name=&amp;quot;SelectedInstructor&amp;quot; select=&amp;quot;/Trainings/Instructors/Instructor[@Id=$InstructorId]&amp;quot; /&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/Name&amp;quot;/&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:text&amp;gt; (&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/@Rating&amp;quot; /&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:text&amp;gt;)&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                              &amp;lt;br/&amp;gt;&lt;br /&gt;
                            &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;/tr&amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
                    &amp;lt;/table&amp;gt;&lt;br /&gt;
                    &amp;lt;br/&amp;gt;&lt;br /&gt;
                    &amp;lt;table&amp;gt;&lt;br /&gt;
                      &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                          &amp;lt;xsl:variable name=&amp;quot;VideoUrl&amp;quot; select=&amp;quot;$Training/VideoUrl&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;{$VideoUrl}&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                          &amp;lt;p&amp;gt;&lt;br /&gt;
                            &amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&lt;br /&gt;
                          &amp;lt;/p&amp;gt;&lt;br /&gt;
                          &amp;lt;p&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;$Training/Description&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                      &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;/table&amp;gt;&lt;br /&gt;
                  &amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
            &amp;lt;/ul&amp;gt;&lt;br /&gt;
          &amp;lt;/div&amp;gt;&lt;br /&gt;
          &amp;lt;br/&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
      &amp;lt;/body&amp;gt;&lt;br /&gt;
    &amp;lt;/html&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== HTML (transformeeritud) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/trainings.html Vaata eelneva transformatsiooni tulemust.]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;META http-equiv=&amp;quot;Content-Type&amp;quot; content=&amp;quot;text/html; charset=utf-8&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;SuperSportsClub - Trainings&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;style&amp;gt;&lt;br /&gt;
        body {&lt;br /&gt;
            background: BurlyWood;&lt;br /&gt;
            text-align: center;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        .section {&lt;br /&gt;
            text-align: left;&lt;br /&gt;
            width: 1000px;&lt;br /&gt;
            padding: 20px;&lt;br /&gt;
            background: Chocolate;&lt;br /&gt;
            margin: auto;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        table, th, td, .section {&lt;br /&gt;
            border: 1px solid black;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        th {&lt;br /&gt;
            text-align: left;&lt;br /&gt;
            padding-left: 10px;&lt;br /&gt;
            padding-right: 10px;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        td {&lt;br /&gt;
            text-align: center;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        p {&lt;br /&gt;
            text-align: justify;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        .description {&lt;br /&gt;
            vertical-align: top;&lt;br /&gt;
            padding: 10px;&lt;br /&gt;
        }&lt;br /&gt;
    &amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
    &amp;lt;h1&amp;gt;Trainings at SuperSportsClub&amp;lt;/h1&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Body&amp;amp;amp;Mind&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyBalance™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 13:30&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;1H15M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 2&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Minnie Mouse (4.6)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;31.03.2017 12:15&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;1H15M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 3&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Mickey Mouse (4.7)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/jJxA6vBjUqY&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                BODYBALANCE™ is the Yoga, Tai Chi, Pilates workout that builds flexibility and strength and leaves you feeling centered and calm. Based on a carefully structured series of stretches, moves and poses to music it creates a holistic workout that brings the body into a state of harmony and balance. This class will heighten your flexibility and inner strength creating a strong supple body from the inside out. Burn on average 390cals per hour.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;Yoga&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;25.03.2017 14:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Yoga Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Minnie Yogafier (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
                            28.03.2017 14:00&amp;lt;br&amp;gt;&amp;lt;div style=&amp;quot;color:Green&amp;quot;&amp;gt;&lt;br /&gt;
                                Special class!&lt;br /&gt;
                            &amp;lt;/div&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;1H20M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Yoga Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Minnie Yogafier (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/Nvlxn0EnmbM&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                Yoga is a group of physical, mental, and spiritual practices or disciplines which originated in ancient India.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Cardio&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyJam™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 16:10&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 3&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Donald Duck (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;01.04.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;45M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 5&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Goofy (3.9)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/8PTXyg9si_4&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                The Body Jam program is an addictive fusion of the latest dance styles to the hottest new sounds. This class isn’t just for dancers, it’s for everyone because the emphasis is put on not only having fun but also breaking a sweat. So grab a friend, get front and centre … you bring the attitude and we’ll bring the moves!&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Dance&amp;amp;amp;Fun&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyJam™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 16:10&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 3&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Donald Duck (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;01.04.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;45M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 5&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Goofy (3.9)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/8PTXyg9si_4&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                The Body Jam program is an addictive fusion of the latest dance styles to the hottest new sounds. This class isn’t just for dancers, it’s for everyone because the emphasis is put on not only having fun but also breaking a sweat. So grab a friend, get front and centre … you bring the attitude and we’ll bring the moves!&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;Zumba®&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;26.03.2017 15:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;55M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 2&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Zumbaschnegger (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;28.03.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 4&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Zumbaschnegger (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 2&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Zumbaschnegger (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/-ZB6XIkfxnQ&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                Zumba involves dance and aerobic movements performed to energetic music. The choreography incorporates hip-hop, soca, samba, salsa, merengue and mambo. Squats and lunges are also included.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Strength&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyPump™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;23.03.2017 13:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Main Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Schwarzenegger (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 13:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Main Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Schwarzenegger (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/zU_0XrdO3wo&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                BodyPump classes are 59 minutes long and contain eight separate muscle-group specific songs or &amp;quot;tracks&amp;quot; along with an opening warm up track and closing cool-down track. There are also 45-minute and 30-minute class formats. The classes are performed to music using free weights-plates, barbells and an aerobic step. Participants choose their weights based on the exercise and their personal goals. Major muscle groups are worked via series of compound and isolation-based exercises including squats, presses, dead lifts. The focus is towards muscle endurance by moving light weights at high repetitions, what Les Mills calls the Rep Effect.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;CoreStrength&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
                            23.03.2017 12:00&amp;lt;br&amp;gt;&amp;lt;div style=&amp;quot;color:Green&amp;quot;&amp;gt;&lt;br /&gt;
                                Special challenge!&lt;br /&gt;
                            &amp;lt;/div&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;2H&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Area 6&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Margaret Strengthener (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Area 6&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Kayla Weightlifter (4.8)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;05.04.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Area 6&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Kayla Weightlifter (4.8)&amp;lt;br&amp;gt;Margaret Strengthener (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/ZxTVmpvyUt8&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                CoreStrenght is a very hard workout! Not for beginners.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSLT (xml) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Selle transformatsiooniga luuakse uus [http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/schedule.xml XML fail], milles on treeningute andmed esitatud ühtse tunniplaani kujul. Algses failis erinevate elementide alla paigutatud andmed on nüüd tunniplaani alamelemendis kokku viidud. Sidumine on teostatud id-atribuutide abil. Tunniplaanis on ühes kohas kirjas treeningu nimi, stiil(id), koht, algusaeg, kestus, rühma suurus, instruktorid ja muu täiendav info.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&lt;br /&gt;
    xmlns:msxsl=&amp;quot;urn:schemas-microsoft-com:xslt&amp;quot; exclude-result-prefixes=&amp;quot;msxsl&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:output method=&amp;quot;xml&amp;quot; indent=&amp;quot;yes&amp;quot; cdata-section-elements=&amp;quot;Name Style Comment&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;/Trainings/Training&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:sort select=&amp;quot;Name&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:variable name=&amp;quot;SelectedTraining&amp;quot; select=&amp;quot;.&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;Schedule/ScheduleItem&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:sort select=&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;ScheduleItem&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:variable name=&amp;quot;VenueId&amp;quot; select=&amp;quot;@VenueId&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:variable name=&amp;quot;SelectedVenue&amp;quot; select=&amp;quot;/Trainings/Venues/Venue[@Id=$VenueId]&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:attribute name=&amp;quot;GroupSize&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;@GroupSize&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:value-of select=&amp;quot;@GroupSize&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:value-of select=&amp;quot;$SelectedVenue/@GroupSize&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
            &amp;lt;Venue&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$VenueId&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select=&amp;quot;$SelectedVenue&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/Venue&amp;gt;&lt;br /&gt;
            &amp;lt;Training&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$SelectedTraining/@Id&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:if test=&amp;quot;$SelectedTraining/@Licence&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:attribute name=&amp;quot;Licence&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:value-of select=&amp;quot;$SelectedTraining/@Licence&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
              &amp;lt;Name&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$SelectedTraining/Name&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/Name&amp;gt;&lt;br /&gt;
              &amp;lt;Styles&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:for-each select=&amp;quot;$SelectedTraining/Styles/Style&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:variable name=&amp;quot;StyleId&amp;quot; select=&amp;quot;@Id&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;Style&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:attribute name=&amp;quot;StyleId&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;$StyleId&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;/Trainings/Styles/Style[@Id=$StyleId]&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/Style&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
              &amp;lt;/Styles&amp;gt;&lt;br /&gt;
            &amp;lt;/Training&amp;gt;&lt;br /&gt;
            &amp;lt;Time&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:attribute name=&amp;quot;Duration&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;Time/@Duration&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select =&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/Time&amp;gt;&lt;br /&gt;
            &amp;lt;Instructors&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:for-each select=&amp;quot;Instructors/Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:variable name=&amp;quot;InstructorId&amp;quot; select=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:variable name=&amp;quot;SelectedInstructor&amp;quot; select=&amp;quot;/Trainings/Instructors/Instructor[@Id=$InstructorId]&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;Instructor&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;$InstructorId&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:attribute name=&amp;quot;Rating&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/@Rating&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                  &amp;lt;Name&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/Name&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/Name&amp;gt;&lt;br /&gt;
                &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
            &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:if test=&amp;quot;Comment&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;Comment&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;Comment&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/Comment&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
          &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XML (transformeeritud) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/schedule.xml Vaata eelneva transformatsiooni tulemust.]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Schedule&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;3&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot;&amp;gt;Hall 2&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;2&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyBalance™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-30T13:30:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;3&amp;quot; Rating=&amp;quot;4.6&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;2&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;3&amp;quot;&amp;gt;Hall 3&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;2&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyBalance™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-31T12:15:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;2&amp;quot; Rating=&amp;quot;4.7&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Mickey Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;4&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;3&amp;quot;&amp;gt;Hall 3&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;3&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyJam™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;![CDATA[Cardio]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T16:10:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;4&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Donald Duck]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;5&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;5&amp;quot;&amp;gt;Hall 5&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;3&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyJam™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;![CDATA[Cardio]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT45M&amp;quot;&amp;gt;2017-04-01T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;5&amp;quot; Rating=&amp;quot;3.9&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Goofy]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;7&amp;quot; GroupSize=&amp;quot;45&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;1&amp;quot;&amp;gt;Main Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;4&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyPump™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-23T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;6&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Schwarzenegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;6&amp;quot; GroupSize=&amp;quot;45&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;1&amp;quot;&amp;gt;Main Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;4&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyPump™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;6&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Schwarzenegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;8&amp;quot; GroupSize=&amp;quot;10&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot;&amp;gt;Area 6&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT2H&amp;quot;&amp;gt;2017-03-23T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;9&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Margaret Strengthener]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
    &amp;lt;Comment&amp;gt;&amp;lt;![CDATA[&lt;br /&gt;
          Special challenge!&lt;br /&gt;
        ]]&amp;gt;&amp;lt;/Comment&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;9&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot;&amp;gt;Area 6&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;8&amp;quot; Rating=&amp;quot;4.8&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Kayla Weightlifter]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;10&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot;&amp;gt;Area 6&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-04-05T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;8&amp;quot; Rating=&amp;quot;4.8&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Kayla Weightlifter]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;9&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Margaret Strengthener]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;11&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot;&amp;gt;Hall 2&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT55M&amp;quot;&amp;gt;2017-03-26T15:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;12&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;4&amp;quot;&amp;gt;Hall 4&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-28T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;13&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot;&amp;gt;Hall 2&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;1&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;7&amp;quot;&amp;gt;Yoga Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Yoga]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-25T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;1&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Yogafier]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;14&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;7&amp;quot;&amp;gt;Yoga Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Yoga]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT1H20M&amp;quot;&amp;gt;2017-03-28T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;1&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Yogafier]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
    &amp;lt;Comment&amp;gt;&amp;lt;![CDATA[&lt;br /&gt;
          Special class!&lt;br /&gt;
        ]]&amp;gt;&amp;lt;/Comment&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
&amp;lt;/Schedule&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus ==&lt;br /&gt;
Angular JS &#039;&#039;single page application&#039;&#039; eelnevalt kirjeldatud veebiteenusele. Sisse logimata saab kuvada spordiklubi tunniplaani, treeningstiile ja treenereid. Võimalik on liituda teenusega ja registreeruda treeningutele, samuti registreeringuid tühistada. Esialgu põhineb süsteem ühel spordiklubil.&lt;br /&gt;
&lt;br /&gt;
Autentimine on lahendatud tokenipõhiselt. Eeskujuna kasutasime näidisrakendust, mille juhend ja lähtekood on leitav [http://bitoftech.net/2014/06/09/angularjs-token-authentication-using-asp-net-web-api-2-owin-asp-net-identity/ siit].&lt;br /&gt;
&lt;br /&gt;
== Lähtekood ==&lt;br /&gt;
Eksamiks valminud veebiteenuse ja klientrakenduse kokkupakitult allalaadimiseks klõpsa [http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/solution/ProjectSPOT.zip sellel lingil]. WebApi ja klient on eraldi lahendustes. Kliendi testimiseks tuleb käivitada ka veebiteenus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;NB! Võib juhtuda, et WebApi esmakordsel käivitamisel loodavasse andmebaasi kõiki andmeid (tunniplaani ja registreerimisi jooksvasse nädalasse) ei lisandu. Sellisel juhul kustutage tekkinud andmebaas ja käivitage kõigepealt samas lahenduses olev konsoolirakendus.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Retsensioonid ==&lt;br /&gt;
&lt;br /&gt;
# [https://wiki.itcollege.ee/index.php/Talk:JRT XML/XSD/XSLT retsensioon meeskonnale JRT]&lt;br /&gt;
# [Veebiteenuse retsensioon lisandub varsti]&lt;br /&gt;
# [Klientrakenduse retsensioon lisandub varsti]&lt;br /&gt;
&lt;br /&gt;
== Log ==&lt;br /&gt;
* 03.03.17 Esimene kohtumine. Idee.&lt;br /&gt;
* 17.03.17 Osa XMList valmis, osa XSLT-st valmis.&lt;br /&gt;
* 18.03.17 Teine kohtumine. XMLi täiendamine, esimene ülekäimine XSD-s.&lt;br /&gt;
* 19.03.17 XML/XSLT/XSD täiendamine ja lõpetamine.&lt;br /&gt;
* 20.03.17 XML fail, skeemifail ja stiilifailid esitatud. Projekti esimese etapi lõpp. Kevade algus.&lt;br /&gt;
* 26.03.17 XML/XSLT/XSD retsensioon esitatud.&lt;br /&gt;
* 16.04.17 Veebiteenuse analüüsi koostamine.&lt;br /&gt;
* 17.04.17 Esialgne veebiteenuse analüüs ja kavand valmis.&lt;br /&gt;
* 19.04.17 Alustasime veebiteenusega, koostegemine: Domain, DAL, Interfaces, Repostitories. Testimine konsoolis.&lt;br /&gt;
* 24.04.17 Veebiteenuse koostegemine, 2. kord: Domaini täiendamine.&lt;br /&gt;
* 29.04.17 Veebiteenuse koostegemine, 3. kord: Interfaces, Repositories, Factory + UOW. Testimine konsoolis.&lt;br /&gt;
* 01.05.17 Andmebaasi täitmine testandmetega varasemas faasis loodud XML failist.&lt;br /&gt;
* 02.05.17 Veebiteenuse koostegemine, 4. kord: alustasime BLi ja WebApi ehitamist. GET päringud.&lt;br /&gt;
* 09.05.17 Veebiteenuse koostegemine, 5. kord: lisasime Identity.&lt;br /&gt;
* 11.05.17 Veebiteenuse koostegemine, 6. kord: WebApi arendamine. POST, PUT ja DELETE päringud.&lt;br /&gt;
* 15.05.17 Veebiteenuse koostegemine, 7. kord: WebApi arendamine. Lisasime  api kontrollereid.&lt;br /&gt;
* 16.05.17 Veebiteenuse koostegemine, 8. kord: WebApi arendamine. Identity kontroll Fiddleri ja Postmaniga.&lt;br /&gt;
* 20.05.17 Klientrakenduse koostegemine, 1. kord. Testklient.&lt;br /&gt;
* 25.05.17 Klientrakenduse koostegemine, 2. kord. Klientrakenduse arendamine.&lt;br /&gt;
* 01.06.17 Klientrakenduse koostegemine, 3. kord. Klientrakenduse arendamine. Angular JS.&lt;br /&gt;
* 03.06.17 - 11.06.17 Klientrakenduse arendamine. Tokenipõhine autentimine. Veebiteenuse viimistlemine.&lt;br /&gt;
* 11.06.17 Lõpptähtaeg. Projekti esitlemine eksamil.&lt;br /&gt;
* 12.06.17 Teiste lahenduste retsenseerimine.&lt;/div&gt;</summary>
		<author><name>Otiks</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Team_SPOT&amp;diff=123479</id>
		<title>Team SPOT</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Team_SPOT&amp;diff=123479"/>
		<updated>2017-06-12T02:33:42Z</updated>

		<summary type="html">&lt;p&gt;Otiks: /* Lähtekood */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://wiki.itcollege.ee/index.php/Kodut%C3%B6%C3%B6_aines_%22V%C3%B5rgurakendused_II:_hajuss%C3%BCsteemide_ehitamine%22_2017 Kodutöö aines &amp;quot;Võrgurakendused II: hajussüsteemide ehitamine&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
[https://projectspot.visualstudio.com/PROJECTSPOT Projekti kodu (avaneb ainult liikmetele)]&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==Liikmed==&lt;br /&gt;
*Sigrid Pachel&lt;br /&gt;
*Oliver Tiks&lt;br /&gt;
&lt;br /&gt;
==Idee==&lt;br /&gt;
Mõttes on luua spordiklubi(de) veebiteenus ja klientrakendus, mis võimaldaks saada infot pakutavate treeningute kohta, sisestada ja kuvada tunniplaani andmeid, registreerida osalejaid tundidesse ning teha muid asjakohaseid tegevusi nii klubi(de) personalil, liikmetel kui ka juhukasutajatel.&lt;br /&gt;
&lt;br /&gt;
==Veebiteenuse analüüs==&lt;br /&gt;
SPOTi veebiteenus võimaldab saada infot erinevate klubide treeningute kohta ja end neisse registreerida. Kasutaja saab teavet, kus ja millal treeningud toimuvad (tunniplaan), mida treeningus täpsemalt tehakse, mis stiiliga on tegemist, kes on treener, kui palju üks kord maksab jms info. Kasutajakontoga liikmel on võimalik end registreerida soovitud tundi ja hallata oma registreeringuid (muuta, tühistada).&lt;br /&gt;
&lt;br /&gt;
Spordiklubide infot haldavad süsteemi administraatorid, kes saavad lisada, muuta ja kustutada kõike sprodiklubiga seonduvat. Erinevaid treeninguid ja nendega seotud konkreetset infot saavad lisada ja hallata treenerid või spordiklubi esindajad.&lt;br /&gt;
&lt;br /&gt;
Projekti realiseerimiseks kasutame REST arhitektuuri ja ASP.NET MVC Web API tehnoloogiat.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Üldine plaan:&#039;&#039;&#039;&lt;br /&gt;
* esialgu üks kett (laienemise võimalusega)&lt;br /&gt;
* mitu klubi (asukoht, saalid-treeningualad, võimalikud lisatingimused)&lt;br /&gt;
* treeningute info (stiilid ehk kontseptid, litsentsid, …)&lt;br /&gt;
* tunniplaan (aeg, koht, instruktorid, max osalejate arv, ühe korra hind)&lt;br /&gt;
* registratuur (treeningutest osavõtjad)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kasutajad (rollid):&#039;&#039;&#039;&lt;br /&gt;
* administraatorid (saavad teha muudatusi)&lt;br /&gt;
* treenerid (info kvalifikatsiooni, litsentside kohta, õigus treeninguid lisada) &lt;br /&gt;
* liikmed (saavad treeningutele registreeruda)&lt;br /&gt;
* ülejäänud (näevad klubide ja treeningute infot ning tunniplaani)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Peaks olema:&#039;&#039;&#039;&lt;br /&gt;
* kasutajate loomine&lt;br /&gt;
* kasutajate tuvastamine ja haldamine&lt;br /&gt;
* kasutajate ja kasutusstatistika logimine&lt;br /&gt;
* teenuse poole pöördumiste arvu piiramine ja piirangute haldamine&lt;br /&gt;
* klubide, treenerite ja treeningute info väljastamine&lt;br /&gt;
* tunniplaani info väljastamine&lt;br /&gt;
* treeningutesse registreerimine&lt;br /&gt;
* registreeringu tühistamine&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Võiks olla:&#039;&#039;&#039;&lt;br /&gt;
* klubide, treenerite, treeningute lisamine ja muutmine&lt;br /&gt;
* tunniplaanis treeningute tühistamine&lt;br /&gt;
* sisestatud andmete kustutamine (pehmelt)&lt;br /&gt;
* rollide-õiguste määramine (admin)&lt;br /&gt;
* asukohad mitmes riigis&lt;br /&gt;
* kliendipaketid, arveldus&lt;br /&gt;
* kontaktide tsentraliseeritud haldus&lt;br /&gt;
* sisselogimine läbi Google’i, Facebooki vmt teenuse&lt;br /&gt;
&lt;br /&gt;
===Andmebaasi skeem (lihtsustatud)===&lt;br /&gt;
&lt;br /&gt;
[[File:SPOTService ERD.JPG|border|SPOT Service ERD]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Märkus: olemite atribuutidest on välja toodud ainult peamised.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====Tabelite kirjeldused====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kasutajahaldus*:&#039;&#039;&#039;&lt;br /&gt;
* User - kasutajate andmed&lt;br /&gt;
* Role - rollid, millega määratakse kasutajate õigused (&amp;quot;Admin&amp;quot;, &amp;quot;Trainer&amp;quot;, ...)&lt;br /&gt;
* UserRole - kasutajate sidumine rolli(de)ga&lt;br /&gt;
* UserLogin - muu teenuse kaudu sisselogimiseks&lt;br /&gt;
* UserClaim - muu teenuse kaudu sisselogimiseks&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;&#039;&#039;Kasutajahalduse süsteem toetub Asp.Net Identity valmislahendusele, mida on täiendanud A. Käver.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Klubid:&#039;&#039;&#039;&lt;br /&gt;
* Chain (optional) - spordiklubikettide info&lt;br /&gt;
* Location - spordiklubi/-rajatise asukoht linna/asula täpsusega&lt;br /&gt;
* Facility - spordiklubi/-rajatise andmed, seotud asukohaga ja vajadusel ketiga.&lt;br /&gt;
* Venue - spordiklubis/-rajatises kasutatavad saalid ja muud treeningualad&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Treeningud:&#039;&#039;&#039;&lt;br /&gt;
* Concept (Style) - treeningustiilid ehk kontseptid&lt;br /&gt;
* Licenser (optional) - treeninguliikide litsentsid (kui on)&lt;br /&gt;
* Training - treeninguliikide andmed, seotud stiili ja vajadusel litsentsiga&lt;br /&gt;
* Trainer (User (role: Trainer) + Training) - treeninguliikide sidumine treeneritega&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tunniplaan:&#039;&#039;&#039;&lt;br /&gt;
* ScheduleItem - treeningud tunniplaanis&lt;br /&gt;
* Instructor (User (role: Trainer) + ScheduleItem) - tundide juhendajad (võib olla mitu)&lt;br /&gt;
* Registration (ScheduleItem + User (role: any)) - tundidesse tehtud registreeringud&lt;br /&gt;
&lt;br /&gt;
== XML / XSD / XSLT==&lt;br /&gt;
Projekti esimeses etapis sai loodud XML andmefail, mille ülesehitus on paika pandud XSD skeemifailis. Lisaks on olemas kaks stiilifaili: esimene neist transformeerib andmed HTML-kujule, et kuvada infot  veebilehel, teine tekitab samade andmete esitamiseks uue struktuuriga XML faili.&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/ProjectSPOT_ScheduleXml.zip Lae failid alla.] &lt;br /&gt;
&lt;br /&gt;
=== XML ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Fail sisaldab andmeid ühes spordiklubis pakutavate treeningute kohta. Andmed on esitatud treeninguliikide kaupa, mille juurde on lisatud ka vastava treeninguliigi tunniplaan. Treeninguliikidel on nimi ja kirjeldus ning vajadusel ära märgitud ka litsents. Failis on eraldi välja toodud treeningustiilid, instruktorid ja ruumid, kus treeningud toimuvad. Iga treeninguliik kuulub ühe või mitme stiili alla. Instruktoritel on tagasiside põhjal saadud hinne. Treeninguruumidel on vaikimisi määratud mahutavus. Tunniplaanis on ära toodud treeningu koht, algusaeg ja kestus ning instruktorid. Vajadusel saab eraldi määrata ka treeningurühma suuruse, kui see erineb tavalisest ruumi mahutavusest. Ka on võimalik treeningutunnile lisada kommentaar. Erinevate elementide andmed on omavahel seotud id-atribuutidega.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;?xml-stylesheet type=&amp;quot;text/xsl&amp;quot; href=&amp;quot;trainingsToHtml.xslt&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Trainings&amp;gt;&lt;br /&gt;
  &amp;lt;Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;![CDATA[Cardio]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
  &amp;lt;/Styles&amp;gt;&lt;br /&gt;
  &amp;lt;Instructors&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;1&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Yogafier]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;2&amp;quot; Rating=&amp;quot;4.7&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Mickey Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;3&amp;quot; Rating=&amp;quot;4.6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;4&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Donald Duck]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;5&amp;quot; Rating=&amp;quot;3.9&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Goofy]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;6&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Schwarzenegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;8&amp;quot; Rating=&amp;quot;4.8&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Kayla Weightlifter]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;9&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Margaret Strengthener]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
  &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;Venues&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;1&amp;quot; GroupSize=&amp;quot;45&amp;quot;&amp;gt;&amp;lt;![CDATA[Main Hall]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 2]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;3&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 3]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;4&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 4]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;5&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 5]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&amp;lt;![CDATA[Area 6]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;7&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&amp;lt;![CDATA[Yoga Hall]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
  &amp;lt;/Venues&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Yoga]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[Yoga is a group of physical, mental, and spiritual practices or disciplines which originated in ancient India. ]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;1&amp;quot; VenueId=&amp;quot;7&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-25T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;14&amp;quot; VenueId=&amp;quot;7&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT1H20M&amp;quot;&amp;gt;2017-03-28T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Comment&amp;gt;&lt;br /&gt;
          &amp;lt;![CDATA[Special class!]]&amp;gt;&lt;br /&gt;
        &amp;lt;/Comment&amp;gt; &lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/Nvlxn0EnmbM&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;  &lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;2&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyBalance™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[BODYBALANCE™ is the Yoga, Tai Chi, Pilates workout that builds flexibility and strength and leaves you feeling centered and calm. Based on a carefully structured series of stretches, moves and poses to music it creates a holistic workout that brings the body into a state of harmony and balance. This class will heighten your flexibility and inner strength creating a strong supple body from the inside out. Burn on average 390cals per hour.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;2&amp;quot; VenueId=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-31T12:15:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;3&amp;quot; VenueId=&amp;quot;2&amp;quot; &amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-30T13:30:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;3&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/jJxA6vBjUqY&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;3&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyJam™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;4&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[The Body Jam program is an addictive fusion of the latest dance styles to the hottest new sounds. This class isn’t just for dancers, it’s for everyone because the emphasis is put on not only having fun but also breaking a sweat. So grab a friend, get front and centre … you bring the attitude and we’ll bring the moves!]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;4&amp;quot;  VenueId=&amp;quot;3&amp;quot; &amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T16:10:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;4&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;5&amp;quot; VenueId=&amp;quot;5&amp;quot; &amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT45M&amp;quot;&amp;gt;2017-04-01T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;5&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/8PTXyg9si_4&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;4&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyPump™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[BodyPump classes are 59 minutes long and contain eight separate muscle-group specific songs or &amp;quot;tracks&amp;quot; along with an opening warm up track and closing cool-down track. There are also 45-minute and 30-minute class formats. The classes are performed to music using free weights-plates, barbells and an aerobic step. Participants choose their weights based on the exercise and their personal goals. Major muscle groups are worked via series of compound and isolation-based exercises including squats, presses, dead lifts. The focus is towards muscle endurance by moving light weights at high repetitions, what Les Mills calls the Rep Effect.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;3&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;6&amp;quot; VenueId=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;6&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;7&amp;quot; VenueId=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-23T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;6&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/zU_0XrdO3wo&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[CoreStrenght is a very hard workout! Not for beginners.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;3&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;8&amp;quot; VenueId=&amp;quot;6&amp;quot; GroupSize=&amp;quot;10&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT2H&amp;quot;&amp;gt;2017-03-23T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;9&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Comment&amp;gt;&lt;br /&gt;
          &amp;lt;![CDATA[Special challenge!]]&amp;gt;&lt;br /&gt;
        &amp;lt;/Comment&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;9&amp;quot; VenueId=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;8&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;10&amp;quot; VenueId=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-04-05T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;8&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;9&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/ZxTVmpvyUt8&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[Zumba involves dance and aerobic movements performed to energetic music. The choreography incorporates hip-hop, soca, samba, salsa, merengue and mambo. Squats and lunges are also included.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;4&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;11&amp;quot; VenueId=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT55M&amp;quot;&amp;gt;2017-03-26T15:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;12&amp;quot; VenueId=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-28T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;13&amp;quot; VenueId=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/-ZB6XIkfxnQ&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
&amp;lt;/Trainings&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSD ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Skeemifail kontrollib eelnevas andmefailis esitatud andmete vastavust kokkulepitud formaadile, samuti õigete andmetüüpide kasutamist. Alamelemendi id-atribuudi väärtus peab olema iga elemendirühma lõikes unikaalne. Kohustuslike elementide ja atribuutide kõrval on ka mõned (nt kommentaar), mille olemasolu pole alati tarvilik. Teatud puhkudel on piiratud maksimaalset elementide arvu (nt treeningutunni algusaeg). Faili üldine struktuur on kindel, aga alati pole alamelementide järjekord oluline (nt treeninguliigi puhul).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xs:schema attributeFormDefault=&amp;quot;unqualified&amp;quot; elementFormDefault=&amp;quot;qualified&amp;quot; xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xs:element name=&amp;quot;Trainings&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Styles&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Style&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
          &amp;lt;xs:unique name=&amp;quot;UniqueStyleId&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xs:selector xpath=&amp;quot;Style&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Instructors&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;Name&amp;quot; type=&amp;quot;xs:string&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:attribute name=&amp;quot;Rating&amp;quot; type=&amp;quot;xs:decimal&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
          &amp;lt;xs:unique name=&amp;quot;UniqueInstructorId&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xs:selector xpath=&amp;quot;Instructor&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Venues&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Venue&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:attribute name=&amp;quot;GroupSize&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
          &amp;lt;xs:unique name=&amp;quot;UniqueVenueId&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xs:selector xpath=&amp;quot;Venue&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Training&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:all&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Description&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Styles&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Style&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Schedule&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;ScheduleItem&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:all&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element  maxOccurs=&amp;quot;1&amp;quot; name=&amp;quot;Time&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:extension base=&amp;quot;xs:dateTime&amp;quot;&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:attribute name=&amp;quot;Duration&amp;quot; type=&amp;quot;xs:duration&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element name=&amp;quot;Instructors&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                    &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                                      &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                                        &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                                      &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                                    &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                                  &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; name=&amp;quot;Comment&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:all&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;VenueId&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;GroupSize&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;optional&amp;quot; /&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;VideoUrl&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:all&amp;gt;&lt;br /&gt;
            &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xs:attribute name=&amp;quot;Licence&amp;quot; type=&amp;quot;xs:string&amp;quot; use=&amp;quot;optional&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
    &amp;lt;xs:unique name=&amp;quot;UniqueTrainingId&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xs:selector xpath=&amp;quot;Training&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
    &amp;lt;xs:unique name=&amp;quot;UniqueScheduleItemId&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xs:selector xpath=&amp;quot;Training/Schedule/ScheduleItem&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSLT (html) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Selles transformatsioonifailis on kirjeldatud XML failis olevate andmete [http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/trainings.xml  kuvamise viis veebilehel]. Treeninguliigid on jaotatud stiiliblokkidesse (mõni treening kuulub mitme stiili alla). Iga treeninguliigi all on tabeli kujul esitatud tunniplaan ning lisatud näidisvideo ja kirjeldus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot; xmlns:msxsl=&amp;quot;urn:schemas-microsoft-com:xslt&amp;quot; exclude-result-prefixes=&amp;quot;msxsl&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:output method=&amp;quot;html&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;html&amp;gt;&lt;br /&gt;
      &amp;lt;head&amp;gt;&lt;br /&gt;
        &amp;lt;title&amp;gt;SuperSportsClub - Trainings&amp;lt;/title&amp;gt;&lt;br /&gt;
        &amp;lt;style&amp;gt;&lt;br /&gt;
          body {&lt;br /&gt;
          background:BurlyWood;&lt;br /&gt;
          text-align: center;&lt;br /&gt;
          }&lt;br /&gt;
          .section {&lt;br /&gt;
          text-align:left;&lt;br /&gt;
          width:1000px;&lt;br /&gt;
          padding:20px;&lt;br /&gt;
          background:Chocolate;&lt;br /&gt;
          margin: auto;&lt;br /&gt;
          }&lt;br /&gt;
          table, th, td, .section {&lt;br /&gt;
          border: 1px solid black;&lt;br /&gt;
          }&lt;br /&gt;
          th {&lt;br /&gt;
          text-align:left;&lt;br /&gt;
          padding-left: 10px;&lt;br /&gt;
          padding-right: 10px;&lt;br /&gt;
          }&lt;br /&gt;
          td {&lt;br /&gt;
          text-align:center;&lt;br /&gt;
          }&lt;br /&gt;
          p {&lt;br /&gt;
          text-align:justify;&lt;br /&gt;
          }&lt;br /&gt;
          .description {&lt;br /&gt;
          vertical-align:top; &lt;br /&gt;
          padding:10px;&lt;br /&gt;
          }&lt;br /&gt;
        &amp;lt;/style&amp;gt;&lt;br /&gt;
      &amp;lt;/head&amp;gt;&lt;br /&gt;
      &amp;lt;body&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;Trainings at SuperSportsClub&amp;lt;/h1&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;/Trainings/Styles/Style&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:sort select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:variable select=&amp;quot;.&amp;quot; name=&amp;quot;SelectedStyle&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;section&amp;quot; &amp;gt;&lt;br /&gt;
            &amp;lt;h2&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select=&amp;quot;$SelectedStyle&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/h2&amp;gt;&lt;br /&gt;
            &amp;lt;ul&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:for-each select=&amp;quot;/Trainings/Training&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:sort select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:variable name=&amp;quot;Training&amp;quot; select=&amp;quot;.&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:if test=&amp;quot;Styles/Style/@Id = $SelectedStyle/@Id&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;&lt;br /&gt;
                    &amp;lt;h3&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;$Training/Name&amp;quot; /&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:if test=&amp;quot;$Training/@Licence&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:text&amp;gt; (&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:value-of select=&amp;quot;$Training/@Licence&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:text&amp;gt;)&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
                    &amp;lt;/h3&amp;gt;&lt;br /&gt;
                    &amp;lt;table&amp;gt;&lt;br /&gt;
                      &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                      &amp;lt;/tr&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:for-each select=&amp;quot;$Training/Schedule/ScheduleItem&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:sort select=&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:variable name=&amp;quot;StartTime&amp;quot; select=&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:variable name=&amp;quot;Duration&amp;quot; select=&amp;quot;$StartTime/@Duration&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;tr&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;150&amp;quot; &amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;concat(&lt;br /&gt;
                                            substring($StartTime, 9, 2), &lt;br /&gt;
                                            &#039;.&#039;, &lt;br /&gt;
                                            substring($StartTime, 6, 2), &lt;br /&gt;
                                            &#039;.&#039;, &lt;br /&gt;
                                            substring($StartTime, 1, 4),&lt;br /&gt;
                                            &#039; &#039;,&lt;br /&gt;
                                            substring($StartTime, 12, 2),&lt;br /&gt;
                                            &#039;:&#039;,&lt;br /&gt;
                                            substring($StartTime, 15, 2))&lt;br /&gt;
                                            &amp;quot; /&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:if test=&amp;quot;Comment&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;br/&amp;gt;&lt;br /&gt;
                              &amp;lt;div style=&amp;quot;color:Green&amp;quot;&amp;gt;&lt;br /&gt;
                                &amp;lt;xsl:value-of select=&amp;quot;Comment&amp;quot;/&amp;gt;&lt;br /&gt;
                              &amp;lt;/div&amp;gt;&lt;br /&gt;
                            &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;substring($Duration, 3, 6)&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:variable name=&amp;quot;VenueId&amp;quot; select=&amp;quot;@VenueId&amp;quot;/&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;/Trainings/Venues/Venue[@Id=$VenueId]&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:for-each select=&amp;quot;Instructors/Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:variable name=&amp;quot;InstructorId&amp;quot; select=&amp;quot;@Id&amp;quot;&amp;gt;&amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:variable name=&amp;quot;SelectedInstructor&amp;quot; select=&amp;quot;/Trainings/Instructors/Instructor[@Id=$InstructorId]&amp;quot; /&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/Name&amp;quot;/&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:text&amp;gt; (&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/@Rating&amp;quot; /&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:text&amp;gt;)&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                              &amp;lt;br/&amp;gt;&lt;br /&gt;
                            &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;/tr&amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
                    &amp;lt;/table&amp;gt;&lt;br /&gt;
                    &amp;lt;br/&amp;gt;&lt;br /&gt;
                    &amp;lt;table&amp;gt;&lt;br /&gt;
                      &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                          &amp;lt;xsl:variable name=&amp;quot;VideoUrl&amp;quot; select=&amp;quot;$Training/VideoUrl&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;{$VideoUrl}&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                          &amp;lt;p&amp;gt;&lt;br /&gt;
                            &amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&lt;br /&gt;
                          &amp;lt;/p&amp;gt;&lt;br /&gt;
                          &amp;lt;p&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;$Training/Description&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                      &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;/table&amp;gt;&lt;br /&gt;
                  &amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
            &amp;lt;/ul&amp;gt;&lt;br /&gt;
          &amp;lt;/div&amp;gt;&lt;br /&gt;
          &amp;lt;br/&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
      &amp;lt;/body&amp;gt;&lt;br /&gt;
    &amp;lt;/html&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== HTML (transformeeritud) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/trainings.html Vaata eelneva transformatsiooni tulemust.]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;META http-equiv=&amp;quot;Content-Type&amp;quot; content=&amp;quot;text/html; charset=utf-8&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;SuperSportsClub - Trainings&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;style&amp;gt;&lt;br /&gt;
        body {&lt;br /&gt;
            background: BurlyWood;&lt;br /&gt;
            text-align: center;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        .section {&lt;br /&gt;
            text-align: left;&lt;br /&gt;
            width: 1000px;&lt;br /&gt;
            padding: 20px;&lt;br /&gt;
            background: Chocolate;&lt;br /&gt;
            margin: auto;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        table, th, td, .section {&lt;br /&gt;
            border: 1px solid black;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        th {&lt;br /&gt;
            text-align: left;&lt;br /&gt;
            padding-left: 10px;&lt;br /&gt;
            padding-right: 10px;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        td {&lt;br /&gt;
            text-align: center;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        p {&lt;br /&gt;
            text-align: justify;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        .description {&lt;br /&gt;
            vertical-align: top;&lt;br /&gt;
            padding: 10px;&lt;br /&gt;
        }&lt;br /&gt;
    &amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
    &amp;lt;h1&amp;gt;Trainings at SuperSportsClub&amp;lt;/h1&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Body&amp;amp;amp;Mind&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyBalance™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 13:30&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;1H15M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 2&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Minnie Mouse (4.6)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;31.03.2017 12:15&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;1H15M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 3&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Mickey Mouse (4.7)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/jJxA6vBjUqY&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                BODYBALANCE™ is the Yoga, Tai Chi, Pilates workout that builds flexibility and strength and leaves you feeling centered and calm. Based on a carefully structured series of stretches, moves and poses to music it creates a holistic workout that brings the body into a state of harmony and balance. This class will heighten your flexibility and inner strength creating a strong supple body from the inside out. Burn on average 390cals per hour.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;Yoga&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;25.03.2017 14:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Yoga Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Minnie Yogafier (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
                            28.03.2017 14:00&amp;lt;br&amp;gt;&amp;lt;div style=&amp;quot;color:Green&amp;quot;&amp;gt;&lt;br /&gt;
                                Special class!&lt;br /&gt;
                            &amp;lt;/div&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;1H20M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Yoga Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Minnie Yogafier (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/Nvlxn0EnmbM&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                Yoga is a group of physical, mental, and spiritual practices or disciplines which originated in ancient India.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Cardio&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyJam™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 16:10&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 3&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Donald Duck (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;01.04.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;45M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 5&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Goofy (3.9)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/8PTXyg9si_4&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                The Body Jam program is an addictive fusion of the latest dance styles to the hottest new sounds. This class isn’t just for dancers, it’s for everyone because the emphasis is put on not only having fun but also breaking a sweat. So grab a friend, get front and centre … you bring the attitude and we’ll bring the moves!&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Dance&amp;amp;amp;Fun&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyJam™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 16:10&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 3&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Donald Duck (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;01.04.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;45M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 5&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Goofy (3.9)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/8PTXyg9si_4&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                The Body Jam program is an addictive fusion of the latest dance styles to the hottest new sounds. This class isn’t just for dancers, it’s for everyone because the emphasis is put on not only having fun but also breaking a sweat. So grab a friend, get front and centre … you bring the attitude and we’ll bring the moves!&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;Zumba®&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;26.03.2017 15:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;55M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 2&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Zumbaschnegger (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;28.03.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 4&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Zumbaschnegger (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 2&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Zumbaschnegger (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/-ZB6XIkfxnQ&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                Zumba involves dance and aerobic movements performed to energetic music. The choreography incorporates hip-hop, soca, samba, salsa, merengue and mambo. Squats and lunges are also included.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Strength&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyPump™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;23.03.2017 13:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Main Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Schwarzenegger (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 13:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Main Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Schwarzenegger (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/zU_0XrdO3wo&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                BodyPump classes are 59 minutes long and contain eight separate muscle-group specific songs or &amp;quot;tracks&amp;quot; along with an opening warm up track and closing cool-down track. There are also 45-minute and 30-minute class formats. The classes are performed to music using free weights-plates, barbells and an aerobic step. Participants choose their weights based on the exercise and their personal goals. Major muscle groups are worked via series of compound and isolation-based exercises including squats, presses, dead lifts. The focus is towards muscle endurance by moving light weights at high repetitions, what Les Mills calls the Rep Effect.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;CoreStrength&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
                            23.03.2017 12:00&amp;lt;br&amp;gt;&amp;lt;div style=&amp;quot;color:Green&amp;quot;&amp;gt;&lt;br /&gt;
                                Special challenge!&lt;br /&gt;
                            &amp;lt;/div&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;2H&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Area 6&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Margaret Strengthener (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Area 6&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Kayla Weightlifter (4.8)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;05.04.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Area 6&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Kayla Weightlifter (4.8)&amp;lt;br&amp;gt;Margaret Strengthener (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/ZxTVmpvyUt8&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                CoreStrenght is a very hard workout! Not for beginners.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSLT (xml) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Selle transformatsiooniga luuakse uus [http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/schedule.xml XML fail], milles on treeningute andmed esitatud ühtse tunniplaani kujul. Algses failis erinevate elementide alla paigutatud andmed on nüüd tunniplaani alamelemendis kokku viidud. Sidumine on teostatud id-atribuutide abil. Tunniplaanis on ühes kohas kirjas treeningu nimi, stiil(id), koht, algusaeg, kestus, rühma suurus, instruktorid ja muu täiendav info.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&lt;br /&gt;
    xmlns:msxsl=&amp;quot;urn:schemas-microsoft-com:xslt&amp;quot; exclude-result-prefixes=&amp;quot;msxsl&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:output method=&amp;quot;xml&amp;quot; indent=&amp;quot;yes&amp;quot; cdata-section-elements=&amp;quot;Name Style Comment&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;/Trainings/Training&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:sort select=&amp;quot;Name&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:variable name=&amp;quot;SelectedTraining&amp;quot; select=&amp;quot;.&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;Schedule/ScheduleItem&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:sort select=&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;ScheduleItem&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:variable name=&amp;quot;VenueId&amp;quot; select=&amp;quot;@VenueId&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:variable name=&amp;quot;SelectedVenue&amp;quot; select=&amp;quot;/Trainings/Venues/Venue[@Id=$VenueId]&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:attribute name=&amp;quot;GroupSize&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;@GroupSize&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:value-of select=&amp;quot;@GroupSize&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:value-of select=&amp;quot;$SelectedVenue/@GroupSize&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
            &amp;lt;Venue&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$VenueId&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select=&amp;quot;$SelectedVenue&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/Venue&amp;gt;&lt;br /&gt;
            &amp;lt;Training&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$SelectedTraining/@Id&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:if test=&amp;quot;$SelectedTraining/@Licence&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:attribute name=&amp;quot;Licence&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:value-of select=&amp;quot;$SelectedTraining/@Licence&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
              &amp;lt;Name&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$SelectedTraining/Name&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/Name&amp;gt;&lt;br /&gt;
              &amp;lt;Styles&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:for-each select=&amp;quot;$SelectedTraining/Styles/Style&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:variable name=&amp;quot;StyleId&amp;quot; select=&amp;quot;@Id&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;Style&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:attribute name=&amp;quot;StyleId&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;$StyleId&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;/Trainings/Styles/Style[@Id=$StyleId]&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/Style&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
              &amp;lt;/Styles&amp;gt;&lt;br /&gt;
            &amp;lt;/Training&amp;gt;&lt;br /&gt;
            &amp;lt;Time&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:attribute name=&amp;quot;Duration&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;Time/@Duration&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select =&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/Time&amp;gt;&lt;br /&gt;
            &amp;lt;Instructors&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:for-each select=&amp;quot;Instructors/Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:variable name=&amp;quot;InstructorId&amp;quot; select=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:variable name=&amp;quot;SelectedInstructor&amp;quot; select=&amp;quot;/Trainings/Instructors/Instructor[@Id=$InstructorId]&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;Instructor&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;$InstructorId&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:attribute name=&amp;quot;Rating&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/@Rating&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                  &amp;lt;Name&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/Name&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/Name&amp;gt;&lt;br /&gt;
                &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
            &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:if test=&amp;quot;Comment&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;Comment&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;Comment&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/Comment&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
          &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XML (transformeeritud) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/schedule.xml Vaata eelneva transformatsiooni tulemust.]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Schedule&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;3&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot;&amp;gt;Hall 2&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;2&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyBalance™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-30T13:30:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;3&amp;quot; Rating=&amp;quot;4.6&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;2&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;3&amp;quot;&amp;gt;Hall 3&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;2&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyBalance™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-31T12:15:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;2&amp;quot; Rating=&amp;quot;4.7&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Mickey Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;4&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;3&amp;quot;&amp;gt;Hall 3&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;3&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyJam™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;![CDATA[Cardio]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T16:10:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;4&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Donald Duck]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;5&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;5&amp;quot;&amp;gt;Hall 5&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;3&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyJam™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;![CDATA[Cardio]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT45M&amp;quot;&amp;gt;2017-04-01T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;5&amp;quot; Rating=&amp;quot;3.9&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Goofy]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;7&amp;quot; GroupSize=&amp;quot;45&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;1&amp;quot;&amp;gt;Main Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;4&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyPump™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-23T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;6&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Schwarzenegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;6&amp;quot; GroupSize=&amp;quot;45&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;1&amp;quot;&amp;gt;Main Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;4&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyPump™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;6&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Schwarzenegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;8&amp;quot; GroupSize=&amp;quot;10&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot;&amp;gt;Area 6&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT2H&amp;quot;&amp;gt;2017-03-23T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;9&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Margaret Strengthener]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
    &amp;lt;Comment&amp;gt;&amp;lt;![CDATA[&lt;br /&gt;
          Special challenge!&lt;br /&gt;
        ]]&amp;gt;&amp;lt;/Comment&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;9&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot;&amp;gt;Area 6&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;8&amp;quot; Rating=&amp;quot;4.8&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Kayla Weightlifter]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;10&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot;&amp;gt;Area 6&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-04-05T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;8&amp;quot; Rating=&amp;quot;4.8&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Kayla Weightlifter]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;9&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Margaret Strengthener]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;11&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot;&amp;gt;Hall 2&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT55M&amp;quot;&amp;gt;2017-03-26T15:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;12&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;4&amp;quot;&amp;gt;Hall 4&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-28T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;13&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot;&amp;gt;Hall 2&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;1&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;7&amp;quot;&amp;gt;Yoga Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Yoga]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-25T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;1&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Yogafier]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;14&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;7&amp;quot;&amp;gt;Yoga Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Yoga]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT1H20M&amp;quot;&amp;gt;2017-03-28T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;1&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Yogafier]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
    &amp;lt;Comment&amp;gt;&amp;lt;![CDATA[&lt;br /&gt;
          Special class!&lt;br /&gt;
        ]]&amp;gt;&amp;lt;/Comment&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
&amp;lt;/Schedule&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus ==&lt;br /&gt;
Angular JS &#039;&#039;single page application&#039;&#039; eelnevalt kirjeldatud veebiteenusele. Sisse logimata saab kuvada spordiklubi tunniplaani, treeningstiile ja treenereid. Võimalik on liituda teenusega ja registreeruda treeningutele, samuti registreeringuid tühistada. Esialgu põhineb süsteem ühel spordiklubil.&lt;br /&gt;
&lt;br /&gt;
Autentimine on lahendatud tokenipõhiselt. Eeskujuna kasutasime näidisrakendust, mille juhend ja lähtekood on leitav [http://bitoftech.net/2014/06/09/angularjs-token-authentication-using-asp-net-web-api-2-owin-asp-net-identity/ siit].&lt;br /&gt;
&lt;br /&gt;
== Lähtekood ==&lt;br /&gt;
Eksamiks valminud veebiteenuse ja klientrakenduse kokkupakitult allalaadimiseks klõpsa [http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/solution/ProjectSPOT.zip sellel lingil]. WebApi ja klient on eraldi lahendustes.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;NB! Võib juhtuda, et WebApi esmakordsel käivitamisel loodavasse andmebaasi kõiki andmeid (tunniplaani ja registreerimisi jooksvasse nädalasse) ei lisandu. Sellisel juhul kustutage tekkinud andmebaas ja käivitage kõigepealt samas lahenduses olev konsoolirakendus.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Retsensioonid ==&lt;br /&gt;
&lt;br /&gt;
# [https://wiki.itcollege.ee/index.php/Talk:JRT XML/XSD/XSLT retsensioon meeskonnale JRT]&lt;br /&gt;
# [Veebiteenuse retsensioon lisandub varsti]&lt;br /&gt;
# [Klientrakenduse retsensioon lisandub varsti]&lt;br /&gt;
&lt;br /&gt;
== Log ==&lt;br /&gt;
* 03.03.17 Esimene kohtumine. Idee.&lt;br /&gt;
* 17.03.17 Osa XMList valmis, osa XSLT-st valmis.&lt;br /&gt;
* 18.03.17 Teine kohtumine. XMLi täiendamine, esimene ülekäimine XSD-s.&lt;br /&gt;
* 19.03.17 XML/XSLT/XSD täiendamine ja lõpetamine.&lt;br /&gt;
* 20.03.17 XML fail, skeemifail ja stiilifailid esitatud. Projekti esimese etapi lõpp. Kevade algus.&lt;br /&gt;
* 26.03.17 XML/XSLT/XSD retsensioon esitatud.&lt;br /&gt;
* 16.04.17 Veebiteenuse analüüsi koostamine.&lt;br /&gt;
* 17.04.17 Esialgne veebiteenuse analüüs ja kavand valmis.&lt;br /&gt;
* 19.04.17 Alustasime veebiteenusega, koostegemine: Domain, DAL, Interfaces, Repostitories. Testimine konsoolis.&lt;br /&gt;
* 24.04.17 Veebiteenuse koostegemine, 2. kord: Domaini täiendamine.&lt;br /&gt;
* 29.04.17 Veebiteenuse koostegemine, 3. kord: Interfaces, Repositories, Factory + UOW. Testimine konsoolis.&lt;br /&gt;
* 01.05.17 Andmebaasi täitmine testandmetega varasemas faasis loodud XML failist.&lt;br /&gt;
* 02.05.17 Veebiteenuse koostegemine, 4. kord: alustasime BLi ja WebApi ehitamist. GET päringud.&lt;br /&gt;
* 09.05.17 Veebiteenuse koostegemine, 5. kord: lisasime Identity.&lt;br /&gt;
* 11.05.17 Veebiteenuse koostegemine, 6. kord: WebApi arendamine. POST, PUT ja DELETE päringud.&lt;br /&gt;
* 15.05.17 Veebiteenuse koostegemine, 7. kord: WebApi arendamine. Lisasime  api kontrollereid.&lt;br /&gt;
* 16.05.17 Veebiteenuse koostegemine, 8. kord: WebApi arendamine. Identity kontroll Fiddleri ja Postmaniga.&lt;br /&gt;
* 20.05.17 Klientrakenduse koostegemine, 1. kord. Testklient.&lt;br /&gt;
* 25.05.17 Klientrakenduse koostegemine, 2. kord. Klientrakenduse arendamine.&lt;br /&gt;
* 01.06.17 Klientrakenduse koostegemine, 3. kord. Klientrakenduse arendamine. Angular JS.&lt;br /&gt;
* 03.06.17 - 11.06.17 Klientrakenduse arendamine. Tokenipõhine autentimine. Veebiteenuse viimistlemine.&lt;br /&gt;
* 11.06.17 Lõpptähtaeg. Projekti esitlemine eksamil.&lt;br /&gt;
* 12.06.17 Teiste lahenduste retsenseerimine.&lt;/div&gt;</summary>
		<author><name>Otiks</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Team_SPOT&amp;diff=123478</id>
		<title>Team SPOT</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Team_SPOT&amp;diff=123478"/>
		<updated>2017-06-12T02:33:12Z</updated>

		<summary type="html">&lt;p&gt;Otiks: /* Lähtekood */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://wiki.itcollege.ee/index.php/Kodut%C3%B6%C3%B6_aines_%22V%C3%B5rgurakendused_II:_hajuss%C3%BCsteemide_ehitamine%22_2017 Kodutöö aines &amp;quot;Võrgurakendused II: hajussüsteemide ehitamine&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
[https://projectspot.visualstudio.com/PROJECTSPOT Projekti kodu (avaneb ainult liikmetele)]&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==Liikmed==&lt;br /&gt;
*Sigrid Pachel&lt;br /&gt;
*Oliver Tiks&lt;br /&gt;
&lt;br /&gt;
==Idee==&lt;br /&gt;
Mõttes on luua spordiklubi(de) veebiteenus ja klientrakendus, mis võimaldaks saada infot pakutavate treeningute kohta, sisestada ja kuvada tunniplaani andmeid, registreerida osalejaid tundidesse ning teha muid asjakohaseid tegevusi nii klubi(de) personalil, liikmetel kui ka juhukasutajatel.&lt;br /&gt;
&lt;br /&gt;
==Veebiteenuse analüüs==&lt;br /&gt;
SPOTi veebiteenus võimaldab saada infot erinevate klubide treeningute kohta ja end neisse registreerida. Kasutaja saab teavet, kus ja millal treeningud toimuvad (tunniplaan), mida treeningus täpsemalt tehakse, mis stiiliga on tegemist, kes on treener, kui palju üks kord maksab jms info. Kasutajakontoga liikmel on võimalik end registreerida soovitud tundi ja hallata oma registreeringuid (muuta, tühistada).&lt;br /&gt;
&lt;br /&gt;
Spordiklubide infot haldavad süsteemi administraatorid, kes saavad lisada, muuta ja kustutada kõike sprodiklubiga seonduvat. Erinevaid treeninguid ja nendega seotud konkreetset infot saavad lisada ja hallata treenerid või spordiklubi esindajad.&lt;br /&gt;
&lt;br /&gt;
Projekti realiseerimiseks kasutame REST arhitektuuri ja ASP.NET MVC Web API tehnoloogiat.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Üldine plaan:&#039;&#039;&#039;&lt;br /&gt;
* esialgu üks kett (laienemise võimalusega)&lt;br /&gt;
* mitu klubi (asukoht, saalid-treeningualad, võimalikud lisatingimused)&lt;br /&gt;
* treeningute info (stiilid ehk kontseptid, litsentsid, …)&lt;br /&gt;
* tunniplaan (aeg, koht, instruktorid, max osalejate arv, ühe korra hind)&lt;br /&gt;
* registratuur (treeningutest osavõtjad)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kasutajad (rollid):&#039;&#039;&#039;&lt;br /&gt;
* administraatorid (saavad teha muudatusi)&lt;br /&gt;
* treenerid (info kvalifikatsiooni, litsentside kohta, õigus treeninguid lisada) &lt;br /&gt;
* liikmed (saavad treeningutele registreeruda)&lt;br /&gt;
* ülejäänud (näevad klubide ja treeningute infot ning tunniplaani)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Peaks olema:&#039;&#039;&#039;&lt;br /&gt;
* kasutajate loomine&lt;br /&gt;
* kasutajate tuvastamine ja haldamine&lt;br /&gt;
* kasutajate ja kasutusstatistika logimine&lt;br /&gt;
* teenuse poole pöördumiste arvu piiramine ja piirangute haldamine&lt;br /&gt;
* klubide, treenerite ja treeningute info väljastamine&lt;br /&gt;
* tunniplaani info väljastamine&lt;br /&gt;
* treeningutesse registreerimine&lt;br /&gt;
* registreeringu tühistamine&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Võiks olla:&#039;&#039;&#039;&lt;br /&gt;
* klubide, treenerite, treeningute lisamine ja muutmine&lt;br /&gt;
* tunniplaanis treeningute tühistamine&lt;br /&gt;
* sisestatud andmete kustutamine (pehmelt)&lt;br /&gt;
* rollide-õiguste määramine (admin)&lt;br /&gt;
* asukohad mitmes riigis&lt;br /&gt;
* kliendipaketid, arveldus&lt;br /&gt;
* kontaktide tsentraliseeritud haldus&lt;br /&gt;
* sisselogimine läbi Google’i, Facebooki vmt teenuse&lt;br /&gt;
&lt;br /&gt;
===Andmebaasi skeem (lihtsustatud)===&lt;br /&gt;
&lt;br /&gt;
[[File:SPOTService ERD.JPG|border|SPOT Service ERD]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Märkus: olemite atribuutidest on välja toodud ainult peamised.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====Tabelite kirjeldused====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kasutajahaldus*:&#039;&#039;&#039;&lt;br /&gt;
* User - kasutajate andmed&lt;br /&gt;
* Role - rollid, millega määratakse kasutajate õigused (&amp;quot;Admin&amp;quot;, &amp;quot;Trainer&amp;quot;, ...)&lt;br /&gt;
* UserRole - kasutajate sidumine rolli(de)ga&lt;br /&gt;
* UserLogin - muu teenuse kaudu sisselogimiseks&lt;br /&gt;
* UserClaim - muu teenuse kaudu sisselogimiseks&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;&#039;&#039;Kasutajahalduse süsteem toetub Asp.Net Identity valmislahendusele, mida on täiendanud A. Käver.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Klubid:&#039;&#039;&#039;&lt;br /&gt;
* Chain (optional) - spordiklubikettide info&lt;br /&gt;
* Location - spordiklubi/-rajatise asukoht linna/asula täpsusega&lt;br /&gt;
* Facility - spordiklubi/-rajatise andmed, seotud asukohaga ja vajadusel ketiga.&lt;br /&gt;
* Venue - spordiklubis/-rajatises kasutatavad saalid ja muud treeningualad&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Treeningud:&#039;&#039;&#039;&lt;br /&gt;
* Concept (Style) - treeningustiilid ehk kontseptid&lt;br /&gt;
* Licenser (optional) - treeninguliikide litsentsid (kui on)&lt;br /&gt;
* Training - treeninguliikide andmed, seotud stiili ja vajadusel litsentsiga&lt;br /&gt;
* Trainer (User (role: Trainer) + Training) - treeninguliikide sidumine treeneritega&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tunniplaan:&#039;&#039;&#039;&lt;br /&gt;
* ScheduleItem - treeningud tunniplaanis&lt;br /&gt;
* Instructor (User (role: Trainer) + ScheduleItem) - tundide juhendajad (võib olla mitu)&lt;br /&gt;
* Registration (ScheduleItem + User (role: any)) - tundidesse tehtud registreeringud&lt;br /&gt;
&lt;br /&gt;
== XML / XSD / XSLT==&lt;br /&gt;
Projekti esimeses etapis sai loodud XML andmefail, mille ülesehitus on paika pandud XSD skeemifailis. Lisaks on olemas kaks stiilifaili: esimene neist transformeerib andmed HTML-kujule, et kuvada infot  veebilehel, teine tekitab samade andmete esitamiseks uue struktuuriga XML faili.&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/ProjectSPOT_ScheduleXml.zip Lae failid alla.] &lt;br /&gt;
&lt;br /&gt;
=== XML ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Fail sisaldab andmeid ühes spordiklubis pakutavate treeningute kohta. Andmed on esitatud treeninguliikide kaupa, mille juurde on lisatud ka vastava treeninguliigi tunniplaan. Treeninguliikidel on nimi ja kirjeldus ning vajadusel ära märgitud ka litsents. Failis on eraldi välja toodud treeningustiilid, instruktorid ja ruumid, kus treeningud toimuvad. Iga treeninguliik kuulub ühe või mitme stiili alla. Instruktoritel on tagasiside põhjal saadud hinne. Treeninguruumidel on vaikimisi määratud mahutavus. Tunniplaanis on ära toodud treeningu koht, algusaeg ja kestus ning instruktorid. Vajadusel saab eraldi määrata ka treeningurühma suuruse, kui see erineb tavalisest ruumi mahutavusest. Ka on võimalik treeningutunnile lisada kommentaar. Erinevate elementide andmed on omavahel seotud id-atribuutidega.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;?xml-stylesheet type=&amp;quot;text/xsl&amp;quot; href=&amp;quot;trainingsToHtml.xslt&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Trainings&amp;gt;&lt;br /&gt;
  &amp;lt;Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;![CDATA[Cardio]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
  &amp;lt;/Styles&amp;gt;&lt;br /&gt;
  &amp;lt;Instructors&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;1&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Yogafier]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;2&amp;quot; Rating=&amp;quot;4.7&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Mickey Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;3&amp;quot; Rating=&amp;quot;4.6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;4&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Donald Duck]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;5&amp;quot; Rating=&amp;quot;3.9&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Goofy]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;6&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Schwarzenegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;8&amp;quot; Rating=&amp;quot;4.8&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Kayla Weightlifter]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;9&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Margaret Strengthener]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
  &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;Venues&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;1&amp;quot; GroupSize=&amp;quot;45&amp;quot;&amp;gt;&amp;lt;![CDATA[Main Hall]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 2]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;3&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 3]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;4&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 4]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;5&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 5]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&amp;lt;![CDATA[Area 6]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;7&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&amp;lt;![CDATA[Yoga Hall]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
  &amp;lt;/Venues&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Yoga]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[Yoga is a group of physical, mental, and spiritual practices or disciplines which originated in ancient India. ]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;1&amp;quot; VenueId=&amp;quot;7&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-25T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;14&amp;quot; VenueId=&amp;quot;7&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT1H20M&amp;quot;&amp;gt;2017-03-28T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Comment&amp;gt;&lt;br /&gt;
          &amp;lt;![CDATA[Special class!]]&amp;gt;&lt;br /&gt;
        &amp;lt;/Comment&amp;gt; &lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/Nvlxn0EnmbM&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;  &lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;2&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyBalance™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[BODYBALANCE™ is the Yoga, Tai Chi, Pilates workout that builds flexibility and strength and leaves you feeling centered and calm. Based on a carefully structured series of stretches, moves and poses to music it creates a holistic workout that brings the body into a state of harmony and balance. This class will heighten your flexibility and inner strength creating a strong supple body from the inside out. Burn on average 390cals per hour.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;2&amp;quot; VenueId=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-31T12:15:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;3&amp;quot; VenueId=&amp;quot;2&amp;quot; &amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-30T13:30:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;3&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/jJxA6vBjUqY&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;3&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyJam™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;4&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[The Body Jam program is an addictive fusion of the latest dance styles to the hottest new sounds. This class isn’t just for dancers, it’s for everyone because the emphasis is put on not only having fun but also breaking a sweat. So grab a friend, get front and centre … you bring the attitude and we’ll bring the moves!]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;4&amp;quot;  VenueId=&amp;quot;3&amp;quot; &amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T16:10:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;4&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;5&amp;quot; VenueId=&amp;quot;5&amp;quot; &amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT45M&amp;quot;&amp;gt;2017-04-01T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;5&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/8PTXyg9si_4&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;4&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyPump™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[BodyPump classes are 59 minutes long and contain eight separate muscle-group specific songs or &amp;quot;tracks&amp;quot; along with an opening warm up track and closing cool-down track. There are also 45-minute and 30-minute class formats. The classes are performed to music using free weights-plates, barbells and an aerobic step. Participants choose their weights based on the exercise and their personal goals. Major muscle groups are worked via series of compound and isolation-based exercises including squats, presses, dead lifts. The focus is towards muscle endurance by moving light weights at high repetitions, what Les Mills calls the Rep Effect.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;3&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;6&amp;quot; VenueId=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;6&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;7&amp;quot; VenueId=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-23T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;6&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/zU_0XrdO3wo&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[CoreStrenght is a very hard workout! Not for beginners.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;3&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;8&amp;quot; VenueId=&amp;quot;6&amp;quot; GroupSize=&amp;quot;10&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT2H&amp;quot;&amp;gt;2017-03-23T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;9&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Comment&amp;gt;&lt;br /&gt;
          &amp;lt;![CDATA[Special challenge!]]&amp;gt;&lt;br /&gt;
        &amp;lt;/Comment&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;9&amp;quot; VenueId=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;8&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;10&amp;quot; VenueId=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-04-05T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;8&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;9&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/ZxTVmpvyUt8&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[Zumba involves dance and aerobic movements performed to energetic music. The choreography incorporates hip-hop, soca, samba, salsa, merengue and mambo. Squats and lunges are also included.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;4&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;11&amp;quot; VenueId=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT55M&amp;quot;&amp;gt;2017-03-26T15:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;12&amp;quot; VenueId=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-28T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;13&amp;quot; VenueId=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/-ZB6XIkfxnQ&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
&amp;lt;/Trainings&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSD ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Skeemifail kontrollib eelnevas andmefailis esitatud andmete vastavust kokkulepitud formaadile, samuti õigete andmetüüpide kasutamist. Alamelemendi id-atribuudi väärtus peab olema iga elemendirühma lõikes unikaalne. Kohustuslike elementide ja atribuutide kõrval on ka mõned (nt kommentaar), mille olemasolu pole alati tarvilik. Teatud puhkudel on piiratud maksimaalset elementide arvu (nt treeningutunni algusaeg). Faili üldine struktuur on kindel, aga alati pole alamelementide järjekord oluline (nt treeninguliigi puhul).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xs:schema attributeFormDefault=&amp;quot;unqualified&amp;quot; elementFormDefault=&amp;quot;qualified&amp;quot; xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xs:element name=&amp;quot;Trainings&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Styles&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Style&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
          &amp;lt;xs:unique name=&amp;quot;UniqueStyleId&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xs:selector xpath=&amp;quot;Style&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Instructors&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;Name&amp;quot; type=&amp;quot;xs:string&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:attribute name=&amp;quot;Rating&amp;quot; type=&amp;quot;xs:decimal&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
          &amp;lt;xs:unique name=&amp;quot;UniqueInstructorId&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xs:selector xpath=&amp;quot;Instructor&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Venues&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Venue&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:attribute name=&amp;quot;GroupSize&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
          &amp;lt;xs:unique name=&amp;quot;UniqueVenueId&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xs:selector xpath=&amp;quot;Venue&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Training&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:all&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Description&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Styles&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Style&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Schedule&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;ScheduleItem&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:all&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element  maxOccurs=&amp;quot;1&amp;quot; name=&amp;quot;Time&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:extension base=&amp;quot;xs:dateTime&amp;quot;&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:attribute name=&amp;quot;Duration&amp;quot; type=&amp;quot;xs:duration&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element name=&amp;quot;Instructors&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                    &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                                      &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                                        &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                                      &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                                    &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                                  &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; name=&amp;quot;Comment&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:all&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;VenueId&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;GroupSize&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;optional&amp;quot; /&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;VideoUrl&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:all&amp;gt;&lt;br /&gt;
            &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xs:attribute name=&amp;quot;Licence&amp;quot; type=&amp;quot;xs:string&amp;quot; use=&amp;quot;optional&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
    &amp;lt;xs:unique name=&amp;quot;UniqueTrainingId&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xs:selector xpath=&amp;quot;Training&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
    &amp;lt;xs:unique name=&amp;quot;UniqueScheduleItemId&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xs:selector xpath=&amp;quot;Training/Schedule/ScheduleItem&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSLT (html) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Selles transformatsioonifailis on kirjeldatud XML failis olevate andmete [http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/trainings.xml  kuvamise viis veebilehel]. Treeninguliigid on jaotatud stiiliblokkidesse (mõni treening kuulub mitme stiili alla). Iga treeninguliigi all on tabeli kujul esitatud tunniplaan ning lisatud näidisvideo ja kirjeldus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot; xmlns:msxsl=&amp;quot;urn:schemas-microsoft-com:xslt&amp;quot; exclude-result-prefixes=&amp;quot;msxsl&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:output method=&amp;quot;html&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;html&amp;gt;&lt;br /&gt;
      &amp;lt;head&amp;gt;&lt;br /&gt;
        &amp;lt;title&amp;gt;SuperSportsClub - Trainings&amp;lt;/title&amp;gt;&lt;br /&gt;
        &amp;lt;style&amp;gt;&lt;br /&gt;
          body {&lt;br /&gt;
          background:BurlyWood;&lt;br /&gt;
          text-align: center;&lt;br /&gt;
          }&lt;br /&gt;
          .section {&lt;br /&gt;
          text-align:left;&lt;br /&gt;
          width:1000px;&lt;br /&gt;
          padding:20px;&lt;br /&gt;
          background:Chocolate;&lt;br /&gt;
          margin: auto;&lt;br /&gt;
          }&lt;br /&gt;
          table, th, td, .section {&lt;br /&gt;
          border: 1px solid black;&lt;br /&gt;
          }&lt;br /&gt;
          th {&lt;br /&gt;
          text-align:left;&lt;br /&gt;
          padding-left: 10px;&lt;br /&gt;
          padding-right: 10px;&lt;br /&gt;
          }&lt;br /&gt;
          td {&lt;br /&gt;
          text-align:center;&lt;br /&gt;
          }&lt;br /&gt;
          p {&lt;br /&gt;
          text-align:justify;&lt;br /&gt;
          }&lt;br /&gt;
          .description {&lt;br /&gt;
          vertical-align:top; &lt;br /&gt;
          padding:10px;&lt;br /&gt;
          }&lt;br /&gt;
        &amp;lt;/style&amp;gt;&lt;br /&gt;
      &amp;lt;/head&amp;gt;&lt;br /&gt;
      &amp;lt;body&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;Trainings at SuperSportsClub&amp;lt;/h1&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;/Trainings/Styles/Style&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:sort select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:variable select=&amp;quot;.&amp;quot; name=&amp;quot;SelectedStyle&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;section&amp;quot; &amp;gt;&lt;br /&gt;
            &amp;lt;h2&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select=&amp;quot;$SelectedStyle&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/h2&amp;gt;&lt;br /&gt;
            &amp;lt;ul&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:for-each select=&amp;quot;/Trainings/Training&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:sort select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:variable name=&amp;quot;Training&amp;quot; select=&amp;quot;.&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:if test=&amp;quot;Styles/Style/@Id = $SelectedStyle/@Id&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;&lt;br /&gt;
                    &amp;lt;h3&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;$Training/Name&amp;quot; /&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:if test=&amp;quot;$Training/@Licence&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:text&amp;gt; (&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:value-of select=&amp;quot;$Training/@Licence&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:text&amp;gt;)&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
                    &amp;lt;/h3&amp;gt;&lt;br /&gt;
                    &amp;lt;table&amp;gt;&lt;br /&gt;
                      &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                      &amp;lt;/tr&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:for-each select=&amp;quot;$Training/Schedule/ScheduleItem&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:sort select=&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:variable name=&amp;quot;StartTime&amp;quot; select=&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:variable name=&amp;quot;Duration&amp;quot; select=&amp;quot;$StartTime/@Duration&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;tr&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;150&amp;quot; &amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;concat(&lt;br /&gt;
                                            substring($StartTime, 9, 2), &lt;br /&gt;
                                            &#039;.&#039;, &lt;br /&gt;
                                            substring($StartTime, 6, 2), &lt;br /&gt;
                                            &#039;.&#039;, &lt;br /&gt;
                                            substring($StartTime, 1, 4),&lt;br /&gt;
                                            &#039; &#039;,&lt;br /&gt;
                                            substring($StartTime, 12, 2),&lt;br /&gt;
                                            &#039;:&#039;,&lt;br /&gt;
                                            substring($StartTime, 15, 2))&lt;br /&gt;
                                            &amp;quot; /&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:if test=&amp;quot;Comment&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;br/&amp;gt;&lt;br /&gt;
                              &amp;lt;div style=&amp;quot;color:Green&amp;quot;&amp;gt;&lt;br /&gt;
                                &amp;lt;xsl:value-of select=&amp;quot;Comment&amp;quot;/&amp;gt;&lt;br /&gt;
                              &amp;lt;/div&amp;gt;&lt;br /&gt;
                            &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;substring($Duration, 3, 6)&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:variable name=&amp;quot;VenueId&amp;quot; select=&amp;quot;@VenueId&amp;quot;/&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;/Trainings/Venues/Venue[@Id=$VenueId]&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:for-each select=&amp;quot;Instructors/Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:variable name=&amp;quot;InstructorId&amp;quot; select=&amp;quot;@Id&amp;quot;&amp;gt;&amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:variable name=&amp;quot;SelectedInstructor&amp;quot; select=&amp;quot;/Trainings/Instructors/Instructor[@Id=$InstructorId]&amp;quot; /&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/Name&amp;quot;/&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:text&amp;gt; (&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/@Rating&amp;quot; /&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:text&amp;gt;)&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                              &amp;lt;br/&amp;gt;&lt;br /&gt;
                            &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;/tr&amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
                    &amp;lt;/table&amp;gt;&lt;br /&gt;
                    &amp;lt;br/&amp;gt;&lt;br /&gt;
                    &amp;lt;table&amp;gt;&lt;br /&gt;
                      &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                          &amp;lt;xsl:variable name=&amp;quot;VideoUrl&amp;quot; select=&amp;quot;$Training/VideoUrl&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;{$VideoUrl}&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                          &amp;lt;p&amp;gt;&lt;br /&gt;
                            &amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&lt;br /&gt;
                          &amp;lt;/p&amp;gt;&lt;br /&gt;
                          &amp;lt;p&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;$Training/Description&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                      &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;/table&amp;gt;&lt;br /&gt;
                  &amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
            &amp;lt;/ul&amp;gt;&lt;br /&gt;
          &amp;lt;/div&amp;gt;&lt;br /&gt;
          &amp;lt;br/&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
      &amp;lt;/body&amp;gt;&lt;br /&gt;
    &amp;lt;/html&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== HTML (transformeeritud) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/trainings.html Vaata eelneva transformatsiooni tulemust.]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;META http-equiv=&amp;quot;Content-Type&amp;quot; content=&amp;quot;text/html; charset=utf-8&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;SuperSportsClub - Trainings&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;style&amp;gt;&lt;br /&gt;
        body {&lt;br /&gt;
            background: BurlyWood;&lt;br /&gt;
            text-align: center;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        .section {&lt;br /&gt;
            text-align: left;&lt;br /&gt;
            width: 1000px;&lt;br /&gt;
            padding: 20px;&lt;br /&gt;
            background: Chocolate;&lt;br /&gt;
            margin: auto;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        table, th, td, .section {&lt;br /&gt;
            border: 1px solid black;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        th {&lt;br /&gt;
            text-align: left;&lt;br /&gt;
            padding-left: 10px;&lt;br /&gt;
            padding-right: 10px;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        td {&lt;br /&gt;
            text-align: center;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        p {&lt;br /&gt;
            text-align: justify;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        .description {&lt;br /&gt;
            vertical-align: top;&lt;br /&gt;
            padding: 10px;&lt;br /&gt;
        }&lt;br /&gt;
    &amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
    &amp;lt;h1&amp;gt;Trainings at SuperSportsClub&amp;lt;/h1&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Body&amp;amp;amp;Mind&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyBalance™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 13:30&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;1H15M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 2&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Minnie Mouse (4.6)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;31.03.2017 12:15&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;1H15M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 3&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Mickey Mouse (4.7)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/jJxA6vBjUqY&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                BODYBALANCE™ is the Yoga, Tai Chi, Pilates workout that builds flexibility and strength and leaves you feeling centered and calm. Based on a carefully structured series of stretches, moves and poses to music it creates a holistic workout that brings the body into a state of harmony and balance. This class will heighten your flexibility and inner strength creating a strong supple body from the inside out. Burn on average 390cals per hour.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;Yoga&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;25.03.2017 14:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Yoga Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Minnie Yogafier (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
                            28.03.2017 14:00&amp;lt;br&amp;gt;&amp;lt;div style=&amp;quot;color:Green&amp;quot;&amp;gt;&lt;br /&gt;
                                Special class!&lt;br /&gt;
                            &amp;lt;/div&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;1H20M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Yoga Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Minnie Yogafier (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/Nvlxn0EnmbM&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                Yoga is a group of physical, mental, and spiritual practices or disciplines which originated in ancient India.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Cardio&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyJam™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 16:10&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 3&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Donald Duck (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;01.04.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;45M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 5&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Goofy (3.9)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/8PTXyg9si_4&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                The Body Jam program is an addictive fusion of the latest dance styles to the hottest new sounds. This class isn’t just for dancers, it’s for everyone because the emphasis is put on not only having fun but also breaking a sweat. So grab a friend, get front and centre … you bring the attitude and we’ll bring the moves!&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Dance&amp;amp;amp;Fun&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyJam™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 16:10&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 3&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Donald Duck (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;01.04.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;45M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 5&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Goofy (3.9)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/8PTXyg9si_4&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                The Body Jam program is an addictive fusion of the latest dance styles to the hottest new sounds. This class isn’t just for dancers, it’s for everyone because the emphasis is put on not only having fun but also breaking a sweat. So grab a friend, get front and centre … you bring the attitude and we’ll bring the moves!&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;Zumba®&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;26.03.2017 15:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;55M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 2&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Zumbaschnegger (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;28.03.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 4&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Zumbaschnegger (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 2&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Zumbaschnegger (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/-ZB6XIkfxnQ&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                Zumba involves dance and aerobic movements performed to energetic music. The choreography incorporates hip-hop, soca, samba, salsa, merengue and mambo. Squats and lunges are also included.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Strength&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyPump™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;23.03.2017 13:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Main Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Schwarzenegger (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 13:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Main Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Schwarzenegger (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/zU_0XrdO3wo&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                BodyPump classes are 59 minutes long and contain eight separate muscle-group specific songs or &amp;quot;tracks&amp;quot; along with an opening warm up track and closing cool-down track. There are also 45-minute and 30-minute class formats. The classes are performed to music using free weights-plates, barbells and an aerobic step. Participants choose their weights based on the exercise and their personal goals. Major muscle groups are worked via series of compound and isolation-based exercises including squats, presses, dead lifts. The focus is towards muscle endurance by moving light weights at high repetitions, what Les Mills calls the Rep Effect.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;CoreStrength&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
                            23.03.2017 12:00&amp;lt;br&amp;gt;&amp;lt;div style=&amp;quot;color:Green&amp;quot;&amp;gt;&lt;br /&gt;
                                Special challenge!&lt;br /&gt;
                            &amp;lt;/div&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;2H&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Area 6&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Margaret Strengthener (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Area 6&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Kayla Weightlifter (4.8)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;05.04.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Area 6&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Kayla Weightlifter (4.8)&amp;lt;br&amp;gt;Margaret Strengthener (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/ZxTVmpvyUt8&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                CoreStrenght is a very hard workout! Not for beginners.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSLT (xml) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Selle transformatsiooniga luuakse uus [http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/schedule.xml XML fail], milles on treeningute andmed esitatud ühtse tunniplaani kujul. Algses failis erinevate elementide alla paigutatud andmed on nüüd tunniplaani alamelemendis kokku viidud. Sidumine on teostatud id-atribuutide abil. Tunniplaanis on ühes kohas kirjas treeningu nimi, stiil(id), koht, algusaeg, kestus, rühma suurus, instruktorid ja muu täiendav info.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&lt;br /&gt;
    xmlns:msxsl=&amp;quot;urn:schemas-microsoft-com:xslt&amp;quot; exclude-result-prefixes=&amp;quot;msxsl&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:output method=&amp;quot;xml&amp;quot; indent=&amp;quot;yes&amp;quot; cdata-section-elements=&amp;quot;Name Style Comment&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;/Trainings/Training&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:sort select=&amp;quot;Name&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:variable name=&amp;quot;SelectedTraining&amp;quot; select=&amp;quot;.&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;Schedule/ScheduleItem&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:sort select=&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;ScheduleItem&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:variable name=&amp;quot;VenueId&amp;quot; select=&amp;quot;@VenueId&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:variable name=&amp;quot;SelectedVenue&amp;quot; select=&amp;quot;/Trainings/Venues/Venue[@Id=$VenueId]&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:attribute name=&amp;quot;GroupSize&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;@GroupSize&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:value-of select=&amp;quot;@GroupSize&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:value-of select=&amp;quot;$SelectedVenue/@GroupSize&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
            &amp;lt;Venue&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$VenueId&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select=&amp;quot;$SelectedVenue&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/Venue&amp;gt;&lt;br /&gt;
            &amp;lt;Training&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$SelectedTraining/@Id&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:if test=&amp;quot;$SelectedTraining/@Licence&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:attribute name=&amp;quot;Licence&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:value-of select=&amp;quot;$SelectedTraining/@Licence&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
              &amp;lt;Name&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$SelectedTraining/Name&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/Name&amp;gt;&lt;br /&gt;
              &amp;lt;Styles&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:for-each select=&amp;quot;$SelectedTraining/Styles/Style&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:variable name=&amp;quot;StyleId&amp;quot; select=&amp;quot;@Id&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;Style&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:attribute name=&amp;quot;StyleId&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;$StyleId&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;/Trainings/Styles/Style[@Id=$StyleId]&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/Style&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
              &amp;lt;/Styles&amp;gt;&lt;br /&gt;
            &amp;lt;/Training&amp;gt;&lt;br /&gt;
            &amp;lt;Time&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:attribute name=&amp;quot;Duration&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;Time/@Duration&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select =&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/Time&amp;gt;&lt;br /&gt;
            &amp;lt;Instructors&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:for-each select=&amp;quot;Instructors/Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:variable name=&amp;quot;InstructorId&amp;quot; select=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:variable name=&amp;quot;SelectedInstructor&amp;quot; select=&amp;quot;/Trainings/Instructors/Instructor[@Id=$InstructorId]&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;Instructor&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;$InstructorId&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:attribute name=&amp;quot;Rating&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/@Rating&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                  &amp;lt;Name&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/Name&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/Name&amp;gt;&lt;br /&gt;
                &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
            &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:if test=&amp;quot;Comment&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;Comment&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;Comment&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/Comment&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
          &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XML (transformeeritud) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/schedule.xml Vaata eelneva transformatsiooni tulemust.]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Schedule&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;3&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot;&amp;gt;Hall 2&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;2&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyBalance™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-30T13:30:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;3&amp;quot; Rating=&amp;quot;4.6&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;2&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;3&amp;quot;&amp;gt;Hall 3&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;2&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyBalance™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-31T12:15:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;2&amp;quot; Rating=&amp;quot;4.7&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Mickey Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;4&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;3&amp;quot;&amp;gt;Hall 3&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;3&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyJam™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;![CDATA[Cardio]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T16:10:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;4&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Donald Duck]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;5&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;5&amp;quot;&amp;gt;Hall 5&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;3&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyJam™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;![CDATA[Cardio]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT45M&amp;quot;&amp;gt;2017-04-01T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;5&amp;quot; Rating=&amp;quot;3.9&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Goofy]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;7&amp;quot; GroupSize=&amp;quot;45&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;1&amp;quot;&amp;gt;Main Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;4&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyPump™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-23T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;6&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Schwarzenegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;6&amp;quot; GroupSize=&amp;quot;45&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;1&amp;quot;&amp;gt;Main Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;4&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyPump™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;6&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Schwarzenegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;8&amp;quot; GroupSize=&amp;quot;10&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot;&amp;gt;Area 6&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT2H&amp;quot;&amp;gt;2017-03-23T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;9&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Margaret Strengthener]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
    &amp;lt;Comment&amp;gt;&amp;lt;![CDATA[&lt;br /&gt;
          Special challenge!&lt;br /&gt;
        ]]&amp;gt;&amp;lt;/Comment&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;9&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot;&amp;gt;Area 6&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;8&amp;quot; Rating=&amp;quot;4.8&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Kayla Weightlifter]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;10&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot;&amp;gt;Area 6&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-04-05T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;8&amp;quot; Rating=&amp;quot;4.8&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Kayla Weightlifter]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;9&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Margaret Strengthener]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;11&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot;&amp;gt;Hall 2&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT55M&amp;quot;&amp;gt;2017-03-26T15:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;12&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;4&amp;quot;&amp;gt;Hall 4&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-28T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;13&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot;&amp;gt;Hall 2&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;1&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;7&amp;quot;&amp;gt;Yoga Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Yoga]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-25T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;1&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Yogafier]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;14&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;7&amp;quot;&amp;gt;Yoga Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Yoga]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT1H20M&amp;quot;&amp;gt;2017-03-28T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;1&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Yogafier]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
    &amp;lt;Comment&amp;gt;&amp;lt;![CDATA[&lt;br /&gt;
          Special class!&lt;br /&gt;
        ]]&amp;gt;&amp;lt;/Comment&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
&amp;lt;/Schedule&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus ==&lt;br /&gt;
Angular JS &#039;&#039;single page application&#039;&#039; eelnevalt kirjeldatud veebiteenusele. Sisse logimata saab kuvada spordiklubi tunniplaani, treeningstiile ja treenereid. Võimalik on liituda teenusega ja registreeruda treeningutele, samuti registreeringuid tühistada. Esialgu põhineb süsteem ühel spordiklubil.&lt;br /&gt;
&lt;br /&gt;
Autentimine on lahendatud tokenipõhiselt. Eeskujuna kasutasime näidisrakendust, mille juhend ja lähtekood on leitav [http://bitoftech.net/2014/06/09/angularjs-token-authentication-using-asp-net-web-api-2-owin-asp-net-identity/ siit].&lt;br /&gt;
&lt;br /&gt;
== Lähtekood ==&lt;br /&gt;
Eksamiks valminud veebiteenuse ja klientrakenduse kokkupakitult allalaadimiseks klõpsa [http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/solution/ProjectSPOT.zip sellel lingil]. WebApi ja klient asuvad eraldi lahendustes.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;NB! Võib juhtuda, et WebApi esmakordsel käivitamisel loodavasse andmebaasi kõiki andmeid (tunniplaani ja registreerimisi jooksvasse nädalasse) ei lisandu. Sellisel juhul kustutage tekkinud andmebaas ja käivitage kõigepealt samas lahenduses olev konsoolirakendus.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Retsensioonid ==&lt;br /&gt;
&lt;br /&gt;
# [https://wiki.itcollege.ee/index.php/Talk:JRT XML/XSD/XSLT retsensioon meeskonnale JRT]&lt;br /&gt;
# [Veebiteenuse retsensioon lisandub varsti]&lt;br /&gt;
# [Klientrakenduse retsensioon lisandub varsti]&lt;br /&gt;
&lt;br /&gt;
== Log ==&lt;br /&gt;
* 03.03.17 Esimene kohtumine. Idee.&lt;br /&gt;
* 17.03.17 Osa XMList valmis, osa XSLT-st valmis.&lt;br /&gt;
* 18.03.17 Teine kohtumine. XMLi täiendamine, esimene ülekäimine XSD-s.&lt;br /&gt;
* 19.03.17 XML/XSLT/XSD täiendamine ja lõpetamine.&lt;br /&gt;
* 20.03.17 XML fail, skeemifail ja stiilifailid esitatud. Projekti esimese etapi lõpp. Kevade algus.&lt;br /&gt;
* 26.03.17 XML/XSLT/XSD retsensioon esitatud.&lt;br /&gt;
* 16.04.17 Veebiteenuse analüüsi koostamine.&lt;br /&gt;
* 17.04.17 Esialgne veebiteenuse analüüs ja kavand valmis.&lt;br /&gt;
* 19.04.17 Alustasime veebiteenusega, koostegemine: Domain, DAL, Interfaces, Repostitories. Testimine konsoolis.&lt;br /&gt;
* 24.04.17 Veebiteenuse koostegemine, 2. kord: Domaini täiendamine.&lt;br /&gt;
* 29.04.17 Veebiteenuse koostegemine, 3. kord: Interfaces, Repositories, Factory + UOW. Testimine konsoolis.&lt;br /&gt;
* 01.05.17 Andmebaasi täitmine testandmetega varasemas faasis loodud XML failist.&lt;br /&gt;
* 02.05.17 Veebiteenuse koostegemine, 4. kord: alustasime BLi ja WebApi ehitamist. GET päringud.&lt;br /&gt;
* 09.05.17 Veebiteenuse koostegemine, 5. kord: lisasime Identity.&lt;br /&gt;
* 11.05.17 Veebiteenuse koostegemine, 6. kord: WebApi arendamine. POST, PUT ja DELETE päringud.&lt;br /&gt;
* 15.05.17 Veebiteenuse koostegemine, 7. kord: WebApi arendamine. Lisasime  api kontrollereid.&lt;br /&gt;
* 16.05.17 Veebiteenuse koostegemine, 8. kord: WebApi arendamine. Identity kontroll Fiddleri ja Postmaniga.&lt;br /&gt;
* 20.05.17 Klientrakenduse koostegemine, 1. kord. Testklient.&lt;br /&gt;
* 25.05.17 Klientrakenduse koostegemine, 2. kord. Klientrakenduse arendamine.&lt;br /&gt;
* 01.06.17 Klientrakenduse koostegemine, 3. kord. Klientrakenduse arendamine. Angular JS.&lt;br /&gt;
* 03.06.17 - 11.06.17 Klientrakenduse arendamine. Tokenipõhine autentimine. Veebiteenuse viimistlemine.&lt;br /&gt;
* 11.06.17 Lõpptähtaeg. Projekti esitlemine eksamil.&lt;br /&gt;
* 12.06.17 Teiste lahenduste retsenseerimine.&lt;/div&gt;</summary>
		<author><name>Otiks</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Team_SPOT&amp;diff=123477</id>
		<title>Team SPOT</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Team_SPOT&amp;diff=123477"/>
		<updated>2017-06-12T02:32:15Z</updated>

		<summary type="html">&lt;p&gt;Otiks: /* Klientrakendus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://wiki.itcollege.ee/index.php/Kodut%C3%B6%C3%B6_aines_%22V%C3%B5rgurakendused_II:_hajuss%C3%BCsteemide_ehitamine%22_2017 Kodutöö aines &amp;quot;Võrgurakendused II: hajussüsteemide ehitamine&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
[https://projectspot.visualstudio.com/PROJECTSPOT Projekti kodu (avaneb ainult liikmetele)]&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==Liikmed==&lt;br /&gt;
*Sigrid Pachel&lt;br /&gt;
*Oliver Tiks&lt;br /&gt;
&lt;br /&gt;
==Idee==&lt;br /&gt;
Mõttes on luua spordiklubi(de) veebiteenus ja klientrakendus, mis võimaldaks saada infot pakutavate treeningute kohta, sisestada ja kuvada tunniplaani andmeid, registreerida osalejaid tundidesse ning teha muid asjakohaseid tegevusi nii klubi(de) personalil, liikmetel kui ka juhukasutajatel.&lt;br /&gt;
&lt;br /&gt;
==Veebiteenuse analüüs==&lt;br /&gt;
SPOTi veebiteenus võimaldab saada infot erinevate klubide treeningute kohta ja end neisse registreerida. Kasutaja saab teavet, kus ja millal treeningud toimuvad (tunniplaan), mida treeningus täpsemalt tehakse, mis stiiliga on tegemist, kes on treener, kui palju üks kord maksab jms info. Kasutajakontoga liikmel on võimalik end registreerida soovitud tundi ja hallata oma registreeringuid (muuta, tühistada).&lt;br /&gt;
&lt;br /&gt;
Spordiklubide infot haldavad süsteemi administraatorid, kes saavad lisada, muuta ja kustutada kõike sprodiklubiga seonduvat. Erinevaid treeninguid ja nendega seotud konkreetset infot saavad lisada ja hallata treenerid või spordiklubi esindajad.&lt;br /&gt;
&lt;br /&gt;
Projekti realiseerimiseks kasutame REST arhitektuuri ja ASP.NET MVC Web API tehnoloogiat.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Üldine plaan:&#039;&#039;&#039;&lt;br /&gt;
* esialgu üks kett (laienemise võimalusega)&lt;br /&gt;
* mitu klubi (asukoht, saalid-treeningualad, võimalikud lisatingimused)&lt;br /&gt;
* treeningute info (stiilid ehk kontseptid, litsentsid, …)&lt;br /&gt;
* tunniplaan (aeg, koht, instruktorid, max osalejate arv, ühe korra hind)&lt;br /&gt;
* registratuur (treeningutest osavõtjad)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kasutajad (rollid):&#039;&#039;&#039;&lt;br /&gt;
* administraatorid (saavad teha muudatusi)&lt;br /&gt;
* treenerid (info kvalifikatsiooni, litsentside kohta, õigus treeninguid lisada) &lt;br /&gt;
* liikmed (saavad treeningutele registreeruda)&lt;br /&gt;
* ülejäänud (näevad klubide ja treeningute infot ning tunniplaani)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Peaks olema:&#039;&#039;&#039;&lt;br /&gt;
* kasutajate loomine&lt;br /&gt;
* kasutajate tuvastamine ja haldamine&lt;br /&gt;
* kasutajate ja kasutusstatistika logimine&lt;br /&gt;
* teenuse poole pöördumiste arvu piiramine ja piirangute haldamine&lt;br /&gt;
* klubide, treenerite ja treeningute info väljastamine&lt;br /&gt;
* tunniplaani info väljastamine&lt;br /&gt;
* treeningutesse registreerimine&lt;br /&gt;
* registreeringu tühistamine&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Võiks olla:&#039;&#039;&#039;&lt;br /&gt;
* klubide, treenerite, treeningute lisamine ja muutmine&lt;br /&gt;
* tunniplaanis treeningute tühistamine&lt;br /&gt;
* sisestatud andmete kustutamine (pehmelt)&lt;br /&gt;
* rollide-õiguste määramine (admin)&lt;br /&gt;
* asukohad mitmes riigis&lt;br /&gt;
* kliendipaketid, arveldus&lt;br /&gt;
* kontaktide tsentraliseeritud haldus&lt;br /&gt;
* sisselogimine läbi Google’i, Facebooki vmt teenuse&lt;br /&gt;
&lt;br /&gt;
===Andmebaasi skeem (lihtsustatud)===&lt;br /&gt;
&lt;br /&gt;
[[File:SPOTService ERD.JPG|border|SPOT Service ERD]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Märkus: olemite atribuutidest on välja toodud ainult peamised.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====Tabelite kirjeldused====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kasutajahaldus*:&#039;&#039;&#039;&lt;br /&gt;
* User - kasutajate andmed&lt;br /&gt;
* Role - rollid, millega määratakse kasutajate õigused (&amp;quot;Admin&amp;quot;, &amp;quot;Trainer&amp;quot;, ...)&lt;br /&gt;
* UserRole - kasutajate sidumine rolli(de)ga&lt;br /&gt;
* UserLogin - muu teenuse kaudu sisselogimiseks&lt;br /&gt;
* UserClaim - muu teenuse kaudu sisselogimiseks&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;&#039;&#039;Kasutajahalduse süsteem toetub Asp.Net Identity valmislahendusele, mida on täiendanud A. Käver.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Klubid:&#039;&#039;&#039;&lt;br /&gt;
* Chain (optional) - spordiklubikettide info&lt;br /&gt;
* Location - spordiklubi/-rajatise asukoht linna/asula täpsusega&lt;br /&gt;
* Facility - spordiklubi/-rajatise andmed, seotud asukohaga ja vajadusel ketiga.&lt;br /&gt;
* Venue - spordiklubis/-rajatises kasutatavad saalid ja muud treeningualad&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Treeningud:&#039;&#039;&#039;&lt;br /&gt;
* Concept (Style) - treeningustiilid ehk kontseptid&lt;br /&gt;
* Licenser (optional) - treeninguliikide litsentsid (kui on)&lt;br /&gt;
* Training - treeninguliikide andmed, seotud stiili ja vajadusel litsentsiga&lt;br /&gt;
* Trainer (User (role: Trainer) + Training) - treeninguliikide sidumine treeneritega&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tunniplaan:&#039;&#039;&#039;&lt;br /&gt;
* ScheduleItem - treeningud tunniplaanis&lt;br /&gt;
* Instructor (User (role: Trainer) + ScheduleItem) - tundide juhendajad (võib olla mitu)&lt;br /&gt;
* Registration (ScheduleItem + User (role: any)) - tundidesse tehtud registreeringud&lt;br /&gt;
&lt;br /&gt;
== XML / XSD / XSLT==&lt;br /&gt;
Projekti esimeses etapis sai loodud XML andmefail, mille ülesehitus on paika pandud XSD skeemifailis. Lisaks on olemas kaks stiilifaili: esimene neist transformeerib andmed HTML-kujule, et kuvada infot  veebilehel, teine tekitab samade andmete esitamiseks uue struktuuriga XML faili.&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/ProjectSPOT_ScheduleXml.zip Lae failid alla.] &lt;br /&gt;
&lt;br /&gt;
=== XML ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Fail sisaldab andmeid ühes spordiklubis pakutavate treeningute kohta. Andmed on esitatud treeninguliikide kaupa, mille juurde on lisatud ka vastava treeninguliigi tunniplaan. Treeninguliikidel on nimi ja kirjeldus ning vajadusel ära märgitud ka litsents. Failis on eraldi välja toodud treeningustiilid, instruktorid ja ruumid, kus treeningud toimuvad. Iga treeninguliik kuulub ühe või mitme stiili alla. Instruktoritel on tagasiside põhjal saadud hinne. Treeninguruumidel on vaikimisi määratud mahutavus. Tunniplaanis on ära toodud treeningu koht, algusaeg ja kestus ning instruktorid. Vajadusel saab eraldi määrata ka treeningurühma suuruse, kui see erineb tavalisest ruumi mahutavusest. Ka on võimalik treeningutunnile lisada kommentaar. Erinevate elementide andmed on omavahel seotud id-atribuutidega.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;?xml-stylesheet type=&amp;quot;text/xsl&amp;quot; href=&amp;quot;trainingsToHtml.xslt&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Trainings&amp;gt;&lt;br /&gt;
  &amp;lt;Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;![CDATA[Cardio]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
  &amp;lt;/Styles&amp;gt;&lt;br /&gt;
  &amp;lt;Instructors&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;1&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Yogafier]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;2&amp;quot; Rating=&amp;quot;4.7&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Mickey Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;3&amp;quot; Rating=&amp;quot;4.6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;4&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Donald Duck]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;5&amp;quot; Rating=&amp;quot;3.9&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Goofy]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;6&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Schwarzenegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;8&amp;quot; Rating=&amp;quot;4.8&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Kayla Weightlifter]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;9&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Margaret Strengthener]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
  &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;Venues&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;1&amp;quot; GroupSize=&amp;quot;45&amp;quot;&amp;gt;&amp;lt;![CDATA[Main Hall]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 2]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;3&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 3]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;4&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 4]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;5&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 5]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&amp;lt;![CDATA[Area 6]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;7&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&amp;lt;![CDATA[Yoga Hall]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
  &amp;lt;/Venues&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Yoga]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[Yoga is a group of physical, mental, and spiritual practices or disciplines which originated in ancient India. ]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;1&amp;quot; VenueId=&amp;quot;7&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-25T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;14&amp;quot; VenueId=&amp;quot;7&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT1H20M&amp;quot;&amp;gt;2017-03-28T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Comment&amp;gt;&lt;br /&gt;
          &amp;lt;![CDATA[Special class!]]&amp;gt;&lt;br /&gt;
        &amp;lt;/Comment&amp;gt; &lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/Nvlxn0EnmbM&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;  &lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;2&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyBalance™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[BODYBALANCE™ is the Yoga, Tai Chi, Pilates workout that builds flexibility and strength and leaves you feeling centered and calm. Based on a carefully structured series of stretches, moves and poses to music it creates a holistic workout that brings the body into a state of harmony and balance. This class will heighten your flexibility and inner strength creating a strong supple body from the inside out. Burn on average 390cals per hour.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;2&amp;quot; VenueId=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-31T12:15:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;3&amp;quot; VenueId=&amp;quot;2&amp;quot; &amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-30T13:30:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;3&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/jJxA6vBjUqY&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;3&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyJam™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;4&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[The Body Jam program is an addictive fusion of the latest dance styles to the hottest new sounds. This class isn’t just for dancers, it’s for everyone because the emphasis is put on not only having fun but also breaking a sweat. So grab a friend, get front and centre … you bring the attitude and we’ll bring the moves!]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;4&amp;quot;  VenueId=&amp;quot;3&amp;quot; &amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T16:10:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;4&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;5&amp;quot; VenueId=&amp;quot;5&amp;quot; &amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT45M&amp;quot;&amp;gt;2017-04-01T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;5&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/8PTXyg9si_4&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;4&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyPump™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[BodyPump classes are 59 minutes long and contain eight separate muscle-group specific songs or &amp;quot;tracks&amp;quot; along with an opening warm up track and closing cool-down track. There are also 45-minute and 30-minute class formats. The classes are performed to music using free weights-plates, barbells and an aerobic step. Participants choose their weights based on the exercise and their personal goals. Major muscle groups are worked via series of compound and isolation-based exercises including squats, presses, dead lifts. The focus is towards muscle endurance by moving light weights at high repetitions, what Les Mills calls the Rep Effect.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;3&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;6&amp;quot; VenueId=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;6&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;7&amp;quot; VenueId=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-23T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;6&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/zU_0XrdO3wo&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[CoreStrenght is a very hard workout! Not for beginners.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;3&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;8&amp;quot; VenueId=&amp;quot;6&amp;quot; GroupSize=&amp;quot;10&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT2H&amp;quot;&amp;gt;2017-03-23T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;9&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Comment&amp;gt;&lt;br /&gt;
          &amp;lt;![CDATA[Special challenge!]]&amp;gt;&lt;br /&gt;
        &amp;lt;/Comment&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;9&amp;quot; VenueId=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;8&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;10&amp;quot; VenueId=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-04-05T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;8&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;9&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/ZxTVmpvyUt8&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[Zumba involves dance and aerobic movements performed to energetic music. The choreography incorporates hip-hop, soca, samba, salsa, merengue and mambo. Squats and lunges are also included.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;4&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;11&amp;quot; VenueId=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT55M&amp;quot;&amp;gt;2017-03-26T15:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;12&amp;quot; VenueId=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-28T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;13&amp;quot; VenueId=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/-ZB6XIkfxnQ&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
&amp;lt;/Trainings&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSD ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Skeemifail kontrollib eelnevas andmefailis esitatud andmete vastavust kokkulepitud formaadile, samuti õigete andmetüüpide kasutamist. Alamelemendi id-atribuudi väärtus peab olema iga elemendirühma lõikes unikaalne. Kohustuslike elementide ja atribuutide kõrval on ka mõned (nt kommentaar), mille olemasolu pole alati tarvilik. Teatud puhkudel on piiratud maksimaalset elementide arvu (nt treeningutunni algusaeg). Faili üldine struktuur on kindel, aga alati pole alamelementide järjekord oluline (nt treeninguliigi puhul).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xs:schema attributeFormDefault=&amp;quot;unqualified&amp;quot; elementFormDefault=&amp;quot;qualified&amp;quot; xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xs:element name=&amp;quot;Trainings&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Styles&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Style&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
          &amp;lt;xs:unique name=&amp;quot;UniqueStyleId&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xs:selector xpath=&amp;quot;Style&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Instructors&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;Name&amp;quot; type=&amp;quot;xs:string&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:attribute name=&amp;quot;Rating&amp;quot; type=&amp;quot;xs:decimal&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
          &amp;lt;xs:unique name=&amp;quot;UniqueInstructorId&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xs:selector xpath=&amp;quot;Instructor&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Venues&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Venue&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:attribute name=&amp;quot;GroupSize&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
          &amp;lt;xs:unique name=&amp;quot;UniqueVenueId&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xs:selector xpath=&amp;quot;Venue&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Training&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:all&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Description&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Styles&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Style&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Schedule&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;ScheduleItem&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:all&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element  maxOccurs=&amp;quot;1&amp;quot; name=&amp;quot;Time&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:extension base=&amp;quot;xs:dateTime&amp;quot;&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:attribute name=&amp;quot;Duration&amp;quot; type=&amp;quot;xs:duration&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element name=&amp;quot;Instructors&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                    &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                                      &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                                        &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                                      &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                                    &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                                  &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; name=&amp;quot;Comment&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:all&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;VenueId&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;GroupSize&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;optional&amp;quot; /&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;VideoUrl&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:all&amp;gt;&lt;br /&gt;
            &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xs:attribute name=&amp;quot;Licence&amp;quot; type=&amp;quot;xs:string&amp;quot; use=&amp;quot;optional&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
    &amp;lt;xs:unique name=&amp;quot;UniqueTrainingId&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xs:selector xpath=&amp;quot;Training&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
    &amp;lt;xs:unique name=&amp;quot;UniqueScheduleItemId&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xs:selector xpath=&amp;quot;Training/Schedule/ScheduleItem&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSLT (html) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Selles transformatsioonifailis on kirjeldatud XML failis olevate andmete [http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/trainings.xml  kuvamise viis veebilehel]. Treeninguliigid on jaotatud stiiliblokkidesse (mõni treening kuulub mitme stiili alla). Iga treeninguliigi all on tabeli kujul esitatud tunniplaan ning lisatud näidisvideo ja kirjeldus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot; xmlns:msxsl=&amp;quot;urn:schemas-microsoft-com:xslt&amp;quot; exclude-result-prefixes=&amp;quot;msxsl&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:output method=&amp;quot;html&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;html&amp;gt;&lt;br /&gt;
      &amp;lt;head&amp;gt;&lt;br /&gt;
        &amp;lt;title&amp;gt;SuperSportsClub - Trainings&amp;lt;/title&amp;gt;&lt;br /&gt;
        &amp;lt;style&amp;gt;&lt;br /&gt;
          body {&lt;br /&gt;
          background:BurlyWood;&lt;br /&gt;
          text-align: center;&lt;br /&gt;
          }&lt;br /&gt;
          .section {&lt;br /&gt;
          text-align:left;&lt;br /&gt;
          width:1000px;&lt;br /&gt;
          padding:20px;&lt;br /&gt;
          background:Chocolate;&lt;br /&gt;
          margin: auto;&lt;br /&gt;
          }&lt;br /&gt;
          table, th, td, .section {&lt;br /&gt;
          border: 1px solid black;&lt;br /&gt;
          }&lt;br /&gt;
          th {&lt;br /&gt;
          text-align:left;&lt;br /&gt;
          padding-left: 10px;&lt;br /&gt;
          padding-right: 10px;&lt;br /&gt;
          }&lt;br /&gt;
          td {&lt;br /&gt;
          text-align:center;&lt;br /&gt;
          }&lt;br /&gt;
          p {&lt;br /&gt;
          text-align:justify;&lt;br /&gt;
          }&lt;br /&gt;
          .description {&lt;br /&gt;
          vertical-align:top; &lt;br /&gt;
          padding:10px;&lt;br /&gt;
          }&lt;br /&gt;
        &amp;lt;/style&amp;gt;&lt;br /&gt;
      &amp;lt;/head&amp;gt;&lt;br /&gt;
      &amp;lt;body&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;Trainings at SuperSportsClub&amp;lt;/h1&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;/Trainings/Styles/Style&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:sort select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:variable select=&amp;quot;.&amp;quot; name=&amp;quot;SelectedStyle&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;section&amp;quot; &amp;gt;&lt;br /&gt;
            &amp;lt;h2&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select=&amp;quot;$SelectedStyle&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/h2&amp;gt;&lt;br /&gt;
            &amp;lt;ul&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:for-each select=&amp;quot;/Trainings/Training&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:sort select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:variable name=&amp;quot;Training&amp;quot; select=&amp;quot;.&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:if test=&amp;quot;Styles/Style/@Id = $SelectedStyle/@Id&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;&lt;br /&gt;
                    &amp;lt;h3&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;$Training/Name&amp;quot; /&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:if test=&amp;quot;$Training/@Licence&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:text&amp;gt; (&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:value-of select=&amp;quot;$Training/@Licence&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:text&amp;gt;)&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
                    &amp;lt;/h3&amp;gt;&lt;br /&gt;
                    &amp;lt;table&amp;gt;&lt;br /&gt;
                      &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                      &amp;lt;/tr&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:for-each select=&amp;quot;$Training/Schedule/ScheduleItem&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:sort select=&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:variable name=&amp;quot;StartTime&amp;quot; select=&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:variable name=&amp;quot;Duration&amp;quot; select=&amp;quot;$StartTime/@Duration&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;tr&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;150&amp;quot; &amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;concat(&lt;br /&gt;
                                            substring($StartTime, 9, 2), &lt;br /&gt;
                                            &#039;.&#039;, &lt;br /&gt;
                                            substring($StartTime, 6, 2), &lt;br /&gt;
                                            &#039;.&#039;, &lt;br /&gt;
                                            substring($StartTime, 1, 4),&lt;br /&gt;
                                            &#039; &#039;,&lt;br /&gt;
                                            substring($StartTime, 12, 2),&lt;br /&gt;
                                            &#039;:&#039;,&lt;br /&gt;
                                            substring($StartTime, 15, 2))&lt;br /&gt;
                                            &amp;quot; /&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:if test=&amp;quot;Comment&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;br/&amp;gt;&lt;br /&gt;
                              &amp;lt;div style=&amp;quot;color:Green&amp;quot;&amp;gt;&lt;br /&gt;
                                &amp;lt;xsl:value-of select=&amp;quot;Comment&amp;quot;/&amp;gt;&lt;br /&gt;
                              &amp;lt;/div&amp;gt;&lt;br /&gt;
                            &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;substring($Duration, 3, 6)&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:variable name=&amp;quot;VenueId&amp;quot; select=&amp;quot;@VenueId&amp;quot;/&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;/Trainings/Venues/Venue[@Id=$VenueId]&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:for-each select=&amp;quot;Instructors/Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:variable name=&amp;quot;InstructorId&amp;quot; select=&amp;quot;@Id&amp;quot;&amp;gt;&amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:variable name=&amp;quot;SelectedInstructor&amp;quot; select=&amp;quot;/Trainings/Instructors/Instructor[@Id=$InstructorId]&amp;quot; /&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/Name&amp;quot;/&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:text&amp;gt; (&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/@Rating&amp;quot; /&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:text&amp;gt;)&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                              &amp;lt;br/&amp;gt;&lt;br /&gt;
                            &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;/tr&amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
                    &amp;lt;/table&amp;gt;&lt;br /&gt;
                    &amp;lt;br/&amp;gt;&lt;br /&gt;
                    &amp;lt;table&amp;gt;&lt;br /&gt;
                      &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                          &amp;lt;xsl:variable name=&amp;quot;VideoUrl&amp;quot; select=&amp;quot;$Training/VideoUrl&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;{$VideoUrl}&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                          &amp;lt;p&amp;gt;&lt;br /&gt;
                            &amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&lt;br /&gt;
                          &amp;lt;/p&amp;gt;&lt;br /&gt;
                          &amp;lt;p&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;$Training/Description&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                      &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;/table&amp;gt;&lt;br /&gt;
                  &amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
            &amp;lt;/ul&amp;gt;&lt;br /&gt;
          &amp;lt;/div&amp;gt;&lt;br /&gt;
          &amp;lt;br/&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
      &amp;lt;/body&amp;gt;&lt;br /&gt;
    &amp;lt;/html&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== HTML (transformeeritud) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/trainings.html Vaata eelneva transformatsiooni tulemust.]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;META http-equiv=&amp;quot;Content-Type&amp;quot; content=&amp;quot;text/html; charset=utf-8&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;SuperSportsClub - Trainings&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;style&amp;gt;&lt;br /&gt;
        body {&lt;br /&gt;
            background: BurlyWood;&lt;br /&gt;
            text-align: center;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        .section {&lt;br /&gt;
            text-align: left;&lt;br /&gt;
            width: 1000px;&lt;br /&gt;
            padding: 20px;&lt;br /&gt;
            background: Chocolate;&lt;br /&gt;
            margin: auto;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        table, th, td, .section {&lt;br /&gt;
            border: 1px solid black;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        th {&lt;br /&gt;
            text-align: left;&lt;br /&gt;
            padding-left: 10px;&lt;br /&gt;
            padding-right: 10px;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        td {&lt;br /&gt;
            text-align: center;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        p {&lt;br /&gt;
            text-align: justify;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        .description {&lt;br /&gt;
            vertical-align: top;&lt;br /&gt;
            padding: 10px;&lt;br /&gt;
        }&lt;br /&gt;
    &amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
    &amp;lt;h1&amp;gt;Trainings at SuperSportsClub&amp;lt;/h1&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Body&amp;amp;amp;Mind&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyBalance™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 13:30&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;1H15M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 2&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Minnie Mouse (4.6)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;31.03.2017 12:15&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;1H15M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 3&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Mickey Mouse (4.7)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/jJxA6vBjUqY&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                BODYBALANCE™ is the Yoga, Tai Chi, Pilates workout that builds flexibility and strength and leaves you feeling centered and calm. Based on a carefully structured series of stretches, moves and poses to music it creates a holistic workout that brings the body into a state of harmony and balance. This class will heighten your flexibility and inner strength creating a strong supple body from the inside out. Burn on average 390cals per hour.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;Yoga&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;25.03.2017 14:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Yoga Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Minnie Yogafier (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
                            28.03.2017 14:00&amp;lt;br&amp;gt;&amp;lt;div style=&amp;quot;color:Green&amp;quot;&amp;gt;&lt;br /&gt;
                                Special class!&lt;br /&gt;
                            &amp;lt;/div&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;1H20M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Yoga Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Minnie Yogafier (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/Nvlxn0EnmbM&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                Yoga is a group of physical, mental, and spiritual practices or disciplines which originated in ancient India.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Cardio&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyJam™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 16:10&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 3&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Donald Duck (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;01.04.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;45M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 5&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Goofy (3.9)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/8PTXyg9si_4&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                The Body Jam program is an addictive fusion of the latest dance styles to the hottest new sounds. This class isn’t just for dancers, it’s for everyone because the emphasis is put on not only having fun but also breaking a sweat. So grab a friend, get front and centre … you bring the attitude and we’ll bring the moves!&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Dance&amp;amp;amp;Fun&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyJam™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 16:10&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 3&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Donald Duck (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;01.04.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;45M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 5&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Goofy (3.9)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/8PTXyg9si_4&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                The Body Jam program is an addictive fusion of the latest dance styles to the hottest new sounds. This class isn’t just for dancers, it’s for everyone because the emphasis is put on not only having fun but also breaking a sweat. So grab a friend, get front and centre … you bring the attitude and we’ll bring the moves!&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;Zumba®&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;26.03.2017 15:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;55M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 2&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Zumbaschnegger (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;28.03.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 4&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Zumbaschnegger (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 2&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Zumbaschnegger (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/-ZB6XIkfxnQ&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                Zumba involves dance and aerobic movements performed to energetic music. The choreography incorporates hip-hop, soca, samba, salsa, merengue and mambo. Squats and lunges are also included.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Strength&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyPump™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;23.03.2017 13:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Main Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Schwarzenegger (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 13:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Main Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Schwarzenegger (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/zU_0XrdO3wo&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                BodyPump classes are 59 minutes long and contain eight separate muscle-group specific songs or &amp;quot;tracks&amp;quot; along with an opening warm up track and closing cool-down track. There are also 45-minute and 30-minute class formats. The classes are performed to music using free weights-plates, barbells and an aerobic step. Participants choose their weights based on the exercise and their personal goals. Major muscle groups are worked via series of compound and isolation-based exercises including squats, presses, dead lifts. The focus is towards muscle endurance by moving light weights at high repetitions, what Les Mills calls the Rep Effect.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;CoreStrength&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
                            23.03.2017 12:00&amp;lt;br&amp;gt;&amp;lt;div style=&amp;quot;color:Green&amp;quot;&amp;gt;&lt;br /&gt;
                                Special challenge!&lt;br /&gt;
                            &amp;lt;/div&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;2H&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Area 6&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Margaret Strengthener (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Area 6&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Kayla Weightlifter (4.8)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;05.04.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Area 6&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Kayla Weightlifter (4.8)&amp;lt;br&amp;gt;Margaret Strengthener (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/ZxTVmpvyUt8&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                CoreStrenght is a very hard workout! Not for beginners.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSLT (xml) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Selle transformatsiooniga luuakse uus [http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/schedule.xml XML fail], milles on treeningute andmed esitatud ühtse tunniplaani kujul. Algses failis erinevate elementide alla paigutatud andmed on nüüd tunniplaani alamelemendis kokku viidud. Sidumine on teostatud id-atribuutide abil. Tunniplaanis on ühes kohas kirjas treeningu nimi, stiil(id), koht, algusaeg, kestus, rühma suurus, instruktorid ja muu täiendav info.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&lt;br /&gt;
    xmlns:msxsl=&amp;quot;urn:schemas-microsoft-com:xslt&amp;quot; exclude-result-prefixes=&amp;quot;msxsl&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:output method=&amp;quot;xml&amp;quot; indent=&amp;quot;yes&amp;quot; cdata-section-elements=&amp;quot;Name Style Comment&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;/Trainings/Training&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:sort select=&amp;quot;Name&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:variable name=&amp;quot;SelectedTraining&amp;quot; select=&amp;quot;.&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;Schedule/ScheduleItem&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:sort select=&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;ScheduleItem&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:variable name=&amp;quot;VenueId&amp;quot; select=&amp;quot;@VenueId&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:variable name=&amp;quot;SelectedVenue&amp;quot; select=&amp;quot;/Trainings/Venues/Venue[@Id=$VenueId]&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:attribute name=&amp;quot;GroupSize&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;@GroupSize&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:value-of select=&amp;quot;@GroupSize&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:value-of select=&amp;quot;$SelectedVenue/@GroupSize&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
            &amp;lt;Venue&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$VenueId&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select=&amp;quot;$SelectedVenue&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/Venue&amp;gt;&lt;br /&gt;
            &amp;lt;Training&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$SelectedTraining/@Id&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:if test=&amp;quot;$SelectedTraining/@Licence&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:attribute name=&amp;quot;Licence&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:value-of select=&amp;quot;$SelectedTraining/@Licence&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
              &amp;lt;Name&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$SelectedTraining/Name&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/Name&amp;gt;&lt;br /&gt;
              &amp;lt;Styles&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:for-each select=&amp;quot;$SelectedTraining/Styles/Style&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:variable name=&amp;quot;StyleId&amp;quot; select=&amp;quot;@Id&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;Style&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:attribute name=&amp;quot;StyleId&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;$StyleId&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;/Trainings/Styles/Style[@Id=$StyleId]&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/Style&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
              &amp;lt;/Styles&amp;gt;&lt;br /&gt;
            &amp;lt;/Training&amp;gt;&lt;br /&gt;
            &amp;lt;Time&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:attribute name=&amp;quot;Duration&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;Time/@Duration&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select =&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/Time&amp;gt;&lt;br /&gt;
            &amp;lt;Instructors&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:for-each select=&amp;quot;Instructors/Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:variable name=&amp;quot;InstructorId&amp;quot; select=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:variable name=&amp;quot;SelectedInstructor&amp;quot; select=&amp;quot;/Trainings/Instructors/Instructor[@Id=$InstructorId]&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;Instructor&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;$InstructorId&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:attribute name=&amp;quot;Rating&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/@Rating&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                  &amp;lt;Name&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/Name&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/Name&amp;gt;&lt;br /&gt;
                &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
            &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:if test=&amp;quot;Comment&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;Comment&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;Comment&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/Comment&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
          &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XML (transformeeritud) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/schedule.xml Vaata eelneva transformatsiooni tulemust.]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Schedule&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;3&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot;&amp;gt;Hall 2&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;2&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyBalance™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-30T13:30:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;3&amp;quot; Rating=&amp;quot;4.6&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;2&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;3&amp;quot;&amp;gt;Hall 3&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;2&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyBalance™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-31T12:15:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;2&amp;quot; Rating=&amp;quot;4.7&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Mickey Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;4&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;3&amp;quot;&amp;gt;Hall 3&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;3&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyJam™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;![CDATA[Cardio]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T16:10:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;4&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Donald Duck]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;5&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;5&amp;quot;&amp;gt;Hall 5&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;3&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyJam™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;![CDATA[Cardio]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT45M&amp;quot;&amp;gt;2017-04-01T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;5&amp;quot; Rating=&amp;quot;3.9&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Goofy]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;7&amp;quot; GroupSize=&amp;quot;45&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;1&amp;quot;&amp;gt;Main Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;4&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyPump™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-23T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;6&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Schwarzenegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;6&amp;quot; GroupSize=&amp;quot;45&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;1&amp;quot;&amp;gt;Main Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;4&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyPump™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;6&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Schwarzenegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;8&amp;quot; GroupSize=&amp;quot;10&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot;&amp;gt;Area 6&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT2H&amp;quot;&amp;gt;2017-03-23T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;9&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Margaret Strengthener]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
    &amp;lt;Comment&amp;gt;&amp;lt;![CDATA[&lt;br /&gt;
          Special challenge!&lt;br /&gt;
        ]]&amp;gt;&amp;lt;/Comment&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;9&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot;&amp;gt;Area 6&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;8&amp;quot; Rating=&amp;quot;4.8&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Kayla Weightlifter]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;10&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot;&amp;gt;Area 6&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-04-05T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;8&amp;quot; Rating=&amp;quot;4.8&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Kayla Weightlifter]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;9&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Margaret Strengthener]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;11&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot;&amp;gt;Hall 2&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT55M&amp;quot;&amp;gt;2017-03-26T15:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;12&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;4&amp;quot;&amp;gt;Hall 4&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-28T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;13&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot;&amp;gt;Hall 2&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;1&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;7&amp;quot;&amp;gt;Yoga Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Yoga]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-25T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;1&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Yogafier]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;14&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;7&amp;quot;&amp;gt;Yoga Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Yoga]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT1H20M&amp;quot;&amp;gt;2017-03-28T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;1&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Yogafier]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
    &amp;lt;Comment&amp;gt;&amp;lt;![CDATA[&lt;br /&gt;
          Special class!&lt;br /&gt;
        ]]&amp;gt;&amp;lt;/Comment&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
&amp;lt;/Schedule&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus ==&lt;br /&gt;
Angular JS &#039;&#039;single page application&#039;&#039; eelnevalt kirjeldatud veebiteenusele. Sisse logimata saab kuvada spordiklubi tunniplaani, treeningstiile ja treenereid. Võimalik on liituda teenusega ja registreeruda treeningutele, samuti registreeringuid tühistada. Esialgu põhineb süsteem ühel spordiklubil.&lt;br /&gt;
&lt;br /&gt;
Autentimine on lahendatud tokenipõhiselt. Eeskujuna kasutasime näidisrakendust, mille juhend ja lähtekood on leitav [http://bitoftech.net/2014/06/09/angularjs-token-authentication-using-asp-net-web-api-2-owin-asp-net-identity/ siit].&lt;br /&gt;
&lt;br /&gt;
== Lähtekood ==&lt;br /&gt;
Eksamiks valminud veebiteenuse ja klientrakenduse kokkupakitult allalaadimiseks klõpsa [http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/solution/ProjectSPOT.zip sellel lingil].&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;NB! Võib juhtuda, et WebApi esmakordsel käivitamisel loodavasse andmebaasi kõiki andmeid (tunniplaani ja registreerimisi jooksvasse nädalasse) ei lisandu. Sellisel juhul kustutage tekkinud andmebaas ja käivitage kõigepealt samas lahenduses olev konsoolirakendus.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Retsensioonid ==&lt;br /&gt;
&lt;br /&gt;
# [https://wiki.itcollege.ee/index.php/Talk:JRT XML/XSD/XSLT retsensioon meeskonnale JRT]&lt;br /&gt;
# [Veebiteenuse retsensioon lisandub varsti]&lt;br /&gt;
# [Klientrakenduse retsensioon lisandub varsti]&lt;br /&gt;
&lt;br /&gt;
== Log ==&lt;br /&gt;
* 03.03.17 Esimene kohtumine. Idee.&lt;br /&gt;
* 17.03.17 Osa XMList valmis, osa XSLT-st valmis.&lt;br /&gt;
* 18.03.17 Teine kohtumine. XMLi täiendamine, esimene ülekäimine XSD-s.&lt;br /&gt;
* 19.03.17 XML/XSLT/XSD täiendamine ja lõpetamine.&lt;br /&gt;
* 20.03.17 XML fail, skeemifail ja stiilifailid esitatud. Projekti esimese etapi lõpp. Kevade algus.&lt;br /&gt;
* 26.03.17 XML/XSLT/XSD retsensioon esitatud.&lt;br /&gt;
* 16.04.17 Veebiteenuse analüüsi koostamine.&lt;br /&gt;
* 17.04.17 Esialgne veebiteenuse analüüs ja kavand valmis.&lt;br /&gt;
* 19.04.17 Alustasime veebiteenusega, koostegemine: Domain, DAL, Interfaces, Repostitories. Testimine konsoolis.&lt;br /&gt;
* 24.04.17 Veebiteenuse koostegemine, 2. kord: Domaini täiendamine.&lt;br /&gt;
* 29.04.17 Veebiteenuse koostegemine, 3. kord: Interfaces, Repositories, Factory + UOW. Testimine konsoolis.&lt;br /&gt;
* 01.05.17 Andmebaasi täitmine testandmetega varasemas faasis loodud XML failist.&lt;br /&gt;
* 02.05.17 Veebiteenuse koostegemine, 4. kord: alustasime BLi ja WebApi ehitamist. GET päringud.&lt;br /&gt;
* 09.05.17 Veebiteenuse koostegemine, 5. kord: lisasime Identity.&lt;br /&gt;
* 11.05.17 Veebiteenuse koostegemine, 6. kord: WebApi arendamine. POST, PUT ja DELETE päringud.&lt;br /&gt;
* 15.05.17 Veebiteenuse koostegemine, 7. kord: WebApi arendamine. Lisasime  api kontrollereid.&lt;br /&gt;
* 16.05.17 Veebiteenuse koostegemine, 8. kord: WebApi arendamine. Identity kontroll Fiddleri ja Postmaniga.&lt;br /&gt;
* 20.05.17 Klientrakenduse koostegemine, 1. kord. Testklient.&lt;br /&gt;
* 25.05.17 Klientrakenduse koostegemine, 2. kord. Klientrakenduse arendamine.&lt;br /&gt;
* 01.06.17 Klientrakenduse koostegemine, 3. kord. Klientrakenduse arendamine. Angular JS.&lt;br /&gt;
* 03.06.17 - 11.06.17 Klientrakenduse arendamine. Tokenipõhine autentimine. Veebiteenuse viimistlemine.&lt;br /&gt;
* 11.06.17 Lõpptähtaeg. Projekti esitlemine eksamil.&lt;br /&gt;
* 12.06.17 Teiste lahenduste retsenseerimine.&lt;/div&gt;</summary>
		<author><name>Otiks</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Team_SPOT&amp;diff=123476</id>
		<title>Team SPOT</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Team_SPOT&amp;diff=123476"/>
		<updated>2017-06-12T02:28:41Z</updated>

		<summary type="html">&lt;p&gt;Otiks: /* Lähtekood */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://wiki.itcollege.ee/index.php/Kodut%C3%B6%C3%B6_aines_%22V%C3%B5rgurakendused_II:_hajuss%C3%BCsteemide_ehitamine%22_2017 Kodutöö aines &amp;quot;Võrgurakendused II: hajussüsteemide ehitamine&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
[https://projectspot.visualstudio.com/PROJECTSPOT Projekti kodu (avaneb ainult liikmetele)]&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==Liikmed==&lt;br /&gt;
*Sigrid Pachel&lt;br /&gt;
*Oliver Tiks&lt;br /&gt;
&lt;br /&gt;
==Idee==&lt;br /&gt;
Mõttes on luua spordiklubi(de) veebiteenus ja klientrakendus, mis võimaldaks saada infot pakutavate treeningute kohta, sisestada ja kuvada tunniplaani andmeid, registreerida osalejaid tundidesse ning teha muid asjakohaseid tegevusi nii klubi(de) personalil, liikmetel kui ka juhukasutajatel.&lt;br /&gt;
&lt;br /&gt;
==Veebiteenuse analüüs==&lt;br /&gt;
SPOTi veebiteenus võimaldab saada infot erinevate klubide treeningute kohta ja end neisse registreerida. Kasutaja saab teavet, kus ja millal treeningud toimuvad (tunniplaan), mida treeningus täpsemalt tehakse, mis stiiliga on tegemist, kes on treener, kui palju üks kord maksab jms info. Kasutajakontoga liikmel on võimalik end registreerida soovitud tundi ja hallata oma registreeringuid (muuta, tühistada).&lt;br /&gt;
&lt;br /&gt;
Spordiklubide infot haldavad süsteemi administraatorid, kes saavad lisada, muuta ja kustutada kõike sprodiklubiga seonduvat. Erinevaid treeninguid ja nendega seotud konkreetset infot saavad lisada ja hallata treenerid või spordiklubi esindajad.&lt;br /&gt;
&lt;br /&gt;
Projekti realiseerimiseks kasutame REST arhitektuuri ja ASP.NET MVC Web API tehnoloogiat.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Üldine plaan:&#039;&#039;&#039;&lt;br /&gt;
* esialgu üks kett (laienemise võimalusega)&lt;br /&gt;
* mitu klubi (asukoht, saalid-treeningualad, võimalikud lisatingimused)&lt;br /&gt;
* treeningute info (stiilid ehk kontseptid, litsentsid, …)&lt;br /&gt;
* tunniplaan (aeg, koht, instruktorid, max osalejate arv, ühe korra hind)&lt;br /&gt;
* registratuur (treeningutest osavõtjad)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kasutajad (rollid):&#039;&#039;&#039;&lt;br /&gt;
* administraatorid (saavad teha muudatusi)&lt;br /&gt;
* treenerid (info kvalifikatsiooni, litsentside kohta, õigus treeninguid lisada) &lt;br /&gt;
* liikmed (saavad treeningutele registreeruda)&lt;br /&gt;
* ülejäänud (näevad klubide ja treeningute infot ning tunniplaani)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Peaks olema:&#039;&#039;&#039;&lt;br /&gt;
* kasutajate loomine&lt;br /&gt;
* kasutajate tuvastamine ja haldamine&lt;br /&gt;
* kasutajate ja kasutusstatistika logimine&lt;br /&gt;
* teenuse poole pöördumiste arvu piiramine ja piirangute haldamine&lt;br /&gt;
* klubide, treenerite ja treeningute info väljastamine&lt;br /&gt;
* tunniplaani info väljastamine&lt;br /&gt;
* treeningutesse registreerimine&lt;br /&gt;
* registreeringu tühistamine&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Võiks olla:&#039;&#039;&#039;&lt;br /&gt;
* klubide, treenerite, treeningute lisamine ja muutmine&lt;br /&gt;
* tunniplaanis treeningute tühistamine&lt;br /&gt;
* sisestatud andmete kustutamine (pehmelt)&lt;br /&gt;
* rollide-õiguste määramine (admin)&lt;br /&gt;
* asukohad mitmes riigis&lt;br /&gt;
* kliendipaketid, arveldus&lt;br /&gt;
* kontaktide tsentraliseeritud haldus&lt;br /&gt;
* sisselogimine läbi Google’i, Facebooki vmt teenuse&lt;br /&gt;
&lt;br /&gt;
===Andmebaasi skeem (lihtsustatud)===&lt;br /&gt;
&lt;br /&gt;
[[File:SPOTService ERD.JPG|border|SPOT Service ERD]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Märkus: olemite atribuutidest on välja toodud ainult peamised.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====Tabelite kirjeldused====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kasutajahaldus*:&#039;&#039;&#039;&lt;br /&gt;
* User - kasutajate andmed&lt;br /&gt;
* Role - rollid, millega määratakse kasutajate õigused (&amp;quot;Admin&amp;quot;, &amp;quot;Trainer&amp;quot;, ...)&lt;br /&gt;
* UserRole - kasutajate sidumine rolli(de)ga&lt;br /&gt;
* UserLogin - muu teenuse kaudu sisselogimiseks&lt;br /&gt;
* UserClaim - muu teenuse kaudu sisselogimiseks&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;&#039;&#039;Kasutajahalduse süsteem toetub Asp.Net Identity valmislahendusele, mida on täiendanud A. Käver.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Klubid:&#039;&#039;&#039;&lt;br /&gt;
* Chain (optional) - spordiklubikettide info&lt;br /&gt;
* Location - spordiklubi/-rajatise asukoht linna/asula täpsusega&lt;br /&gt;
* Facility - spordiklubi/-rajatise andmed, seotud asukohaga ja vajadusel ketiga.&lt;br /&gt;
* Venue - spordiklubis/-rajatises kasutatavad saalid ja muud treeningualad&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Treeningud:&#039;&#039;&#039;&lt;br /&gt;
* Concept (Style) - treeningustiilid ehk kontseptid&lt;br /&gt;
* Licenser (optional) - treeninguliikide litsentsid (kui on)&lt;br /&gt;
* Training - treeninguliikide andmed, seotud stiili ja vajadusel litsentsiga&lt;br /&gt;
* Trainer (User (role: Trainer) + Training) - treeninguliikide sidumine treeneritega&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tunniplaan:&#039;&#039;&#039;&lt;br /&gt;
* ScheduleItem - treeningud tunniplaanis&lt;br /&gt;
* Instructor (User (role: Trainer) + ScheduleItem) - tundide juhendajad (võib olla mitu)&lt;br /&gt;
* Registration (ScheduleItem + User (role: any)) - tundidesse tehtud registreeringud&lt;br /&gt;
&lt;br /&gt;
== XML / XSD / XSLT==&lt;br /&gt;
Projekti esimeses etapis sai loodud XML andmefail, mille ülesehitus on paika pandud XSD skeemifailis. Lisaks on olemas kaks stiilifaili: esimene neist transformeerib andmed HTML-kujule, et kuvada infot  veebilehel, teine tekitab samade andmete esitamiseks uue struktuuriga XML faili.&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/ProjectSPOT_ScheduleXml.zip Lae failid alla.] &lt;br /&gt;
&lt;br /&gt;
=== XML ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Fail sisaldab andmeid ühes spordiklubis pakutavate treeningute kohta. Andmed on esitatud treeninguliikide kaupa, mille juurde on lisatud ka vastava treeninguliigi tunniplaan. Treeninguliikidel on nimi ja kirjeldus ning vajadusel ära märgitud ka litsents. Failis on eraldi välja toodud treeningustiilid, instruktorid ja ruumid, kus treeningud toimuvad. Iga treeninguliik kuulub ühe või mitme stiili alla. Instruktoritel on tagasiside põhjal saadud hinne. Treeninguruumidel on vaikimisi määratud mahutavus. Tunniplaanis on ära toodud treeningu koht, algusaeg ja kestus ning instruktorid. Vajadusel saab eraldi määrata ka treeningurühma suuruse, kui see erineb tavalisest ruumi mahutavusest. Ka on võimalik treeningutunnile lisada kommentaar. Erinevate elementide andmed on omavahel seotud id-atribuutidega.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;?xml-stylesheet type=&amp;quot;text/xsl&amp;quot; href=&amp;quot;trainingsToHtml.xslt&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Trainings&amp;gt;&lt;br /&gt;
  &amp;lt;Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;![CDATA[Cardio]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
  &amp;lt;/Styles&amp;gt;&lt;br /&gt;
  &amp;lt;Instructors&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;1&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Yogafier]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;2&amp;quot; Rating=&amp;quot;4.7&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Mickey Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;3&amp;quot; Rating=&amp;quot;4.6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;4&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Donald Duck]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;5&amp;quot; Rating=&amp;quot;3.9&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Goofy]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;6&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Schwarzenegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;8&amp;quot; Rating=&amp;quot;4.8&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Kayla Weightlifter]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;9&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Margaret Strengthener]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
  &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;Venues&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;1&amp;quot; GroupSize=&amp;quot;45&amp;quot;&amp;gt;&amp;lt;![CDATA[Main Hall]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 2]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;3&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 3]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;4&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 4]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;5&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 5]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&amp;lt;![CDATA[Area 6]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;7&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&amp;lt;![CDATA[Yoga Hall]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
  &amp;lt;/Venues&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Yoga]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[Yoga is a group of physical, mental, and spiritual practices or disciplines which originated in ancient India. ]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;1&amp;quot; VenueId=&amp;quot;7&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-25T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;14&amp;quot; VenueId=&amp;quot;7&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT1H20M&amp;quot;&amp;gt;2017-03-28T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Comment&amp;gt;&lt;br /&gt;
          &amp;lt;![CDATA[Special class!]]&amp;gt;&lt;br /&gt;
        &amp;lt;/Comment&amp;gt; &lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/Nvlxn0EnmbM&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;  &lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;2&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyBalance™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[BODYBALANCE™ is the Yoga, Tai Chi, Pilates workout that builds flexibility and strength and leaves you feeling centered and calm. Based on a carefully structured series of stretches, moves and poses to music it creates a holistic workout that brings the body into a state of harmony and balance. This class will heighten your flexibility and inner strength creating a strong supple body from the inside out. Burn on average 390cals per hour.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;2&amp;quot; VenueId=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-31T12:15:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;3&amp;quot; VenueId=&amp;quot;2&amp;quot; &amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-30T13:30:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;3&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/jJxA6vBjUqY&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;3&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyJam™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;4&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[The Body Jam program is an addictive fusion of the latest dance styles to the hottest new sounds. This class isn’t just for dancers, it’s for everyone because the emphasis is put on not only having fun but also breaking a sweat. So grab a friend, get front and centre … you bring the attitude and we’ll bring the moves!]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;4&amp;quot;  VenueId=&amp;quot;3&amp;quot; &amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T16:10:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;4&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;5&amp;quot; VenueId=&amp;quot;5&amp;quot; &amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT45M&amp;quot;&amp;gt;2017-04-01T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;5&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/8PTXyg9si_4&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;4&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyPump™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[BodyPump classes are 59 minutes long and contain eight separate muscle-group specific songs or &amp;quot;tracks&amp;quot; along with an opening warm up track and closing cool-down track. There are also 45-minute and 30-minute class formats. The classes are performed to music using free weights-plates, barbells and an aerobic step. Participants choose their weights based on the exercise and their personal goals. Major muscle groups are worked via series of compound and isolation-based exercises including squats, presses, dead lifts. The focus is towards muscle endurance by moving light weights at high repetitions, what Les Mills calls the Rep Effect.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;3&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;6&amp;quot; VenueId=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;6&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;7&amp;quot; VenueId=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-23T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;6&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/zU_0XrdO3wo&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[CoreStrenght is a very hard workout! Not for beginners.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;3&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;8&amp;quot; VenueId=&amp;quot;6&amp;quot; GroupSize=&amp;quot;10&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT2H&amp;quot;&amp;gt;2017-03-23T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;9&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Comment&amp;gt;&lt;br /&gt;
          &amp;lt;![CDATA[Special challenge!]]&amp;gt;&lt;br /&gt;
        &amp;lt;/Comment&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;9&amp;quot; VenueId=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;8&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;10&amp;quot; VenueId=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-04-05T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;8&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;9&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/ZxTVmpvyUt8&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[Zumba involves dance and aerobic movements performed to energetic music. The choreography incorporates hip-hop, soca, samba, salsa, merengue and mambo. Squats and lunges are also included.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;4&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;11&amp;quot; VenueId=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT55M&amp;quot;&amp;gt;2017-03-26T15:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;12&amp;quot; VenueId=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-28T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;13&amp;quot; VenueId=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/-ZB6XIkfxnQ&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
&amp;lt;/Trainings&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSD ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Skeemifail kontrollib eelnevas andmefailis esitatud andmete vastavust kokkulepitud formaadile, samuti õigete andmetüüpide kasutamist. Alamelemendi id-atribuudi väärtus peab olema iga elemendirühma lõikes unikaalne. Kohustuslike elementide ja atribuutide kõrval on ka mõned (nt kommentaar), mille olemasolu pole alati tarvilik. Teatud puhkudel on piiratud maksimaalset elementide arvu (nt treeningutunni algusaeg). Faili üldine struktuur on kindel, aga alati pole alamelementide järjekord oluline (nt treeninguliigi puhul).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xs:schema attributeFormDefault=&amp;quot;unqualified&amp;quot; elementFormDefault=&amp;quot;qualified&amp;quot; xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xs:element name=&amp;quot;Trainings&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Styles&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Style&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
          &amp;lt;xs:unique name=&amp;quot;UniqueStyleId&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xs:selector xpath=&amp;quot;Style&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Instructors&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;Name&amp;quot; type=&amp;quot;xs:string&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:attribute name=&amp;quot;Rating&amp;quot; type=&amp;quot;xs:decimal&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
          &amp;lt;xs:unique name=&amp;quot;UniqueInstructorId&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xs:selector xpath=&amp;quot;Instructor&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Venues&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Venue&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:attribute name=&amp;quot;GroupSize&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
          &amp;lt;xs:unique name=&amp;quot;UniqueVenueId&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xs:selector xpath=&amp;quot;Venue&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Training&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:all&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Description&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Styles&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Style&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Schedule&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;ScheduleItem&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:all&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element  maxOccurs=&amp;quot;1&amp;quot; name=&amp;quot;Time&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:extension base=&amp;quot;xs:dateTime&amp;quot;&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:attribute name=&amp;quot;Duration&amp;quot; type=&amp;quot;xs:duration&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element name=&amp;quot;Instructors&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                    &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                                      &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                                        &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                                      &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                                    &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                                  &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; name=&amp;quot;Comment&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:all&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;VenueId&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;GroupSize&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;optional&amp;quot; /&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;VideoUrl&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:all&amp;gt;&lt;br /&gt;
            &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xs:attribute name=&amp;quot;Licence&amp;quot; type=&amp;quot;xs:string&amp;quot; use=&amp;quot;optional&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
    &amp;lt;xs:unique name=&amp;quot;UniqueTrainingId&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xs:selector xpath=&amp;quot;Training&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
    &amp;lt;xs:unique name=&amp;quot;UniqueScheduleItemId&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xs:selector xpath=&amp;quot;Training/Schedule/ScheduleItem&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSLT (html) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Selles transformatsioonifailis on kirjeldatud XML failis olevate andmete [http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/trainings.xml  kuvamise viis veebilehel]. Treeninguliigid on jaotatud stiiliblokkidesse (mõni treening kuulub mitme stiili alla). Iga treeninguliigi all on tabeli kujul esitatud tunniplaan ning lisatud näidisvideo ja kirjeldus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot; xmlns:msxsl=&amp;quot;urn:schemas-microsoft-com:xslt&amp;quot; exclude-result-prefixes=&amp;quot;msxsl&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:output method=&amp;quot;html&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;html&amp;gt;&lt;br /&gt;
      &amp;lt;head&amp;gt;&lt;br /&gt;
        &amp;lt;title&amp;gt;SuperSportsClub - Trainings&amp;lt;/title&amp;gt;&lt;br /&gt;
        &amp;lt;style&amp;gt;&lt;br /&gt;
          body {&lt;br /&gt;
          background:BurlyWood;&lt;br /&gt;
          text-align: center;&lt;br /&gt;
          }&lt;br /&gt;
          .section {&lt;br /&gt;
          text-align:left;&lt;br /&gt;
          width:1000px;&lt;br /&gt;
          padding:20px;&lt;br /&gt;
          background:Chocolate;&lt;br /&gt;
          margin: auto;&lt;br /&gt;
          }&lt;br /&gt;
          table, th, td, .section {&lt;br /&gt;
          border: 1px solid black;&lt;br /&gt;
          }&lt;br /&gt;
          th {&lt;br /&gt;
          text-align:left;&lt;br /&gt;
          padding-left: 10px;&lt;br /&gt;
          padding-right: 10px;&lt;br /&gt;
          }&lt;br /&gt;
          td {&lt;br /&gt;
          text-align:center;&lt;br /&gt;
          }&lt;br /&gt;
          p {&lt;br /&gt;
          text-align:justify;&lt;br /&gt;
          }&lt;br /&gt;
          .description {&lt;br /&gt;
          vertical-align:top; &lt;br /&gt;
          padding:10px;&lt;br /&gt;
          }&lt;br /&gt;
        &amp;lt;/style&amp;gt;&lt;br /&gt;
      &amp;lt;/head&amp;gt;&lt;br /&gt;
      &amp;lt;body&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;Trainings at SuperSportsClub&amp;lt;/h1&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;/Trainings/Styles/Style&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:sort select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:variable select=&amp;quot;.&amp;quot; name=&amp;quot;SelectedStyle&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;section&amp;quot; &amp;gt;&lt;br /&gt;
            &amp;lt;h2&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select=&amp;quot;$SelectedStyle&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/h2&amp;gt;&lt;br /&gt;
            &amp;lt;ul&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:for-each select=&amp;quot;/Trainings/Training&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:sort select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:variable name=&amp;quot;Training&amp;quot; select=&amp;quot;.&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:if test=&amp;quot;Styles/Style/@Id = $SelectedStyle/@Id&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;&lt;br /&gt;
                    &amp;lt;h3&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;$Training/Name&amp;quot; /&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:if test=&amp;quot;$Training/@Licence&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:text&amp;gt; (&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:value-of select=&amp;quot;$Training/@Licence&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:text&amp;gt;)&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
                    &amp;lt;/h3&amp;gt;&lt;br /&gt;
                    &amp;lt;table&amp;gt;&lt;br /&gt;
                      &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                      &amp;lt;/tr&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:for-each select=&amp;quot;$Training/Schedule/ScheduleItem&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:sort select=&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:variable name=&amp;quot;StartTime&amp;quot; select=&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:variable name=&amp;quot;Duration&amp;quot; select=&amp;quot;$StartTime/@Duration&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;tr&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;150&amp;quot; &amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;concat(&lt;br /&gt;
                                            substring($StartTime, 9, 2), &lt;br /&gt;
                                            &#039;.&#039;, &lt;br /&gt;
                                            substring($StartTime, 6, 2), &lt;br /&gt;
                                            &#039;.&#039;, &lt;br /&gt;
                                            substring($StartTime, 1, 4),&lt;br /&gt;
                                            &#039; &#039;,&lt;br /&gt;
                                            substring($StartTime, 12, 2),&lt;br /&gt;
                                            &#039;:&#039;,&lt;br /&gt;
                                            substring($StartTime, 15, 2))&lt;br /&gt;
                                            &amp;quot; /&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:if test=&amp;quot;Comment&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;br/&amp;gt;&lt;br /&gt;
                              &amp;lt;div style=&amp;quot;color:Green&amp;quot;&amp;gt;&lt;br /&gt;
                                &amp;lt;xsl:value-of select=&amp;quot;Comment&amp;quot;/&amp;gt;&lt;br /&gt;
                              &amp;lt;/div&amp;gt;&lt;br /&gt;
                            &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;substring($Duration, 3, 6)&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:variable name=&amp;quot;VenueId&amp;quot; select=&amp;quot;@VenueId&amp;quot;/&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;/Trainings/Venues/Venue[@Id=$VenueId]&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:for-each select=&amp;quot;Instructors/Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:variable name=&amp;quot;InstructorId&amp;quot; select=&amp;quot;@Id&amp;quot;&amp;gt;&amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:variable name=&amp;quot;SelectedInstructor&amp;quot; select=&amp;quot;/Trainings/Instructors/Instructor[@Id=$InstructorId]&amp;quot; /&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/Name&amp;quot;/&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:text&amp;gt; (&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/@Rating&amp;quot; /&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:text&amp;gt;)&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                              &amp;lt;br/&amp;gt;&lt;br /&gt;
                            &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;/tr&amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
                    &amp;lt;/table&amp;gt;&lt;br /&gt;
                    &amp;lt;br/&amp;gt;&lt;br /&gt;
                    &amp;lt;table&amp;gt;&lt;br /&gt;
                      &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                          &amp;lt;xsl:variable name=&amp;quot;VideoUrl&amp;quot; select=&amp;quot;$Training/VideoUrl&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;{$VideoUrl}&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                          &amp;lt;p&amp;gt;&lt;br /&gt;
                            &amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&lt;br /&gt;
                          &amp;lt;/p&amp;gt;&lt;br /&gt;
                          &amp;lt;p&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;$Training/Description&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                      &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;/table&amp;gt;&lt;br /&gt;
                  &amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
            &amp;lt;/ul&amp;gt;&lt;br /&gt;
          &amp;lt;/div&amp;gt;&lt;br /&gt;
          &amp;lt;br/&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
      &amp;lt;/body&amp;gt;&lt;br /&gt;
    &amp;lt;/html&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== HTML (transformeeritud) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/trainings.html Vaata eelneva transformatsiooni tulemust.]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;META http-equiv=&amp;quot;Content-Type&amp;quot; content=&amp;quot;text/html; charset=utf-8&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;SuperSportsClub - Trainings&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;style&amp;gt;&lt;br /&gt;
        body {&lt;br /&gt;
            background: BurlyWood;&lt;br /&gt;
            text-align: center;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        .section {&lt;br /&gt;
            text-align: left;&lt;br /&gt;
            width: 1000px;&lt;br /&gt;
            padding: 20px;&lt;br /&gt;
            background: Chocolate;&lt;br /&gt;
            margin: auto;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        table, th, td, .section {&lt;br /&gt;
            border: 1px solid black;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        th {&lt;br /&gt;
            text-align: left;&lt;br /&gt;
            padding-left: 10px;&lt;br /&gt;
            padding-right: 10px;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        td {&lt;br /&gt;
            text-align: center;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        p {&lt;br /&gt;
            text-align: justify;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        .description {&lt;br /&gt;
            vertical-align: top;&lt;br /&gt;
            padding: 10px;&lt;br /&gt;
        }&lt;br /&gt;
    &amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
    &amp;lt;h1&amp;gt;Trainings at SuperSportsClub&amp;lt;/h1&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Body&amp;amp;amp;Mind&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyBalance™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 13:30&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;1H15M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 2&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Minnie Mouse (4.6)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;31.03.2017 12:15&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;1H15M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 3&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Mickey Mouse (4.7)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/jJxA6vBjUqY&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                BODYBALANCE™ is the Yoga, Tai Chi, Pilates workout that builds flexibility and strength and leaves you feeling centered and calm. Based on a carefully structured series of stretches, moves and poses to music it creates a holistic workout that brings the body into a state of harmony and balance. This class will heighten your flexibility and inner strength creating a strong supple body from the inside out. Burn on average 390cals per hour.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;Yoga&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;25.03.2017 14:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Yoga Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Minnie Yogafier (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
                            28.03.2017 14:00&amp;lt;br&amp;gt;&amp;lt;div style=&amp;quot;color:Green&amp;quot;&amp;gt;&lt;br /&gt;
                                Special class!&lt;br /&gt;
                            &amp;lt;/div&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;1H20M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Yoga Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Minnie Yogafier (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/Nvlxn0EnmbM&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                Yoga is a group of physical, mental, and spiritual practices or disciplines which originated in ancient India.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Cardio&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyJam™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 16:10&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 3&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Donald Duck (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;01.04.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;45M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 5&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Goofy (3.9)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/8PTXyg9si_4&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                The Body Jam program is an addictive fusion of the latest dance styles to the hottest new sounds. This class isn’t just for dancers, it’s for everyone because the emphasis is put on not only having fun but also breaking a sweat. So grab a friend, get front and centre … you bring the attitude and we’ll bring the moves!&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Dance&amp;amp;amp;Fun&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyJam™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 16:10&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 3&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Donald Duck (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;01.04.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;45M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 5&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Goofy (3.9)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/8PTXyg9si_4&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                The Body Jam program is an addictive fusion of the latest dance styles to the hottest new sounds. This class isn’t just for dancers, it’s for everyone because the emphasis is put on not only having fun but also breaking a sweat. So grab a friend, get front and centre … you bring the attitude and we’ll bring the moves!&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;Zumba®&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;26.03.2017 15:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;55M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 2&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Zumbaschnegger (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;28.03.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 4&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Zumbaschnegger (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 2&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Zumbaschnegger (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/-ZB6XIkfxnQ&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                Zumba involves dance and aerobic movements performed to energetic music. The choreography incorporates hip-hop, soca, samba, salsa, merengue and mambo. Squats and lunges are also included.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Strength&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyPump™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;23.03.2017 13:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Main Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Schwarzenegger (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 13:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Main Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Schwarzenegger (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/zU_0XrdO3wo&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                BodyPump classes are 59 minutes long and contain eight separate muscle-group specific songs or &amp;quot;tracks&amp;quot; along with an opening warm up track and closing cool-down track. There are also 45-minute and 30-minute class formats. The classes are performed to music using free weights-plates, barbells and an aerobic step. Participants choose their weights based on the exercise and their personal goals. Major muscle groups are worked via series of compound and isolation-based exercises including squats, presses, dead lifts. The focus is towards muscle endurance by moving light weights at high repetitions, what Les Mills calls the Rep Effect.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;CoreStrength&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
                            23.03.2017 12:00&amp;lt;br&amp;gt;&amp;lt;div style=&amp;quot;color:Green&amp;quot;&amp;gt;&lt;br /&gt;
                                Special challenge!&lt;br /&gt;
                            &amp;lt;/div&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;2H&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Area 6&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Margaret Strengthener (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Area 6&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Kayla Weightlifter (4.8)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;05.04.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Area 6&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Kayla Weightlifter (4.8)&amp;lt;br&amp;gt;Margaret Strengthener (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/ZxTVmpvyUt8&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                CoreStrenght is a very hard workout! Not for beginners.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSLT (xml) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Selle transformatsiooniga luuakse uus [http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/schedule.xml XML fail], milles on treeningute andmed esitatud ühtse tunniplaani kujul. Algses failis erinevate elementide alla paigutatud andmed on nüüd tunniplaani alamelemendis kokku viidud. Sidumine on teostatud id-atribuutide abil. Tunniplaanis on ühes kohas kirjas treeningu nimi, stiil(id), koht, algusaeg, kestus, rühma suurus, instruktorid ja muu täiendav info.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&lt;br /&gt;
    xmlns:msxsl=&amp;quot;urn:schemas-microsoft-com:xslt&amp;quot; exclude-result-prefixes=&amp;quot;msxsl&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:output method=&amp;quot;xml&amp;quot; indent=&amp;quot;yes&amp;quot; cdata-section-elements=&amp;quot;Name Style Comment&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;/Trainings/Training&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:sort select=&amp;quot;Name&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:variable name=&amp;quot;SelectedTraining&amp;quot; select=&amp;quot;.&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;Schedule/ScheduleItem&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:sort select=&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;ScheduleItem&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:variable name=&amp;quot;VenueId&amp;quot; select=&amp;quot;@VenueId&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:variable name=&amp;quot;SelectedVenue&amp;quot; select=&amp;quot;/Trainings/Venues/Venue[@Id=$VenueId]&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:attribute name=&amp;quot;GroupSize&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;@GroupSize&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:value-of select=&amp;quot;@GroupSize&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:value-of select=&amp;quot;$SelectedVenue/@GroupSize&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
            &amp;lt;Venue&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$VenueId&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select=&amp;quot;$SelectedVenue&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/Venue&amp;gt;&lt;br /&gt;
            &amp;lt;Training&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$SelectedTraining/@Id&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:if test=&amp;quot;$SelectedTraining/@Licence&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:attribute name=&amp;quot;Licence&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:value-of select=&amp;quot;$SelectedTraining/@Licence&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
              &amp;lt;Name&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$SelectedTraining/Name&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/Name&amp;gt;&lt;br /&gt;
              &amp;lt;Styles&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:for-each select=&amp;quot;$SelectedTraining/Styles/Style&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:variable name=&amp;quot;StyleId&amp;quot; select=&amp;quot;@Id&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;Style&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:attribute name=&amp;quot;StyleId&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;$StyleId&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;/Trainings/Styles/Style[@Id=$StyleId]&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/Style&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
              &amp;lt;/Styles&amp;gt;&lt;br /&gt;
            &amp;lt;/Training&amp;gt;&lt;br /&gt;
            &amp;lt;Time&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:attribute name=&amp;quot;Duration&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;Time/@Duration&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select =&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/Time&amp;gt;&lt;br /&gt;
            &amp;lt;Instructors&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:for-each select=&amp;quot;Instructors/Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:variable name=&amp;quot;InstructorId&amp;quot; select=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:variable name=&amp;quot;SelectedInstructor&amp;quot; select=&amp;quot;/Trainings/Instructors/Instructor[@Id=$InstructorId]&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;Instructor&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;$InstructorId&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:attribute name=&amp;quot;Rating&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/@Rating&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                  &amp;lt;Name&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/Name&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/Name&amp;gt;&lt;br /&gt;
                &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
            &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:if test=&amp;quot;Comment&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;Comment&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;Comment&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/Comment&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
          &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XML (transformeeritud) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/schedule.xml Vaata eelneva transformatsiooni tulemust.]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Schedule&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;3&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot;&amp;gt;Hall 2&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;2&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyBalance™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-30T13:30:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;3&amp;quot; Rating=&amp;quot;4.6&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;2&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;3&amp;quot;&amp;gt;Hall 3&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;2&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyBalance™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-31T12:15:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;2&amp;quot; Rating=&amp;quot;4.7&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Mickey Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;4&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;3&amp;quot;&amp;gt;Hall 3&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;3&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyJam™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;![CDATA[Cardio]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T16:10:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;4&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Donald Duck]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;5&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;5&amp;quot;&amp;gt;Hall 5&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;3&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyJam™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;![CDATA[Cardio]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT45M&amp;quot;&amp;gt;2017-04-01T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;5&amp;quot; Rating=&amp;quot;3.9&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Goofy]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;7&amp;quot; GroupSize=&amp;quot;45&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;1&amp;quot;&amp;gt;Main Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;4&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyPump™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-23T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;6&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Schwarzenegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;6&amp;quot; GroupSize=&amp;quot;45&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;1&amp;quot;&amp;gt;Main Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;4&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyPump™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;6&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Schwarzenegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;8&amp;quot; GroupSize=&amp;quot;10&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot;&amp;gt;Area 6&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT2H&amp;quot;&amp;gt;2017-03-23T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;9&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Margaret Strengthener]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
    &amp;lt;Comment&amp;gt;&amp;lt;![CDATA[&lt;br /&gt;
          Special challenge!&lt;br /&gt;
        ]]&amp;gt;&amp;lt;/Comment&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;9&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot;&amp;gt;Area 6&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;8&amp;quot; Rating=&amp;quot;4.8&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Kayla Weightlifter]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;10&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot;&amp;gt;Area 6&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-04-05T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;8&amp;quot; Rating=&amp;quot;4.8&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Kayla Weightlifter]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;9&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Margaret Strengthener]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;11&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot;&amp;gt;Hall 2&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT55M&amp;quot;&amp;gt;2017-03-26T15:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;12&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;4&amp;quot;&amp;gt;Hall 4&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-28T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;13&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot;&amp;gt;Hall 2&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;1&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;7&amp;quot;&amp;gt;Yoga Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Yoga]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-25T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;1&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Yogafier]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;14&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;7&amp;quot;&amp;gt;Yoga Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Yoga]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT1H20M&amp;quot;&amp;gt;2017-03-28T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;1&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Yogafier]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
    &amp;lt;Comment&amp;gt;&amp;lt;![CDATA[&lt;br /&gt;
          Special class!&lt;br /&gt;
        ]]&amp;gt;&amp;lt;/Comment&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
&amp;lt;/Schedule&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus ==&lt;br /&gt;
Angular JS &#039;&#039;single page application&#039;&#039; eelnevalt kirjeldatud veebiteenusele. Sisse logimata saab kuvada spordiklubi tunniplaani, treeningstiile ja treenereid. Võimalik on liituda teenusega ja registreeruda treeningutele, samuti registreeringuid tühistada. &lt;br /&gt;
&lt;br /&gt;
Autentimine on lahendatud tokenipõhiselt. Eeskujuna kasutasime näidisrakendust, mille juhend ja lähtekood on leitav [http://bitoftech.net/2014/06/09/angularjs-token-authentication-using-asp-net-web-api-2-owin-asp-net-identity/ siit].&lt;br /&gt;
&lt;br /&gt;
== Lähtekood ==&lt;br /&gt;
Eksamiks valminud veebiteenuse ja klientrakenduse kokkupakitult allalaadimiseks klõpsa [http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/solution/ProjectSPOT.zip sellel lingil].&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;NB! Võib juhtuda, et WebApi esmakordsel käivitamisel loodavasse andmebaasi kõiki andmeid (tunniplaani ja registreerimisi jooksvasse nädalasse) ei lisandu. Sellisel juhul kustutage tekkinud andmebaas ja käivitage kõigepealt samas lahenduses olev konsoolirakendus.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Retsensioonid ==&lt;br /&gt;
&lt;br /&gt;
# [https://wiki.itcollege.ee/index.php/Talk:JRT XML/XSD/XSLT retsensioon meeskonnale JRT]&lt;br /&gt;
# [Veebiteenuse retsensioon lisandub varsti]&lt;br /&gt;
# [Klientrakenduse retsensioon lisandub varsti]&lt;br /&gt;
&lt;br /&gt;
== Log ==&lt;br /&gt;
* 03.03.17 Esimene kohtumine. Idee.&lt;br /&gt;
* 17.03.17 Osa XMList valmis, osa XSLT-st valmis.&lt;br /&gt;
* 18.03.17 Teine kohtumine. XMLi täiendamine, esimene ülekäimine XSD-s.&lt;br /&gt;
* 19.03.17 XML/XSLT/XSD täiendamine ja lõpetamine.&lt;br /&gt;
* 20.03.17 XML fail, skeemifail ja stiilifailid esitatud. Projekti esimese etapi lõpp. Kevade algus.&lt;br /&gt;
* 26.03.17 XML/XSLT/XSD retsensioon esitatud.&lt;br /&gt;
* 16.04.17 Veebiteenuse analüüsi koostamine.&lt;br /&gt;
* 17.04.17 Esialgne veebiteenuse analüüs ja kavand valmis.&lt;br /&gt;
* 19.04.17 Alustasime veebiteenusega, koostegemine: Domain, DAL, Interfaces, Repostitories. Testimine konsoolis.&lt;br /&gt;
* 24.04.17 Veebiteenuse koostegemine, 2. kord: Domaini täiendamine.&lt;br /&gt;
* 29.04.17 Veebiteenuse koostegemine, 3. kord: Interfaces, Repositories, Factory + UOW. Testimine konsoolis.&lt;br /&gt;
* 01.05.17 Andmebaasi täitmine testandmetega varasemas faasis loodud XML failist.&lt;br /&gt;
* 02.05.17 Veebiteenuse koostegemine, 4. kord: alustasime BLi ja WebApi ehitamist. GET päringud.&lt;br /&gt;
* 09.05.17 Veebiteenuse koostegemine, 5. kord: lisasime Identity.&lt;br /&gt;
* 11.05.17 Veebiteenuse koostegemine, 6. kord: WebApi arendamine. POST, PUT ja DELETE päringud.&lt;br /&gt;
* 15.05.17 Veebiteenuse koostegemine, 7. kord: WebApi arendamine. Lisasime  api kontrollereid.&lt;br /&gt;
* 16.05.17 Veebiteenuse koostegemine, 8. kord: WebApi arendamine. Identity kontroll Fiddleri ja Postmaniga.&lt;br /&gt;
* 20.05.17 Klientrakenduse koostegemine, 1. kord. Testklient.&lt;br /&gt;
* 25.05.17 Klientrakenduse koostegemine, 2. kord. Klientrakenduse arendamine.&lt;br /&gt;
* 01.06.17 Klientrakenduse koostegemine, 3. kord. Klientrakenduse arendamine. Angular JS.&lt;br /&gt;
* 03.06.17 - 11.06.17 Klientrakenduse arendamine. Tokenipõhine autentimine. Veebiteenuse viimistlemine.&lt;br /&gt;
* 11.06.17 Lõpptähtaeg. Projekti esitlemine eksamil.&lt;br /&gt;
* 12.06.17 Teiste lahenduste retsenseerimine.&lt;/div&gt;</summary>
		<author><name>Otiks</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Team_SPOT&amp;diff=123475</id>
		<title>Team SPOT</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Team_SPOT&amp;diff=123475"/>
		<updated>2017-06-12T02:27:23Z</updated>

		<summary type="html">&lt;p&gt;Otiks: /* Lähtekood */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://wiki.itcollege.ee/index.php/Kodut%C3%B6%C3%B6_aines_%22V%C3%B5rgurakendused_II:_hajuss%C3%BCsteemide_ehitamine%22_2017 Kodutöö aines &amp;quot;Võrgurakendused II: hajussüsteemide ehitamine&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
[https://projectspot.visualstudio.com/PROJECTSPOT Projekti kodu (avaneb ainult liikmetele)]&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==Liikmed==&lt;br /&gt;
*Sigrid Pachel&lt;br /&gt;
*Oliver Tiks&lt;br /&gt;
&lt;br /&gt;
==Idee==&lt;br /&gt;
Mõttes on luua spordiklubi(de) veebiteenus ja klientrakendus, mis võimaldaks saada infot pakutavate treeningute kohta, sisestada ja kuvada tunniplaani andmeid, registreerida osalejaid tundidesse ning teha muid asjakohaseid tegevusi nii klubi(de) personalil, liikmetel kui ka juhukasutajatel.&lt;br /&gt;
&lt;br /&gt;
==Veebiteenuse analüüs==&lt;br /&gt;
SPOTi veebiteenus võimaldab saada infot erinevate klubide treeningute kohta ja end neisse registreerida. Kasutaja saab teavet, kus ja millal treeningud toimuvad (tunniplaan), mida treeningus täpsemalt tehakse, mis stiiliga on tegemist, kes on treener, kui palju üks kord maksab jms info. Kasutajakontoga liikmel on võimalik end registreerida soovitud tundi ja hallata oma registreeringuid (muuta, tühistada).&lt;br /&gt;
&lt;br /&gt;
Spordiklubide infot haldavad süsteemi administraatorid, kes saavad lisada, muuta ja kustutada kõike sprodiklubiga seonduvat. Erinevaid treeninguid ja nendega seotud konkreetset infot saavad lisada ja hallata treenerid või spordiklubi esindajad.&lt;br /&gt;
&lt;br /&gt;
Projekti realiseerimiseks kasutame REST arhitektuuri ja ASP.NET MVC Web API tehnoloogiat.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Üldine plaan:&#039;&#039;&#039;&lt;br /&gt;
* esialgu üks kett (laienemise võimalusega)&lt;br /&gt;
* mitu klubi (asukoht, saalid-treeningualad, võimalikud lisatingimused)&lt;br /&gt;
* treeningute info (stiilid ehk kontseptid, litsentsid, …)&lt;br /&gt;
* tunniplaan (aeg, koht, instruktorid, max osalejate arv, ühe korra hind)&lt;br /&gt;
* registratuur (treeningutest osavõtjad)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kasutajad (rollid):&#039;&#039;&#039;&lt;br /&gt;
* administraatorid (saavad teha muudatusi)&lt;br /&gt;
* treenerid (info kvalifikatsiooni, litsentside kohta, õigus treeninguid lisada) &lt;br /&gt;
* liikmed (saavad treeningutele registreeruda)&lt;br /&gt;
* ülejäänud (näevad klubide ja treeningute infot ning tunniplaani)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Peaks olema:&#039;&#039;&#039;&lt;br /&gt;
* kasutajate loomine&lt;br /&gt;
* kasutajate tuvastamine ja haldamine&lt;br /&gt;
* kasutajate ja kasutusstatistika logimine&lt;br /&gt;
* teenuse poole pöördumiste arvu piiramine ja piirangute haldamine&lt;br /&gt;
* klubide, treenerite ja treeningute info väljastamine&lt;br /&gt;
* tunniplaani info väljastamine&lt;br /&gt;
* treeningutesse registreerimine&lt;br /&gt;
* registreeringu tühistamine&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Võiks olla:&#039;&#039;&#039;&lt;br /&gt;
* klubide, treenerite, treeningute lisamine ja muutmine&lt;br /&gt;
* tunniplaanis treeningute tühistamine&lt;br /&gt;
* sisestatud andmete kustutamine (pehmelt)&lt;br /&gt;
* rollide-õiguste määramine (admin)&lt;br /&gt;
* asukohad mitmes riigis&lt;br /&gt;
* kliendipaketid, arveldus&lt;br /&gt;
* kontaktide tsentraliseeritud haldus&lt;br /&gt;
* sisselogimine läbi Google’i, Facebooki vmt teenuse&lt;br /&gt;
&lt;br /&gt;
===Andmebaasi skeem (lihtsustatud)===&lt;br /&gt;
&lt;br /&gt;
[[File:SPOTService ERD.JPG|border|SPOT Service ERD]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Märkus: olemite atribuutidest on välja toodud ainult peamised.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====Tabelite kirjeldused====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kasutajahaldus*:&#039;&#039;&#039;&lt;br /&gt;
* User - kasutajate andmed&lt;br /&gt;
* Role - rollid, millega määratakse kasutajate õigused (&amp;quot;Admin&amp;quot;, &amp;quot;Trainer&amp;quot;, ...)&lt;br /&gt;
* UserRole - kasutajate sidumine rolli(de)ga&lt;br /&gt;
* UserLogin - muu teenuse kaudu sisselogimiseks&lt;br /&gt;
* UserClaim - muu teenuse kaudu sisselogimiseks&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;&#039;&#039;Kasutajahalduse süsteem toetub Asp.Net Identity valmislahendusele, mida on täiendanud A. Käver.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Klubid:&#039;&#039;&#039;&lt;br /&gt;
* Chain (optional) - spordiklubikettide info&lt;br /&gt;
* Location - spordiklubi/-rajatise asukoht linna/asula täpsusega&lt;br /&gt;
* Facility - spordiklubi/-rajatise andmed, seotud asukohaga ja vajadusel ketiga.&lt;br /&gt;
* Venue - spordiklubis/-rajatises kasutatavad saalid ja muud treeningualad&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Treeningud:&#039;&#039;&#039;&lt;br /&gt;
* Concept (Style) - treeningustiilid ehk kontseptid&lt;br /&gt;
* Licenser (optional) - treeninguliikide litsentsid (kui on)&lt;br /&gt;
* Training - treeninguliikide andmed, seotud stiili ja vajadusel litsentsiga&lt;br /&gt;
* Trainer (User (role: Trainer) + Training) - treeninguliikide sidumine treeneritega&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tunniplaan:&#039;&#039;&#039;&lt;br /&gt;
* ScheduleItem - treeningud tunniplaanis&lt;br /&gt;
* Instructor (User (role: Trainer) + ScheduleItem) - tundide juhendajad (võib olla mitu)&lt;br /&gt;
* Registration (ScheduleItem + User (role: any)) - tundidesse tehtud registreeringud&lt;br /&gt;
&lt;br /&gt;
== XML / XSD / XSLT==&lt;br /&gt;
Projekti esimeses etapis sai loodud XML andmefail, mille ülesehitus on paika pandud XSD skeemifailis. Lisaks on olemas kaks stiilifaili: esimene neist transformeerib andmed HTML-kujule, et kuvada infot  veebilehel, teine tekitab samade andmete esitamiseks uue struktuuriga XML faili.&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/ProjectSPOT_ScheduleXml.zip Lae failid alla.] &lt;br /&gt;
&lt;br /&gt;
=== XML ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Fail sisaldab andmeid ühes spordiklubis pakutavate treeningute kohta. Andmed on esitatud treeninguliikide kaupa, mille juurde on lisatud ka vastava treeninguliigi tunniplaan. Treeninguliikidel on nimi ja kirjeldus ning vajadusel ära märgitud ka litsents. Failis on eraldi välja toodud treeningustiilid, instruktorid ja ruumid, kus treeningud toimuvad. Iga treeninguliik kuulub ühe või mitme stiili alla. Instruktoritel on tagasiside põhjal saadud hinne. Treeninguruumidel on vaikimisi määratud mahutavus. Tunniplaanis on ära toodud treeningu koht, algusaeg ja kestus ning instruktorid. Vajadusel saab eraldi määrata ka treeningurühma suuruse, kui see erineb tavalisest ruumi mahutavusest. Ka on võimalik treeningutunnile lisada kommentaar. Erinevate elementide andmed on omavahel seotud id-atribuutidega.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;?xml-stylesheet type=&amp;quot;text/xsl&amp;quot; href=&amp;quot;trainingsToHtml.xslt&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Trainings&amp;gt;&lt;br /&gt;
  &amp;lt;Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;![CDATA[Cardio]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
  &amp;lt;/Styles&amp;gt;&lt;br /&gt;
  &amp;lt;Instructors&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;1&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Yogafier]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;2&amp;quot; Rating=&amp;quot;4.7&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Mickey Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;3&amp;quot; Rating=&amp;quot;4.6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;4&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Donald Duck]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;5&amp;quot; Rating=&amp;quot;3.9&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Goofy]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;6&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Schwarzenegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;8&amp;quot; Rating=&amp;quot;4.8&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Kayla Weightlifter]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;9&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Margaret Strengthener]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
  &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;Venues&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;1&amp;quot; GroupSize=&amp;quot;45&amp;quot;&amp;gt;&amp;lt;![CDATA[Main Hall]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 2]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;3&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 3]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;4&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 4]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;5&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 5]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&amp;lt;![CDATA[Area 6]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;7&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&amp;lt;![CDATA[Yoga Hall]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
  &amp;lt;/Venues&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Yoga]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[Yoga is a group of physical, mental, and spiritual practices or disciplines which originated in ancient India. ]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;1&amp;quot; VenueId=&amp;quot;7&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-25T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;14&amp;quot; VenueId=&amp;quot;7&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT1H20M&amp;quot;&amp;gt;2017-03-28T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Comment&amp;gt;&lt;br /&gt;
          &amp;lt;![CDATA[Special class!]]&amp;gt;&lt;br /&gt;
        &amp;lt;/Comment&amp;gt; &lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/Nvlxn0EnmbM&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;  &lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;2&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyBalance™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[BODYBALANCE™ is the Yoga, Tai Chi, Pilates workout that builds flexibility and strength and leaves you feeling centered and calm. Based on a carefully structured series of stretches, moves and poses to music it creates a holistic workout that brings the body into a state of harmony and balance. This class will heighten your flexibility and inner strength creating a strong supple body from the inside out. Burn on average 390cals per hour.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;2&amp;quot; VenueId=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-31T12:15:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;3&amp;quot; VenueId=&amp;quot;2&amp;quot; &amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-30T13:30:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;3&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/jJxA6vBjUqY&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;3&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyJam™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;4&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[The Body Jam program is an addictive fusion of the latest dance styles to the hottest new sounds. This class isn’t just for dancers, it’s for everyone because the emphasis is put on not only having fun but also breaking a sweat. So grab a friend, get front and centre … you bring the attitude and we’ll bring the moves!]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;4&amp;quot;  VenueId=&amp;quot;3&amp;quot; &amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T16:10:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;4&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;5&amp;quot; VenueId=&amp;quot;5&amp;quot; &amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT45M&amp;quot;&amp;gt;2017-04-01T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;5&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/8PTXyg9si_4&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;4&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyPump™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[BodyPump classes are 59 minutes long and contain eight separate muscle-group specific songs or &amp;quot;tracks&amp;quot; along with an opening warm up track and closing cool-down track. There are also 45-minute and 30-minute class formats. The classes are performed to music using free weights-plates, barbells and an aerobic step. Participants choose their weights based on the exercise and their personal goals. Major muscle groups are worked via series of compound and isolation-based exercises including squats, presses, dead lifts. The focus is towards muscle endurance by moving light weights at high repetitions, what Les Mills calls the Rep Effect.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;3&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;6&amp;quot; VenueId=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;6&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;7&amp;quot; VenueId=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-23T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;6&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/zU_0XrdO3wo&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[CoreStrenght is a very hard workout! Not for beginners.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;3&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;8&amp;quot; VenueId=&amp;quot;6&amp;quot; GroupSize=&amp;quot;10&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT2H&amp;quot;&amp;gt;2017-03-23T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;9&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Comment&amp;gt;&lt;br /&gt;
          &amp;lt;![CDATA[Special challenge!]]&amp;gt;&lt;br /&gt;
        &amp;lt;/Comment&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;9&amp;quot; VenueId=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;8&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;10&amp;quot; VenueId=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-04-05T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;8&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;9&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/ZxTVmpvyUt8&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[Zumba involves dance and aerobic movements performed to energetic music. The choreography incorporates hip-hop, soca, samba, salsa, merengue and mambo. Squats and lunges are also included.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;4&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;11&amp;quot; VenueId=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT55M&amp;quot;&amp;gt;2017-03-26T15:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;12&amp;quot; VenueId=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-28T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;13&amp;quot; VenueId=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/-ZB6XIkfxnQ&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
&amp;lt;/Trainings&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSD ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Skeemifail kontrollib eelnevas andmefailis esitatud andmete vastavust kokkulepitud formaadile, samuti õigete andmetüüpide kasutamist. Alamelemendi id-atribuudi väärtus peab olema iga elemendirühma lõikes unikaalne. Kohustuslike elementide ja atribuutide kõrval on ka mõned (nt kommentaar), mille olemasolu pole alati tarvilik. Teatud puhkudel on piiratud maksimaalset elementide arvu (nt treeningutunni algusaeg). Faili üldine struktuur on kindel, aga alati pole alamelementide järjekord oluline (nt treeninguliigi puhul).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xs:schema attributeFormDefault=&amp;quot;unqualified&amp;quot; elementFormDefault=&amp;quot;qualified&amp;quot; xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xs:element name=&amp;quot;Trainings&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Styles&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Style&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
          &amp;lt;xs:unique name=&amp;quot;UniqueStyleId&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xs:selector xpath=&amp;quot;Style&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Instructors&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;Name&amp;quot; type=&amp;quot;xs:string&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:attribute name=&amp;quot;Rating&amp;quot; type=&amp;quot;xs:decimal&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
          &amp;lt;xs:unique name=&amp;quot;UniqueInstructorId&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xs:selector xpath=&amp;quot;Instructor&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Venues&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Venue&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:attribute name=&amp;quot;GroupSize&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
          &amp;lt;xs:unique name=&amp;quot;UniqueVenueId&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xs:selector xpath=&amp;quot;Venue&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Training&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:all&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Description&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Styles&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Style&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Schedule&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;ScheduleItem&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:all&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element  maxOccurs=&amp;quot;1&amp;quot; name=&amp;quot;Time&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:extension base=&amp;quot;xs:dateTime&amp;quot;&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:attribute name=&amp;quot;Duration&amp;quot; type=&amp;quot;xs:duration&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element name=&amp;quot;Instructors&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                    &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                                      &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                                        &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                                      &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                                    &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                                  &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; name=&amp;quot;Comment&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:all&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;VenueId&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;GroupSize&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;optional&amp;quot; /&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;VideoUrl&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:all&amp;gt;&lt;br /&gt;
            &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xs:attribute name=&amp;quot;Licence&amp;quot; type=&amp;quot;xs:string&amp;quot; use=&amp;quot;optional&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
    &amp;lt;xs:unique name=&amp;quot;UniqueTrainingId&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xs:selector xpath=&amp;quot;Training&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
    &amp;lt;xs:unique name=&amp;quot;UniqueScheduleItemId&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xs:selector xpath=&amp;quot;Training/Schedule/ScheduleItem&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSLT (html) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Selles transformatsioonifailis on kirjeldatud XML failis olevate andmete [http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/trainings.xml  kuvamise viis veebilehel]. Treeninguliigid on jaotatud stiiliblokkidesse (mõni treening kuulub mitme stiili alla). Iga treeninguliigi all on tabeli kujul esitatud tunniplaan ning lisatud näidisvideo ja kirjeldus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot; xmlns:msxsl=&amp;quot;urn:schemas-microsoft-com:xslt&amp;quot; exclude-result-prefixes=&amp;quot;msxsl&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:output method=&amp;quot;html&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;html&amp;gt;&lt;br /&gt;
      &amp;lt;head&amp;gt;&lt;br /&gt;
        &amp;lt;title&amp;gt;SuperSportsClub - Trainings&amp;lt;/title&amp;gt;&lt;br /&gt;
        &amp;lt;style&amp;gt;&lt;br /&gt;
          body {&lt;br /&gt;
          background:BurlyWood;&lt;br /&gt;
          text-align: center;&lt;br /&gt;
          }&lt;br /&gt;
          .section {&lt;br /&gt;
          text-align:left;&lt;br /&gt;
          width:1000px;&lt;br /&gt;
          padding:20px;&lt;br /&gt;
          background:Chocolate;&lt;br /&gt;
          margin: auto;&lt;br /&gt;
          }&lt;br /&gt;
          table, th, td, .section {&lt;br /&gt;
          border: 1px solid black;&lt;br /&gt;
          }&lt;br /&gt;
          th {&lt;br /&gt;
          text-align:left;&lt;br /&gt;
          padding-left: 10px;&lt;br /&gt;
          padding-right: 10px;&lt;br /&gt;
          }&lt;br /&gt;
          td {&lt;br /&gt;
          text-align:center;&lt;br /&gt;
          }&lt;br /&gt;
          p {&lt;br /&gt;
          text-align:justify;&lt;br /&gt;
          }&lt;br /&gt;
          .description {&lt;br /&gt;
          vertical-align:top; &lt;br /&gt;
          padding:10px;&lt;br /&gt;
          }&lt;br /&gt;
        &amp;lt;/style&amp;gt;&lt;br /&gt;
      &amp;lt;/head&amp;gt;&lt;br /&gt;
      &amp;lt;body&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;Trainings at SuperSportsClub&amp;lt;/h1&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;/Trainings/Styles/Style&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:sort select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:variable select=&amp;quot;.&amp;quot; name=&amp;quot;SelectedStyle&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;section&amp;quot; &amp;gt;&lt;br /&gt;
            &amp;lt;h2&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select=&amp;quot;$SelectedStyle&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/h2&amp;gt;&lt;br /&gt;
            &amp;lt;ul&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:for-each select=&amp;quot;/Trainings/Training&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:sort select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:variable name=&amp;quot;Training&amp;quot; select=&amp;quot;.&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:if test=&amp;quot;Styles/Style/@Id = $SelectedStyle/@Id&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;&lt;br /&gt;
                    &amp;lt;h3&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;$Training/Name&amp;quot; /&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:if test=&amp;quot;$Training/@Licence&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:text&amp;gt; (&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:value-of select=&amp;quot;$Training/@Licence&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:text&amp;gt;)&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
                    &amp;lt;/h3&amp;gt;&lt;br /&gt;
                    &amp;lt;table&amp;gt;&lt;br /&gt;
                      &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                      &amp;lt;/tr&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:for-each select=&amp;quot;$Training/Schedule/ScheduleItem&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:sort select=&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:variable name=&amp;quot;StartTime&amp;quot; select=&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:variable name=&amp;quot;Duration&amp;quot; select=&amp;quot;$StartTime/@Duration&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;tr&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;150&amp;quot; &amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;concat(&lt;br /&gt;
                                            substring($StartTime, 9, 2), &lt;br /&gt;
                                            &#039;.&#039;, &lt;br /&gt;
                                            substring($StartTime, 6, 2), &lt;br /&gt;
                                            &#039;.&#039;, &lt;br /&gt;
                                            substring($StartTime, 1, 4),&lt;br /&gt;
                                            &#039; &#039;,&lt;br /&gt;
                                            substring($StartTime, 12, 2),&lt;br /&gt;
                                            &#039;:&#039;,&lt;br /&gt;
                                            substring($StartTime, 15, 2))&lt;br /&gt;
                                            &amp;quot; /&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:if test=&amp;quot;Comment&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;br/&amp;gt;&lt;br /&gt;
                              &amp;lt;div style=&amp;quot;color:Green&amp;quot;&amp;gt;&lt;br /&gt;
                                &amp;lt;xsl:value-of select=&amp;quot;Comment&amp;quot;/&amp;gt;&lt;br /&gt;
                              &amp;lt;/div&amp;gt;&lt;br /&gt;
                            &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;substring($Duration, 3, 6)&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:variable name=&amp;quot;VenueId&amp;quot; select=&amp;quot;@VenueId&amp;quot;/&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;/Trainings/Venues/Venue[@Id=$VenueId]&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:for-each select=&amp;quot;Instructors/Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:variable name=&amp;quot;InstructorId&amp;quot; select=&amp;quot;@Id&amp;quot;&amp;gt;&amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:variable name=&amp;quot;SelectedInstructor&amp;quot; select=&amp;quot;/Trainings/Instructors/Instructor[@Id=$InstructorId]&amp;quot; /&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/Name&amp;quot;/&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:text&amp;gt; (&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/@Rating&amp;quot; /&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:text&amp;gt;)&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                              &amp;lt;br/&amp;gt;&lt;br /&gt;
                            &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;/tr&amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
                    &amp;lt;/table&amp;gt;&lt;br /&gt;
                    &amp;lt;br/&amp;gt;&lt;br /&gt;
                    &amp;lt;table&amp;gt;&lt;br /&gt;
                      &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                          &amp;lt;xsl:variable name=&amp;quot;VideoUrl&amp;quot; select=&amp;quot;$Training/VideoUrl&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;{$VideoUrl}&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                          &amp;lt;p&amp;gt;&lt;br /&gt;
                            &amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&lt;br /&gt;
                          &amp;lt;/p&amp;gt;&lt;br /&gt;
                          &amp;lt;p&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;$Training/Description&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                      &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;/table&amp;gt;&lt;br /&gt;
                  &amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
            &amp;lt;/ul&amp;gt;&lt;br /&gt;
          &amp;lt;/div&amp;gt;&lt;br /&gt;
          &amp;lt;br/&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
      &amp;lt;/body&amp;gt;&lt;br /&gt;
    &amp;lt;/html&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== HTML (transformeeritud) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/trainings.html Vaata eelneva transformatsiooni tulemust.]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;META http-equiv=&amp;quot;Content-Type&amp;quot; content=&amp;quot;text/html; charset=utf-8&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;SuperSportsClub - Trainings&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;style&amp;gt;&lt;br /&gt;
        body {&lt;br /&gt;
            background: BurlyWood;&lt;br /&gt;
            text-align: center;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        .section {&lt;br /&gt;
            text-align: left;&lt;br /&gt;
            width: 1000px;&lt;br /&gt;
            padding: 20px;&lt;br /&gt;
            background: Chocolate;&lt;br /&gt;
            margin: auto;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        table, th, td, .section {&lt;br /&gt;
            border: 1px solid black;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        th {&lt;br /&gt;
            text-align: left;&lt;br /&gt;
            padding-left: 10px;&lt;br /&gt;
            padding-right: 10px;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        td {&lt;br /&gt;
            text-align: center;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        p {&lt;br /&gt;
            text-align: justify;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        .description {&lt;br /&gt;
            vertical-align: top;&lt;br /&gt;
            padding: 10px;&lt;br /&gt;
        }&lt;br /&gt;
    &amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
    &amp;lt;h1&amp;gt;Trainings at SuperSportsClub&amp;lt;/h1&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Body&amp;amp;amp;Mind&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyBalance™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 13:30&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;1H15M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 2&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Minnie Mouse (4.6)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;31.03.2017 12:15&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;1H15M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 3&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Mickey Mouse (4.7)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/jJxA6vBjUqY&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                BODYBALANCE™ is the Yoga, Tai Chi, Pilates workout that builds flexibility and strength and leaves you feeling centered and calm. Based on a carefully structured series of stretches, moves and poses to music it creates a holistic workout that brings the body into a state of harmony and balance. This class will heighten your flexibility and inner strength creating a strong supple body from the inside out. Burn on average 390cals per hour.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;Yoga&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;25.03.2017 14:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Yoga Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Minnie Yogafier (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
                            28.03.2017 14:00&amp;lt;br&amp;gt;&amp;lt;div style=&amp;quot;color:Green&amp;quot;&amp;gt;&lt;br /&gt;
                                Special class!&lt;br /&gt;
                            &amp;lt;/div&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;1H20M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Yoga Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Minnie Yogafier (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/Nvlxn0EnmbM&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                Yoga is a group of physical, mental, and spiritual practices or disciplines which originated in ancient India.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Cardio&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyJam™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 16:10&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 3&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Donald Duck (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;01.04.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;45M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 5&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Goofy (3.9)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/8PTXyg9si_4&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                The Body Jam program is an addictive fusion of the latest dance styles to the hottest new sounds. This class isn’t just for dancers, it’s for everyone because the emphasis is put on not only having fun but also breaking a sweat. So grab a friend, get front and centre … you bring the attitude and we’ll bring the moves!&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Dance&amp;amp;amp;Fun&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyJam™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 16:10&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 3&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Donald Duck (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;01.04.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;45M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 5&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Goofy (3.9)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/8PTXyg9si_4&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                The Body Jam program is an addictive fusion of the latest dance styles to the hottest new sounds. This class isn’t just for dancers, it’s for everyone because the emphasis is put on not only having fun but also breaking a sweat. So grab a friend, get front and centre … you bring the attitude and we’ll bring the moves!&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;Zumba®&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;26.03.2017 15:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;55M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 2&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Zumbaschnegger (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;28.03.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 4&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Zumbaschnegger (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 2&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Zumbaschnegger (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/-ZB6XIkfxnQ&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                Zumba involves dance and aerobic movements performed to energetic music. The choreography incorporates hip-hop, soca, samba, salsa, merengue and mambo. Squats and lunges are also included.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Strength&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyPump™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;23.03.2017 13:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Main Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Schwarzenegger (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 13:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Main Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Schwarzenegger (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/zU_0XrdO3wo&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                BodyPump classes are 59 minutes long and contain eight separate muscle-group specific songs or &amp;quot;tracks&amp;quot; along with an opening warm up track and closing cool-down track. There are also 45-minute and 30-minute class formats. The classes are performed to music using free weights-plates, barbells and an aerobic step. Participants choose their weights based on the exercise and their personal goals. Major muscle groups are worked via series of compound and isolation-based exercises including squats, presses, dead lifts. The focus is towards muscle endurance by moving light weights at high repetitions, what Les Mills calls the Rep Effect.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;CoreStrength&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
                            23.03.2017 12:00&amp;lt;br&amp;gt;&amp;lt;div style=&amp;quot;color:Green&amp;quot;&amp;gt;&lt;br /&gt;
                                Special challenge!&lt;br /&gt;
                            &amp;lt;/div&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;2H&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Area 6&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Margaret Strengthener (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Area 6&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Kayla Weightlifter (4.8)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;05.04.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Area 6&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Kayla Weightlifter (4.8)&amp;lt;br&amp;gt;Margaret Strengthener (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/ZxTVmpvyUt8&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                CoreStrenght is a very hard workout! Not for beginners.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSLT (xml) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Selle transformatsiooniga luuakse uus [http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/schedule.xml XML fail], milles on treeningute andmed esitatud ühtse tunniplaani kujul. Algses failis erinevate elementide alla paigutatud andmed on nüüd tunniplaani alamelemendis kokku viidud. Sidumine on teostatud id-atribuutide abil. Tunniplaanis on ühes kohas kirjas treeningu nimi, stiil(id), koht, algusaeg, kestus, rühma suurus, instruktorid ja muu täiendav info.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&lt;br /&gt;
    xmlns:msxsl=&amp;quot;urn:schemas-microsoft-com:xslt&amp;quot; exclude-result-prefixes=&amp;quot;msxsl&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:output method=&amp;quot;xml&amp;quot; indent=&amp;quot;yes&amp;quot; cdata-section-elements=&amp;quot;Name Style Comment&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;/Trainings/Training&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:sort select=&amp;quot;Name&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:variable name=&amp;quot;SelectedTraining&amp;quot; select=&amp;quot;.&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;Schedule/ScheduleItem&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:sort select=&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;ScheduleItem&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:variable name=&amp;quot;VenueId&amp;quot; select=&amp;quot;@VenueId&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:variable name=&amp;quot;SelectedVenue&amp;quot; select=&amp;quot;/Trainings/Venues/Venue[@Id=$VenueId]&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:attribute name=&amp;quot;GroupSize&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;@GroupSize&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:value-of select=&amp;quot;@GroupSize&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:value-of select=&amp;quot;$SelectedVenue/@GroupSize&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
            &amp;lt;Venue&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$VenueId&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select=&amp;quot;$SelectedVenue&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/Venue&amp;gt;&lt;br /&gt;
            &amp;lt;Training&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$SelectedTraining/@Id&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:if test=&amp;quot;$SelectedTraining/@Licence&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:attribute name=&amp;quot;Licence&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:value-of select=&amp;quot;$SelectedTraining/@Licence&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
              &amp;lt;Name&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$SelectedTraining/Name&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/Name&amp;gt;&lt;br /&gt;
              &amp;lt;Styles&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:for-each select=&amp;quot;$SelectedTraining/Styles/Style&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:variable name=&amp;quot;StyleId&amp;quot; select=&amp;quot;@Id&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;Style&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:attribute name=&amp;quot;StyleId&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;$StyleId&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;/Trainings/Styles/Style[@Id=$StyleId]&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/Style&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
              &amp;lt;/Styles&amp;gt;&lt;br /&gt;
            &amp;lt;/Training&amp;gt;&lt;br /&gt;
            &amp;lt;Time&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:attribute name=&amp;quot;Duration&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;Time/@Duration&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select =&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/Time&amp;gt;&lt;br /&gt;
            &amp;lt;Instructors&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:for-each select=&amp;quot;Instructors/Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:variable name=&amp;quot;InstructorId&amp;quot; select=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:variable name=&amp;quot;SelectedInstructor&amp;quot; select=&amp;quot;/Trainings/Instructors/Instructor[@Id=$InstructorId]&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;Instructor&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;$InstructorId&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:attribute name=&amp;quot;Rating&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/@Rating&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                  &amp;lt;Name&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/Name&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/Name&amp;gt;&lt;br /&gt;
                &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
            &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:if test=&amp;quot;Comment&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;Comment&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;Comment&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/Comment&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
          &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XML (transformeeritud) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/schedule.xml Vaata eelneva transformatsiooni tulemust.]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Schedule&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;3&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot;&amp;gt;Hall 2&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;2&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyBalance™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-30T13:30:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;3&amp;quot; Rating=&amp;quot;4.6&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;2&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;3&amp;quot;&amp;gt;Hall 3&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;2&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyBalance™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-31T12:15:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;2&amp;quot; Rating=&amp;quot;4.7&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Mickey Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;4&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;3&amp;quot;&amp;gt;Hall 3&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;3&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyJam™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;![CDATA[Cardio]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T16:10:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;4&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Donald Duck]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;5&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;5&amp;quot;&amp;gt;Hall 5&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;3&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyJam™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;![CDATA[Cardio]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT45M&amp;quot;&amp;gt;2017-04-01T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;5&amp;quot; Rating=&amp;quot;3.9&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Goofy]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;7&amp;quot; GroupSize=&amp;quot;45&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;1&amp;quot;&amp;gt;Main Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;4&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyPump™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-23T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;6&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Schwarzenegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;6&amp;quot; GroupSize=&amp;quot;45&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;1&amp;quot;&amp;gt;Main Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;4&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyPump™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;6&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Schwarzenegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;8&amp;quot; GroupSize=&amp;quot;10&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot;&amp;gt;Area 6&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT2H&amp;quot;&amp;gt;2017-03-23T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;9&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Margaret Strengthener]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
    &amp;lt;Comment&amp;gt;&amp;lt;![CDATA[&lt;br /&gt;
          Special challenge!&lt;br /&gt;
        ]]&amp;gt;&amp;lt;/Comment&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;9&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot;&amp;gt;Area 6&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;8&amp;quot; Rating=&amp;quot;4.8&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Kayla Weightlifter]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;10&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot;&amp;gt;Area 6&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-04-05T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;8&amp;quot; Rating=&amp;quot;4.8&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Kayla Weightlifter]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;9&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Margaret Strengthener]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;11&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot;&amp;gt;Hall 2&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT55M&amp;quot;&amp;gt;2017-03-26T15:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;12&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;4&amp;quot;&amp;gt;Hall 4&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-28T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;13&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot;&amp;gt;Hall 2&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;1&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;7&amp;quot;&amp;gt;Yoga Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Yoga]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-25T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;1&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Yogafier]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;14&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;7&amp;quot;&amp;gt;Yoga Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Yoga]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT1H20M&amp;quot;&amp;gt;2017-03-28T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;1&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Yogafier]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
    &amp;lt;Comment&amp;gt;&amp;lt;![CDATA[&lt;br /&gt;
          Special class!&lt;br /&gt;
        ]]&amp;gt;&amp;lt;/Comment&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
&amp;lt;/Schedule&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus ==&lt;br /&gt;
Angular JS &#039;&#039;single page application&#039;&#039; eelnevalt kirjeldatud veebiteenusele. Sisse logimata saab kuvada spordiklubi tunniplaani, treeningstiile ja treenereid. Võimalik on liituda teenusega ja registreeruda treeningutele, samuti registreeringuid tühistada. &lt;br /&gt;
&lt;br /&gt;
Autentimine on lahendatud tokenipõhiselt. Eeskujuna kasutasime näidisrakendust, mille juhend ja lähtekood on leitav [http://bitoftech.net/2014/06/09/angularjs-token-authentication-using-asp-net-web-api-2-owin-asp-net-identity/ siit].&lt;br /&gt;
&lt;br /&gt;
== Lähtekood ==&lt;br /&gt;
Eksamiks valminud veebiteenuse ja klientrakenduse kokkupakitult allalaadimiseks klõpsa [http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/solution/ProjectSPOT.zip sellel lingil].&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;NB! Kui WebApi käivitamisel tekkivasse andmebaasi kõiki andmeid (tunniplaani ja registreerimisi jooksvasse nädalasse) ei ilmu, siis kustutage andmebaas ja käivitage kõigepealt samas lahenduses olev konsoolirakendus.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Retsensioonid ==&lt;br /&gt;
&lt;br /&gt;
# [https://wiki.itcollege.ee/index.php/Talk:JRT XML/XSD/XSLT retsensioon meeskonnale JRT]&lt;br /&gt;
# [Veebiteenuse retsensioon lisandub varsti]&lt;br /&gt;
# [Klientrakenduse retsensioon lisandub varsti]&lt;br /&gt;
&lt;br /&gt;
== Log ==&lt;br /&gt;
* 03.03.17 Esimene kohtumine. Idee.&lt;br /&gt;
* 17.03.17 Osa XMList valmis, osa XSLT-st valmis.&lt;br /&gt;
* 18.03.17 Teine kohtumine. XMLi täiendamine, esimene ülekäimine XSD-s.&lt;br /&gt;
* 19.03.17 XML/XSLT/XSD täiendamine ja lõpetamine.&lt;br /&gt;
* 20.03.17 XML fail, skeemifail ja stiilifailid esitatud. Projekti esimese etapi lõpp. Kevade algus.&lt;br /&gt;
* 26.03.17 XML/XSLT/XSD retsensioon esitatud.&lt;br /&gt;
* 16.04.17 Veebiteenuse analüüsi koostamine.&lt;br /&gt;
* 17.04.17 Esialgne veebiteenuse analüüs ja kavand valmis.&lt;br /&gt;
* 19.04.17 Alustasime veebiteenusega, koostegemine: Domain, DAL, Interfaces, Repostitories. Testimine konsoolis.&lt;br /&gt;
* 24.04.17 Veebiteenuse koostegemine, 2. kord: Domaini täiendamine.&lt;br /&gt;
* 29.04.17 Veebiteenuse koostegemine, 3. kord: Interfaces, Repositories, Factory + UOW. Testimine konsoolis.&lt;br /&gt;
* 01.05.17 Andmebaasi täitmine testandmetega varasemas faasis loodud XML failist.&lt;br /&gt;
* 02.05.17 Veebiteenuse koostegemine, 4. kord: alustasime BLi ja WebApi ehitamist. GET päringud.&lt;br /&gt;
* 09.05.17 Veebiteenuse koostegemine, 5. kord: lisasime Identity.&lt;br /&gt;
* 11.05.17 Veebiteenuse koostegemine, 6. kord: WebApi arendamine. POST, PUT ja DELETE päringud.&lt;br /&gt;
* 15.05.17 Veebiteenuse koostegemine, 7. kord: WebApi arendamine. Lisasime  api kontrollereid.&lt;br /&gt;
* 16.05.17 Veebiteenuse koostegemine, 8. kord: WebApi arendamine. Identity kontroll Fiddleri ja Postmaniga.&lt;br /&gt;
* 20.05.17 Klientrakenduse koostegemine, 1. kord. Testklient.&lt;br /&gt;
* 25.05.17 Klientrakenduse koostegemine, 2. kord. Klientrakenduse arendamine.&lt;br /&gt;
* 01.06.17 Klientrakenduse koostegemine, 3. kord. Klientrakenduse arendamine. Angular JS.&lt;br /&gt;
* 03.06.17 - 11.06.17 Klientrakenduse arendamine. Tokenipõhine autentimine. Veebiteenuse viimistlemine.&lt;br /&gt;
* 11.06.17 Lõpptähtaeg. Projekti esitlemine eksamil.&lt;br /&gt;
* 12.06.17 Teiste lahenduste retsenseerimine.&lt;/div&gt;</summary>
		<author><name>Otiks</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Team_SPOT&amp;diff=123474</id>
		<title>Team SPOT</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Team_SPOT&amp;diff=123474"/>
		<updated>2017-06-12T02:26:43Z</updated>

		<summary type="html">&lt;p&gt;Otiks: /* Lähtekood */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://wiki.itcollege.ee/index.php/Kodut%C3%B6%C3%B6_aines_%22V%C3%B5rgurakendused_II:_hajuss%C3%BCsteemide_ehitamine%22_2017 Kodutöö aines &amp;quot;Võrgurakendused II: hajussüsteemide ehitamine&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
[https://projectspot.visualstudio.com/PROJECTSPOT Projekti kodu (avaneb ainult liikmetele)]&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==Liikmed==&lt;br /&gt;
*Sigrid Pachel&lt;br /&gt;
*Oliver Tiks&lt;br /&gt;
&lt;br /&gt;
==Idee==&lt;br /&gt;
Mõttes on luua spordiklubi(de) veebiteenus ja klientrakendus, mis võimaldaks saada infot pakutavate treeningute kohta, sisestada ja kuvada tunniplaani andmeid, registreerida osalejaid tundidesse ning teha muid asjakohaseid tegevusi nii klubi(de) personalil, liikmetel kui ka juhukasutajatel.&lt;br /&gt;
&lt;br /&gt;
==Veebiteenuse analüüs==&lt;br /&gt;
SPOTi veebiteenus võimaldab saada infot erinevate klubide treeningute kohta ja end neisse registreerida. Kasutaja saab teavet, kus ja millal treeningud toimuvad (tunniplaan), mida treeningus täpsemalt tehakse, mis stiiliga on tegemist, kes on treener, kui palju üks kord maksab jms info. Kasutajakontoga liikmel on võimalik end registreerida soovitud tundi ja hallata oma registreeringuid (muuta, tühistada).&lt;br /&gt;
&lt;br /&gt;
Spordiklubide infot haldavad süsteemi administraatorid, kes saavad lisada, muuta ja kustutada kõike sprodiklubiga seonduvat. Erinevaid treeninguid ja nendega seotud konkreetset infot saavad lisada ja hallata treenerid või spordiklubi esindajad.&lt;br /&gt;
&lt;br /&gt;
Projekti realiseerimiseks kasutame REST arhitektuuri ja ASP.NET MVC Web API tehnoloogiat.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Üldine plaan:&#039;&#039;&#039;&lt;br /&gt;
* esialgu üks kett (laienemise võimalusega)&lt;br /&gt;
* mitu klubi (asukoht, saalid-treeningualad, võimalikud lisatingimused)&lt;br /&gt;
* treeningute info (stiilid ehk kontseptid, litsentsid, …)&lt;br /&gt;
* tunniplaan (aeg, koht, instruktorid, max osalejate arv, ühe korra hind)&lt;br /&gt;
* registratuur (treeningutest osavõtjad)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kasutajad (rollid):&#039;&#039;&#039;&lt;br /&gt;
* administraatorid (saavad teha muudatusi)&lt;br /&gt;
* treenerid (info kvalifikatsiooni, litsentside kohta, õigus treeninguid lisada) &lt;br /&gt;
* liikmed (saavad treeningutele registreeruda)&lt;br /&gt;
* ülejäänud (näevad klubide ja treeningute infot ning tunniplaani)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Peaks olema:&#039;&#039;&#039;&lt;br /&gt;
* kasutajate loomine&lt;br /&gt;
* kasutajate tuvastamine ja haldamine&lt;br /&gt;
* kasutajate ja kasutusstatistika logimine&lt;br /&gt;
* teenuse poole pöördumiste arvu piiramine ja piirangute haldamine&lt;br /&gt;
* klubide, treenerite ja treeningute info väljastamine&lt;br /&gt;
* tunniplaani info väljastamine&lt;br /&gt;
* treeningutesse registreerimine&lt;br /&gt;
* registreeringu tühistamine&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Võiks olla:&#039;&#039;&#039;&lt;br /&gt;
* klubide, treenerite, treeningute lisamine ja muutmine&lt;br /&gt;
* tunniplaanis treeningute tühistamine&lt;br /&gt;
* sisestatud andmete kustutamine (pehmelt)&lt;br /&gt;
* rollide-õiguste määramine (admin)&lt;br /&gt;
* asukohad mitmes riigis&lt;br /&gt;
* kliendipaketid, arveldus&lt;br /&gt;
* kontaktide tsentraliseeritud haldus&lt;br /&gt;
* sisselogimine läbi Google’i, Facebooki vmt teenuse&lt;br /&gt;
&lt;br /&gt;
===Andmebaasi skeem (lihtsustatud)===&lt;br /&gt;
&lt;br /&gt;
[[File:SPOTService ERD.JPG|border|SPOT Service ERD]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Märkus: olemite atribuutidest on välja toodud ainult peamised.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====Tabelite kirjeldused====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kasutajahaldus*:&#039;&#039;&#039;&lt;br /&gt;
* User - kasutajate andmed&lt;br /&gt;
* Role - rollid, millega määratakse kasutajate õigused (&amp;quot;Admin&amp;quot;, &amp;quot;Trainer&amp;quot;, ...)&lt;br /&gt;
* UserRole - kasutajate sidumine rolli(de)ga&lt;br /&gt;
* UserLogin - muu teenuse kaudu sisselogimiseks&lt;br /&gt;
* UserClaim - muu teenuse kaudu sisselogimiseks&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;&#039;&#039;Kasutajahalduse süsteem toetub Asp.Net Identity valmislahendusele, mida on täiendanud A. Käver.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Klubid:&#039;&#039;&#039;&lt;br /&gt;
* Chain (optional) - spordiklubikettide info&lt;br /&gt;
* Location - spordiklubi/-rajatise asukoht linna/asula täpsusega&lt;br /&gt;
* Facility - spordiklubi/-rajatise andmed, seotud asukohaga ja vajadusel ketiga.&lt;br /&gt;
* Venue - spordiklubis/-rajatises kasutatavad saalid ja muud treeningualad&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Treeningud:&#039;&#039;&#039;&lt;br /&gt;
* Concept (Style) - treeningustiilid ehk kontseptid&lt;br /&gt;
* Licenser (optional) - treeninguliikide litsentsid (kui on)&lt;br /&gt;
* Training - treeninguliikide andmed, seotud stiili ja vajadusel litsentsiga&lt;br /&gt;
* Trainer (User (role: Trainer) + Training) - treeninguliikide sidumine treeneritega&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tunniplaan:&#039;&#039;&#039;&lt;br /&gt;
* ScheduleItem - treeningud tunniplaanis&lt;br /&gt;
* Instructor (User (role: Trainer) + ScheduleItem) - tundide juhendajad (võib olla mitu)&lt;br /&gt;
* Registration (ScheduleItem + User (role: any)) - tundidesse tehtud registreeringud&lt;br /&gt;
&lt;br /&gt;
== XML / XSD / XSLT==&lt;br /&gt;
Projekti esimeses etapis sai loodud XML andmefail, mille ülesehitus on paika pandud XSD skeemifailis. Lisaks on olemas kaks stiilifaili: esimene neist transformeerib andmed HTML-kujule, et kuvada infot  veebilehel, teine tekitab samade andmete esitamiseks uue struktuuriga XML faili.&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/ProjectSPOT_ScheduleXml.zip Lae failid alla.] &lt;br /&gt;
&lt;br /&gt;
=== XML ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Fail sisaldab andmeid ühes spordiklubis pakutavate treeningute kohta. Andmed on esitatud treeninguliikide kaupa, mille juurde on lisatud ka vastava treeninguliigi tunniplaan. Treeninguliikidel on nimi ja kirjeldus ning vajadusel ära märgitud ka litsents. Failis on eraldi välja toodud treeningustiilid, instruktorid ja ruumid, kus treeningud toimuvad. Iga treeninguliik kuulub ühe või mitme stiili alla. Instruktoritel on tagasiside põhjal saadud hinne. Treeninguruumidel on vaikimisi määratud mahutavus. Tunniplaanis on ära toodud treeningu koht, algusaeg ja kestus ning instruktorid. Vajadusel saab eraldi määrata ka treeningurühma suuruse, kui see erineb tavalisest ruumi mahutavusest. Ka on võimalik treeningutunnile lisada kommentaar. Erinevate elementide andmed on omavahel seotud id-atribuutidega.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;?xml-stylesheet type=&amp;quot;text/xsl&amp;quot; href=&amp;quot;trainingsToHtml.xslt&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Trainings&amp;gt;&lt;br /&gt;
  &amp;lt;Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;![CDATA[Cardio]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
  &amp;lt;/Styles&amp;gt;&lt;br /&gt;
  &amp;lt;Instructors&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;1&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Yogafier]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;2&amp;quot; Rating=&amp;quot;4.7&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Mickey Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;3&amp;quot; Rating=&amp;quot;4.6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;4&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Donald Duck]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;5&amp;quot; Rating=&amp;quot;3.9&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Goofy]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;6&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Schwarzenegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;8&amp;quot; Rating=&amp;quot;4.8&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Kayla Weightlifter]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;9&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Margaret Strengthener]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
  &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;Venues&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;1&amp;quot; GroupSize=&amp;quot;45&amp;quot;&amp;gt;&amp;lt;![CDATA[Main Hall]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 2]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;3&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 3]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;4&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 4]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;5&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 5]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&amp;lt;![CDATA[Area 6]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;7&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&amp;lt;![CDATA[Yoga Hall]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
  &amp;lt;/Venues&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Yoga]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[Yoga is a group of physical, mental, and spiritual practices or disciplines which originated in ancient India. ]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;1&amp;quot; VenueId=&amp;quot;7&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-25T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;14&amp;quot; VenueId=&amp;quot;7&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT1H20M&amp;quot;&amp;gt;2017-03-28T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Comment&amp;gt;&lt;br /&gt;
          &amp;lt;![CDATA[Special class!]]&amp;gt;&lt;br /&gt;
        &amp;lt;/Comment&amp;gt; &lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/Nvlxn0EnmbM&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;  &lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;2&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyBalance™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[BODYBALANCE™ is the Yoga, Tai Chi, Pilates workout that builds flexibility and strength and leaves you feeling centered and calm. Based on a carefully structured series of stretches, moves and poses to music it creates a holistic workout that brings the body into a state of harmony and balance. This class will heighten your flexibility and inner strength creating a strong supple body from the inside out. Burn on average 390cals per hour.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;2&amp;quot; VenueId=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-31T12:15:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;3&amp;quot; VenueId=&amp;quot;2&amp;quot; &amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-30T13:30:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;3&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/jJxA6vBjUqY&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;3&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyJam™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;4&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[The Body Jam program is an addictive fusion of the latest dance styles to the hottest new sounds. This class isn’t just for dancers, it’s for everyone because the emphasis is put on not only having fun but also breaking a sweat. So grab a friend, get front and centre … you bring the attitude and we’ll bring the moves!]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;4&amp;quot;  VenueId=&amp;quot;3&amp;quot; &amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T16:10:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;4&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;5&amp;quot; VenueId=&amp;quot;5&amp;quot; &amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT45M&amp;quot;&amp;gt;2017-04-01T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;5&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/8PTXyg9si_4&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;4&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyPump™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[BodyPump classes are 59 minutes long and contain eight separate muscle-group specific songs or &amp;quot;tracks&amp;quot; along with an opening warm up track and closing cool-down track. There are also 45-minute and 30-minute class formats. The classes are performed to music using free weights-plates, barbells and an aerobic step. Participants choose their weights based on the exercise and their personal goals. Major muscle groups are worked via series of compound and isolation-based exercises including squats, presses, dead lifts. The focus is towards muscle endurance by moving light weights at high repetitions, what Les Mills calls the Rep Effect.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;3&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;6&amp;quot; VenueId=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;6&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;7&amp;quot; VenueId=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-23T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;6&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/zU_0XrdO3wo&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[CoreStrenght is a very hard workout! Not for beginners.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;3&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;8&amp;quot; VenueId=&amp;quot;6&amp;quot; GroupSize=&amp;quot;10&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT2H&amp;quot;&amp;gt;2017-03-23T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;9&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Comment&amp;gt;&lt;br /&gt;
          &amp;lt;![CDATA[Special challenge!]]&amp;gt;&lt;br /&gt;
        &amp;lt;/Comment&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;9&amp;quot; VenueId=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;8&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;10&amp;quot; VenueId=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-04-05T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;8&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;9&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/ZxTVmpvyUt8&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[Zumba involves dance and aerobic movements performed to energetic music. The choreography incorporates hip-hop, soca, samba, salsa, merengue and mambo. Squats and lunges are also included.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;4&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;11&amp;quot; VenueId=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT55M&amp;quot;&amp;gt;2017-03-26T15:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;12&amp;quot; VenueId=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-28T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;13&amp;quot; VenueId=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/-ZB6XIkfxnQ&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
&amp;lt;/Trainings&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSD ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Skeemifail kontrollib eelnevas andmefailis esitatud andmete vastavust kokkulepitud formaadile, samuti õigete andmetüüpide kasutamist. Alamelemendi id-atribuudi väärtus peab olema iga elemendirühma lõikes unikaalne. Kohustuslike elementide ja atribuutide kõrval on ka mõned (nt kommentaar), mille olemasolu pole alati tarvilik. Teatud puhkudel on piiratud maksimaalset elementide arvu (nt treeningutunni algusaeg). Faili üldine struktuur on kindel, aga alati pole alamelementide järjekord oluline (nt treeninguliigi puhul).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xs:schema attributeFormDefault=&amp;quot;unqualified&amp;quot; elementFormDefault=&amp;quot;qualified&amp;quot; xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xs:element name=&amp;quot;Trainings&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Styles&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Style&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
          &amp;lt;xs:unique name=&amp;quot;UniqueStyleId&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xs:selector xpath=&amp;quot;Style&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Instructors&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;Name&amp;quot; type=&amp;quot;xs:string&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:attribute name=&amp;quot;Rating&amp;quot; type=&amp;quot;xs:decimal&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
          &amp;lt;xs:unique name=&amp;quot;UniqueInstructorId&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xs:selector xpath=&amp;quot;Instructor&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Venues&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Venue&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:attribute name=&amp;quot;GroupSize&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
          &amp;lt;xs:unique name=&amp;quot;UniqueVenueId&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xs:selector xpath=&amp;quot;Venue&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Training&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:all&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Description&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Styles&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Style&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Schedule&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;ScheduleItem&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:all&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element  maxOccurs=&amp;quot;1&amp;quot; name=&amp;quot;Time&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:extension base=&amp;quot;xs:dateTime&amp;quot;&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:attribute name=&amp;quot;Duration&amp;quot; type=&amp;quot;xs:duration&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element name=&amp;quot;Instructors&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                    &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                                      &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                                        &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                                      &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                                    &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                                  &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; name=&amp;quot;Comment&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:all&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;VenueId&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;GroupSize&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;optional&amp;quot; /&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;VideoUrl&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:all&amp;gt;&lt;br /&gt;
            &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xs:attribute name=&amp;quot;Licence&amp;quot; type=&amp;quot;xs:string&amp;quot; use=&amp;quot;optional&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
    &amp;lt;xs:unique name=&amp;quot;UniqueTrainingId&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xs:selector xpath=&amp;quot;Training&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
    &amp;lt;xs:unique name=&amp;quot;UniqueScheduleItemId&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xs:selector xpath=&amp;quot;Training/Schedule/ScheduleItem&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSLT (html) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Selles transformatsioonifailis on kirjeldatud XML failis olevate andmete [http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/trainings.xml  kuvamise viis veebilehel]. Treeninguliigid on jaotatud stiiliblokkidesse (mõni treening kuulub mitme stiili alla). Iga treeninguliigi all on tabeli kujul esitatud tunniplaan ning lisatud näidisvideo ja kirjeldus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot; xmlns:msxsl=&amp;quot;urn:schemas-microsoft-com:xslt&amp;quot; exclude-result-prefixes=&amp;quot;msxsl&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:output method=&amp;quot;html&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;html&amp;gt;&lt;br /&gt;
      &amp;lt;head&amp;gt;&lt;br /&gt;
        &amp;lt;title&amp;gt;SuperSportsClub - Trainings&amp;lt;/title&amp;gt;&lt;br /&gt;
        &amp;lt;style&amp;gt;&lt;br /&gt;
          body {&lt;br /&gt;
          background:BurlyWood;&lt;br /&gt;
          text-align: center;&lt;br /&gt;
          }&lt;br /&gt;
          .section {&lt;br /&gt;
          text-align:left;&lt;br /&gt;
          width:1000px;&lt;br /&gt;
          padding:20px;&lt;br /&gt;
          background:Chocolate;&lt;br /&gt;
          margin: auto;&lt;br /&gt;
          }&lt;br /&gt;
          table, th, td, .section {&lt;br /&gt;
          border: 1px solid black;&lt;br /&gt;
          }&lt;br /&gt;
          th {&lt;br /&gt;
          text-align:left;&lt;br /&gt;
          padding-left: 10px;&lt;br /&gt;
          padding-right: 10px;&lt;br /&gt;
          }&lt;br /&gt;
          td {&lt;br /&gt;
          text-align:center;&lt;br /&gt;
          }&lt;br /&gt;
          p {&lt;br /&gt;
          text-align:justify;&lt;br /&gt;
          }&lt;br /&gt;
          .description {&lt;br /&gt;
          vertical-align:top; &lt;br /&gt;
          padding:10px;&lt;br /&gt;
          }&lt;br /&gt;
        &amp;lt;/style&amp;gt;&lt;br /&gt;
      &amp;lt;/head&amp;gt;&lt;br /&gt;
      &amp;lt;body&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;Trainings at SuperSportsClub&amp;lt;/h1&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;/Trainings/Styles/Style&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:sort select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:variable select=&amp;quot;.&amp;quot; name=&amp;quot;SelectedStyle&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;section&amp;quot; &amp;gt;&lt;br /&gt;
            &amp;lt;h2&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select=&amp;quot;$SelectedStyle&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/h2&amp;gt;&lt;br /&gt;
            &amp;lt;ul&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:for-each select=&amp;quot;/Trainings/Training&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:sort select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:variable name=&amp;quot;Training&amp;quot; select=&amp;quot;.&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:if test=&amp;quot;Styles/Style/@Id = $SelectedStyle/@Id&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;&lt;br /&gt;
                    &amp;lt;h3&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;$Training/Name&amp;quot; /&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:if test=&amp;quot;$Training/@Licence&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:text&amp;gt; (&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:value-of select=&amp;quot;$Training/@Licence&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:text&amp;gt;)&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
                    &amp;lt;/h3&amp;gt;&lt;br /&gt;
                    &amp;lt;table&amp;gt;&lt;br /&gt;
                      &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                      &amp;lt;/tr&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:for-each select=&amp;quot;$Training/Schedule/ScheduleItem&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:sort select=&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:variable name=&amp;quot;StartTime&amp;quot; select=&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:variable name=&amp;quot;Duration&amp;quot; select=&amp;quot;$StartTime/@Duration&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;tr&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;150&amp;quot; &amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;concat(&lt;br /&gt;
                                            substring($StartTime, 9, 2), &lt;br /&gt;
                                            &#039;.&#039;, &lt;br /&gt;
                                            substring($StartTime, 6, 2), &lt;br /&gt;
                                            &#039;.&#039;, &lt;br /&gt;
                                            substring($StartTime, 1, 4),&lt;br /&gt;
                                            &#039; &#039;,&lt;br /&gt;
                                            substring($StartTime, 12, 2),&lt;br /&gt;
                                            &#039;:&#039;,&lt;br /&gt;
                                            substring($StartTime, 15, 2))&lt;br /&gt;
                                            &amp;quot; /&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:if test=&amp;quot;Comment&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;br/&amp;gt;&lt;br /&gt;
                              &amp;lt;div style=&amp;quot;color:Green&amp;quot;&amp;gt;&lt;br /&gt;
                                &amp;lt;xsl:value-of select=&amp;quot;Comment&amp;quot;/&amp;gt;&lt;br /&gt;
                              &amp;lt;/div&amp;gt;&lt;br /&gt;
                            &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;substring($Duration, 3, 6)&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:variable name=&amp;quot;VenueId&amp;quot; select=&amp;quot;@VenueId&amp;quot;/&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;/Trainings/Venues/Venue[@Id=$VenueId]&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:for-each select=&amp;quot;Instructors/Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:variable name=&amp;quot;InstructorId&amp;quot; select=&amp;quot;@Id&amp;quot;&amp;gt;&amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:variable name=&amp;quot;SelectedInstructor&amp;quot; select=&amp;quot;/Trainings/Instructors/Instructor[@Id=$InstructorId]&amp;quot; /&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/Name&amp;quot;/&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:text&amp;gt; (&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/@Rating&amp;quot; /&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:text&amp;gt;)&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                              &amp;lt;br/&amp;gt;&lt;br /&gt;
                            &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;/tr&amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
                    &amp;lt;/table&amp;gt;&lt;br /&gt;
                    &amp;lt;br/&amp;gt;&lt;br /&gt;
                    &amp;lt;table&amp;gt;&lt;br /&gt;
                      &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                          &amp;lt;xsl:variable name=&amp;quot;VideoUrl&amp;quot; select=&amp;quot;$Training/VideoUrl&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;{$VideoUrl}&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                          &amp;lt;p&amp;gt;&lt;br /&gt;
                            &amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&lt;br /&gt;
                          &amp;lt;/p&amp;gt;&lt;br /&gt;
                          &amp;lt;p&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;$Training/Description&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                      &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;/table&amp;gt;&lt;br /&gt;
                  &amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
            &amp;lt;/ul&amp;gt;&lt;br /&gt;
          &amp;lt;/div&amp;gt;&lt;br /&gt;
          &amp;lt;br/&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
      &amp;lt;/body&amp;gt;&lt;br /&gt;
    &amp;lt;/html&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== HTML (transformeeritud) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/trainings.html Vaata eelneva transformatsiooni tulemust.]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;META http-equiv=&amp;quot;Content-Type&amp;quot; content=&amp;quot;text/html; charset=utf-8&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;SuperSportsClub - Trainings&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;style&amp;gt;&lt;br /&gt;
        body {&lt;br /&gt;
            background: BurlyWood;&lt;br /&gt;
            text-align: center;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        .section {&lt;br /&gt;
            text-align: left;&lt;br /&gt;
            width: 1000px;&lt;br /&gt;
            padding: 20px;&lt;br /&gt;
            background: Chocolate;&lt;br /&gt;
            margin: auto;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        table, th, td, .section {&lt;br /&gt;
            border: 1px solid black;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        th {&lt;br /&gt;
            text-align: left;&lt;br /&gt;
            padding-left: 10px;&lt;br /&gt;
            padding-right: 10px;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        td {&lt;br /&gt;
            text-align: center;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        p {&lt;br /&gt;
            text-align: justify;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        .description {&lt;br /&gt;
            vertical-align: top;&lt;br /&gt;
            padding: 10px;&lt;br /&gt;
        }&lt;br /&gt;
    &amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
    &amp;lt;h1&amp;gt;Trainings at SuperSportsClub&amp;lt;/h1&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Body&amp;amp;amp;Mind&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyBalance™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 13:30&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;1H15M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 2&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Minnie Mouse (4.6)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;31.03.2017 12:15&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;1H15M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 3&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Mickey Mouse (4.7)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/jJxA6vBjUqY&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                BODYBALANCE™ is the Yoga, Tai Chi, Pilates workout that builds flexibility and strength and leaves you feeling centered and calm. Based on a carefully structured series of stretches, moves and poses to music it creates a holistic workout that brings the body into a state of harmony and balance. This class will heighten your flexibility and inner strength creating a strong supple body from the inside out. Burn on average 390cals per hour.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;Yoga&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;25.03.2017 14:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Yoga Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Minnie Yogafier (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
                            28.03.2017 14:00&amp;lt;br&amp;gt;&amp;lt;div style=&amp;quot;color:Green&amp;quot;&amp;gt;&lt;br /&gt;
                                Special class!&lt;br /&gt;
                            &amp;lt;/div&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;1H20M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Yoga Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Minnie Yogafier (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/Nvlxn0EnmbM&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                Yoga is a group of physical, mental, and spiritual practices or disciplines which originated in ancient India.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Cardio&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyJam™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 16:10&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 3&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Donald Duck (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;01.04.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;45M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 5&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Goofy (3.9)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/8PTXyg9si_4&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                The Body Jam program is an addictive fusion of the latest dance styles to the hottest new sounds. This class isn’t just for dancers, it’s for everyone because the emphasis is put on not only having fun but also breaking a sweat. So grab a friend, get front and centre … you bring the attitude and we’ll bring the moves!&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Dance&amp;amp;amp;Fun&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyJam™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 16:10&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 3&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Donald Duck (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;01.04.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;45M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 5&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Goofy (3.9)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/8PTXyg9si_4&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                The Body Jam program is an addictive fusion of the latest dance styles to the hottest new sounds. This class isn’t just for dancers, it’s for everyone because the emphasis is put on not only having fun but also breaking a sweat. So grab a friend, get front and centre … you bring the attitude and we’ll bring the moves!&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;Zumba®&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;26.03.2017 15:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;55M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 2&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Zumbaschnegger (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;28.03.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 4&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Zumbaschnegger (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 2&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Zumbaschnegger (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/-ZB6XIkfxnQ&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                Zumba involves dance and aerobic movements performed to energetic music. The choreography incorporates hip-hop, soca, samba, salsa, merengue and mambo. Squats and lunges are also included.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Strength&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyPump™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;23.03.2017 13:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Main Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Schwarzenegger (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 13:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Main Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Schwarzenegger (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/zU_0XrdO3wo&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                BodyPump classes are 59 minutes long and contain eight separate muscle-group specific songs or &amp;quot;tracks&amp;quot; along with an opening warm up track and closing cool-down track. There are also 45-minute and 30-minute class formats. The classes are performed to music using free weights-plates, barbells and an aerobic step. Participants choose their weights based on the exercise and their personal goals. Major muscle groups are worked via series of compound and isolation-based exercises including squats, presses, dead lifts. The focus is towards muscle endurance by moving light weights at high repetitions, what Les Mills calls the Rep Effect.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;CoreStrength&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
                            23.03.2017 12:00&amp;lt;br&amp;gt;&amp;lt;div style=&amp;quot;color:Green&amp;quot;&amp;gt;&lt;br /&gt;
                                Special challenge!&lt;br /&gt;
                            &amp;lt;/div&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;2H&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Area 6&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Margaret Strengthener (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Area 6&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Kayla Weightlifter (4.8)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;05.04.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Area 6&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Kayla Weightlifter (4.8)&amp;lt;br&amp;gt;Margaret Strengthener (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/ZxTVmpvyUt8&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                CoreStrenght is a very hard workout! Not for beginners.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSLT (xml) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Selle transformatsiooniga luuakse uus [http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/schedule.xml XML fail], milles on treeningute andmed esitatud ühtse tunniplaani kujul. Algses failis erinevate elementide alla paigutatud andmed on nüüd tunniplaani alamelemendis kokku viidud. Sidumine on teostatud id-atribuutide abil. Tunniplaanis on ühes kohas kirjas treeningu nimi, stiil(id), koht, algusaeg, kestus, rühma suurus, instruktorid ja muu täiendav info.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&lt;br /&gt;
    xmlns:msxsl=&amp;quot;urn:schemas-microsoft-com:xslt&amp;quot; exclude-result-prefixes=&amp;quot;msxsl&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:output method=&amp;quot;xml&amp;quot; indent=&amp;quot;yes&amp;quot; cdata-section-elements=&amp;quot;Name Style Comment&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;/Trainings/Training&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:sort select=&amp;quot;Name&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:variable name=&amp;quot;SelectedTraining&amp;quot; select=&amp;quot;.&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;Schedule/ScheduleItem&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:sort select=&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;ScheduleItem&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:variable name=&amp;quot;VenueId&amp;quot; select=&amp;quot;@VenueId&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:variable name=&amp;quot;SelectedVenue&amp;quot; select=&amp;quot;/Trainings/Venues/Venue[@Id=$VenueId]&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:attribute name=&amp;quot;GroupSize&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;@GroupSize&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:value-of select=&amp;quot;@GroupSize&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:value-of select=&amp;quot;$SelectedVenue/@GroupSize&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
            &amp;lt;Venue&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$VenueId&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select=&amp;quot;$SelectedVenue&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/Venue&amp;gt;&lt;br /&gt;
            &amp;lt;Training&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$SelectedTraining/@Id&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:if test=&amp;quot;$SelectedTraining/@Licence&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:attribute name=&amp;quot;Licence&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:value-of select=&amp;quot;$SelectedTraining/@Licence&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
              &amp;lt;Name&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$SelectedTraining/Name&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/Name&amp;gt;&lt;br /&gt;
              &amp;lt;Styles&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:for-each select=&amp;quot;$SelectedTraining/Styles/Style&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:variable name=&amp;quot;StyleId&amp;quot; select=&amp;quot;@Id&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;Style&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:attribute name=&amp;quot;StyleId&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;$StyleId&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;/Trainings/Styles/Style[@Id=$StyleId]&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/Style&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
              &amp;lt;/Styles&amp;gt;&lt;br /&gt;
            &amp;lt;/Training&amp;gt;&lt;br /&gt;
            &amp;lt;Time&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:attribute name=&amp;quot;Duration&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;Time/@Duration&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select =&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/Time&amp;gt;&lt;br /&gt;
            &amp;lt;Instructors&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:for-each select=&amp;quot;Instructors/Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:variable name=&amp;quot;InstructorId&amp;quot; select=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:variable name=&amp;quot;SelectedInstructor&amp;quot; select=&amp;quot;/Trainings/Instructors/Instructor[@Id=$InstructorId]&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;Instructor&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;$InstructorId&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:attribute name=&amp;quot;Rating&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/@Rating&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                  &amp;lt;Name&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/Name&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/Name&amp;gt;&lt;br /&gt;
                &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
            &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:if test=&amp;quot;Comment&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;Comment&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;Comment&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/Comment&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
          &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XML (transformeeritud) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/schedule.xml Vaata eelneva transformatsiooni tulemust.]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Schedule&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;3&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot;&amp;gt;Hall 2&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;2&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyBalance™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-30T13:30:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;3&amp;quot; Rating=&amp;quot;4.6&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;2&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;3&amp;quot;&amp;gt;Hall 3&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;2&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyBalance™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-31T12:15:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;2&amp;quot; Rating=&amp;quot;4.7&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Mickey Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;4&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;3&amp;quot;&amp;gt;Hall 3&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;3&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyJam™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;![CDATA[Cardio]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T16:10:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;4&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Donald Duck]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;5&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;5&amp;quot;&amp;gt;Hall 5&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;3&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyJam™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;![CDATA[Cardio]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT45M&amp;quot;&amp;gt;2017-04-01T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;5&amp;quot; Rating=&amp;quot;3.9&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Goofy]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;7&amp;quot; GroupSize=&amp;quot;45&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;1&amp;quot;&amp;gt;Main Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;4&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyPump™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-23T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;6&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Schwarzenegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;6&amp;quot; GroupSize=&amp;quot;45&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;1&amp;quot;&amp;gt;Main Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;4&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyPump™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;6&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Schwarzenegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;8&amp;quot; GroupSize=&amp;quot;10&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot;&amp;gt;Area 6&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT2H&amp;quot;&amp;gt;2017-03-23T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;9&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Margaret Strengthener]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
    &amp;lt;Comment&amp;gt;&amp;lt;![CDATA[&lt;br /&gt;
          Special challenge!&lt;br /&gt;
        ]]&amp;gt;&amp;lt;/Comment&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;9&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot;&amp;gt;Area 6&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;8&amp;quot; Rating=&amp;quot;4.8&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Kayla Weightlifter]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;10&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot;&amp;gt;Area 6&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-04-05T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;8&amp;quot; Rating=&amp;quot;4.8&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Kayla Weightlifter]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;9&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Margaret Strengthener]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;11&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot;&amp;gt;Hall 2&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT55M&amp;quot;&amp;gt;2017-03-26T15:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;12&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;4&amp;quot;&amp;gt;Hall 4&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-28T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;13&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot;&amp;gt;Hall 2&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;1&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;7&amp;quot;&amp;gt;Yoga Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Yoga]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-25T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;1&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Yogafier]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;14&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;7&amp;quot;&amp;gt;Yoga Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Yoga]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT1H20M&amp;quot;&amp;gt;2017-03-28T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;1&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Yogafier]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
    &amp;lt;Comment&amp;gt;&amp;lt;![CDATA[&lt;br /&gt;
          Special class!&lt;br /&gt;
        ]]&amp;gt;&amp;lt;/Comment&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
&amp;lt;/Schedule&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus ==&lt;br /&gt;
Angular JS &#039;&#039;single page application&#039;&#039; eelnevalt kirjeldatud veebiteenusele. Sisse logimata saab kuvada spordiklubi tunniplaani, treeningstiile ja treenereid. Võimalik on liituda teenusega ja registreeruda treeningutele, samuti registreeringuid tühistada. &lt;br /&gt;
&lt;br /&gt;
Autentimine on lahendatud tokenipõhiselt. Eeskujuna kasutasime näidisrakendust, mille juhend ja lähtekood on leitav [http://bitoftech.net/2014/06/09/angularjs-token-authentication-using-asp-net-web-api-2-owin-asp-net-identity/ siit].&lt;br /&gt;
&lt;br /&gt;
== Lähtekood ==&lt;br /&gt;
Eksamiks valminud veebiteenuse ja klientrakenduse kokkupakitult allalaadimiseks klõpsa [http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/solution/ProjectSPOT.zip sellel lingil].&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;NB! Kui WebApi käivitamisel tekkivasse andmebaasi kõiki andmeid (tunniplaani ja registreerimisi jooksvasse nädalasse) ei ilmu, siis käivitage eelnevalt samas lahenduses olev konsoolirakendus.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Retsensioonid ==&lt;br /&gt;
&lt;br /&gt;
# [https://wiki.itcollege.ee/index.php/Talk:JRT XML/XSD/XSLT retsensioon meeskonnale JRT]&lt;br /&gt;
# [Veebiteenuse retsensioon lisandub varsti]&lt;br /&gt;
# [Klientrakenduse retsensioon lisandub varsti]&lt;br /&gt;
&lt;br /&gt;
== Log ==&lt;br /&gt;
* 03.03.17 Esimene kohtumine. Idee.&lt;br /&gt;
* 17.03.17 Osa XMList valmis, osa XSLT-st valmis.&lt;br /&gt;
* 18.03.17 Teine kohtumine. XMLi täiendamine, esimene ülekäimine XSD-s.&lt;br /&gt;
* 19.03.17 XML/XSLT/XSD täiendamine ja lõpetamine.&lt;br /&gt;
* 20.03.17 XML fail, skeemifail ja stiilifailid esitatud. Projekti esimese etapi lõpp. Kevade algus.&lt;br /&gt;
* 26.03.17 XML/XSLT/XSD retsensioon esitatud.&lt;br /&gt;
* 16.04.17 Veebiteenuse analüüsi koostamine.&lt;br /&gt;
* 17.04.17 Esialgne veebiteenuse analüüs ja kavand valmis.&lt;br /&gt;
* 19.04.17 Alustasime veebiteenusega, koostegemine: Domain, DAL, Interfaces, Repostitories. Testimine konsoolis.&lt;br /&gt;
* 24.04.17 Veebiteenuse koostegemine, 2. kord: Domaini täiendamine.&lt;br /&gt;
* 29.04.17 Veebiteenuse koostegemine, 3. kord: Interfaces, Repositories, Factory + UOW. Testimine konsoolis.&lt;br /&gt;
* 01.05.17 Andmebaasi täitmine testandmetega varasemas faasis loodud XML failist.&lt;br /&gt;
* 02.05.17 Veebiteenuse koostegemine, 4. kord: alustasime BLi ja WebApi ehitamist. GET päringud.&lt;br /&gt;
* 09.05.17 Veebiteenuse koostegemine, 5. kord: lisasime Identity.&lt;br /&gt;
* 11.05.17 Veebiteenuse koostegemine, 6. kord: WebApi arendamine. POST, PUT ja DELETE päringud.&lt;br /&gt;
* 15.05.17 Veebiteenuse koostegemine, 7. kord: WebApi arendamine. Lisasime  api kontrollereid.&lt;br /&gt;
* 16.05.17 Veebiteenuse koostegemine, 8. kord: WebApi arendamine. Identity kontroll Fiddleri ja Postmaniga.&lt;br /&gt;
* 20.05.17 Klientrakenduse koostegemine, 1. kord. Testklient.&lt;br /&gt;
* 25.05.17 Klientrakenduse koostegemine, 2. kord. Klientrakenduse arendamine.&lt;br /&gt;
* 01.06.17 Klientrakenduse koostegemine, 3. kord. Klientrakenduse arendamine. Angular JS.&lt;br /&gt;
* 03.06.17 - 11.06.17 Klientrakenduse arendamine. Tokenipõhine autentimine. Veebiteenuse viimistlemine.&lt;br /&gt;
* 11.06.17 Lõpptähtaeg. Projekti esitlemine eksamil.&lt;br /&gt;
* 12.06.17 Teiste lahenduste retsenseerimine.&lt;/div&gt;</summary>
		<author><name>Otiks</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Team_SPOT&amp;diff=123473</id>
		<title>Team SPOT</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Team_SPOT&amp;diff=123473"/>
		<updated>2017-06-12T02:25:49Z</updated>

		<summary type="html">&lt;p&gt;Otiks: /* Lähtekood */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://wiki.itcollege.ee/index.php/Kodut%C3%B6%C3%B6_aines_%22V%C3%B5rgurakendused_II:_hajuss%C3%BCsteemide_ehitamine%22_2017 Kodutöö aines &amp;quot;Võrgurakendused II: hajussüsteemide ehitamine&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
[https://projectspot.visualstudio.com/PROJECTSPOT Projekti kodu (avaneb ainult liikmetele)]&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==Liikmed==&lt;br /&gt;
*Sigrid Pachel&lt;br /&gt;
*Oliver Tiks&lt;br /&gt;
&lt;br /&gt;
==Idee==&lt;br /&gt;
Mõttes on luua spordiklubi(de) veebiteenus ja klientrakendus, mis võimaldaks saada infot pakutavate treeningute kohta, sisestada ja kuvada tunniplaani andmeid, registreerida osalejaid tundidesse ning teha muid asjakohaseid tegevusi nii klubi(de) personalil, liikmetel kui ka juhukasutajatel.&lt;br /&gt;
&lt;br /&gt;
==Veebiteenuse analüüs==&lt;br /&gt;
SPOTi veebiteenus võimaldab saada infot erinevate klubide treeningute kohta ja end neisse registreerida. Kasutaja saab teavet, kus ja millal treeningud toimuvad (tunniplaan), mida treeningus täpsemalt tehakse, mis stiiliga on tegemist, kes on treener, kui palju üks kord maksab jms info. Kasutajakontoga liikmel on võimalik end registreerida soovitud tundi ja hallata oma registreeringuid (muuta, tühistada).&lt;br /&gt;
&lt;br /&gt;
Spordiklubide infot haldavad süsteemi administraatorid, kes saavad lisada, muuta ja kustutada kõike sprodiklubiga seonduvat. Erinevaid treeninguid ja nendega seotud konkreetset infot saavad lisada ja hallata treenerid või spordiklubi esindajad.&lt;br /&gt;
&lt;br /&gt;
Projekti realiseerimiseks kasutame REST arhitektuuri ja ASP.NET MVC Web API tehnoloogiat.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Üldine plaan:&#039;&#039;&#039;&lt;br /&gt;
* esialgu üks kett (laienemise võimalusega)&lt;br /&gt;
* mitu klubi (asukoht, saalid-treeningualad, võimalikud lisatingimused)&lt;br /&gt;
* treeningute info (stiilid ehk kontseptid, litsentsid, …)&lt;br /&gt;
* tunniplaan (aeg, koht, instruktorid, max osalejate arv, ühe korra hind)&lt;br /&gt;
* registratuur (treeningutest osavõtjad)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kasutajad (rollid):&#039;&#039;&#039;&lt;br /&gt;
* administraatorid (saavad teha muudatusi)&lt;br /&gt;
* treenerid (info kvalifikatsiooni, litsentside kohta, õigus treeninguid lisada) &lt;br /&gt;
* liikmed (saavad treeningutele registreeruda)&lt;br /&gt;
* ülejäänud (näevad klubide ja treeningute infot ning tunniplaani)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Peaks olema:&#039;&#039;&#039;&lt;br /&gt;
* kasutajate loomine&lt;br /&gt;
* kasutajate tuvastamine ja haldamine&lt;br /&gt;
* kasutajate ja kasutusstatistika logimine&lt;br /&gt;
* teenuse poole pöördumiste arvu piiramine ja piirangute haldamine&lt;br /&gt;
* klubide, treenerite ja treeningute info väljastamine&lt;br /&gt;
* tunniplaani info väljastamine&lt;br /&gt;
* treeningutesse registreerimine&lt;br /&gt;
* registreeringu tühistamine&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Võiks olla:&#039;&#039;&#039;&lt;br /&gt;
* klubide, treenerite, treeningute lisamine ja muutmine&lt;br /&gt;
* tunniplaanis treeningute tühistamine&lt;br /&gt;
* sisestatud andmete kustutamine (pehmelt)&lt;br /&gt;
* rollide-õiguste määramine (admin)&lt;br /&gt;
* asukohad mitmes riigis&lt;br /&gt;
* kliendipaketid, arveldus&lt;br /&gt;
* kontaktide tsentraliseeritud haldus&lt;br /&gt;
* sisselogimine läbi Google’i, Facebooki vmt teenuse&lt;br /&gt;
&lt;br /&gt;
===Andmebaasi skeem (lihtsustatud)===&lt;br /&gt;
&lt;br /&gt;
[[File:SPOTService ERD.JPG|border|SPOT Service ERD]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Märkus: olemite atribuutidest on välja toodud ainult peamised.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====Tabelite kirjeldused====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kasutajahaldus*:&#039;&#039;&#039;&lt;br /&gt;
* User - kasutajate andmed&lt;br /&gt;
* Role - rollid, millega määratakse kasutajate õigused (&amp;quot;Admin&amp;quot;, &amp;quot;Trainer&amp;quot;, ...)&lt;br /&gt;
* UserRole - kasutajate sidumine rolli(de)ga&lt;br /&gt;
* UserLogin - muu teenuse kaudu sisselogimiseks&lt;br /&gt;
* UserClaim - muu teenuse kaudu sisselogimiseks&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;&#039;&#039;Kasutajahalduse süsteem toetub Asp.Net Identity valmislahendusele, mida on täiendanud A. Käver.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Klubid:&#039;&#039;&#039;&lt;br /&gt;
* Chain (optional) - spordiklubikettide info&lt;br /&gt;
* Location - spordiklubi/-rajatise asukoht linna/asula täpsusega&lt;br /&gt;
* Facility - spordiklubi/-rajatise andmed, seotud asukohaga ja vajadusel ketiga.&lt;br /&gt;
* Venue - spordiklubis/-rajatises kasutatavad saalid ja muud treeningualad&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Treeningud:&#039;&#039;&#039;&lt;br /&gt;
* Concept (Style) - treeningustiilid ehk kontseptid&lt;br /&gt;
* Licenser (optional) - treeninguliikide litsentsid (kui on)&lt;br /&gt;
* Training - treeninguliikide andmed, seotud stiili ja vajadusel litsentsiga&lt;br /&gt;
* Trainer (User (role: Trainer) + Training) - treeninguliikide sidumine treeneritega&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tunniplaan:&#039;&#039;&#039;&lt;br /&gt;
* ScheduleItem - treeningud tunniplaanis&lt;br /&gt;
* Instructor (User (role: Trainer) + ScheduleItem) - tundide juhendajad (võib olla mitu)&lt;br /&gt;
* Registration (ScheduleItem + User (role: any)) - tundidesse tehtud registreeringud&lt;br /&gt;
&lt;br /&gt;
== XML / XSD / XSLT==&lt;br /&gt;
Projekti esimeses etapis sai loodud XML andmefail, mille ülesehitus on paika pandud XSD skeemifailis. Lisaks on olemas kaks stiilifaili: esimene neist transformeerib andmed HTML-kujule, et kuvada infot  veebilehel, teine tekitab samade andmete esitamiseks uue struktuuriga XML faili.&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/ProjectSPOT_ScheduleXml.zip Lae failid alla.] &lt;br /&gt;
&lt;br /&gt;
=== XML ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Fail sisaldab andmeid ühes spordiklubis pakutavate treeningute kohta. Andmed on esitatud treeninguliikide kaupa, mille juurde on lisatud ka vastava treeninguliigi tunniplaan. Treeninguliikidel on nimi ja kirjeldus ning vajadusel ära märgitud ka litsents. Failis on eraldi välja toodud treeningustiilid, instruktorid ja ruumid, kus treeningud toimuvad. Iga treeninguliik kuulub ühe või mitme stiili alla. Instruktoritel on tagasiside põhjal saadud hinne. Treeninguruumidel on vaikimisi määratud mahutavus. Tunniplaanis on ära toodud treeningu koht, algusaeg ja kestus ning instruktorid. Vajadusel saab eraldi määrata ka treeningurühma suuruse, kui see erineb tavalisest ruumi mahutavusest. Ka on võimalik treeningutunnile lisada kommentaar. Erinevate elementide andmed on omavahel seotud id-atribuutidega.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;?xml-stylesheet type=&amp;quot;text/xsl&amp;quot; href=&amp;quot;trainingsToHtml.xslt&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Trainings&amp;gt;&lt;br /&gt;
  &amp;lt;Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;![CDATA[Cardio]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
    &amp;lt;Style Id=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
  &amp;lt;/Styles&amp;gt;&lt;br /&gt;
  &amp;lt;Instructors&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;1&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Yogafier]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;2&amp;quot; Rating=&amp;quot;4.7&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Mickey Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;3&amp;quot; Rating=&amp;quot;4.6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;4&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Donald Duck]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;5&amp;quot; Rating=&amp;quot;3.9&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Goofy]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;6&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Schwarzenegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;8&amp;quot; Rating=&amp;quot;4.8&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Kayla Weightlifter]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;Instructor Id=&amp;quot;9&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Margaret Strengthener]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
  &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;Venues&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;1&amp;quot; GroupSize=&amp;quot;45&amp;quot;&amp;gt;&amp;lt;![CDATA[Main Hall]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 2]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;3&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 3]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;4&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 4]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;5&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&amp;lt;![CDATA[Hall 5]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&amp;lt;![CDATA[Area 6]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;7&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&amp;lt;![CDATA[Yoga Hall]]&amp;gt;&amp;lt;/Venue&amp;gt;&lt;br /&gt;
  &amp;lt;/Venues&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Yoga]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[Yoga is a group of physical, mental, and spiritual practices or disciplines which originated in ancient India. ]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;1&amp;quot; VenueId=&amp;quot;7&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-25T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;14&amp;quot; VenueId=&amp;quot;7&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT1H20M&amp;quot;&amp;gt;2017-03-28T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Comment&amp;gt;&lt;br /&gt;
          &amp;lt;![CDATA[Special class!]]&amp;gt;&lt;br /&gt;
        &amp;lt;/Comment&amp;gt; &lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/Nvlxn0EnmbM&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;  &lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;2&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyBalance™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[BODYBALANCE™ is the Yoga, Tai Chi, Pilates workout that builds flexibility and strength and leaves you feeling centered and calm. Based on a carefully structured series of stretches, moves and poses to music it creates a holistic workout that brings the body into a state of harmony and balance. This class will heighten your flexibility and inner strength creating a strong supple body from the inside out. Burn on average 390cals per hour.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;2&amp;quot; VenueId=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-31T12:15:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;3&amp;quot; VenueId=&amp;quot;2&amp;quot; &amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-30T13:30:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;3&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/jJxA6vBjUqY&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;3&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyJam™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;4&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[The Body Jam program is an addictive fusion of the latest dance styles to the hottest new sounds. This class isn’t just for dancers, it’s for everyone because the emphasis is put on not only having fun but also breaking a sweat. So grab a friend, get front and centre … you bring the attitude and we’ll bring the moves!]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;4&amp;quot;  VenueId=&amp;quot;3&amp;quot; &amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T16:10:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;4&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;5&amp;quot; VenueId=&amp;quot;5&amp;quot; &amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT45M&amp;quot;&amp;gt;2017-04-01T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;5&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/8PTXyg9si_4&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;4&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyPump™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[BodyPump classes are 59 minutes long and contain eight separate muscle-group specific songs or &amp;quot;tracks&amp;quot; along with an opening warm up track and closing cool-down track. There are also 45-minute and 30-minute class formats. The classes are performed to music using free weights-plates, barbells and an aerobic step. Participants choose their weights based on the exercise and their personal goals. Major muscle groups are worked via series of compound and isolation-based exercises including squats, presses, dead lifts. The focus is towards muscle endurance by moving light weights at high repetitions, what Les Mills calls the Rep Effect.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;3&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;6&amp;quot; VenueId=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;6&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;7&amp;quot; VenueId=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-23T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;6&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/zU_0XrdO3wo&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[CoreStrenght is a very hard workout! Not for beginners.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;3&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;8&amp;quot; VenueId=&amp;quot;6&amp;quot; GroupSize=&amp;quot;10&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT2H&amp;quot;&amp;gt;2017-03-23T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;9&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Comment&amp;gt;&lt;br /&gt;
          &amp;lt;![CDATA[Special challenge!]]&amp;gt;&lt;br /&gt;
        &amp;lt;/Comment&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;9&amp;quot; VenueId=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;8&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;10&amp;quot; VenueId=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-04-05T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;8&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;9&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/ZxTVmpvyUt8&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
  &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      &amp;lt;![CDATA[Zumba involves dance and aerobic movements performed to energetic music. The choreography incorporates hip-hop, soca, samba, salsa, merengue and mambo. Squats and lunges are also included.]]&amp;gt;&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Styles&amp;gt;&lt;br /&gt;
      &amp;lt;Style Id=&amp;quot;4&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;11&amp;quot; VenueId=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT55M&amp;quot;&amp;gt;2017-03-26T15:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;12&amp;quot; VenueId=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-28T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
      &amp;lt;ScheduleItem Id=&amp;quot;13&amp;quot; VenueId=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
        &amp;lt;Instructors&amp;gt;&lt;br /&gt;
          &amp;lt;Instructor Id=&amp;quot;7&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
    &amp;lt;VideoUrl&amp;gt;https://www.youtube.com/embed/-ZB6XIkfxnQ&amp;lt;/VideoUrl&amp;gt;&lt;br /&gt;
  &amp;lt;/Training&amp;gt;&lt;br /&gt;
&amp;lt;/Trainings&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSD ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Skeemifail kontrollib eelnevas andmefailis esitatud andmete vastavust kokkulepitud formaadile, samuti õigete andmetüüpide kasutamist. Alamelemendi id-atribuudi väärtus peab olema iga elemendirühma lõikes unikaalne. Kohustuslike elementide ja atribuutide kõrval on ka mõned (nt kommentaar), mille olemasolu pole alati tarvilik. Teatud puhkudel on piiratud maksimaalset elementide arvu (nt treeningutunni algusaeg). Faili üldine struktuur on kindel, aga alati pole alamelementide järjekord oluline (nt treeninguliigi puhul).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xs:schema attributeFormDefault=&amp;quot;unqualified&amp;quot; elementFormDefault=&amp;quot;qualified&amp;quot; xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xs:element name=&amp;quot;Trainings&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Styles&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Style&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
          &amp;lt;xs:unique name=&amp;quot;UniqueStyleId&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xs:selector xpath=&amp;quot;Style&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Instructors&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;Name&amp;quot; type=&amp;quot;xs:string&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:attribute name=&amp;quot;Rating&amp;quot; type=&amp;quot;xs:decimal&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
          &amp;lt;xs:unique name=&amp;quot;UniqueInstructorId&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xs:selector xpath=&amp;quot;Instructor&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Venues&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Venue&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:attribute name=&amp;quot;GroupSize&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
          &amp;lt;xs:unique name=&amp;quot;UniqueVenueId&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xs:selector xpath=&amp;quot;Venue&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Training&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:all&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Description&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Styles&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Style&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Schedule&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;ScheduleItem&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:all&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element  maxOccurs=&amp;quot;1&amp;quot; name=&amp;quot;Time&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:extension base=&amp;quot;xs:dateTime&amp;quot;&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:attribute name=&amp;quot;Duration&amp;quot; type=&amp;quot;xs:duration&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element name=&amp;quot;Instructors&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                    &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                                      &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                                        &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                                      &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                                    &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                                  &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; name=&amp;quot;Comment&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:all&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;VenueId&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;GroupSize&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;optional&amp;quot; /&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;VideoUrl&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:all&amp;gt;&lt;br /&gt;
            &amp;lt;xs:attribute name=&amp;quot;Id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xs:attribute name=&amp;quot;Licence&amp;quot; type=&amp;quot;xs:string&amp;quot; use=&amp;quot;optional&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
    &amp;lt;xs:unique name=&amp;quot;UniqueTrainingId&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xs:selector xpath=&amp;quot;Training&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
    &amp;lt;xs:unique name=&amp;quot;UniqueScheduleItemId&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xs:selector xpath=&amp;quot;Training/Schedule/ScheduleItem&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;xs:field xpath=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:unique&amp;gt;&lt;br /&gt;
  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSLT (html) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Selles transformatsioonifailis on kirjeldatud XML failis olevate andmete [http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/trainings.xml  kuvamise viis veebilehel]. Treeninguliigid on jaotatud stiiliblokkidesse (mõni treening kuulub mitme stiili alla). Iga treeninguliigi all on tabeli kujul esitatud tunniplaan ning lisatud näidisvideo ja kirjeldus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot; xmlns:msxsl=&amp;quot;urn:schemas-microsoft-com:xslt&amp;quot; exclude-result-prefixes=&amp;quot;msxsl&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:output method=&amp;quot;html&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;html&amp;gt;&lt;br /&gt;
      &amp;lt;head&amp;gt;&lt;br /&gt;
        &amp;lt;title&amp;gt;SuperSportsClub - Trainings&amp;lt;/title&amp;gt;&lt;br /&gt;
        &amp;lt;style&amp;gt;&lt;br /&gt;
          body {&lt;br /&gt;
          background:BurlyWood;&lt;br /&gt;
          text-align: center;&lt;br /&gt;
          }&lt;br /&gt;
          .section {&lt;br /&gt;
          text-align:left;&lt;br /&gt;
          width:1000px;&lt;br /&gt;
          padding:20px;&lt;br /&gt;
          background:Chocolate;&lt;br /&gt;
          margin: auto;&lt;br /&gt;
          }&lt;br /&gt;
          table, th, td, .section {&lt;br /&gt;
          border: 1px solid black;&lt;br /&gt;
          }&lt;br /&gt;
          th {&lt;br /&gt;
          text-align:left;&lt;br /&gt;
          padding-left: 10px;&lt;br /&gt;
          padding-right: 10px;&lt;br /&gt;
          }&lt;br /&gt;
          td {&lt;br /&gt;
          text-align:center;&lt;br /&gt;
          }&lt;br /&gt;
          p {&lt;br /&gt;
          text-align:justify;&lt;br /&gt;
          }&lt;br /&gt;
          .description {&lt;br /&gt;
          vertical-align:top; &lt;br /&gt;
          padding:10px;&lt;br /&gt;
          }&lt;br /&gt;
        &amp;lt;/style&amp;gt;&lt;br /&gt;
      &amp;lt;/head&amp;gt;&lt;br /&gt;
      &amp;lt;body&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;Trainings at SuperSportsClub&amp;lt;/h1&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;/Trainings/Styles/Style&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:sort select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:variable select=&amp;quot;.&amp;quot; name=&amp;quot;SelectedStyle&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;section&amp;quot; &amp;gt;&lt;br /&gt;
            &amp;lt;h2&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select=&amp;quot;$SelectedStyle&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/h2&amp;gt;&lt;br /&gt;
            &amp;lt;ul&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:for-each select=&amp;quot;/Trainings/Training&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:sort select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:variable name=&amp;quot;Training&amp;quot; select=&amp;quot;.&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:if test=&amp;quot;Styles/Style/@Id = $SelectedStyle/@Id&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;&lt;br /&gt;
                    &amp;lt;h3&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;$Training/Name&amp;quot; /&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:if test=&amp;quot;$Training/@Licence&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:text&amp;gt; (&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:value-of select=&amp;quot;$Training/@Licence&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:text&amp;gt;)&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
                    &amp;lt;/h3&amp;gt;&lt;br /&gt;
                    &amp;lt;table&amp;gt;&lt;br /&gt;
                      &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                      &amp;lt;/tr&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:for-each select=&amp;quot;$Training/Schedule/ScheduleItem&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:sort select=&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:variable name=&amp;quot;StartTime&amp;quot; select=&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:variable name=&amp;quot;Duration&amp;quot; select=&amp;quot;$StartTime/@Duration&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;tr&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;150&amp;quot; &amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;concat(&lt;br /&gt;
                                            substring($StartTime, 9, 2), &lt;br /&gt;
                                            &#039;.&#039;, &lt;br /&gt;
                                            substring($StartTime, 6, 2), &lt;br /&gt;
                                            &#039;.&#039;, &lt;br /&gt;
                                            substring($StartTime, 1, 4),&lt;br /&gt;
                                            &#039; &#039;,&lt;br /&gt;
                                            substring($StartTime, 12, 2),&lt;br /&gt;
                                            &#039;:&#039;,&lt;br /&gt;
                                            substring($StartTime, 15, 2))&lt;br /&gt;
                                            &amp;quot; /&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:if test=&amp;quot;Comment&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;br/&amp;gt;&lt;br /&gt;
                              &amp;lt;div style=&amp;quot;color:Green&amp;quot;&amp;gt;&lt;br /&gt;
                                &amp;lt;xsl:value-of select=&amp;quot;Comment&amp;quot;/&amp;gt;&lt;br /&gt;
                              &amp;lt;/div&amp;gt;&lt;br /&gt;
                            &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;substring($Duration, 3, 6)&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:variable name=&amp;quot;VenueId&amp;quot; select=&amp;quot;@VenueId&amp;quot;/&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;/Trainings/Venues/Venue[@Id=$VenueId]&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                          &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:for-each select=&amp;quot;Instructors/Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:variable name=&amp;quot;InstructorId&amp;quot; select=&amp;quot;@Id&amp;quot;&amp;gt;&amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:variable name=&amp;quot;SelectedInstructor&amp;quot; select=&amp;quot;/Trainings/Instructors/Instructor[@Id=$InstructorId]&amp;quot; /&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/Name&amp;quot;/&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:text&amp;gt; (&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/@Rating&amp;quot; /&amp;gt;&lt;br /&gt;
                              &amp;lt;xsl:text&amp;gt;)&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                              &amp;lt;br/&amp;gt;&lt;br /&gt;
                            &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
                          &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;/tr&amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
                    &amp;lt;/table&amp;gt;&lt;br /&gt;
                    &amp;lt;br/&amp;gt;&lt;br /&gt;
                    &amp;lt;table&amp;gt;&lt;br /&gt;
                      &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                          &amp;lt;xsl:variable name=&amp;quot;VideoUrl&amp;quot; select=&amp;quot;$Training/VideoUrl&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;{$VideoUrl}&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                          &amp;lt;p&amp;gt;&lt;br /&gt;
                            &amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&lt;br /&gt;
                          &amp;lt;/p&amp;gt;&lt;br /&gt;
                          &amp;lt;p&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;$Training/Description&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                      &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;/table&amp;gt;&lt;br /&gt;
                  &amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
            &amp;lt;/ul&amp;gt;&lt;br /&gt;
          &amp;lt;/div&amp;gt;&lt;br /&gt;
          &amp;lt;br/&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
      &amp;lt;/body&amp;gt;&lt;br /&gt;
    &amp;lt;/html&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== HTML (transformeeritud) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/trainings.html Vaata eelneva transformatsiooni tulemust.]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;META http-equiv=&amp;quot;Content-Type&amp;quot; content=&amp;quot;text/html; charset=utf-8&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;SuperSportsClub - Trainings&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;style&amp;gt;&lt;br /&gt;
        body {&lt;br /&gt;
            background: BurlyWood;&lt;br /&gt;
            text-align: center;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        .section {&lt;br /&gt;
            text-align: left;&lt;br /&gt;
            width: 1000px;&lt;br /&gt;
            padding: 20px;&lt;br /&gt;
            background: Chocolate;&lt;br /&gt;
            margin: auto;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        table, th, td, .section {&lt;br /&gt;
            border: 1px solid black;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        th {&lt;br /&gt;
            text-align: left;&lt;br /&gt;
            padding-left: 10px;&lt;br /&gt;
            padding-right: 10px;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        td {&lt;br /&gt;
            text-align: center;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        p {&lt;br /&gt;
            text-align: justify;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        .description {&lt;br /&gt;
            vertical-align: top;&lt;br /&gt;
            padding: 10px;&lt;br /&gt;
        }&lt;br /&gt;
    &amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
    &amp;lt;h1&amp;gt;Trainings at SuperSportsClub&amp;lt;/h1&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Body&amp;amp;amp;Mind&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyBalance™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 13:30&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;1H15M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 2&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Minnie Mouse (4.6)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;31.03.2017 12:15&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;1H15M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 3&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Mickey Mouse (4.7)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/jJxA6vBjUqY&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                BODYBALANCE™ is the Yoga, Tai Chi, Pilates workout that builds flexibility and strength and leaves you feeling centered and calm. Based on a carefully structured series of stretches, moves and poses to music it creates a holistic workout that brings the body into a state of harmony and balance. This class will heighten your flexibility and inner strength creating a strong supple body from the inside out. Burn on average 390cals per hour.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;Yoga&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;25.03.2017 14:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Yoga Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Minnie Yogafier (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
                            28.03.2017 14:00&amp;lt;br&amp;gt;&amp;lt;div style=&amp;quot;color:Green&amp;quot;&amp;gt;&lt;br /&gt;
                                Special class!&lt;br /&gt;
                            &amp;lt;/div&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;1H20M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Yoga Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Minnie Yogafier (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/Nvlxn0EnmbM&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                Yoga is a group of physical, mental, and spiritual practices or disciplines which originated in ancient India.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Cardio&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyJam™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 16:10&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 3&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Donald Duck (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;01.04.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;45M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 5&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Goofy (3.9)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/8PTXyg9si_4&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                The Body Jam program is an addictive fusion of the latest dance styles to the hottest new sounds. This class isn’t just for dancers, it’s for everyone because the emphasis is put on not only having fun but also breaking a sweat. So grab a friend, get front and centre … you bring the attitude and we’ll bring the moves!&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Dance&amp;amp;amp;Fun&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyJam™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 16:10&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 3&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Donald Duck (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;01.04.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;45M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 5&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Goofy (3.9)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/8PTXyg9si_4&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                The Body Jam program is an addictive fusion of the latest dance styles to the hottest new sounds. This class isn’t just for dancers, it’s for everyone because the emphasis is put on not only having fun but also breaking a sweat. So grab a friend, get front and centre … you bring the attitude and we’ll bring the moves!&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;Zumba®&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;26.03.2017 15:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;55M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 2&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Zumbaschnegger (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;28.03.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 4&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Zumbaschnegger (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Hall 2&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Zumbaschnegger (4.2)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/-ZB6XIkfxnQ&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                Zumba involves dance and aerobic movements performed to energetic music. The choreography incorporates hip-hop, soca, samba, salsa, merengue and mambo. Squats and lunges are also included.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div class=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Strength&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;BodyPump™ (LesMills)&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;23.03.2017 13:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Main Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Schwarzenegger (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 13:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Main Hall&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Arnold Schwarzenegger (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/zU_0XrdO3wo&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                BodyPump classes are 59 minutes long and contain eight separate muscle-group specific songs or &amp;quot;tracks&amp;quot; along with an opening warm up track and closing cool-down track. There are also 45-minute and 30-minute class formats. The classes are performed to music using free weights-plates, barbells and an aerobic step. Participants choose their weights based on the exercise and their personal goals. Major muscle groups are worked via series of compound and isolation-based exercises including squats, presses, dead lifts. The focus is towards muscle endurance by moving light weights at high repetitions, what Les Mills calls the Rep Effect.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&lt;br /&gt;
                &amp;lt;h3&amp;gt;CoreStrength&amp;lt;/h3&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;When:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Duration:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Where:&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;Instructors:&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
                            23.03.2017 12:00&amp;lt;br&amp;gt;&amp;lt;div style=&amp;quot;color:Green&amp;quot;&amp;gt;&lt;br /&gt;
                                Special challenge!&lt;br /&gt;
                            &amp;lt;/div&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;2H&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Area 6&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Margaret Strengthener (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;30.03.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Area 6&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Kayla Weightlifter (4.8)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;05.04.2017 12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;100&amp;quot;&amp;gt;60M&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;150&amp;quot;&amp;gt;Area 6&amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td width=&amp;quot;250&amp;quot;&amp;gt;Kayla Weightlifter (4.8)&amp;lt;br&amp;gt;Margaret Strengthener (5)&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&lt;br /&gt;
                            &amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/ZxTVmpvyUt8&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                        &amp;lt;td class=&amp;quot;description&amp;quot; width=&amp;quot;420&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                            &amp;lt;p&amp;gt;&lt;br /&gt;
                                CoreStrenght is a very hard workout! Not for beginners.&lt;br /&gt;
                            &amp;lt;/p&amp;gt;&lt;br /&gt;
                        &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSLT (xml) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Selle transformatsiooniga luuakse uus [http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/schedule.xml XML fail], milles on treeningute andmed esitatud ühtse tunniplaani kujul. Algses failis erinevate elementide alla paigutatud andmed on nüüd tunniplaani alamelemendis kokku viidud. Sidumine on teostatud id-atribuutide abil. Tunniplaanis on ühes kohas kirjas treeningu nimi, stiil(id), koht, algusaeg, kestus, rühma suurus, instruktorid ja muu täiendav info.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&lt;br /&gt;
    xmlns:msxsl=&amp;quot;urn:schemas-microsoft-com:xslt&amp;quot; exclude-result-prefixes=&amp;quot;msxsl&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:output method=&amp;quot;xml&amp;quot; indent=&amp;quot;yes&amp;quot; cdata-section-elements=&amp;quot;Name Style Comment&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Schedule&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;/Trainings/Training&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:sort select=&amp;quot;Name&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:variable name=&amp;quot;SelectedTraining&amp;quot; select=&amp;quot;.&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;Schedule/ScheduleItem&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:sort select=&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;ScheduleItem&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:variable name=&amp;quot;VenueId&amp;quot; select=&amp;quot;@VenueId&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:variable name=&amp;quot;SelectedVenue&amp;quot; select=&amp;quot;/Trainings/Venues/Venue[@Id=$VenueId]&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:attribute name=&amp;quot;GroupSize&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;@GroupSize&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:value-of select=&amp;quot;@GroupSize&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:value-of select=&amp;quot;$SelectedVenue/@GroupSize&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
            &amp;lt;Venue&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$VenueId&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select=&amp;quot;$SelectedVenue&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/Venue&amp;gt;&lt;br /&gt;
            &amp;lt;Training&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$SelectedTraining/@Id&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:if test=&amp;quot;$SelectedTraining/@Licence&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:attribute name=&amp;quot;Licence&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:value-of select=&amp;quot;$SelectedTraining/@Licence&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
              &amp;lt;Name&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$SelectedTraining/Name&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/Name&amp;gt;&lt;br /&gt;
              &amp;lt;Styles&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:for-each select=&amp;quot;$SelectedTraining/Styles/Style&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:variable name=&amp;quot;StyleId&amp;quot; select=&amp;quot;@Id&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;Style&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:attribute name=&amp;quot;StyleId&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;$StyleId&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;/Trainings/Styles/Style[@Id=$StyleId]&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/Style&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
              &amp;lt;/Styles&amp;gt;&lt;br /&gt;
            &amp;lt;/Training&amp;gt;&lt;br /&gt;
            &amp;lt;Time&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:attribute name=&amp;quot;Duration&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;Time/@Duration&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select =&amp;quot;Time&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/Time&amp;gt;&lt;br /&gt;
            &amp;lt;Instructors&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:for-each select=&amp;quot;Instructors/Instructor&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:variable name=&amp;quot;InstructorId&amp;quot; select=&amp;quot;@Id&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:variable name=&amp;quot;SelectedInstructor&amp;quot; select=&amp;quot;/Trainings/Instructors/Instructor[@Id=$InstructorId]&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;Instructor&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:attribute name=&amp;quot;Id&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;$InstructorId&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:attribute name=&amp;quot;Rating&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/@Rating&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                  &amp;lt;Name&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;$SelectedInstructor/Name&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/Name&amp;gt;&lt;br /&gt;
                &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
            &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:if test=&amp;quot;Comment&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;Comment&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;Comment&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/Comment&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
          &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
    &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XML (transformeeritud) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Koodi avamiseks/sulgemiseks klõpsa kõrvaloleval lingil -&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/xml/schedule.xml Vaata eelneva transformatsiooni tulemust.]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Schedule&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;3&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot;&amp;gt;Hall 2&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;2&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyBalance™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-30T13:30:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;3&amp;quot; Rating=&amp;quot;4.6&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;2&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;3&amp;quot;&amp;gt;Hall 3&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;2&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyBalance™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT1H15M&amp;quot;&amp;gt;2017-03-31T12:15:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;2&amp;quot; Rating=&amp;quot;4.7&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Mickey Mouse]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;4&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;3&amp;quot;&amp;gt;Hall 3&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;3&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyJam™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;![CDATA[Cardio]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T16:10:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;4&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Donald Duck]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;5&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;5&amp;quot;&amp;gt;Hall 5&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;3&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyJam™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;![CDATA[Cardio]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT45M&amp;quot;&amp;gt;2017-04-01T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;5&amp;quot; Rating=&amp;quot;3.9&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Goofy]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;7&amp;quot; GroupSize=&amp;quot;45&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;1&amp;quot;&amp;gt;Main Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;4&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyPump™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-23T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;6&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Schwarzenegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;6&amp;quot; GroupSize=&amp;quot;45&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;1&amp;quot;&amp;gt;Main Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;4&amp;quot; Licence=&amp;quot;LesMills&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[BodyPump™]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T13:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;6&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Schwarzenegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;8&amp;quot; GroupSize=&amp;quot;10&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot;&amp;gt;Area 6&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT2H&amp;quot;&amp;gt;2017-03-23T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;9&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Margaret Strengthener]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
    &amp;lt;Comment&amp;gt;&amp;lt;![CDATA[&lt;br /&gt;
          Special challenge!&lt;br /&gt;
        ]]&amp;gt;&amp;lt;/Comment&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;9&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot;&amp;gt;Area 6&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;8&amp;quot; Rating=&amp;quot;4.8&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Kayla Weightlifter]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;10&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;6&amp;quot;&amp;gt;Area 6&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[CoreStrength]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;![CDATA[Strength]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-04-05T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;8&amp;quot; Rating=&amp;quot;4.8&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Kayla Weightlifter]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;9&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Margaret Strengthener]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;11&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot;&amp;gt;Hall 2&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT55M&amp;quot;&amp;gt;2017-03-26T15:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;12&amp;quot; GroupSize=&amp;quot;20&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;4&amp;quot;&amp;gt;Hall 4&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-28T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;13&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;2&amp;quot;&amp;gt;Hall 2&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Zumba®]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;![CDATA[Dance&amp;amp;Fun]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-30T12:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;7&amp;quot; Rating=&amp;quot;4.2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Arnold Zumbaschnegger]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;1&amp;quot; GroupSize=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;7&amp;quot;&amp;gt;Yoga Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Yoga]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT60M&amp;quot;&amp;gt;2017-03-25T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;1&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Yogafier]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
  &amp;lt;ScheduleItem Id=&amp;quot;14&amp;quot; GroupSize=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Venue Id=&amp;quot;7&amp;quot;&amp;gt;Yoga Hall&amp;lt;/Venue&amp;gt;&lt;br /&gt;
    &amp;lt;Training Id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Yoga]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;Styles&amp;gt;&lt;br /&gt;
        &amp;lt;Style StyleId=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;![CDATA[Body&amp;amp;Mind]]&amp;gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;
      &amp;lt;/Styles&amp;gt;&lt;br /&gt;
    &amp;lt;/Training&amp;gt;&lt;br /&gt;
    &amp;lt;Time Duration=&amp;quot;PT1H20M&amp;quot;&amp;gt;2017-03-28T14:00:00&amp;lt;/Time&amp;gt;&lt;br /&gt;
    &amp;lt;Instructors&amp;gt;&lt;br /&gt;
      &amp;lt;Instructor Id=&amp;quot;1&amp;quot; Rating=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Name&amp;gt;&amp;lt;![CDATA[Minnie Yogafier]]&amp;gt;&amp;lt;/Name&amp;gt;&lt;br /&gt;
      &amp;lt;/Instructor&amp;gt;&lt;br /&gt;
    &amp;lt;/Instructors&amp;gt;&lt;br /&gt;
    &amp;lt;Comment&amp;gt;&amp;lt;![CDATA[&lt;br /&gt;
          Special class!&lt;br /&gt;
        ]]&amp;gt;&amp;lt;/Comment&amp;gt;&lt;br /&gt;
  &amp;lt;/ScheduleItem&amp;gt;&lt;br /&gt;
&amp;lt;/Schedule&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus ==&lt;br /&gt;
Angular JS &#039;&#039;single page application&#039;&#039; eelnevalt kirjeldatud veebiteenusele. Sisse logimata saab kuvada spordiklubi tunniplaani, treeningstiile ja treenereid. Võimalik on liituda teenusega ja registreeruda treeningutele, samuti registreeringuid tühistada. &lt;br /&gt;
&lt;br /&gt;
Autentimine on lahendatud tokenipõhiselt. Eeskujuna kasutasime näidisrakendust, mille juhend ja lähtekood on leitav [http://bitoftech.net/2014/06/09/angularjs-token-authentication-using-asp-net-web-api-2-owin-asp-net-identity/ siit].&lt;br /&gt;
&lt;br /&gt;
== Lähtekood ==&lt;br /&gt;
Eksamiks valminud veebiteenuse ja klientrakenduse kokkupakitult allalaadimiseks klõpsa [http://enos.itcollege.ee/~otiks/VRII/ProjectSPOT/solution/ProjectSPOT.zip sellel lingil].&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;NB! Kui WebApi käivitamisel andmebaasi kõiki andmeid (tunniplaani ja registreerimisi jooksvasse nädalasse) ei teki, siis käivitage eelnevalt samas lahenduses olev konsoolirakendus.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Retsensioonid ==&lt;br /&gt;
&lt;br /&gt;
# [https://wiki.itcollege.ee/index.php/Talk:JRT XML/XSD/XSLT retsensioon meeskonnale JRT]&lt;br /&gt;
# [Veebiteenuse retsensioon lisandub varsti]&lt;br /&gt;
# [Klientrakenduse retsensioon lisandub varsti]&lt;br /&gt;
&lt;br /&gt;
== Log ==&lt;br /&gt;
* 03.03.17 Esimene kohtumine. Idee.&lt;br /&gt;
* 17.03.17 Osa XMList valmis, osa XSLT-st valmis.&lt;br /&gt;
* 18.03.17 Teine kohtumine. XMLi täiendamine, esimene ülekäimine XSD-s.&lt;br /&gt;
* 19.03.17 XML/XSLT/XSD täiendamine ja lõpetamine.&lt;br /&gt;
* 20.03.17 XML fail, skeemifail ja stiilifailid esitatud. Projekti esimese etapi lõpp. Kevade algus.&lt;br /&gt;
* 26.03.17 XML/XSLT/XSD retsensioon esitatud.&lt;br /&gt;
* 16.04.17 Veebiteenuse analüüsi koostamine.&lt;br /&gt;
* 17.04.17 Esialgne veebiteenuse analüüs ja kavand valmis.&lt;br /&gt;
* 19.04.17 Alustasime veebiteenusega, koostegemine: Domain, DAL, Interfaces, Repostitories. Testimine konsoolis.&lt;br /&gt;
* 24.04.17 Veebiteenuse koostegemine, 2. kord: Domaini täiendamine.&lt;br /&gt;
* 29.04.17 Veebiteenuse koostegemine, 3. kord: Interfaces, Repositories, Factory + UOW. Testimine konsoolis.&lt;br /&gt;
* 01.05.17 Andmebaasi täitmine testandmetega varasemas faasis loodud XML failist.&lt;br /&gt;
* 02.05.17 Veebiteenuse koostegemine, 4. kord: alustasime BLi ja WebApi ehitamist. GET päringud.&lt;br /&gt;
* 09.05.17 Veebiteenuse koostegemine, 5. kord: lisasime Identity.&lt;br /&gt;
* 11.05.17 Veebiteenuse koostegemine, 6. kord: WebApi arendamine. POST, PUT ja DELETE päringud.&lt;br /&gt;
* 15.05.17 Veebiteenuse koostegemine, 7. kord: WebApi arendamine. Lisasime  api kontrollereid.&lt;br /&gt;
* 16.05.17 Veebiteenuse koostegemine, 8. kord: WebApi arendamine. Identity kontroll Fiddleri ja Postmaniga.&lt;br /&gt;
* 20.05.17 Klientrakenduse koostegemine, 1. kord. Testklient.&lt;br /&gt;
* 25.05.17 Klientrakenduse koostegemine, 2. kord. Klientrakenduse arendamine.&lt;br /&gt;
* 01.06.17 Klientrakenduse koostegemine, 3. kord. Klientrakenduse arendamine. Angular JS.&lt;br /&gt;
* 03.06.17 - 11.06.17 Klientrakenduse arendamine. Tokenipõhine autentimine. Veebiteenuse viimistlemine.&lt;br /&gt;
* 11.06.17 Lõpptähtaeg. Projekti esitlemine eksamil.&lt;br /&gt;
* 12.06.17 Teiste lahenduste retsenseerimine.&lt;/div&gt;</summary>
		<author><name>Otiks</name></author>
	</entry>
</feed>