<?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=Jvarus</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=Jvarus"/>
	<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php/Special:Contributions/Jvarus"/>
	<updated>2026-05-06T15:26:23Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Talk:Meeskond_%22.NOT%22&amp;diff=49161</id>
		<title>Talk:Meeskond &quot;.NOT&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Talk:Meeskond_%22.NOT%22&amp;diff=49161"/>
		<updated>2012-06-12T07:26:53Z</updated>

		<summary type="html">&lt;p&gt;Jvarus: /* Retentsioon kliendi ja veebiteenus Hello Kitty */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Retsensioon XMLile ([[Meeskond &amp;quot;Hello Kitty&amp;quot;]]) ==&lt;br /&gt;
&lt;br /&gt;
Kiidusõnad meeskonnale. XML&#039;i struktuuri oskavad korralikult kokku panna ning stiilifail ja skeemifail kah korralikult üles ehitatud.&lt;br /&gt;
&lt;br /&gt;
Kui nüüd pisut nokkida ka, siis silma hakkas mõningane elementide ja atribuutide ebakooskõla. Juba eelnevalt välja toodud märkus, et miks on mootori maht lisatud mootorile atribuudina, aga muud samatähenduslikud väärtused elementidena. Isiklikult oleksin rohkem atribuutide kasutust oodanud.&lt;br /&gt;
&lt;br /&gt;
Antud xml&#039;i kohta on välist infot väga vähe. Kogu sisu on ära kirjeldatud ühe lausega. Lugejal oleks kindlasti suurem huvi xmli struktuuri läbi sirvida, kui oleks teema kohta parem tagataust teada.&lt;br /&gt;
&lt;br /&gt;
Xslt ja xsd kohta pole rohkem samuti midagi mainida, mis tähendab, et ülesehitus lihtne ja korrektne. Nii nagu peabki.&lt;br /&gt;
Struktuuri kommenteerimine oleks ka suureks plussiks olnud. Siinkohal viide meeskond Haroldile, kelle kommenteeritud koodi oli lausa lust lugeda.&lt;br /&gt;
&lt;br /&gt;
== Retsensioon ([[Meeskond &amp;quot;Harold&amp;quot;]]) ==&lt;br /&gt;
&lt;br /&gt;
Üldiselt eeskujulik sooritus, on näha, et meeskond tunneb XML ja XSL failide struktuuri ja oskab neid koostada nii praktikas kui disainis (mõelda, kuidas XML struktuurselt üles ehitada).&lt;br /&gt;
&lt;br /&gt;
=== Vormilisest küljest ===&lt;br /&gt;
&lt;br /&gt;
XML-i oli wikist ebamugav lugeda. Palun kasutage &amp;amp;lt;pre&amp;gt; tag asemel &amp;amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;. XML failile oleks kohe juurde võinud lisada viite transformatsioonile (&amp;amp;lt;?xml-stylesheet type=&amp;quot;text/xsl&amp;quot; href=&amp;quot;stiil.xsl&amp;quot;?&amp;gt;), samuti oleks võinud XML + XSL failid kuhugile hostida, et retsensent ei peaks seda ise tegema. P.S! &amp;lt; märke, mis transformatsiooni autorile probleeme tekitas, saab sisestada &amp;amp;lt;source&amp;gt; tagide vahele või kodeeritult.&lt;br /&gt;
&lt;br /&gt;
=== XML ===&lt;br /&gt;
&lt;br /&gt;
XML tutvustust oleks tekstiliselt tahtnud pikemalt lugeda: miks valiti just see teema (aktuaalne?), mida toodud XML struktuur võimaldab. Struktuuriliselt on XML üles ehitatud küllaltki hästi - võimalik on lisada 0 ... n sõidukit ning kirjeldada nende omadusi, elementidel on id kiireks otsimiseks.&lt;br /&gt;
&lt;br /&gt;
Omaduste kirjeldamist oleks muidugi üldisemalt saanud teha - ma oleksin ise tõenäoliselt kohelnud enamus asju (sh mootor, kere) auto komponentidena, millel on komponendi ID. See võimaldaks vaadelda autot kui mingit pakki erinevatest komponentidest ning näiteks e-poes (või mõnes muus infosüsteemis) kõik komponendid klikatavaks teha. Ehk siis, inimene näeb nimekirja autodest (auto kirjeldus on hunnik meta-andmeid nagu XML-s toodud mark, tootmisaasta, hind) ning klikates lahti mõne auto, näeb nimekirja komponentidest, mis on omakorda klikatavad, et nende infot vaadata. Varustuselemendid siis samamoodi - ka neid võib vaadelda komponentidena (või miks mitte, pakettidena).&lt;br /&gt;
&lt;br /&gt;
=== Transformatsioon ===&lt;br /&gt;
&lt;br /&gt;
Transformatsioonid on hästi tehtud, HTMLs kuvatakse kogu vajalik info kenasti nimekirjadena välja. Siiski, natuke CSS-i ei teeks paha loetavuse mõttes.&lt;br /&gt;
&lt;br /&gt;
== Retsensioon ([[Meeskond LLL]]) ==&lt;br /&gt;
&lt;br /&gt;
Üldiselt on meeskond teinud head tööd ja üpriski hästi hakkama saanud. Kuigi oleks võinud kodutööd kirjeldada rohkem. Miks just selline teema valiti, mida võimaldab jne?&lt;br /&gt;
&lt;br /&gt;
Xmli tutvustus oleks võinud veidi pikem ja põhjalikum olla. Xmli oli veidi ebamugav lugeda, kuigi trepitud oli õigesti. Ülesehituselt on xml hästi ülesse ehitatud. Mootori maht oli lisatud atribuudina, aga kütus ja võimsus elemendina. Samas oleks ilusam olnud, kui need oleks kõik kirjutatud atribuudi või elemendina. Hea on see, et on jagatud tehnilised andmed ja varustus eraldi, mis teeb lugemist ja käsitlemist lihtsamaks. &lt;br /&gt;
&lt;br /&gt;
Transformatsioon on muidu üsna korralikult tehtud, kuigi oleks võinud veidike rohkem tähelepanu panna css’ile. Kuigi esimeses XSLT&#039;s on paar treppimise viga, aga teistel need puuduvad.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Retsentsioon teenusele ([[Peeter_VR2]]) ==&lt;br /&gt;
Projektiga on kaasas SQL skriptid mille põhjal sai endale andmebaas loodud. Kahjuks ei tulnud kummagi skriptiga kaasa andmeid. Seega teenust testida otseselt ei saanud. Teenust käivitades läks teenus ilusasti tööle ja sai kenasti funktsioonide vahel valida.&lt;br /&gt;
Loomulikult tuli nullpointer exception, kui miskit invokesin – tabelid tühjad. See ei seganud edasist koodi poolset vaatamist.&lt;br /&gt;
Teenuse ülesehitust vaadates, siis teenus on väga hästi ja läbimõeldult tehtud. Funktsionaalsus, mis on teenusele juurde pandud on hulgaliselt. Kogu funktsionaalne pool on ära ka kirjeldatud Wiki lehel, kust sai alguses hea ülevaate teenusest.&lt;br /&gt;
&lt;br /&gt;
Backendi ja SQLi ühendamine on tehtud LINQ abiga. Sealjuures on igast tabelist tehtud eraldi klass, et objektidega oleks targem ja lihtsam ümber käia. Väga hea lahendus. Samuti osadele klassidele on ehitatud Utils klassid, kus on lisafunktsionaalsus juures.&lt;br /&gt;
Kenasti on ära kasutatud objekt-orienteeritud lähenemist. Vajalike funktsioonide, mida hiljem teenus välja kutsub, kirjeldamine on igas klassis tehtud ja teenuse all on ainult õiged objektid välja kutsutud. Tegemist siis peamiselt static meetodidega.&lt;br /&gt;
&lt;br /&gt;
Silma häirib, et koodi juures puudub igasugune dokumentatsioon. Meetode pole kommenteeritud. Võiks olla, saaks kiiremini ülevaate, mida mingi meetod teeb või miks ta just nii kirjeldatud on. Vaatamata sellele on kood loetav ja ja pärast mõningat uurimist ka arusaadav, mida miski teeb. Tuleviku mõttes võiks olla kommentaarid juures, kui projekt peaks kasvama.&lt;br /&gt;
&lt;br /&gt;
Vaeva on nähtud lisatööga - teenusele on juurde ehitatud ka turva-sertifikaadid. Nagu näha on need teenuse juures kasutusel - ServiceSecurityContext&lt;br /&gt;
Projekti on juurde ehitatud, lisatud ka konsoolirakendus, mis  oli mõeldud teenuse testimiseks. Ise kasutada seda ei saanud kuna andmebaas oli tühi.&lt;br /&gt;
&lt;br /&gt;
== Retsensioon teenusele ([[Meeskond LLL]]) ==&lt;br /&gt;
&lt;br /&gt;
Teenus  analüüsi on teostatud põhjalikult ja kõiki funktsionaalsusi, mis võiksid olemas olla on ka realiseeritud. Töö lugemine ei ole rakse ja mulle isiklikult meeldib, et töö pole liialt suureks ja kirjuks paisutatud igasuguste pikkade kommentaaride ja kirjelustega, aga töös võiks natukene rohkem lühikesi kirjeldusi olla. Töö on ise hästi tehtud.&lt;br /&gt;
&lt;br /&gt;
== Retsensioon kliendile ([[Meeskond LLL]]) ==&lt;br /&gt;
&lt;br /&gt;
Klient on väga hästi tehtud. Kõiki teenuse funktsionaalsusi saab kasutada ja eriti meeldiv asjaolu on sertifikaatide olemasolu ja nende kasutus. Sertifikaatide tööle saamiseks võis minna palju aega ja vaeva, mis on juba ise suur näitaja kirjeldamaks, kui hästi ja põhjalikult tööd tehti. Ise arvan, et töö võiks olla eeskujuks teistele, kaasaarvatud minu enda meeskonnale.&lt;br /&gt;
&lt;br /&gt;
== Retsensioon kliendile (Meeskond &amp;quot;[[PhoneBook]]&amp;quot;) ==&lt;br /&gt;
&lt;br /&gt;
Kahjuks jäi testimise pool ära, sest mingil teadmatul põhjusel kaasasolevad scriptid ei teinud andmebaasi, vaid tegid tabelid ja andsid erroreid, sest need tabelid lisati süsteemi tabelite alla. Võimalik, et viga on minu enda arvutis, sest teiste kommentaaride järgi võib eeldada, et nad on seda ka testinud. Seetõttu on kommentaarid ainult koodi ja esitluse põhjal!&lt;br /&gt;
&lt;br /&gt;
=== Veebiteenus ===&lt;br /&gt;
&lt;br /&gt;
Ilmselgelt on ära tehtud väga suur töö, mida peaksid enamus gruppe eeskujuks võtma. Väga hea on see, et igal pool on kasutatud objekte ja pole mingi puder. Paraku pole koodi kommenteeritud, kuid enamjaolt võib asjast aru saada siis, kui vaadata meetodi nime või uurida sisu. Samas jääb näiteks täiesti arusaamatuks see, et mis mõte sellel ActionMessagel on - mõnede klasside järgi võiks pakkuda, et vigade kogumine? &lt;br /&gt;
Mõnes mõttes on arusaamatu ka see, et miks on kõik auto kohta käivad väljad kohustuslikud ning vähemalt auto võimsuse puhul puudub võimalus lisada &amp;quot;+&amp;quot; märk, kui on autol midagi muudetud ja pole täpselt teada võimsus. Hetkel on eeldus auto pass, mis ei pruugi kogu olulist infot anda. Lisadena võiks olla näiteks kommentaari väli kuhu saaks mingeid lisasid märkida kas auto ajaloo kohta või muude oluliste detailide jaoks. Samuti võiks olla pildi lisamise ja vaatamise võimalus, sest nagu öeldakse: &amp;quot;pilt ütleb rohkem kui 1000 sõna.&amp;quot; &lt;br /&gt;
Üks vähestest lahendustest, kus on kasutatud ka sertifikaate. Kõik etteantud nõuded on ka täidetud - teenus toimib, kasutajate tuvastamine ja haldus on olemas ning ka statistika toimib.&lt;br /&gt;
&lt;br /&gt;
=== Klientrakendus ===&lt;br /&gt;
&lt;br /&gt;
Korralik ja toimiv töö. Väga hea on see, et kasutatud on WPF-i mitte mõnda muud lahendust ning klientrakendus on loodud enda teenusele mitte mingile suvalisele asjale. Positiivne on ka see, et kommentaare on igale poole tekkinud, kuid kohati üsna mõttetuid, mis ei anna mingit lisainfot ja ei tee asja üldse arusaadavamaks. Disain on lihtne ja arusaadav. Küsitav on muidugi see registreerimise osa lingina, kuid võib olla tõesti isegi õigem kui nupp.&lt;br /&gt;
&lt;br /&gt;
== Retsensioon veebiteenusele ja klientrakendusele meeskonnalt [[Hello Kitty]] ==&lt;br /&gt;
&lt;br /&gt;
Klientrakendus&lt;br /&gt;
&lt;br /&gt;
Kliendi tööle saamiseks läks suhteliselt kaua aega. Siis aga töötas nii nagu vaja ja asi oli korralikult tehtud. Vähemalt selle testimise raames, mis mina tegin. Ei laskunud eriti sügavale, et otsida, kuidas saaks tekitada vigu. Disain oli puhas ja arusaadav.&lt;br /&gt;
&lt;br /&gt;
Kui koodi vaatasin, siis kood oli puhas ja arusaadav. Kuid samas oleks võinud olla kood kommenteeritud. Kui projekt liiga suureks muutub, siis saaksid ka teised aru, kes pole sellega varem tegelenud. Aga muidu paistis asi olevat korralik.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Veebiteenus&lt;br /&gt;
&lt;br /&gt;
Meeldis see, et oli kasutatud dll faili, et teenus oleks rohkem lahku löödyd. Kuid kui võtsid lahti CarService.cs, siis alguses oli seda väga raske lugeda. Oleks võinud olla veidi rohkem struktureeritud. Muidu jäin asjaga rahule.&lt;br /&gt;
Lugemise tegi lihtsamaks interface klass, kus said otsida kiiresti mingi funktsiooni üles, kui seda oli vaja leida. Hästi tehtud.&lt;/div&gt;</summary>
		<author><name>Jvarus</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Talk:LLL&amp;diff=49160</id>
		<title>Talk:LLL</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Talk:LLL&amp;diff=49160"/>
		<updated>2012-06-12T07:23:38Z</updated>

		<summary type="html">&lt;p&gt;Jvarus: /* Retentsioon XML */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Retsensioon==&lt;br /&gt;
&lt;br /&gt;
Mulle tundub, et xml ei lähe kokku selle veebiteenusega, mida tahetakse teha. Võimalik muidugi, et tehtigi lihtsalt hetkel suvaline xml.&lt;br /&gt;
&lt;br /&gt;
XML paistab muidu olevat mõistlik aga ma arvan, et 4-ndas dimensioonis ei oleks ma kasutanud &amp;lt;nimi&amp;gt; väljal atribuute. Jääb mulje, et seda tehti sellepärast, et tööülesanne ütleb järgmist: &amp;quot;Lisaks tuleb kasutada 3-el dimensioonil attribuute, mis on enamat, kui lihtsalt ID&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
XML schemale otsa vaadata siis ma vaatan küll, et see on vigane. Miks käiakse üle mitu korda elemendid? Isegi Visual Studios automaatne schema tegemine ei tooda sellist asja, proovisime järgi. Või oskate öelda, miks nii tehtud on?&lt;br /&gt;
&lt;br /&gt;
XSL faile on pandud 3 tükki, aga kõik tunduvad mulle koodi poolelt sarnased. Selle asemel oleks võinud lisada puuduliku XML faili formaadi muutmise XLSLi.&lt;br /&gt;
&lt;br /&gt;
Samas kiidaks veebiteenuse kirjelduse kohapealt tiimi !&lt;br /&gt;
&lt;br /&gt;
Meeskond [[PhoneBook]]&lt;br /&gt;
&lt;br /&gt;
==== Vastus ====&lt;br /&gt;
&lt;br /&gt;
Xml ei pidanudki veebiteenusega kokku minema. Ehk jah, tegime täiesti suvalise xmli. Schemas oli jah viga sees, kuna kasutasin automaatset schemat ja väike viga oli xmlis sees. Vabandan, et ise seda enne ei olnud märganud ja ära parandanud. Nüüd peaks schmea ok olema.&lt;br /&gt;
&lt;br /&gt;
== Retsensioonid veebiteenusele ja klientrakendusele meeskonnalt [[PhoneBook]] ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Veebiteenus ====&lt;br /&gt;
&lt;br /&gt;
Esialgu planeeritud teenuse ja rakenduse analüüs/kirjeldus on wikis päris asjalik, kuid selle asemel realiseeritud telefoniraamatu kohta puuduvad mingisugusedki kommentaarid. Õnneks kaitsmisel sai seda nähtud.&lt;br /&gt;
&lt;br /&gt;
Andmebaasi tabelite loomiseks antud skript eeldab, et selle nimeline andmebaas on juba olemas. Väike ebamugavus, sellest sain üle. Rollid tulevad skriptiga kaasa, see meeldis. &lt;br /&gt;
&lt;br /&gt;
Loodud tabelitest on näha, et saab luua erinevates rollides kasutajaid, kellel on igalühel kontaktid ja võimalus neid valikuliselt jagada mingis ajavahemikus. Näeb üsna kena välja, kuid:&lt;br /&gt;
* ei võimalda lisada uut tüüpi kontakte ilma andmebaasi ümber tegemata&lt;br /&gt;
* auditeerimise poole pealt ei jälgita, kes midagi loob/muudab/kustutab. Ilmselt ei peetud vajalikuks.&lt;br /&gt;
* kasutaja username maksimaalne pikkus on 12 tähemärki ja passwordil 15 tähemärki. Tekkis küsimus, et miks need piirangud nii karmid on.&lt;br /&gt;
&lt;br /&gt;
Väljade andmetüübid on minu arvates üsna arukalt valitud.&lt;br /&gt;
&lt;br /&gt;
Service class ja interface on millegipärast ühte faili kokku pandud, selguse mõttes võinuks need eraldi olla. Service klassil on lisatud atribuut [ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)], ehk siis teenusest on korraga ainult üks instance. Miks?&lt;br /&gt;
&lt;br /&gt;
Katsetasin teenuse funktsioone WCF Clientiga. Mõned tähelepanekud:&lt;br /&gt;
* Kõik meetodid töötavad ja annavad sobivates oludes vastuse.&lt;br /&gt;
* Ebaõnnestunud päringu korral ei saadeta mingit vastust. Võibolla õige teguviis, kuid test client ei suuda debug sessionit jätkata ning see jookseb kokku. Lihtsalt väike ebamugavus testijale või ka teenusele rakenduse arendajatele.&lt;br /&gt;
* Ükski meetod ei vaja eelnevat logini ja passworde hoitakse plaintext kujul. Sertifikaate ei kasutata. Bindinguks on WsHttpBinding, kuid security pole sisse lülitatud.&lt;br /&gt;
* Saab luua sama kasutajanime ja passwordiga kasutajaid. Login õnnestub neist vaid esimesena loodul.&lt;br /&gt;
* Kõikidel on vaba ligipääs kõikide kontaktidele. See ei ole probleemiks, kui ongi mõeldud teha ühine telefoniraamat kõikidele kasutajatele.&lt;br /&gt;
* Meeldis, et päringutes sai spetsifitseerida soovitud tulemuste arvu.&lt;br /&gt;
&lt;br /&gt;
Kontaktide jagamise realiseerimiseks pole ilmselt aega jäänud.&lt;br /&gt;
&lt;br /&gt;
Failide Auth.cs ning AuthData.cs põhjal võib arvata, et autentimise ja muu turvalisusega seonduva lisamine on plaanis olnud, kuid pooleli jäetud.&lt;br /&gt;
&lt;br /&gt;
Userite / kontaktide salvestamine on pandud vastava andmetüübi kirjelduse faili, ülejäänud operatsioonid eraldi – andmetüübile vastavasse meetodifaili. Arvan, et oleks olnud loogilisem ka salvestamine ülejäänud meetoditega kokku panna.&lt;br /&gt;
&lt;br /&gt;
Meetodeid on palju rohkem kui teenuses võimalik välja kutsuda, kaasa arvatud kontakti jagamise funktsionaalsus. Üldjuhul on kõik päringud korralikult kirjutatud, päris kõiki jupphaaval läbi töötama ei hakanud. Märkasin, et näiteks uue kasutaja salvestamisel kontrollitakse eelnevalt selle olemasolu ja vajadusel hoopis uuendatakse seda – väga tubli!&lt;br /&gt;
&lt;br /&gt;
Kokkuvõttes on teenus planeeritud põhjalik ja olemasolevad osad tehtud üsna kenasti. Miinustena näen täielikku turvalisuse puudumist, teostatud funktsioonide vähest hulka ja mõningaid pisivigu. Andmete valideerimiseks ei tehta teenuse poole pealt midagi ja statistikat või kasutajate haldust ei eksisteeri.&lt;br /&gt;
&lt;br /&gt;
==== Klientrakendus ====&lt;br /&gt;
&lt;br /&gt;
Esimesena torkas silma WPF page-ide kasutamine. See on mulle kui kasutajale väga meelepärane. Ka ülejäänud kasutajaliidese disain on lihtne ja selge. Üks väike ebamugavus – login aknas pole defaultina username kastis kursor aktiivne ja enteriga ei saa login nuppu vajutada. Arvan, et enamikele kasutajatele oleks programmi selline käitumine ootuspärane.&lt;br /&gt;
&lt;br /&gt;
Registreerimine toimib väga edukalt, lausa nii edukalt, et võib luua lõputul hulgal kasutajaid, kellel pole ei kasutajanime, passwordi ega emaili. Andmebaasis on need tühja stringina, ehk siis mitte null väljad, vältides edukalt teenuse/andmebaasi poolt kehtestatud piiranguid. Siinkohal võiks olla kontroll nii teenuse kui rakenduse küljes, kuid kahjuks pole kummaski.&lt;br /&gt;
&lt;br /&gt;
Login on edukas tüüpkasutaja korral, kuid annab nullpointer exceptioni, kui üritada sisse logida mõne eelnevalt loodud vigase kasutajaga. Ka vale kasutajanime/parooli korral jookseb rakendus unhandled exceptioniga umbe.&lt;br /&gt;
&lt;br /&gt;
WPF page-kontrollidega navigeerides (vasak ülemine nurk, nooled ja rippmenüü) sai peatselt selgeks, et nuppe vajutades luuakse kogu aeg uusi lehti, vanadele saab navigeerida rippmenüüst ning neis säilib ka eelnevalt sisestatud info. Kasutajana oleks oodanud, et liigeldakse olemasolevate lehtede vahel (login ja registreerimine). Koodi lähemalt uurides (nt. registreeri_page.xaml.xs) selgub, et ka teenusega luuakse kogu aeg uusi ühendusi. Jõudluse seisukohalt ei tundu see hea lähenemisena.&lt;br /&gt;
&lt;br /&gt;
Nii search, browse kui add contact töötavad. Loomulikult saab lisada tühjade stringidega kontakte, nagu ka kasutaja registreerimise korral. Search näitab detailides enne tulemuse valikut mingit kuupäeva miinimumväärtust, see ei peaks seal ilmselt olema.&lt;br /&gt;
&lt;br /&gt;
Mõne otsingu korral esines sama väärtuse topelt kuvamist, ka selectionina olid nad korraga aktiveeritud. Põhjust otsides seda esimese hooga ei leidnud, jätan selle arendajate hingele.&lt;br /&gt;
&lt;br /&gt;
Enne sisse logimist sulgub programm ristist sulgedes edukalt, debug lõppeb. Peale sisselogimist see enam ei õnnestu, ka logout tehes jääb midagi mällu ja debug sessioon ei lõppe. Millegipärast jääb kliendi .exe jooksma (ka task manageris on näha). Koodi uurides on justkui igalpool vajalikes kohtades this.Close() käsud olemas, võibolla on asi visual studios endas.&lt;br /&gt;
&lt;br /&gt;
Koodis kasutatakse mõistlikke muutujanimesid ning aeg-ajalt esineb ka mõni rida kommentaari funktsiooni kirjelduseks. Üldjoontes on ülesehitus selge. Rakendus ei ole mahult suur ning on hoolsa inimese käes isegi päriselt kasutuskõlbulik. Disain, nagu juba mainitud, on piisavalt hea. Eeskujulikust kasutusest kõrvale kaldudes tekivad probleemid, millega programm pole arvestanud. Mingit andmete valideerimist ei ole. Arvestades ajanappust selle rakenduse loomiseks, pean tulemust piisavalt heaks.&lt;br /&gt;
&lt;br /&gt;
== Retsensioon veebiteenusele ja klientrakendusele meeskonnalt [[Hello Kitty]] ==&lt;br /&gt;
&lt;br /&gt;
Klientrakendus&lt;br /&gt;
&lt;br /&gt;
Kui ma vaatasin koodi, siis panin kohe tähele, et on kirjutatud nii eesti keeles kui ka inglise keeles ja see tegi koodi lugemise kohe palju raskemaks. Suureks plussiks on, et kasutati WPF&#039;i ehk mõeldi uute tehnoloogiate peale. Kuid sellega olid ka omad probleemid. Alguses oli raske aru saada kasutajaliidesest. Puudus igasugune valideerimine kasutaja sisestamise poole pealt. Sa võisid jätta täitmata nii kasutajanime kui ka parooli väljad ning registeerida, kuid hiljem ei saanud sedasi sisse logida. Minul jooksis selle peale rakendus kohe kokku.&lt;br /&gt;
&lt;br /&gt;
Nagu ka kasutaja loomisel, puudus otsingul kontroll. Võisid sisestada tühja teksti sinna. Võibolla arendaja mõtleski, seega selle kallal norida ei saa.&lt;br /&gt;
&lt;br /&gt;
Programmiga oli veel üks probleem. Kuna see jooksis vahete vahel kokku, sain süsteemi poolt veateateid. See näitab, et ei ole piisavalt kontrollitud, mida kasutaja teha saab.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Veebiteenus&lt;br /&gt;
&lt;br /&gt;
Andmebaasi tabelite väljad on kirjutatud nii eesti kui ka inglise keeles. See teeb lugemise palju raskemaks. Andmebaasi poolt siis veel väike soovitus: kui rakendus peaks minema kasutusele ja populaarseks saama, siis oleks hea kasutada int asemel Guid primary key&#039;na. Ja küsimus tekkis parooli turvalisuses - miks on parool tavalisel tekstikujul ning on lubatud nii väheste tähemärkidega. Enda kogemusest kasutan parooliks vähemalt 19 tähemärgilist parooli. &lt;br /&gt;
&lt;br /&gt;
Koodi poolt siis faili nimed võiksid alata suure tähega. See on hea tava. Teiseks, kood võiks olla kommenteeritud, kuna osadest funktsioonidest ei saa kuidagi aru. Kolmandaks, funktsioonide nimed samamoodi: kui on avalik, siis võiks alata suure tähega. Tegelikult kõik funktsioonid võiksid alata suure tähega. Ja täpselt nii nagu andmebaasis, on funktsioonides kirjutatud eestikeelseid sõnu.&lt;br /&gt;
&lt;br /&gt;
Üldjoontes programm töötas nende parameetritega, mis olid nõutud. Siiski vajaks kõvasti üle vaatamist ja parandamist ning eriti turvalisuse poole pealt.&lt;br /&gt;
&lt;br /&gt;
Retsenseeris meeskond Hello Kitty.&lt;br /&gt;
&lt;br /&gt;
== Retsensioon XML&#039;ile meeskonnalt [[Hello Kitty]] ==&lt;br /&gt;
&lt;br /&gt;
Xml koha pealt vaadates paistis asi korras olevat. Ei oskagi väga midagi soovitada, kuidas paremaks teha.&lt;br /&gt;
&lt;br /&gt;
XML schemat vaadates paistis olevat asi kuidagi vigane. Sama küsimus, mis on ka eelnevatel inimestel - miks käiakse mitu korda üle ühtesid ja samasid elemente. &lt;br /&gt;
&lt;br /&gt;
Kui üldiselt vaadata, siis on asjad hästi tehtud. Arvatavasti inimene alles õppis selle projektiga. Tulevikus ehk enam samu vigu ei tee.&lt;/div&gt;</summary>
		<author><name>Jvarus</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Talk:LLL&amp;diff=49159</id>
		<title>Talk:LLL</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Talk:LLL&amp;diff=49159"/>
		<updated>2012-06-12T07:20:45Z</updated>

		<summary type="html">&lt;p&gt;Jvarus: /* Retsensioonid veebiteenusele ja klientrakendusele meeskonnalt Hello Kitty */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Retsensioon==&lt;br /&gt;
&lt;br /&gt;
Mulle tundub, et xml ei lähe kokku selle veebiteenusega, mida tahetakse teha. Võimalik muidugi, et tehtigi lihtsalt hetkel suvaline xml.&lt;br /&gt;
&lt;br /&gt;
XML paistab muidu olevat mõistlik aga ma arvan, et 4-ndas dimensioonis ei oleks ma kasutanud &amp;lt;nimi&amp;gt; väljal atribuute. Jääb mulje, et seda tehti sellepärast, et tööülesanne ütleb järgmist: &amp;quot;Lisaks tuleb kasutada 3-el dimensioonil attribuute, mis on enamat, kui lihtsalt ID&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
XML schemale otsa vaadata siis ma vaatan küll, et see on vigane. Miks käiakse üle mitu korda elemendid? Isegi Visual Studios automaatne schema tegemine ei tooda sellist asja, proovisime järgi. Või oskate öelda, miks nii tehtud on?&lt;br /&gt;
&lt;br /&gt;
XSL faile on pandud 3 tükki, aga kõik tunduvad mulle koodi poolelt sarnased. Selle asemel oleks võinud lisada puuduliku XML faili formaadi muutmise XLSLi.&lt;br /&gt;
&lt;br /&gt;
Samas kiidaks veebiteenuse kirjelduse kohapealt tiimi !&lt;br /&gt;
&lt;br /&gt;
Meeskond [[PhoneBook]]&lt;br /&gt;
&lt;br /&gt;
==== Vastus ====&lt;br /&gt;
&lt;br /&gt;
Xml ei pidanudki veebiteenusega kokku minema. Ehk jah, tegime täiesti suvalise xmli. Schemas oli jah viga sees, kuna kasutasin automaatset schemat ja väike viga oli xmlis sees. Vabandan, et ise seda enne ei olnud märganud ja ära parandanud. Nüüd peaks schmea ok olema.&lt;br /&gt;
&lt;br /&gt;
== Retsensioonid veebiteenusele ja klientrakendusele meeskonnalt [[PhoneBook]] ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Veebiteenus ====&lt;br /&gt;
&lt;br /&gt;
Esialgu planeeritud teenuse ja rakenduse analüüs/kirjeldus on wikis päris asjalik, kuid selle asemel realiseeritud telefoniraamatu kohta puuduvad mingisugusedki kommentaarid. Õnneks kaitsmisel sai seda nähtud.&lt;br /&gt;
&lt;br /&gt;
Andmebaasi tabelite loomiseks antud skript eeldab, et selle nimeline andmebaas on juba olemas. Väike ebamugavus, sellest sain üle. Rollid tulevad skriptiga kaasa, see meeldis. &lt;br /&gt;
&lt;br /&gt;
Loodud tabelitest on näha, et saab luua erinevates rollides kasutajaid, kellel on igalühel kontaktid ja võimalus neid valikuliselt jagada mingis ajavahemikus. Näeb üsna kena välja, kuid:&lt;br /&gt;
* ei võimalda lisada uut tüüpi kontakte ilma andmebaasi ümber tegemata&lt;br /&gt;
* auditeerimise poole pealt ei jälgita, kes midagi loob/muudab/kustutab. Ilmselt ei peetud vajalikuks.&lt;br /&gt;
* kasutaja username maksimaalne pikkus on 12 tähemärki ja passwordil 15 tähemärki. Tekkis küsimus, et miks need piirangud nii karmid on.&lt;br /&gt;
&lt;br /&gt;
Väljade andmetüübid on minu arvates üsna arukalt valitud.&lt;br /&gt;
&lt;br /&gt;
Service class ja interface on millegipärast ühte faili kokku pandud, selguse mõttes võinuks need eraldi olla. Service klassil on lisatud atribuut [ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)], ehk siis teenusest on korraga ainult üks instance. Miks?&lt;br /&gt;
&lt;br /&gt;
Katsetasin teenuse funktsioone WCF Clientiga. Mõned tähelepanekud:&lt;br /&gt;
* Kõik meetodid töötavad ja annavad sobivates oludes vastuse.&lt;br /&gt;
* Ebaõnnestunud päringu korral ei saadeta mingit vastust. Võibolla õige teguviis, kuid test client ei suuda debug sessionit jätkata ning see jookseb kokku. Lihtsalt väike ebamugavus testijale või ka teenusele rakenduse arendajatele.&lt;br /&gt;
* Ükski meetod ei vaja eelnevat logini ja passworde hoitakse plaintext kujul. Sertifikaate ei kasutata. Bindinguks on WsHttpBinding, kuid security pole sisse lülitatud.&lt;br /&gt;
* Saab luua sama kasutajanime ja passwordiga kasutajaid. Login õnnestub neist vaid esimesena loodul.&lt;br /&gt;
* Kõikidel on vaba ligipääs kõikide kontaktidele. See ei ole probleemiks, kui ongi mõeldud teha ühine telefoniraamat kõikidele kasutajatele.&lt;br /&gt;
* Meeldis, et päringutes sai spetsifitseerida soovitud tulemuste arvu.&lt;br /&gt;
&lt;br /&gt;
Kontaktide jagamise realiseerimiseks pole ilmselt aega jäänud.&lt;br /&gt;
&lt;br /&gt;
Failide Auth.cs ning AuthData.cs põhjal võib arvata, et autentimise ja muu turvalisusega seonduva lisamine on plaanis olnud, kuid pooleli jäetud.&lt;br /&gt;
&lt;br /&gt;
Userite / kontaktide salvestamine on pandud vastava andmetüübi kirjelduse faili, ülejäänud operatsioonid eraldi – andmetüübile vastavasse meetodifaili. Arvan, et oleks olnud loogilisem ka salvestamine ülejäänud meetoditega kokku panna.&lt;br /&gt;
&lt;br /&gt;
Meetodeid on palju rohkem kui teenuses võimalik välja kutsuda, kaasa arvatud kontakti jagamise funktsionaalsus. Üldjuhul on kõik päringud korralikult kirjutatud, päris kõiki jupphaaval läbi töötama ei hakanud. Märkasin, et näiteks uue kasutaja salvestamisel kontrollitakse eelnevalt selle olemasolu ja vajadusel hoopis uuendatakse seda – väga tubli!&lt;br /&gt;
&lt;br /&gt;
Kokkuvõttes on teenus planeeritud põhjalik ja olemasolevad osad tehtud üsna kenasti. Miinustena näen täielikku turvalisuse puudumist, teostatud funktsioonide vähest hulka ja mõningaid pisivigu. Andmete valideerimiseks ei tehta teenuse poole pealt midagi ja statistikat või kasutajate haldust ei eksisteeri.&lt;br /&gt;
&lt;br /&gt;
==== Klientrakendus ====&lt;br /&gt;
&lt;br /&gt;
Esimesena torkas silma WPF page-ide kasutamine. See on mulle kui kasutajale väga meelepärane. Ka ülejäänud kasutajaliidese disain on lihtne ja selge. Üks väike ebamugavus – login aknas pole defaultina username kastis kursor aktiivne ja enteriga ei saa login nuppu vajutada. Arvan, et enamikele kasutajatele oleks programmi selline käitumine ootuspärane.&lt;br /&gt;
&lt;br /&gt;
Registreerimine toimib väga edukalt, lausa nii edukalt, et võib luua lõputul hulgal kasutajaid, kellel pole ei kasutajanime, passwordi ega emaili. Andmebaasis on need tühja stringina, ehk siis mitte null väljad, vältides edukalt teenuse/andmebaasi poolt kehtestatud piiranguid. Siinkohal võiks olla kontroll nii teenuse kui rakenduse küljes, kuid kahjuks pole kummaski.&lt;br /&gt;
&lt;br /&gt;
Login on edukas tüüpkasutaja korral, kuid annab nullpointer exceptioni, kui üritada sisse logida mõne eelnevalt loodud vigase kasutajaga. Ka vale kasutajanime/parooli korral jookseb rakendus unhandled exceptioniga umbe.&lt;br /&gt;
&lt;br /&gt;
WPF page-kontrollidega navigeerides (vasak ülemine nurk, nooled ja rippmenüü) sai peatselt selgeks, et nuppe vajutades luuakse kogu aeg uusi lehti, vanadele saab navigeerida rippmenüüst ning neis säilib ka eelnevalt sisestatud info. Kasutajana oleks oodanud, et liigeldakse olemasolevate lehtede vahel (login ja registreerimine). Koodi lähemalt uurides (nt. registreeri_page.xaml.xs) selgub, et ka teenusega luuakse kogu aeg uusi ühendusi. Jõudluse seisukohalt ei tundu see hea lähenemisena.&lt;br /&gt;
&lt;br /&gt;
Nii search, browse kui add contact töötavad. Loomulikult saab lisada tühjade stringidega kontakte, nagu ka kasutaja registreerimise korral. Search näitab detailides enne tulemuse valikut mingit kuupäeva miinimumväärtust, see ei peaks seal ilmselt olema.&lt;br /&gt;
&lt;br /&gt;
Mõne otsingu korral esines sama väärtuse topelt kuvamist, ka selectionina olid nad korraga aktiveeritud. Põhjust otsides seda esimese hooga ei leidnud, jätan selle arendajate hingele.&lt;br /&gt;
&lt;br /&gt;
Enne sisse logimist sulgub programm ristist sulgedes edukalt, debug lõppeb. Peale sisselogimist see enam ei õnnestu, ka logout tehes jääb midagi mällu ja debug sessioon ei lõppe. Millegipärast jääb kliendi .exe jooksma (ka task manageris on näha). Koodi uurides on justkui igalpool vajalikes kohtades this.Close() käsud olemas, võibolla on asi visual studios endas.&lt;br /&gt;
&lt;br /&gt;
Koodis kasutatakse mõistlikke muutujanimesid ning aeg-ajalt esineb ka mõni rida kommentaari funktsiooni kirjelduseks. Üldjoontes on ülesehitus selge. Rakendus ei ole mahult suur ning on hoolsa inimese käes isegi päriselt kasutuskõlbulik. Disain, nagu juba mainitud, on piisavalt hea. Eeskujulikust kasutusest kõrvale kaldudes tekivad probleemid, millega programm pole arvestanud. Mingit andmete valideerimist ei ole. Arvestades ajanappust selle rakenduse loomiseks, pean tulemust piisavalt heaks.&lt;br /&gt;
&lt;br /&gt;
== Retsensioon veebiteenusele ja klientrakendusele meeskonnalt [[Hello Kitty]] ==&lt;br /&gt;
&lt;br /&gt;
Klientrakendus&lt;br /&gt;
&lt;br /&gt;
Kui ma vaatasin koodi, siis panin kohe tähele, et on kirjutatud nii eesti keeles kui ka inglise keeles ja see tegi koodi lugemise kohe palju raskemaks. Suureks plussiks on, et kasutati WPF&#039;i ehk mõeldi uute tehnoloogiate peale. Kuid sellega olid ka omad probleemid. Alguses oli raske aru saada kasutajaliidesest. Puudus igasugune valideerimine kasutaja sisestamise poole pealt. Sa võisid jätta täitmata nii kasutajanime kui ka parooli väljad ning registeerida, kuid hiljem ei saanud sedasi sisse logida. Minul jooksis selle peale rakendus kohe kokku.&lt;br /&gt;
&lt;br /&gt;
Nagu ka kasutaja loomisel, puudus otsingul kontroll. Võisid sisestada tühja teksti sinna. Võibolla arendaja mõtleski, seega selle kallal norida ei saa.&lt;br /&gt;
&lt;br /&gt;
Programmiga oli veel üks probleem. Kuna see jooksis vahete vahel kokku, sain süsteemi poolt veateateid. See näitab, et ei ole piisavalt kontrollitud, mida kasutaja teha saab.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Veebiteenus&lt;br /&gt;
&lt;br /&gt;
Andmebaasi tabelite väljad on kirjutatud nii eesti kui ka inglise keeles. See teeb lugemise palju raskemaks. Andmebaasi poolt siis veel väike soovitus: kui rakendus peaks minema kasutusele ja populaarseks saama, siis oleks hea kasutada int asemel Guid primary key&#039;na. Ja küsimus tekkis parooli turvalisuses - miks on parool tavalisel tekstikujul ning on lubatud nii väheste tähemärkidega. Enda kogemusest kasutan parooliks vähemalt 19 tähemärgilist parooli. &lt;br /&gt;
&lt;br /&gt;
Koodi poolt siis faili nimed võiksid alata suure tähega. See on hea tava. Teiseks, kood võiks olla kommenteeritud, kuna osadest funktsioonidest ei saa kuidagi aru. Kolmandaks, funktsioonide nimed samamoodi: kui on avalik, siis võiks alata suure tähega. Tegelikult kõik funktsioonid võiksid alata suure tähega. Ja täpselt nii nagu andmebaasis, on funktsioonides kirjutatud eestikeelseid sõnu.&lt;br /&gt;
&lt;br /&gt;
Üldjoontes programm töötas nende parameetritega, mis olid nõutud. Siiski vajaks kõvasti üle vaatamist ja parandamist ning eriti turvalisuse poole pealt.&lt;br /&gt;
&lt;br /&gt;
Retsenseeris meeskond Hello Kitty.&lt;br /&gt;
&lt;br /&gt;
== Retentsioon XML ==&lt;br /&gt;
&lt;br /&gt;
Xml koha pealt vaadates siis paistis asi olevat korras. Ei oska eriti lisada selle koha pealt mis võiks juurte teha.&lt;br /&gt;
&lt;br /&gt;
XML schema kui ma seda nüüd vaatasin siis paistis olevat asi kuidagi vigane. Et samma küsimus mis on ka eelnevatel inimestel miks käiakse üle mitu korda ühte ja sammasid elemente.&lt;br /&gt;
&lt;br /&gt;
XSL failid on suhteliselt ühesugused ja miks neid kolm tükki on kas ei oleks olnud võimalik hakkama saada ühega. &lt;br /&gt;
&lt;br /&gt;
Kuid üldiselt vaadata siis on asjad hästi tehtud ja arvatavasti inimene alles õppis selle projektiga, siis tulevikus võib olla enam ei teee neid vigasid.&lt;/div&gt;</summary>
		<author><name>Jvarus</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Talk:LLL&amp;diff=49157</id>
		<title>Talk:LLL</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Talk:LLL&amp;diff=49157"/>
		<updated>2012-06-12T06:41:02Z</updated>

		<summary type="html">&lt;p&gt;Jvarus: /* Retsensioon: klientrakendus ja veebiteenus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Retsensioon==&lt;br /&gt;
&lt;br /&gt;
Mulle tundub, et xml ei lähe kokku selle veebiteenusega, mida tahetakse teha. Võimalik muidugi, et tehtigi lihtsalt hetkel suvaline xml.&lt;br /&gt;
&lt;br /&gt;
XML paistab muidu olevat mõistlik aga ma arvan, et 4-ndas dimensioonis ei oleks ma kasutanud &amp;lt;nimi&amp;gt; väljal atribuute. Jääb mulje, et seda tehti sellepärast, et tööülesanne ütleb järgmist: &amp;quot;Lisaks tuleb kasutada 3-el dimensioonil attribuute, mis on enamat, kui lihtsalt ID&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
XML schemale otsa vaadata siis ma vaatan küll, et see on vigane. Miks käiakse üle mitu korda elemendid? Isegi Visual Studios automaatne schema tegemine ei tooda sellist asja, proovisime järgi. Või oskate öelda, miks nii tehtud on?&lt;br /&gt;
&lt;br /&gt;
XSL faile on pandud 3 tükki, aga kõik tunduvad mulle koodi poolelt sarnased. Selle asemel oleks võinud lisada puuduliku XML faili formaadi muutmise XLSLi.&lt;br /&gt;
&lt;br /&gt;
Samas kiidaks veebiteenuse kirjelduse kohapealt tiimi !&lt;br /&gt;
&lt;br /&gt;
Meeskond [[PhoneBook]]&lt;br /&gt;
&lt;br /&gt;
==== Vastus ====&lt;br /&gt;
&lt;br /&gt;
Xml ei pidanudki veebiteenusega kokku minema. Ehk jah, tegime täiesti suvalise xmli. Schemas oli jah viga sees, kuna kasutasin automaatset schemat ja väike viga oli xmlis sees. Vabandan, et ise seda enne ei olnud märganud ja ära parandanud. Nüüd peaks schmea ok olema.&lt;br /&gt;
&lt;br /&gt;
== Retsensioonid veebiteenusele ja klientrakendusele meeskonnalt [[PhoneBook]] ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Veebiteenus ====&lt;br /&gt;
&lt;br /&gt;
Esialgu planeeritud teenuse ja rakenduse analüüs/kirjeldus on wikis päris asjalik, kuid selle asemel realiseeritud telefoniraamatu kohta puuduvad mingisugusedki kommentaarid. Õnneks kaitsmisel sai seda nähtud.&lt;br /&gt;
&lt;br /&gt;
Andmebaasi tabelite loomiseks antud skript eeldab, et selle nimeline andmebaas on juba olemas. Väike ebamugavus, sellest sain üle. Rollid tulevad skriptiga kaasa, see meeldis. &lt;br /&gt;
&lt;br /&gt;
Loodud tabelitest on näha, et saab luua erinevates rollides kasutajaid, kellel on igalühel kontaktid ja võimalus neid valikuliselt jagada mingis ajavahemikus. Näeb üsna kena välja, kuid:&lt;br /&gt;
* ei võimalda lisada uut tüüpi kontakte ilma andmebaasi ümber tegemata&lt;br /&gt;
* auditeerimise poole pealt ei jälgita, kes midagi loob/muudab/kustutab. Ilmselt ei peetud vajalikuks.&lt;br /&gt;
* kasutaja username maksimaalne pikkus on 12 tähemärki ja passwordil 15 tähemärki. Tekkis küsimus, et miks need piirangud nii karmid on.&lt;br /&gt;
&lt;br /&gt;
Väljade andmetüübid on minu arvates üsna arukalt valitud.&lt;br /&gt;
&lt;br /&gt;
Service class ja interface on millegipärast ühte faili kokku pandud, selguse mõttes võinuks need eraldi olla. Service klassil on lisatud atribuut [ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)], ehk siis teenusest on korraga ainult üks instance. Miks?&lt;br /&gt;
&lt;br /&gt;
Katsetasin teenuse funktsioone WCF Clientiga. Mõned tähelepanekud:&lt;br /&gt;
* Kõik meetodid töötavad ja annavad sobivates oludes vastuse.&lt;br /&gt;
* Ebaõnnestunud päringu korral ei saadeta mingit vastust. Võibolla õige teguviis, kuid test client ei suuda debug sessionit jätkata ning see jookseb kokku. Lihtsalt väike ebamugavus testijale või ka teenusele rakenduse arendajatele.&lt;br /&gt;
* Ükski meetod ei vaja eelnevat logini ja passworde hoitakse plaintext kujul. Sertifikaate ei kasutata. Bindinguks on WsHttpBinding, kuid security pole sisse lülitatud.&lt;br /&gt;
* Saab luua sama kasutajanime ja passwordiga kasutajaid. Login õnnestub neist vaid esimesena loodul.&lt;br /&gt;
* Kõikidel on vaba ligipääs kõikide kontaktidele. See ei ole probleemiks, kui ongi mõeldud teha ühine telefoniraamat kõikidele kasutajatele.&lt;br /&gt;
* Meeldis, et päringutes sai spetsifitseerida soovitud tulemuste arvu.&lt;br /&gt;
&lt;br /&gt;
Kontaktide jagamise realiseerimiseks pole ilmselt aega jäänud.&lt;br /&gt;
&lt;br /&gt;
Failide Auth.cs ning AuthData.cs põhjal võib arvata, et autentimise ja muu turvalisusega seonduva lisamine on plaanis olnud, kuid pooleli jäetud.&lt;br /&gt;
&lt;br /&gt;
Userite / kontaktide salvestamine on pandud vastava andmetüübi kirjelduse faili, ülejäänud operatsioonid eraldi – andmetüübile vastavasse meetodifaili. Arvan, et oleks olnud loogilisem ka salvestamine ülejäänud meetoditega kokku panna.&lt;br /&gt;
&lt;br /&gt;
Meetodeid on palju rohkem kui teenuses võimalik välja kutsuda, kaasa arvatud kontakti jagamise funktsionaalsus. Üldjuhul on kõik päringud korralikult kirjutatud, päris kõiki jupphaaval läbi töötama ei hakanud. Märkasin, et näiteks uue kasutaja salvestamisel kontrollitakse eelnevalt selle olemasolu ja vajadusel hoopis uuendatakse seda – väga tubli!&lt;br /&gt;
&lt;br /&gt;
Kokkuvõttes on teenus planeeritud põhjalik ja olemasolevad osad tehtud üsna kenasti. Miinustena näen täielikku turvalisuse puudumist, teostatud funktsioonide vähest hulka ja mõningaid pisivigu. Andmete valideerimiseks ei tehta teenuse poole pealt midagi ja statistikat või kasutajate haldust ei eksisteeri.&lt;br /&gt;
&lt;br /&gt;
==== Klientrakendus ====&lt;br /&gt;
&lt;br /&gt;
Esimesena torkas silma WPF page-ide kasutamine. See on mulle kui kasutajale väga meelepärane. Ka ülejäänud kasutajaliidese disain on lihtne ja selge. Üks väike ebamugavus – login aknas pole defaultina username kastis kursor aktiivne ja enteriga ei saa login nuppu vajutada. Arvan, et enamikele kasutajatele oleks programmi selline käitumine ootuspärane.&lt;br /&gt;
&lt;br /&gt;
Registreerimine toimib väga edukalt, lausa nii edukalt, et võib luua lõputul hulgal kasutajaid, kellel pole ei kasutajanime, passwordi ega emaili. Andmebaasis on need tühja stringina, ehk siis mitte null väljad, vältides edukalt teenuse/andmebaasi poolt kehtestatud piiranguid. Siinkohal võiks olla kontroll nii teenuse kui rakenduse küljes, kuid kahjuks pole kummaski.&lt;br /&gt;
&lt;br /&gt;
Login on edukas tüüpkasutaja korral, kuid annab nullpointer exceptioni, kui üritada sisse logida mõne eelnevalt loodud vigase kasutajaga. Ka vale kasutajanime/parooli korral jookseb rakendus unhandled exceptioniga umbe.&lt;br /&gt;
&lt;br /&gt;
WPF page-kontrollidega navigeerides (vasak ülemine nurk, nooled ja rippmenüü) sai peatselt selgeks, et nuppe vajutades luuakse kogu aeg uusi lehti, vanadele saab navigeerida rippmenüüst ning neis säilib ka eelnevalt sisestatud info. Kasutajana oleks oodanud, et liigeldakse olemasolevate lehtede vahel (login ja registreerimine). Koodi lähemalt uurides (nt. registreeri_page.xaml.xs) selgub, et ka teenusega luuakse kogu aeg uusi ühendusi. Jõudluse seisukohalt ei tundu see hea lähenemisena.&lt;br /&gt;
&lt;br /&gt;
Nii search, browse kui add contact töötavad. Loomulikult saab lisada tühjade stringidega kontakte, nagu ka kasutaja registreerimise korral. Search näitab detailides enne tulemuse valikut mingit kuupäeva miinimumväärtust, see ei peaks seal ilmselt olema.&lt;br /&gt;
&lt;br /&gt;
Mõne otsingu korral esines sama väärtuse topelt kuvamist, ka selectionina olid nad korraga aktiveeritud. Põhjust otsides seda esimese hooga ei leidnud, jätan selle arendajate hingele.&lt;br /&gt;
&lt;br /&gt;
Enne sisse logimist sulgub programm ristist sulgedes edukalt, debug lõppeb. Peale sisselogimist see enam ei õnnestu, ka logout tehes jääb midagi mällu ja debug sessioon ei lõppe. Millegipärast jääb kliendi .exe jooksma (ka task manageris on näha). Koodi uurides on justkui igalpool vajalikes kohtades this.Close() käsud olemas, võibolla on asi visual studios endas.&lt;br /&gt;
&lt;br /&gt;
Koodis kasutatakse mõistlikke muutujanimesid ning aeg-ajalt esineb ka mõni rida kommentaari funktsiooni kirjelduseks. Üldjoontes on ülesehitus selge. Rakendus ei ole mahult suur ning on hoolsa inimese käes isegi päriselt kasutuskõlbulik. Disain, nagu juba mainitud, on piisavalt hea. Eeskujulikust kasutusest kõrvale kaldudes tekivad probleemid, millega programm pole arvestanud. Mingit andmete valideerimist ei ole. Arvestades ajanappust selle rakenduse loomiseks, pean tulemust piisavalt heaks.&lt;br /&gt;
&lt;br /&gt;
== Retsensioonid veebiteenusele ja klientrakendusele meeskonnalt [[Hello Kitty]] ==&lt;br /&gt;
&lt;br /&gt;
Klientrakendus&lt;br /&gt;
&lt;br /&gt;
Kui ma vaatasin koodi, siis panin kohe tähele, et on kirjutatud nii eesti keeles kui ka inglise keeles ja see tegi koodi lugemise kohe palju raskemaks. Suureks plussiks on, et kasutati WPF&#039;i ehk mõeldi uute tehnoloogiate peale. Kuid sellega olid ka omad probleemid. Alguses oli raske aru saada kasutajaliidesest. Puudus igasugune valideerimine kasutaja sisestamise poole pealt. Sa võisid jätta täitmata nii kasutajanime kui ka parooli väljad ning registeerida, kuid hiljem ei saanud sedasi sisse logida. Minul jooksis selle peale rakendus kohe kokku.&lt;br /&gt;
&lt;br /&gt;
Nagu ka kasutaja loomisel, puudus otsingul kontroll. Võisid sisestada tühja teksti sinna. Võibolla arendaja mõtleski, seega selle kallal norida ei saa.&lt;br /&gt;
&lt;br /&gt;
Programmiga oli veel üks probleem. Kuna see jooksis vahete vahel kokku, sain süsteemi poolt veateateid. See näitab, et ei ole piisavalt kontrollitud, mida kasutaja teha saab.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Veebiteenus&lt;br /&gt;
&lt;br /&gt;
Andmebaasi tabelite väljad on kirjutatud nii eesti kui ka inglise keeles. See teeb lugemise palju raskemaks. Andmebaasi poolt siis veel väike soovitus: kui rakendus peaks minema kasutusele ja populaarseks saama, siis oleks hea kasutada int asemel Guid primary key&#039;na. Ja küsimus tekkis parooli turvalisuses - miks on parool tavalisel tekstikujul ning on lubatud nii väheste tähemärkidega. Enda kogemusest kasutan parooliks vähemalt 19 tähemärgilist parooli. &lt;br /&gt;
&lt;br /&gt;
Koodi poolt siis faili nimed võiksid alata suure tähega. See on hea tava. Teiseks, kood võiks olla kommenteeritud, kuna osadest funktsioonidest ei saa kuidagi aru. Kolmandaks, funktsioonide nimed samamoodi: kui on avalik, siis võiks alata suure tähega. Tegelikult kõik funktsioonid võiksid alata suure tähega. Ja täpselt nii nagu andmebaasis, on funktsioonides kirjutatud eestikeelseid sõnu.&lt;br /&gt;
&lt;br /&gt;
Üldjoontes programm töötas nende parameetritega, mis olid nõutud. Siiski vajaks kõvasti üle vaatamist ja parandamist ning eriti turvalisuse poole pealt.&lt;br /&gt;
&lt;br /&gt;
Retsenseeris meeskond Hello Kitty.&lt;br /&gt;
&lt;br /&gt;
== Retentsioon XML ==&lt;br /&gt;
&lt;br /&gt;
Xml koha pealt vaadates siis paistis asi olevat korras. Ei oska eriti lisada selle koha pealt mis võiks juurte teha.&lt;br /&gt;
&lt;br /&gt;
XML schema kui ma seda nüüd vaatasin siis paistis olevat asi kuidagi vigane. Et samma küsimus mis on ka eelnevatel inimestel miks käiakse üle mitu korda ühte ja sammasid elemente.&lt;br /&gt;
&lt;br /&gt;
XSL failid on suhteliselt ühesugused ja miks neid kolm tükki on kas ei oleks olnud võimalik hakkama saada ühega. &lt;br /&gt;
&lt;br /&gt;
Kuid üldiselt vaadata siis on asjad hästi tehtud ja arvatavasti inimene alles õppis selle projektiga, siis tulevikus võib olla enam ei teee neid vigasid.&lt;/div&gt;</summary>
		<author><name>Jvarus</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Talk:LLL&amp;diff=49156</id>
		<title>Talk:LLL</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Talk:LLL&amp;diff=49156"/>
		<updated>2012-06-12T06:40:19Z</updated>

		<summary type="html">&lt;p&gt;Jvarus: /* Retsensioon: klientrakendus ja veebiteenus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Retsensioon==&lt;br /&gt;
&lt;br /&gt;
Mulle tundub, et xml ei lähe kokku selle veebiteenusega, mida tahetakse teha. Võimalik muidugi, et tehtigi lihtsalt hetkel suvaline xml.&lt;br /&gt;
&lt;br /&gt;
XML paistab muidu olevat mõistlik aga ma arvan, et 4-ndas dimensioonis ei oleks ma kasutanud &amp;lt;nimi&amp;gt; väljal atribuute. Jääb mulje, et seda tehti sellepärast, et tööülesanne ütleb järgmist: &amp;quot;Lisaks tuleb kasutada 3-el dimensioonil attribuute, mis on enamat, kui lihtsalt ID&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
XML schemale otsa vaadata siis ma vaatan küll, et see on vigane. Miks käiakse üle mitu korda elemendid? Isegi Visual Studios automaatne schema tegemine ei tooda sellist asja, proovisime järgi. Või oskate öelda, miks nii tehtud on?&lt;br /&gt;
&lt;br /&gt;
XSL faile on pandud 3 tükki, aga kõik tunduvad mulle koodi poolelt sarnased. Selle asemel oleks võinud lisada puuduliku XML faili formaadi muutmise XLSLi.&lt;br /&gt;
&lt;br /&gt;
Samas kiidaks veebiteenuse kirjelduse kohapealt tiimi !&lt;br /&gt;
&lt;br /&gt;
Meeskond [[PhoneBook]]&lt;br /&gt;
&lt;br /&gt;
==== Vastus ====&lt;br /&gt;
&lt;br /&gt;
Xml ei pidanudki veebiteenusega kokku minema. Ehk jah, tegime täiesti suvalise xmli. Schemas oli jah viga sees, kuna kasutasin automaatset schemat ja väike viga oli xmlis sees. Vabandan, et ise seda enne ei olnud märganud ja ära parandanud. Nüüd peaks schmea ok olema.&lt;br /&gt;
&lt;br /&gt;
== Retsensioonid veebiteenusele ja klientrakendusele meeskonnalt [[PhoneBook]] ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Veebiteenus ====&lt;br /&gt;
&lt;br /&gt;
Esialgu planeeritud teenuse ja rakenduse analüüs/kirjeldus on wikis päris asjalik, kuid selle asemel realiseeritud telefoniraamatu kohta puuduvad mingisugusedki kommentaarid. Õnneks kaitsmisel sai seda nähtud.&lt;br /&gt;
&lt;br /&gt;
Andmebaasi tabelite loomiseks antud skript eeldab, et selle nimeline andmebaas on juba olemas. Väike ebamugavus, sellest sain üle. Rollid tulevad skriptiga kaasa, see meeldis. &lt;br /&gt;
&lt;br /&gt;
Loodud tabelitest on näha, et saab luua erinevates rollides kasutajaid, kellel on igalühel kontaktid ja võimalus neid valikuliselt jagada mingis ajavahemikus. Näeb üsna kena välja, kuid:&lt;br /&gt;
* ei võimalda lisada uut tüüpi kontakte ilma andmebaasi ümber tegemata&lt;br /&gt;
* auditeerimise poole pealt ei jälgita, kes midagi loob/muudab/kustutab. Ilmselt ei peetud vajalikuks.&lt;br /&gt;
* kasutaja username maksimaalne pikkus on 12 tähemärki ja passwordil 15 tähemärki. Tekkis küsimus, et miks need piirangud nii karmid on.&lt;br /&gt;
&lt;br /&gt;
Väljade andmetüübid on minu arvates üsna arukalt valitud.&lt;br /&gt;
&lt;br /&gt;
Service class ja interface on millegipärast ühte faili kokku pandud, selguse mõttes võinuks need eraldi olla. Service klassil on lisatud atribuut [ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)], ehk siis teenusest on korraga ainult üks instance. Miks?&lt;br /&gt;
&lt;br /&gt;
Katsetasin teenuse funktsioone WCF Clientiga. Mõned tähelepanekud:&lt;br /&gt;
* Kõik meetodid töötavad ja annavad sobivates oludes vastuse.&lt;br /&gt;
* Ebaõnnestunud päringu korral ei saadeta mingit vastust. Võibolla õige teguviis, kuid test client ei suuda debug sessionit jätkata ning see jookseb kokku. Lihtsalt väike ebamugavus testijale või ka teenusele rakenduse arendajatele.&lt;br /&gt;
* Ükski meetod ei vaja eelnevat logini ja passworde hoitakse plaintext kujul. Sertifikaate ei kasutata. Bindinguks on WsHttpBinding, kuid security pole sisse lülitatud.&lt;br /&gt;
* Saab luua sama kasutajanime ja passwordiga kasutajaid. Login õnnestub neist vaid esimesena loodul.&lt;br /&gt;
* Kõikidel on vaba ligipääs kõikide kontaktidele. See ei ole probleemiks, kui ongi mõeldud teha ühine telefoniraamat kõikidele kasutajatele.&lt;br /&gt;
* Meeldis, et päringutes sai spetsifitseerida soovitud tulemuste arvu.&lt;br /&gt;
&lt;br /&gt;
Kontaktide jagamise realiseerimiseks pole ilmselt aega jäänud.&lt;br /&gt;
&lt;br /&gt;
Failide Auth.cs ning AuthData.cs põhjal võib arvata, et autentimise ja muu turvalisusega seonduva lisamine on plaanis olnud, kuid pooleli jäetud.&lt;br /&gt;
&lt;br /&gt;
Userite / kontaktide salvestamine on pandud vastava andmetüübi kirjelduse faili, ülejäänud operatsioonid eraldi – andmetüübile vastavasse meetodifaili. Arvan, et oleks olnud loogilisem ka salvestamine ülejäänud meetoditega kokku panna.&lt;br /&gt;
&lt;br /&gt;
Meetodeid on palju rohkem kui teenuses võimalik välja kutsuda, kaasa arvatud kontakti jagamise funktsionaalsus. Üldjuhul on kõik päringud korralikult kirjutatud, päris kõiki jupphaaval läbi töötama ei hakanud. Märkasin, et näiteks uue kasutaja salvestamisel kontrollitakse eelnevalt selle olemasolu ja vajadusel hoopis uuendatakse seda – väga tubli!&lt;br /&gt;
&lt;br /&gt;
Kokkuvõttes on teenus planeeritud põhjalik ja olemasolevad osad tehtud üsna kenasti. Miinustena näen täielikku turvalisuse puudumist, teostatud funktsioonide vähest hulka ja mõningaid pisivigu. Andmete valideerimiseks ei tehta teenuse poole pealt midagi ja statistikat või kasutajate haldust ei eksisteeri.&lt;br /&gt;
&lt;br /&gt;
==== Klientrakendus ====&lt;br /&gt;
&lt;br /&gt;
Esimesena torkas silma WPF page-ide kasutamine. See on mulle kui kasutajale väga meelepärane. Ka ülejäänud kasutajaliidese disain on lihtne ja selge. Üks väike ebamugavus – login aknas pole defaultina username kastis kursor aktiivne ja enteriga ei saa login nuppu vajutada. Arvan, et enamikele kasutajatele oleks programmi selline käitumine ootuspärane.&lt;br /&gt;
&lt;br /&gt;
Registreerimine toimib väga edukalt, lausa nii edukalt, et võib luua lõputul hulgal kasutajaid, kellel pole ei kasutajanime, passwordi ega emaili. Andmebaasis on need tühja stringina, ehk siis mitte null väljad, vältides edukalt teenuse/andmebaasi poolt kehtestatud piiranguid. Siinkohal võiks olla kontroll nii teenuse kui rakenduse küljes, kuid kahjuks pole kummaski.&lt;br /&gt;
&lt;br /&gt;
Login on edukas tüüpkasutaja korral, kuid annab nullpointer exceptioni, kui üritada sisse logida mõne eelnevalt loodud vigase kasutajaga. Ka vale kasutajanime/parooli korral jookseb rakendus unhandled exceptioniga umbe.&lt;br /&gt;
&lt;br /&gt;
WPF page-kontrollidega navigeerides (vasak ülemine nurk, nooled ja rippmenüü) sai peatselt selgeks, et nuppe vajutades luuakse kogu aeg uusi lehti, vanadele saab navigeerida rippmenüüst ning neis säilib ka eelnevalt sisestatud info. Kasutajana oleks oodanud, et liigeldakse olemasolevate lehtede vahel (login ja registreerimine). Koodi lähemalt uurides (nt. registreeri_page.xaml.xs) selgub, et ka teenusega luuakse kogu aeg uusi ühendusi. Jõudluse seisukohalt ei tundu see hea lähenemisena.&lt;br /&gt;
&lt;br /&gt;
Nii search, browse kui add contact töötavad. Loomulikult saab lisada tühjade stringidega kontakte, nagu ka kasutaja registreerimise korral. Search näitab detailides enne tulemuse valikut mingit kuupäeva miinimumväärtust, see ei peaks seal ilmselt olema.&lt;br /&gt;
&lt;br /&gt;
Mõne otsingu korral esines sama väärtuse topelt kuvamist, ka selectionina olid nad korraga aktiveeritud. Põhjust otsides seda esimese hooga ei leidnud, jätan selle arendajate hingele.&lt;br /&gt;
&lt;br /&gt;
Enne sisse logimist sulgub programm ristist sulgedes edukalt, debug lõppeb. Peale sisselogimist see enam ei õnnestu, ka logout tehes jääb midagi mällu ja debug sessioon ei lõppe. Millegipärast jääb kliendi .exe jooksma (ka task manageris on näha). Koodi uurides on justkui igalpool vajalikes kohtades this.Close() käsud olemas, võibolla on asi visual studios endas.&lt;br /&gt;
&lt;br /&gt;
Koodis kasutatakse mõistlikke muutujanimesid ning aeg-ajalt esineb ka mõni rida kommentaari funktsiooni kirjelduseks. Üldjoontes on ülesehitus selge. Rakendus ei ole mahult suur ning on hoolsa inimese käes isegi päriselt kasutuskõlbulik. Disain, nagu juba mainitud, on piisavalt hea. Eeskujulikust kasutusest kõrvale kaldudes tekivad probleemid, millega programm pole arvestanud. Mingit andmete valideerimist ei ole. Arvestades ajanappust selle rakenduse loomiseks, pean tulemust piisavalt heaks.&lt;br /&gt;
&lt;br /&gt;
== Retsensioon: klientrakendus ja veebiteenus ==&lt;br /&gt;
&lt;br /&gt;
Klientrakendus&lt;br /&gt;
&lt;br /&gt;
Kui ma vaatasin koodi, siis panin kohe tähele, et on kirjutatud nii eesti keeles kui ka inglise keeles ja see tegi koodi lugemise kohe palju raskemaks. Suureks plussiks on, et kasutati WPF&#039;i ehk mõeldi uute tehnoloogiate peale. Kuid sellega olid ka omad probleemid. Alguses oli raske aru saada kasutajaliidesest. Puudus igasugune valideerimine kasutaja sisestamise poole pealt. Sa võisid jätta täitmata nii kasutajanime kui ka parooli väljad ning registeerida, kuid hiljem ei saanud sedasi sisse logida. Minul jooksis selle peale rakendus kohe kokku.&lt;br /&gt;
&lt;br /&gt;
Nagu ka kasutaja loomisel, puudus otsingul kontroll. Võisid sisestada tühja teksti sinna. Võibolla arendaja mõtleski, seega selle kallal norida ei saa.&lt;br /&gt;
&lt;br /&gt;
Programmiga oli veel üks probleem. Kuna see jooksis vahete vahel kokku, sain süsteemi poolt veateateid. See näitab, et ei ole piisavalt kontrollitud, mida kasutaja teha saab.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Veebiteenus&lt;br /&gt;
&lt;br /&gt;
Andmebaasi tabelite väljad on kirjutatud nii eesti kui ka inglise keeles. See teeb lugemise palju raskemaks. Andmebaasi poolt siis veel väike soovitus: kui rakendus peaks minema kasutusele ja populaarseks saama, siis oleks hea kasutada int asemel Guid primary key&#039;na. Ja küsimus tekkis parooli turvalisuses - miks on parool tavalisel tekstikujul ning on lubatud nii väheste tähemärkidega. Enda kogemusest kasutan parooliks vähemalt 19 tähemärgilist parooli. &lt;br /&gt;
&lt;br /&gt;
Koodi poolt siis faili nimed võiksid alata suure tähega. See on hea tava. Teiseks, kood võiks olla kommenteeritud, kuna osadest funktsioonidest ei saa kuidagi aru. Kolmandaks, funktsioonide nimed samamoodi: kui on avalik, siis võiks alata suure tähega. Tegelikult kõik funktsioonid võiksid alata suure tähega. Ja täpselt nii nagu andmebaasis, on funktsioonides kirjutatud eestikeelseid sõnu.&lt;br /&gt;
&lt;br /&gt;
Üldjoontes programm töötas nende parameetritega, mis olid nõutud. Siiski vajaks kõvasti üle vaatamist ja parandamist ning eriti turvalisuse poole pealt.&lt;br /&gt;
&lt;br /&gt;
Retsenseeris meeskond Hello Kitty.&lt;br /&gt;
&lt;br /&gt;
== Retentsioon XML ==&lt;br /&gt;
&lt;br /&gt;
Xml koha pealt vaadates siis paistis asi olevat korras. Ei oska eriti lisada selle koha pealt mis võiks juurte teha.&lt;br /&gt;
&lt;br /&gt;
XML schema kui ma seda nüüd vaatasin siis paistis olevat asi kuidagi vigane. Et samma küsimus mis on ka eelnevatel inimestel miks käiakse üle mitu korda ühte ja sammasid elemente.&lt;br /&gt;
&lt;br /&gt;
XSL failid on suhteliselt ühesugused ja miks neid kolm tükki on kas ei oleks olnud võimalik hakkama saada ühega. &lt;br /&gt;
&lt;br /&gt;
Kuid üldiselt vaadata siis on asjad hästi tehtud ja arvatavasti inimene alles õppis selle projektiga, siis tulevikus võib olla enam ei teee neid vigasid.&lt;/div&gt;</summary>
		<author><name>Jvarus</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Talk:LLL&amp;diff=49155</id>
		<title>Talk:LLL</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Talk:LLL&amp;diff=49155"/>
		<updated>2012-06-12T06:39:41Z</updated>

		<summary type="html">&lt;p&gt;Jvarus: /* Retentsioon: klientrakendus ja veebiteenus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Retsensioon==&lt;br /&gt;
&lt;br /&gt;
Mulle tundub, et xml ei lähe kokku selle veebiteenusega, mida tahetakse teha. Võimalik muidugi, et tehtigi lihtsalt hetkel suvaline xml.&lt;br /&gt;
&lt;br /&gt;
XML paistab muidu olevat mõistlik aga ma arvan, et 4-ndas dimensioonis ei oleks ma kasutanud &amp;lt;nimi&amp;gt; väljal atribuute. Jääb mulje, et seda tehti sellepärast, et tööülesanne ütleb järgmist: &amp;quot;Lisaks tuleb kasutada 3-el dimensioonil attribuute, mis on enamat, kui lihtsalt ID&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
XML schemale otsa vaadata siis ma vaatan küll, et see on vigane. Miks käiakse üle mitu korda elemendid? Isegi Visual Studios automaatne schema tegemine ei tooda sellist asja, proovisime järgi. Või oskate öelda, miks nii tehtud on?&lt;br /&gt;
&lt;br /&gt;
XSL faile on pandud 3 tükki, aga kõik tunduvad mulle koodi poolelt sarnased. Selle asemel oleks võinud lisada puuduliku XML faili formaadi muutmise XLSLi.&lt;br /&gt;
&lt;br /&gt;
Samas kiidaks veebiteenuse kirjelduse kohapealt tiimi !&lt;br /&gt;
&lt;br /&gt;
Meeskond [[PhoneBook]]&lt;br /&gt;
&lt;br /&gt;
==== Vastus ====&lt;br /&gt;
&lt;br /&gt;
Xml ei pidanudki veebiteenusega kokku minema. Ehk jah, tegime täiesti suvalise xmli. Schemas oli jah viga sees, kuna kasutasin automaatset schemat ja väike viga oli xmlis sees. Vabandan, et ise seda enne ei olnud märganud ja ära parandanud. Nüüd peaks schmea ok olema.&lt;br /&gt;
&lt;br /&gt;
== Retsensioonid veebiteenusele ja klientrakendusele meeskonnalt [[PhoneBook]] ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Veebiteenus ====&lt;br /&gt;
&lt;br /&gt;
Esialgu planeeritud teenuse ja rakenduse analüüs/kirjeldus on wikis päris asjalik, kuid selle asemel realiseeritud telefoniraamatu kohta puuduvad mingisugusedki kommentaarid. Õnneks kaitsmisel sai seda nähtud.&lt;br /&gt;
&lt;br /&gt;
Andmebaasi tabelite loomiseks antud skript eeldab, et selle nimeline andmebaas on juba olemas. Väike ebamugavus, sellest sain üle. Rollid tulevad skriptiga kaasa, see meeldis. &lt;br /&gt;
&lt;br /&gt;
Loodud tabelitest on näha, et saab luua erinevates rollides kasutajaid, kellel on igalühel kontaktid ja võimalus neid valikuliselt jagada mingis ajavahemikus. Näeb üsna kena välja, kuid:&lt;br /&gt;
* ei võimalda lisada uut tüüpi kontakte ilma andmebaasi ümber tegemata&lt;br /&gt;
* auditeerimise poole pealt ei jälgita, kes midagi loob/muudab/kustutab. Ilmselt ei peetud vajalikuks.&lt;br /&gt;
* kasutaja username maksimaalne pikkus on 12 tähemärki ja passwordil 15 tähemärki. Tekkis küsimus, et miks need piirangud nii karmid on.&lt;br /&gt;
&lt;br /&gt;
Väljade andmetüübid on minu arvates üsna arukalt valitud.&lt;br /&gt;
&lt;br /&gt;
Service class ja interface on millegipärast ühte faili kokku pandud, selguse mõttes võinuks need eraldi olla. Service klassil on lisatud atribuut [ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)], ehk siis teenusest on korraga ainult üks instance. Miks?&lt;br /&gt;
&lt;br /&gt;
Katsetasin teenuse funktsioone WCF Clientiga. Mõned tähelepanekud:&lt;br /&gt;
* Kõik meetodid töötavad ja annavad sobivates oludes vastuse.&lt;br /&gt;
* Ebaõnnestunud päringu korral ei saadeta mingit vastust. Võibolla õige teguviis, kuid test client ei suuda debug sessionit jätkata ning see jookseb kokku. Lihtsalt väike ebamugavus testijale või ka teenusele rakenduse arendajatele.&lt;br /&gt;
* Ükski meetod ei vaja eelnevat logini ja passworde hoitakse plaintext kujul. Sertifikaate ei kasutata. Bindinguks on WsHttpBinding, kuid security pole sisse lülitatud.&lt;br /&gt;
* Saab luua sama kasutajanime ja passwordiga kasutajaid. Login õnnestub neist vaid esimesena loodul.&lt;br /&gt;
* Kõikidel on vaba ligipääs kõikide kontaktidele. See ei ole probleemiks, kui ongi mõeldud teha ühine telefoniraamat kõikidele kasutajatele.&lt;br /&gt;
* Meeldis, et päringutes sai spetsifitseerida soovitud tulemuste arvu.&lt;br /&gt;
&lt;br /&gt;
Kontaktide jagamise realiseerimiseks pole ilmselt aega jäänud.&lt;br /&gt;
&lt;br /&gt;
Failide Auth.cs ning AuthData.cs põhjal võib arvata, et autentimise ja muu turvalisusega seonduva lisamine on plaanis olnud, kuid pooleli jäetud.&lt;br /&gt;
&lt;br /&gt;
Userite / kontaktide salvestamine on pandud vastava andmetüübi kirjelduse faili, ülejäänud operatsioonid eraldi – andmetüübile vastavasse meetodifaili. Arvan, et oleks olnud loogilisem ka salvestamine ülejäänud meetoditega kokku panna.&lt;br /&gt;
&lt;br /&gt;
Meetodeid on palju rohkem kui teenuses võimalik välja kutsuda, kaasa arvatud kontakti jagamise funktsionaalsus. Üldjuhul on kõik päringud korralikult kirjutatud, päris kõiki jupphaaval läbi töötama ei hakanud. Märkasin, et näiteks uue kasutaja salvestamisel kontrollitakse eelnevalt selle olemasolu ja vajadusel hoopis uuendatakse seda – väga tubli!&lt;br /&gt;
&lt;br /&gt;
Kokkuvõttes on teenus planeeritud põhjalik ja olemasolevad osad tehtud üsna kenasti. Miinustena näen täielikku turvalisuse puudumist, teostatud funktsioonide vähest hulka ja mõningaid pisivigu. Andmete valideerimiseks ei tehta teenuse poole pealt midagi ja statistikat või kasutajate haldust ei eksisteeri.&lt;br /&gt;
&lt;br /&gt;
==== Klientrakendus ====&lt;br /&gt;
&lt;br /&gt;
Esimesena torkas silma WPF page-ide kasutamine. See on mulle kui kasutajale väga meelepärane. Ka ülejäänud kasutajaliidese disain on lihtne ja selge. Üks väike ebamugavus – login aknas pole defaultina username kastis kursor aktiivne ja enteriga ei saa login nuppu vajutada. Arvan, et enamikele kasutajatele oleks programmi selline käitumine ootuspärane.&lt;br /&gt;
&lt;br /&gt;
Registreerimine toimib väga edukalt, lausa nii edukalt, et võib luua lõputul hulgal kasutajaid, kellel pole ei kasutajanime, passwordi ega emaili. Andmebaasis on need tühja stringina, ehk siis mitte null väljad, vältides edukalt teenuse/andmebaasi poolt kehtestatud piiranguid. Siinkohal võiks olla kontroll nii teenuse kui rakenduse küljes, kuid kahjuks pole kummaski.&lt;br /&gt;
&lt;br /&gt;
Login on edukas tüüpkasutaja korral, kuid annab nullpointer exceptioni, kui üritada sisse logida mõne eelnevalt loodud vigase kasutajaga. Ka vale kasutajanime/parooli korral jookseb rakendus unhandled exceptioniga umbe.&lt;br /&gt;
&lt;br /&gt;
WPF page-kontrollidega navigeerides (vasak ülemine nurk, nooled ja rippmenüü) sai peatselt selgeks, et nuppe vajutades luuakse kogu aeg uusi lehti, vanadele saab navigeerida rippmenüüst ning neis säilib ka eelnevalt sisestatud info. Kasutajana oleks oodanud, et liigeldakse olemasolevate lehtede vahel (login ja registreerimine). Koodi lähemalt uurides (nt. registreeri_page.xaml.xs) selgub, et ka teenusega luuakse kogu aeg uusi ühendusi. Jõudluse seisukohalt ei tundu see hea lähenemisena.&lt;br /&gt;
&lt;br /&gt;
Nii search, browse kui add contact töötavad. Loomulikult saab lisada tühjade stringidega kontakte, nagu ka kasutaja registreerimise korral. Search näitab detailides enne tulemuse valikut mingit kuupäeva miinimumväärtust, see ei peaks seal ilmselt olema.&lt;br /&gt;
&lt;br /&gt;
Mõne otsingu korral esines sama väärtuse topelt kuvamist, ka selectionina olid nad korraga aktiveeritud. Põhjust otsides seda esimese hooga ei leidnud, jätan selle arendajate hingele.&lt;br /&gt;
&lt;br /&gt;
Enne sisse logimist sulgub programm ristist sulgedes edukalt, debug lõppeb. Peale sisselogimist see enam ei õnnestu, ka logout tehes jääb midagi mällu ja debug sessioon ei lõppe. Millegipärast jääb kliendi .exe jooksma (ka task manageris on näha). Koodi uurides on justkui igalpool vajalikes kohtades this.Close() käsud olemas, võibolla on asi visual studios endas.&lt;br /&gt;
&lt;br /&gt;
Koodis kasutatakse mõistlikke muutujanimesid ning aeg-ajalt esineb ka mõni rida kommentaari funktsiooni kirjelduseks. Üldjoontes on ülesehitus selge. Rakendus ei ole mahult suur ning on hoolsa inimese käes isegi päriselt kasutuskõlbulik. Disain, nagu juba mainitud, on piisavalt hea. Eeskujulikust kasutusest kõrvale kaldudes tekivad probleemid, millega programm pole arvestanud. Mingit andmete valideerimist ei ole. Arvestades ajanappust selle rakenduse loomiseks, pean tulemust piisavalt heaks.&lt;br /&gt;
&lt;br /&gt;
== Retsensioon: klientrakendus ja veebiteenus ==&lt;br /&gt;
&lt;br /&gt;
Klientrakendus&lt;br /&gt;
&lt;br /&gt;
Kui ma vaatasin koodi, siis panin kohe tähele, et on kirjutatud nii eesti keelselt kui ka inglise keelselt ja see tegi koodi lugemise kohe palju raskemaks. Suureks plussiks on, et kasutati WPF&#039;i ehk mõeldi uute tehnoloogiate peale. Kuid sellega olid ka omad probleemid. Alguses oli raske aru saada kasutajaliidesest. Puudus igasugune valideerimine kasutaja sisestamise poole pealt. Sa võisid jätta täitmata nii kasutajanime kui ka parooli väljad ning registeerida, kuid hiljem ei saanud sedasi sisse logida. Minul jooksis selle peale rakendus kohe kokku.&lt;br /&gt;
&lt;br /&gt;
Nagu ka kasutaja loomisel, puudus otsingul kontroll. Võisid sisestada tühja teksti sinna. Võibolla arendaja mõtleski, seega selle kallal norida ei saa.&lt;br /&gt;
&lt;br /&gt;
Programmiga oli veel üks probleem. Kuna see jooksis vahete vahel kokku, sain süsteemi poolt veateateid. See näitab, et ei ole piisavalt kontrollitud, mida kasutaja teha saab.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Veebiteenus&lt;br /&gt;
&lt;br /&gt;
Andmebaasi tabelite väljad on kirjutatud nii eesti kui ka inglise keeles. See teeb lugemise palju raskemaks. Andmebaasi poolt siis veel väike soovitus: kui rakendus peaks minema kasutusele ja populaarseks saama, siis oleks hea kasutada int asemel Guid primary key&#039;na. Ja küsimus tekkis parooli turvalisuses - miks on parool tavalisel tekstikujul ning on lubatud nii väheste tähemärkidega. Enda kogemusest kasutan parooliks vähemalt 19 tähemärgilist parooli. &lt;br /&gt;
&lt;br /&gt;
Koodi poolt siis faili nimed võiksid alata suure tähega. See on hea tava. Teiseks, kood võiks olla kommenteeritud, kuna osadest funktsioonidest ei saa kuidagi aru. Kolmandaks, funktsioonide nimed samamoodi: kui on avalik, siis võiks alata suure tähega. Tegelikult kõik funktsioonid võiksid alata suure tähega. Ja täpselt nii nagu andmebaasis, on funktsioonides kirjutatud eestikeelseid sõnu.&lt;br /&gt;
&lt;br /&gt;
Üldjoontes programm töötas nende parameetritega, mis olid nõutud. Siiski vajaks kõvasti üle vaatamist ja parandamist ning eriti turvalisuse poole pealt.&lt;br /&gt;
&lt;br /&gt;
Retsenseeris meeskond Hello Kitty.&lt;br /&gt;
&lt;br /&gt;
== Retentsioon XML ==&lt;br /&gt;
&lt;br /&gt;
Xml koha pealt vaadates siis paistis asi olevat korras. Ei oska eriti lisada selle koha pealt mis võiks juurte teha.&lt;br /&gt;
&lt;br /&gt;
XML schema kui ma seda nüüd vaatasin siis paistis olevat asi kuidagi vigane. Et samma küsimus mis on ka eelnevatel inimestel miks käiakse üle mitu korda ühte ja sammasid elemente.&lt;br /&gt;
&lt;br /&gt;
XSL failid on suhteliselt ühesugused ja miks neid kolm tükki on kas ei oleks olnud võimalik hakkama saada ühega. &lt;br /&gt;
&lt;br /&gt;
Kuid üldiselt vaadata siis on asjad hästi tehtud ja arvatavasti inimene alles õppis selle projektiga, siis tulevikus võib olla enam ei teee neid vigasid.&lt;/div&gt;</summary>
		<author><name>Jvarus</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Talk:Meeskond_%22.NOT%22&amp;diff=49152</id>
		<title>Talk:Meeskond &quot;.NOT&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Talk:Meeskond_%22.NOT%22&amp;diff=49152"/>
		<updated>2012-06-11T20:25:26Z</updated>

		<summary type="html">&lt;p&gt;Jvarus: /* Retsensioon XMLile (Meeskond &amp;quot;Hello Kitty&amp;quot;) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Retsensioon XMLile ([[Meeskond &amp;quot;Hello Kitty&amp;quot;]]) ==&lt;br /&gt;
&lt;br /&gt;
Kiidusõnad meeskonnale. XML&#039;i struktuuri oskavad korralikult kokku panna ning stiilifail ja skeemifail kah korralikult üles ehitatud.&lt;br /&gt;
&lt;br /&gt;
Kui nüüd pisut nokkida ka, siis silma hakkas mõningane elementide ja atribuutide ebakooskõla. Juba eelnevalt välja toodud märkus, et miks on mootori maht lisatud mootorile atribuudina, aga muud samatähenduslikud väärtused elementidena. Isiklikult oleksin rohkem atribuutide kasutust oodanud.&lt;br /&gt;
&lt;br /&gt;
Antud xml&#039;i kohta on välist infot väga vähe. Kogu sisu on ära kirjeldatud ühe lausega. Lugejal oleks kindlasti suurem huvi xmli struktuuri läbi sirvida, kui oleks teema kohta parem tagataust teada.&lt;br /&gt;
&lt;br /&gt;
Xslt ja xsd kohta pole rohkem samuti midagi mainida, mis tähendab, et ülesehitus lihtne ja korrektne. Nii nagu peabki.&lt;br /&gt;
Struktuuri kommenteerimine oleks ka suureks plussiks olnud. Siinkohal viide meeskond Haroldile, kelle kommenteeritud koodi oli lausa lust lugeda.&lt;br /&gt;
&lt;br /&gt;
== Retsensioon ([[Meeskond &amp;quot;Harold&amp;quot;]]) ==&lt;br /&gt;
&lt;br /&gt;
Üldiselt eeskujulik sooritus, on näha, et meeskond tunneb XML ja XSL failide struktuuri ja oskab neid koostada nii praktikas kui disainis (mõelda, kuidas XML struktuurselt üles ehitada).&lt;br /&gt;
&lt;br /&gt;
=== Vormilisest küljest ===&lt;br /&gt;
&lt;br /&gt;
XML-i oli wikist ebamugav lugeda. Palun kasutage &amp;amp;lt;pre&amp;gt; tag asemel &amp;amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;. XML failile oleks kohe juurde võinud lisada viite transformatsioonile (&amp;amp;lt;?xml-stylesheet type=&amp;quot;text/xsl&amp;quot; href=&amp;quot;stiil.xsl&amp;quot;?&amp;gt;), samuti oleks võinud XML + XSL failid kuhugile hostida, et retsensent ei peaks seda ise tegema. P.S! &amp;lt; märke, mis transformatsiooni autorile probleeme tekitas, saab sisestada &amp;amp;lt;source&amp;gt; tagide vahele või kodeeritult.&lt;br /&gt;
&lt;br /&gt;
=== XML ===&lt;br /&gt;
&lt;br /&gt;
XML tutvustust oleks tekstiliselt tahtnud pikemalt lugeda: miks valiti just see teema (aktuaalne?), mida toodud XML struktuur võimaldab. Struktuuriliselt on XML üles ehitatud küllaltki hästi - võimalik on lisada 0 ... n sõidukit ning kirjeldada nende omadusi, elementidel on id kiireks otsimiseks.&lt;br /&gt;
&lt;br /&gt;
Omaduste kirjeldamist oleks muidugi üldisemalt saanud teha - ma oleksin ise tõenäoliselt kohelnud enamus asju (sh mootor, kere) auto komponentidena, millel on komponendi ID. See võimaldaks vaadelda autot kui mingit pakki erinevatest komponentidest ning näiteks e-poes (või mõnes muus infosüsteemis) kõik komponendid klikatavaks teha. Ehk siis, inimene näeb nimekirja autodest (auto kirjeldus on hunnik meta-andmeid nagu XML-s toodud mark, tootmisaasta, hind) ning klikates lahti mõne auto, näeb nimekirja komponentidest, mis on omakorda klikatavad, et nende infot vaadata. Varustuselemendid siis samamoodi - ka neid võib vaadelda komponentidena (või miks mitte, pakettidena).&lt;br /&gt;
&lt;br /&gt;
=== Transformatsioon ===&lt;br /&gt;
&lt;br /&gt;
Transformatsioonid on hästi tehtud, HTMLs kuvatakse kogu vajalik info kenasti nimekirjadena välja. Siiski, natuke CSS-i ei teeks paha loetavuse mõttes.&lt;br /&gt;
&lt;br /&gt;
== Retsensioon ([[Meeskond LLL]]) ==&lt;br /&gt;
&lt;br /&gt;
Üldiselt on meeskond teinud head tööd ja üpriski hästi hakkama saanud. Kuigi oleks võinud kodutööd kirjeldada rohkem. Miks just selline teema valiti, mida võimaldab jne?&lt;br /&gt;
&lt;br /&gt;
Xmli tutvustus oleks võinud veidi pikem ja põhjalikum olla. Xmli oli veidi ebamugav lugeda, kuigi trepitud oli õigesti. Ülesehituselt on xml hästi ülesse ehitatud. Mootori maht oli lisatud atribuudina, aga kütus ja võimsus elemendina. Samas oleks ilusam olnud, kui need oleks kõik kirjutatud atribuudi või elemendina. Hea on see, et on jagatud tehnilised andmed ja varustus eraldi, mis teeb lugemist ja käsitlemist lihtsamaks. &lt;br /&gt;
&lt;br /&gt;
Transformatsioon on muidu üsna korralikult tehtud, kuigi oleks võinud veidike rohkem tähelepanu panna css’ile. Kuigi esimeses XSLT&#039;s on paar treppimise viga, aga teistel need puuduvad.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Retsentsioon teenusele ([[Peeter_VR2]]) ==&lt;br /&gt;
Projektiga on kaasas SQL skriptid mille põhjal sai endale andmebaas loodud. Kahjuks ei tulnud kummagi skriptiga kaasa andmeid. Seega teenust testida otseselt ei saanud. Teenust käivitades läks teenus ilusasti tööle ja sai kenasti funktsioonide vahel valida.&lt;br /&gt;
Loomulikult tuli nullpointer exception, kui miskit invokesin – tabelid tühjad. See ei seganud edasist koodi poolset vaatamist.&lt;br /&gt;
Teenuse ülesehitust vaadates, siis teenus on väga hästi ja läbimõeldult tehtud. Funktsionaalsus, mis on teenusele juurde pandud on hulgaliselt. Kogu funktsionaalne pool on ära ka kirjeldatud Wiki lehel, kust sai alguses hea ülevaate teenusest.&lt;br /&gt;
&lt;br /&gt;
Backendi ja SQLi ühendamine on tehtud LINQ abiga. Sealjuures on igast tabelist tehtud eraldi klass, et objektidega oleks targem ja lihtsam ümber käia. Väga hea lahendus. Samuti osadele klassidele on ehitatud Utils klassid, kus on lisafunktsionaalsus juures.&lt;br /&gt;
Kenasti on ära kasutatud objekt-orienteeritud lähenemist. Vajalike funktsioonide, mida hiljem teenus välja kutsub, kirjeldamine on igas klassis tehtud ja teenuse all on ainult õiged objektid välja kutsutud. Tegemist siis peamiselt static meetodidega.&lt;br /&gt;
&lt;br /&gt;
Silma häirib, et koodi juures puudub igasugune dokumentatsioon. Meetode pole kommenteeritud. Võiks olla, saaks kiiremini ülevaate, mida mingi meetod teeb või miks ta just nii kirjeldatud on. Vaatamata sellele on kood loetav ja ja pärast mõningat uurimist ka arusaadav, mida miski teeb. Tuleviku mõttes võiks olla kommentaarid juures, kui projekt peaks kasvama.&lt;br /&gt;
&lt;br /&gt;
Vaeva on nähtud lisatööga - teenusele on juurde ehitatud ka turva-sertifikaadid. Nagu näha on need teenuse juures kasutusel - ServiceSecurityContext&lt;br /&gt;
Projekti on juurde ehitatud, lisatud ka konsoolirakendus, mis  oli mõeldud teenuse testimiseks. Ise kasutada seda ei saanud kuna andmebaas oli tühi.&lt;br /&gt;
&lt;br /&gt;
== Retsensioon teenusele ([[Meeskond LLL]]) ==&lt;br /&gt;
&lt;br /&gt;
Teenus  analüüsi on teostatud põhjalikult ja kõiki funktsionaalsusi, mis võiksid olemas olla on ka realiseeritud. Töö lugemine ei ole rakse ja mulle isiklikult meeldib, et töö pole liialt suureks ja kirjuks paisutatud igasuguste pikkade kommentaaride ja kirjelustega, aga töös võiks natukene rohkem lühikesi kirjeldusi olla. Töö on ise hästi tehtud.&lt;br /&gt;
&lt;br /&gt;
== Retsensioon kliendile ([[Meeskond LLL]]) ==&lt;br /&gt;
&lt;br /&gt;
Klient on väga hästi tehtud. Kõiki teenuse funktsionaalsusi saab kasutada ja eriti meeldiv asjaolu on sertifikaatide olemasolu ja nende kasutus. Sertifikaatide tööle saamiseks võis minna palju aega ja vaeva, mis on juba ise suur näitaja kirjeldamaks, kui hästi ja põhjalikult tööd tehti. Ise arvan, et töö võiks olla eeskujuks teistele, kaasaarvatud minu enda meeskonnale.&lt;br /&gt;
&lt;br /&gt;
== Retsensioon kliendile (Meeskond &amp;quot;[[PhoneBook]]&amp;quot;) ==&lt;br /&gt;
&lt;br /&gt;
Kahjuks jäi testimise pool ära, sest mingil teadmatul põhjusel kaasasolevad scriptid ei teinud andmebaasi, vaid tegid tabelid ja andsid erroreid, sest need tabelid lisati süsteemi tabelite alla. Võimalik, et viga on minu enda arvutis, sest teiste kommentaaride järgi võib eeldada, et nad on seda ka testinud. Seetõttu on kommentaarid ainult koodi ja esitluse põhjal!&lt;br /&gt;
&lt;br /&gt;
=== Veebiteenus ===&lt;br /&gt;
&lt;br /&gt;
Ilmselgelt on ära tehtud väga suur töö, mida peaksid enamus gruppe eeskujuks võtma. Väga hea on see, et igal pool on kasutatud objekte ja pole mingi puder. Paraku pole koodi kommenteeritud, kuid enamjaolt võib asjast aru saada siis, kui vaadata meetodi nime või uurida sisu. Samas jääb näiteks täiesti arusaamatuks see, et mis mõte sellel ActionMessagel on - mõnede klasside järgi võiks pakkuda, et vigade kogumine? &lt;br /&gt;
Mõnes mõttes on arusaamatu ka see, et miks on kõik auto kohta käivad väljad kohustuslikud ning vähemalt auto võimsuse puhul puudub võimalus lisada &amp;quot;+&amp;quot; märk, kui on autol midagi muudetud ja pole täpselt teada võimsus. Hetkel on eeldus auto pass, mis ei pruugi kogu olulist infot anda. Lisadena võiks olla näiteks kommentaari väli kuhu saaks mingeid lisasid märkida kas auto ajaloo kohta või muude oluliste detailide jaoks. Samuti võiks olla pildi lisamise ja vaatamise võimalus, sest nagu öeldakse: &amp;quot;pilt ütleb rohkem kui 1000 sõna.&amp;quot; &lt;br /&gt;
Üks vähestest lahendustest, kus on kasutatud ka sertifikaate. Kõik etteantud nõuded on ka täidetud - teenus toimib, kasutajate tuvastamine ja haldus on olemas ning ka statistika toimib.&lt;br /&gt;
&lt;br /&gt;
=== Klientrakendus ===&lt;br /&gt;
&lt;br /&gt;
Korralik ja toimiv töö. Väga hea on see, et kasutatud on WPF-i mitte mõnda muud lahendust ning klientrakendus on loodud enda teenusele mitte mingile suvalisele asjale. Positiivne on ka see, et kommentaare on igale poole tekkinud, kuid kohati üsna mõttetuid, mis ei anna mingit lisainfot ja ei tee asja üldse arusaadavamaks. Disain on lihtne ja arusaadav. Küsitav on muidugi see registreerimise osa lingina, kuid võib olla tõesti isegi õigem kui nupp.&lt;/div&gt;</summary>
		<author><name>Jvarus</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Talk:Meeskond_%22.NOT%22&amp;diff=49151</id>
		<title>Talk:Meeskond &quot;.NOT&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Talk:Meeskond_%22.NOT%22&amp;diff=49151"/>
		<updated>2012-06-11T20:25:04Z</updated>

		<summary type="html">&lt;p&gt;Jvarus: /* Retsensioon XMLile (Meeskond &amp;quot;Hello Kitty&amp;quot;) = */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Retsensioon XMLile ([[Meeskond &amp;quot;Hello Kitty&amp;quot;]]) ==&lt;br /&gt;
&lt;br /&gt;
Kiidusõnad meeskonnale. XML&#039;i struktuuri oskavad korralikult kokku panna ning stiilifail ja skeemifail kah korralikult üles ehitatud.&lt;br /&gt;
Kui nüüd pisut nokkida ka, siis silma hakkas mõningane elementide ja atribuutide ebakooskõla. Juba eelnevalt välja toodud märkus, et miks on mootori maht lisatud mootorile atribuudina, aga muud samatähenduslikud väärtused elementidena. Isiklikult oleksin rohkem atribuutide kasutust oodanud.&lt;br /&gt;
Antud xml&#039;i kohta on välist infot väga vähe. Kogu sisu on ära kirjeldatud ühe lausega. Lugejal oleks kindlasti suurem huvi xmli struktuuri läbi sirvida, kui oleks teema kohta parem tagataust teada.&lt;br /&gt;
Xslt ja xsd kohta pole rohkem samuti midagi mainida, mis tähendab, et ülesehitus lihtne ja korrektne. Nii nagu peabki.&lt;br /&gt;
Struktuuri kommenteerimine oleks ka suureks plussiks olnud. Siinkohal viide meeskond Haroldile, kelle kommenteeritud koodi oli lausa lust lugeda.&lt;br /&gt;
&lt;br /&gt;
== Retsensioon ([[Meeskond &amp;quot;Harold&amp;quot;]]) ==&lt;br /&gt;
&lt;br /&gt;
Üldiselt eeskujulik sooritus, on näha, et meeskond tunneb XML ja XSL failide struktuuri ja oskab neid koostada nii praktikas kui disainis (mõelda, kuidas XML struktuurselt üles ehitada).&lt;br /&gt;
&lt;br /&gt;
=== Vormilisest küljest ===&lt;br /&gt;
&lt;br /&gt;
XML-i oli wikist ebamugav lugeda. Palun kasutage &amp;amp;lt;pre&amp;gt; tag asemel &amp;amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;. XML failile oleks kohe juurde võinud lisada viite transformatsioonile (&amp;amp;lt;?xml-stylesheet type=&amp;quot;text/xsl&amp;quot; href=&amp;quot;stiil.xsl&amp;quot;?&amp;gt;), samuti oleks võinud XML + XSL failid kuhugile hostida, et retsensent ei peaks seda ise tegema. P.S! &amp;lt; märke, mis transformatsiooni autorile probleeme tekitas, saab sisestada &amp;amp;lt;source&amp;gt; tagide vahele või kodeeritult.&lt;br /&gt;
&lt;br /&gt;
=== XML ===&lt;br /&gt;
&lt;br /&gt;
XML tutvustust oleks tekstiliselt tahtnud pikemalt lugeda: miks valiti just see teema (aktuaalne?), mida toodud XML struktuur võimaldab. Struktuuriliselt on XML üles ehitatud küllaltki hästi - võimalik on lisada 0 ... n sõidukit ning kirjeldada nende omadusi, elementidel on id kiireks otsimiseks.&lt;br /&gt;
&lt;br /&gt;
Omaduste kirjeldamist oleks muidugi üldisemalt saanud teha - ma oleksin ise tõenäoliselt kohelnud enamus asju (sh mootor, kere) auto komponentidena, millel on komponendi ID. See võimaldaks vaadelda autot kui mingit pakki erinevatest komponentidest ning näiteks e-poes (või mõnes muus infosüsteemis) kõik komponendid klikatavaks teha. Ehk siis, inimene näeb nimekirja autodest (auto kirjeldus on hunnik meta-andmeid nagu XML-s toodud mark, tootmisaasta, hind) ning klikates lahti mõne auto, näeb nimekirja komponentidest, mis on omakorda klikatavad, et nende infot vaadata. Varustuselemendid siis samamoodi - ka neid võib vaadelda komponentidena (või miks mitte, pakettidena).&lt;br /&gt;
&lt;br /&gt;
=== Transformatsioon ===&lt;br /&gt;
&lt;br /&gt;
Transformatsioonid on hästi tehtud, HTMLs kuvatakse kogu vajalik info kenasti nimekirjadena välja. Siiski, natuke CSS-i ei teeks paha loetavuse mõttes.&lt;br /&gt;
&lt;br /&gt;
== Retsensioon ([[Meeskond LLL]]) ==&lt;br /&gt;
&lt;br /&gt;
Üldiselt on meeskond teinud head tööd ja üpriski hästi hakkama saanud. Kuigi oleks võinud kodutööd kirjeldada rohkem. Miks just selline teema valiti, mida võimaldab jne?&lt;br /&gt;
&lt;br /&gt;
Xmli tutvustus oleks võinud veidi pikem ja põhjalikum olla. Xmli oli veidi ebamugav lugeda, kuigi trepitud oli õigesti. Ülesehituselt on xml hästi ülesse ehitatud. Mootori maht oli lisatud atribuudina, aga kütus ja võimsus elemendina. Samas oleks ilusam olnud, kui need oleks kõik kirjutatud atribuudi või elemendina. Hea on see, et on jagatud tehnilised andmed ja varustus eraldi, mis teeb lugemist ja käsitlemist lihtsamaks. &lt;br /&gt;
&lt;br /&gt;
Transformatsioon on muidu üsna korralikult tehtud, kuigi oleks võinud veidike rohkem tähelepanu panna css’ile. Kuigi esimeses XSLT&#039;s on paar treppimise viga, aga teistel need puuduvad.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Retsentsioon teenusele ([[Peeter_VR2]]) ==&lt;br /&gt;
Projektiga on kaasas SQL skriptid mille põhjal sai endale andmebaas loodud. Kahjuks ei tulnud kummagi skriptiga kaasa andmeid. Seega teenust testida otseselt ei saanud. Teenust käivitades läks teenus ilusasti tööle ja sai kenasti funktsioonide vahel valida.&lt;br /&gt;
Loomulikult tuli nullpointer exception, kui miskit invokesin – tabelid tühjad. See ei seganud edasist koodi poolset vaatamist.&lt;br /&gt;
Teenuse ülesehitust vaadates, siis teenus on väga hästi ja läbimõeldult tehtud. Funktsionaalsus, mis on teenusele juurde pandud on hulgaliselt. Kogu funktsionaalne pool on ära ka kirjeldatud Wiki lehel, kust sai alguses hea ülevaate teenusest.&lt;br /&gt;
&lt;br /&gt;
Backendi ja SQLi ühendamine on tehtud LINQ abiga. Sealjuures on igast tabelist tehtud eraldi klass, et objektidega oleks targem ja lihtsam ümber käia. Väga hea lahendus. Samuti osadele klassidele on ehitatud Utils klassid, kus on lisafunktsionaalsus juures.&lt;br /&gt;
Kenasti on ära kasutatud objekt-orienteeritud lähenemist. Vajalike funktsioonide, mida hiljem teenus välja kutsub, kirjeldamine on igas klassis tehtud ja teenuse all on ainult õiged objektid välja kutsutud. Tegemist siis peamiselt static meetodidega.&lt;br /&gt;
&lt;br /&gt;
Silma häirib, et koodi juures puudub igasugune dokumentatsioon. Meetode pole kommenteeritud. Võiks olla, saaks kiiremini ülevaate, mida mingi meetod teeb või miks ta just nii kirjeldatud on. Vaatamata sellele on kood loetav ja ja pärast mõningat uurimist ka arusaadav, mida miski teeb. Tuleviku mõttes võiks olla kommentaarid juures, kui projekt peaks kasvama.&lt;br /&gt;
&lt;br /&gt;
Vaeva on nähtud lisatööga - teenusele on juurde ehitatud ka turva-sertifikaadid. Nagu näha on need teenuse juures kasutusel - ServiceSecurityContext&lt;br /&gt;
Projekti on juurde ehitatud, lisatud ka konsoolirakendus, mis  oli mõeldud teenuse testimiseks. Ise kasutada seda ei saanud kuna andmebaas oli tühi.&lt;br /&gt;
&lt;br /&gt;
== Retsensioon teenusele ([[Meeskond LLL]]) ==&lt;br /&gt;
&lt;br /&gt;
Teenus  analüüsi on teostatud põhjalikult ja kõiki funktsionaalsusi, mis võiksid olemas olla on ka realiseeritud. Töö lugemine ei ole rakse ja mulle isiklikult meeldib, et töö pole liialt suureks ja kirjuks paisutatud igasuguste pikkade kommentaaride ja kirjelustega, aga töös võiks natukene rohkem lühikesi kirjeldusi olla. Töö on ise hästi tehtud.&lt;br /&gt;
&lt;br /&gt;
== Retsensioon kliendile ([[Meeskond LLL]]) ==&lt;br /&gt;
&lt;br /&gt;
Klient on väga hästi tehtud. Kõiki teenuse funktsionaalsusi saab kasutada ja eriti meeldiv asjaolu on sertifikaatide olemasolu ja nende kasutus. Sertifikaatide tööle saamiseks võis minna palju aega ja vaeva, mis on juba ise suur näitaja kirjeldamaks, kui hästi ja põhjalikult tööd tehti. Ise arvan, et töö võiks olla eeskujuks teistele, kaasaarvatud minu enda meeskonnale.&lt;br /&gt;
&lt;br /&gt;
== Retsensioon kliendile (Meeskond &amp;quot;[[PhoneBook]]&amp;quot;) ==&lt;br /&gt;
&lt;br /&gt;
Kahjuks jäi testimise pool ära, sest mingil teadmatul põhjusel kaasasolevad scriptid ei teinud andmebaasi, vaid tegid tabelid ja andsid erroreid, sest need tabelid lisati süsteemi tabelite alla. Võimalik, et viga on minu enda arvutis, sest teiste kommentaaride järgi võib eeldada, et nad on seda ka testinud. Seetõttu on kommentaarid ainult koodi ja esitluse põhjal!&lt;br /&gt;
&lt;br /&gt;
=== Veebiteenus ===&lt;br /&gt;
&lt;br /&gt;
Ilmselgelt on ära tehtud väga suur töö, mida peaksid enamus gruppe eeskujuks võtma. Väga hea on see, et igal pool on kasutatud objekte ja pole mingi puder. Paraku pole koodi kommenteeritud, kuid enamjaolt võib asjast aru saada siis, kui vaadata meetodi nime või uurida sisu. Samas jääb näiteks täiesti arusaamatuks see, et mis mõte sellel ActionMessagel on - mõnede klasside järgi võiks pakkuda, et vigade kogumine? &lt;br /&gt;
Mõnes mõttes on arusaamatu ka see, et miks on kõik auto kohta käivad väljad kohustuslikud ning vähemalt auto võimsuse puhul puudub võimalus lisada &amp;quot;+&amp;quot; märk, kui on autol midagi muudetud ja pole täpselt teada võimsus. Hetkel on eeldus auto pass, mis ei pruugi kogu olulist infot anda. Lisadena võiks olla näiteks kommentaari väli kuhu saaks mingeid lisasid märkida kas auto ajaloo kohta või muude oluliste detailide jaoks. Samuti võiks olla pildi lisamise ja vaatamise võimalus, sest nagu öeldakse: &amp;quot;pilt ütleb rohkem kui 1000 sõna.&amp;quot; &lt;br /&gt;
Üks vähestest lahendustest, kus on kasutatud ka sertifikaate. Kõik etteantud nõuded on ka täidetud - teenus toimib, kasutajate tuvastamine ja haldus on olemas ning ka statistika toimib.&lt;br /&gt;
&lt;br /&gt;
=== Klientrakendus ===&lt;br /&gt;
&lt;br /&gt;
Korralik ja toimiv töö. Väga hea on see, et kasutatud on WPF-i mitte mõnda muud lahendust ning klientrakendus on loodud enda teenusele mitte mingile suvalisele asjale. Positiivne on ka see, et kommentaare on igale poole tekkinud, kuid kohati üsna mõttetuid, mis ei anna mingit lisainfot ja ei tee asja üldse arusaadavamaks. Disain on lihtne ja arusaadav. Küsitav on muidugi see registreerimise osa lingina, kuid võib olla tõesti isegi õigem kui nupp.&lt;/div&gt;</summary>
		<author><name>Jvarus</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Talk:Meeskond_%22.NOT%22&amp;diff=49150</id>
		<title>Talk:Meeskond &quot;.NOT&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Talk:Meeskond_%22.NOT%22&amp;diff=49150"/>
		<updated>2012-06-11T20:24:34Z</updated>

		<summary type="html">&lt;p&gt;Jvarus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Retsensioon XMLile ([[Meeskond &amp;quot;Hello Kitty&amp;quot;]]) ===&lt;br /&gt;
&lt;br /&gt;
Kiidusõnad meeskonnale. XML&#039;i struktuuri oskavad korralikult kokku panna ning stiilifail ja skeemifail kah korralikult üles ehitatud.&lt;br /&gt;
Kui nüüd pisut nokkida ka, siis silma hakkas mõningane elementide ja atribuutide ebakooskõla. Juba eelnevalt välja toodud märkus, et miks on mootori maht lisatud mootorile atribuudina, aga muud samatähenduslikud väärtused elementidena. Isiklikult oleksin rohkem atribuutide kasutust oodanud.&lt;br /&gt;
Antud xml&#039;i kohta on välist infot väga vähe. Kogu sisu on ära kirjeldatud ühe lausega. Lugejal oleks kindlasti suurem huvi xmli struktuuri läbi sirvida, kui oleks teema kohta parem tagataust teada.&lt;br /&gt;
Xslt ja xsd kohta pole rohkem samuti midagi mainida, mis tähendab, et ülesehitus lihtne ja korrektne. Nii nagu peabki.&lt;br /&gt;
Struktuuri kommenteerimine oleks ka suureks plussiks olnud. Siinkohal viide meeskond Haroldile, kelle kommenteeritud koodi oli lausa lust lugeda.&lt;br /&gt;
&lt;br /&gt;
== Retsensioon ([[Meeskond &amp;quot;Harold&amp;quot;]]) ==&lt;br /&gt;
&lt;br /&gt;
Üldiselt eeskujulik sooritus, on näha, et meeskond tunneb XML ja XSL failide struktuuri ja oskab neid koostada nii praktikas kui disainis (mõelda, kuidas XML struktuurselt üles ehitada).&lt;br /&gt;
&lt;br /&gt;
=== Vormilisest küljest ===&lt;br /&gt;
&lt;br /&gt;
XML-i oli wikist ebamugav lugeda. Palun kasutage &amp;amp;lt;pre&amp;gt; tag asemel &amp;amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;. XML failile oleks kohe juurde võinud lisada viite transformatsioonile (&amp;amp;lt;?xml-stylesheet type=&amp;quot;text/xsl&amp;quot; href=&amp;quot;stiil.xsl&amp;quot;?&amp;gt;), samuti oleks võinud XML + XSL failid kuhugile hostida, et retsensent ei peaks seda ise tegema. P.S! &amp;lt; märke, mis transformatsiooni autorile probleeme tekitas, saab sisestada &amp;amp;lt;source&amp;gt; tagide vahele või kodeeritult.&lt;br /&gt;
&lt;br /&gt;
=== XML ===&lt;br /&gt;
&lt;br /&gt;
XML tutvustust oleks tekstiliselt tahtnud pikemalt lugeda: miks valiti just see teema (aktuaalne?), mida toodud XML struktuur võimaldab. Struktuuriliselt on XML üles ehitatud küllaltki hästi - võimalik on lisada 0 ... n sõidukit ning kirjeldada nende omadusi, elementidel on id kiireks otsimiseks.&lt;br /&gt;
&lt;br /&gt;
Omaduste kirjeldamist oleks muidugi üldisemalt saanud teha - ma oleksin ise tõenäoliselt kohelnud enamus asju (sh mootor, kere) auto komponentidena, millel on komponendi ID. See võimaldaks vaadelda autot kui mingit pakki erinevatest komponentidest ning näiteks e-poes (või mõnes muus infosüsteemis) kõik komponendid klikatavaks teha. Ehk siis, inimene näeb nimekirja autodest (auto kirjeldus on hunnik meta-andmeid nagu XML-s toodud mark, tootmisaasta, hind) ning klikates lahti mõne auto, näeb nimekirja komponentidest, mis on omakorda klikatavad, et nende infot vaadata. Varustuselemendid siis samamoodi - ka neid võib vaadelda komponentidena (või miks mitte, pakettidena).&lt;br /&gt;
&lt;br /&gt;
=== Transformatsioon ===&lt;br /&gt;
&lt;br /&gt;
Transformatsioonid on hästi tehtud, HTMLs kuvatakse kogu vajalik info kenasti nimekirjadena välja. Siiski, natuke CSS-i ei teeks paha loetavuse mõttes.&lt;br /&gt;
&lt;br /&gt;
== Retsensioon ([[Meeskond LLL]]) ==&lt;br /&gt;
&lt;br /&gt;
Üldiselt on meeskond teinud head tööd ja üpriski hästi hakkama saanud. Kuigi oleks võinud kodutööd kirjeldada rohkem. Miks just selline teema valiti, mida võimaldab jne?&lt;br /&gt;
&lt;br /&gt;
Xmli tutvustus oleks võinud veidi pikem ja põhjalikum olla. Xmli oli veidi ebamugav lugeda, kuigi trepitud oli õigesti. Ülesehituselt on xml hästi ülesse ehitatud. Mootori maht oli lisatud atribuudina, aga kütus ja võimsus elemendina. Samas oleks ilusam olnud, kui need oleks kõik kirjutatud atribuudi või elemendina. Hea on see, et on jagatud tehnilised andmed ja varustus eraldi, mis teeb lugemist ja käsitlemist lihtsamaks. &lt;br /&gt;
&lt;br /&gt;
Transformatsioon on muidu üsna korralikult tehtud, kuigi oleks võinud veidike rohkem tähelepanu panna css’ile. Kuigi esimeses XSLT&#039;s on paar treppimise viga, aga teistel need puuduvad.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Retsentsioon teenusele ([[Peeter_VR2]]) ==&lt;br /&gt;
Projektiga on kaasas SQL skriptid mille põhjal sai endale andmebaas loodud. Kahjuks ei tulnud kummagi skriptiga kaasa andmeid. Seega teenust testida otseselt ei saanud. Teenust käivitades läks teenus ilusasti tööle ja sai kenasti funktsioonide vahel valida.&lt;br /&gt;
Loomulikult tuli nullpointer exception, kui miskit invokesin – tabelid tühjad. See ei seganud edasist koodi poolset vaatamist.&lt;br /&gt;
Teenuse ülesehitust vaadates, siis teenus on väga hästi ja läbimõeldult tehtud. Funktsionaalsus, mis on teenusele juurde pandud on hulgaliselt. Kogu funktsionaalne pool on ära ka kirjeldatud Wiki lehel, kust sai alguses hea ülevaate teenusest.&lt;br /&gt;
&lt;br /&gt;
Backendi ja SQLi ühendamine on tehtud LINQ abiga. Sealjuures on igast tabelist tehtud eraldi klass, et objektidega oleks targem ja lihtsam ümber käia. Väga hea lahendus. Samuti osadele klassidele on ehitatud Utils klassid, kus on lisafunktsionaalsus juures.&lt;br /&gt;
Kenasti on ära kasutatud objekt-orienteeritud lähenemist. Vajalike funktsioonide, mida hiljem teenus välja kutsub, kirjeldamine on igas klassis tehtud ja teenuse all on ainult õiged objektid välja kutsutud. Tegemist siis peamiselt static meetodidega.&lt;br /&gt;
&lt;br /&gt;
Silma häirib, et koodi juures puudub igasugune dokumentatsioon. Meetode pole kommenteeritud. Võiks olla, saaks kiiremini ülevaate, mida mingi meetod teeb või miks ta just nii kirjeldatud on. Vaatamata sellele on kood loetav ja ja pärast mõningat uurimist ka arusaadav, mida miski teeb. Tuleviku mõttes võiks olla kommentaarid juures, kui projekt peaks kasvama.&lt;br /&gt;
&lt;br /&gt;
Vaeva on nähtud lisatööga - teenusele on juurde ehitatud ka turva-sertifikaadid. Nagu näha on need teenuse juures kasutusel - ServiceSecurityContext&lt;br /&gt;
Projekti on juurde ehitatud, lisatud ka konsoolirakendus, mis  oli mõeldud teenuse testimiseks. Ise kasutada seda ei saanud kuna andmebaas oli tühi.&lt;br /&gt;
&lt;br /&gt;
== Retsensioon teenusele ([[Meeskond LLL]]) ==&lt;br /&gt;
&lt;br /&gt;
Teenus  analüüsi on teostatud põhjalikult ja kõiki funktsionaalsusi, mis võiksid olemas olla on ka realiseeritud. Töö lugemine ei ole rakse ja mulle isiklikult meeldib, et töö pole liialt suureks ja kirjuks paisutatud igasuguste pikkade kommentaaride ja kirjelustega, aga töös võiks natukene rohkem lühikesi kirjeldusi olla. Töö on ise hästi tehtud.&lt;br /&gt;
&lt;br /&gt;
== Retsensioon kliendile ([[Meeskond LLL]]) ==&lt;br /&gt;
&lt;br /&gt;
Klient on väga hästi tehtud. Kõiki teenuse funktsionaalsusi saab kasutada ja eriti meeldiv asjaolu on sertifikaatide olemasolu ja nende kasutus. Sertifikaatide tööle saamiseks võis minna palju aega ja vaeva, mis on juba ise suur näitaja kirjeldamaks, kui hästi ja põhjalikult tööd tehti. Ise arvan, et töö võiks olla eeskujuks teistele, kaasaarvatud minu enda meeskonnale.&lt;br /&gt;
&lt;br /&gt;
== Retsensioon kliendile (Meeskond &amp;quot;[[PhoneBook]]&amp;quot;) ==&lt;br /&gt;
&lt;br /&gt;
Kahjuks jäi testimise pool ära, sest mingil teadmatul põhjusel kaasasolevad scriptid ei teinud andmebaasi, vaid tegid tabelid ja andsid erroreid, sest need tabelid lisati süsteemi tabelite alla. Võimalik, et viga on minu enda arvutis, sest teiste kommentaaride järgi võib eeldada, et nad on seda ka testinud. Seetõttu on kommentaarid ainult koodi ja esitluse põhjal!&lt;br /&gt;
&lt;br /&gt;
=== Veebiteenus ===&lt;br /&gt;
&lt;br /&gt;
Ilmselgelt on ära tehtud väga suur töö, mida peaksid enamus gruppe eeskujuks võtma. Väga hea on see, et igal pool on kasutatud objekte ja pole mingi puder. Paraku pole koodi kommenteeritud, kuid enamjaolt võib asjast aru saada siis, kui vaadata meetodi nime või uurida sisu. Samas jääb näiteks täiesti arusaamatuks see, et mis mõte sellel ActionMessagel on - mõnede klasside järgi võiks pakkuda, et vigade kogumine? &lt;br /&gt;
Mõnes mõttes on arusaamatu ka see, et miks on kõik auto kohta käivad väljad kohustuslikud ning vähemalt auto võimsuse puhul puudub võimalus lisada &amp;quot;+&amp;quot; märk, kui on autol midagi muudetud ja pole täpselt teada võimsus. Hetkel on eeldus auto pass, mis ei pruugi kogu olulist infot anda. Lisadena võiks olla näiteks kommentaari väli kuhu saaks mingeid lisasid märkida kas auto ajaloo kohta või muude oluliste detailide jaoks. Samuti võiks olla pildi lisamise ja vaatamise võimalus, sest nagu öeldakse: &amp;quot;pilt ütleb rohkem kui 1000 sõna.&amp;quot; &lt;br /&gt;
Üks vähestest lahendustest, kus on kasutatud ka sertifikaate. Kõik etteantud nõuded on ka täidetud - teenus toimib, kasutajate tuvastamine ja haldus on olemas ning ka statistika toimib.&lt;br /&gt;
&lt;br /&gt;
=== Klientrakendus ===&lt;br /&gt;
&lt;br /&gt;
Korralik ja toimiv töö. Väga hea on see, et kasutatud on WPF-i mitte mõnda muud lahendust ning klientrakendus on loodud enda teenusele mitte mingile suvalisele asjale. Positiivne on ka see, et kommentaare on igale poole tekkinud, kuid kohati üsna mõttetuid, mis ei anna mingit lisainfot ja ei tee asja üldse arusaadavamaks. Disain on lihtne ja arusaadav. Küsitav on muidugi see registreerimise osa lingina, kuid võib olla tõesti isegi õigem kui nupp.&lt;/div&gt;</summary>
		<author><name>Jvarus</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Hello_Kitty&amp;diff=49149</id>
		<title>Hello Kitty</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Hello_Kitty&amp;diff=49149"/>
		<updated>2012-06-11T16:55:30Z</updated>

		<summary type="html">&lt;p&gt;Jvarus: /* Veebiteenus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== LIIKMED ===&lt;br /&gt;
* Herki Pärn&lt;br /&gt;
* Jaanus Varus&lt;br /&gt;
* Fred Mihkelsoo&lt;br /&gt;
&lt;br /&gt;
=== Klientrakendus ===&lt;br /&gt;
&lt;br /&gt;
Uuendatud 11.06.2012!&lt;br /&gt;
&lt;br /&gt;
Viimased versioonid klientrakendusest, veebiteenusest ja andmebaasi backupist on saadavalt siit:&lt;br /&gt;
http://www.upload.ee/files/2421783/vr2_demo.rar.html&lt;br /&gt;
&lt;br /&gt;
Klientrakendus kujutab endast Kurt Jaegersi poolt XNA platvormile loodud mängu Asteroid Belt Assault porti html5&#039;le. Antud mängu lähtekood ja graafilised/audio komponendid on vabavaraliselt kasutatavad.&lt;br /&gt;
Mängu hostitakse Asp.Net website&#039;il. Rakendus kasutab skooride haldamiseks oma loodud veebiteenust.&lt;br /&gt;
&lt;br /&gt;
=== Veebiteenus ===&lt;br /&gt;
&lt;br /&gt;
Uuendatud 11.06.2012!&lt;br /&gt;
&lt;br /&gt;
Veebiteenuse eesmärgiks on pakkuda võimalust mänguettevõtjatele registreerida nende kasutajaid, mänge ning hallata nende skoore üle veebiteenuse.&lt;br /&gt;
Veebiteenus on loodud WCF tehnoloogia abil. Andmeid hoitakse MSSQL 2008 r2 andmebaasis. Kasutajate autentimine käib üle andmebaasi (forms authentication). Suhtlus veebiteenuse ja andmebaasi vahel käib üle LINQu. &lt;br /&gt;
Veebiteenus pakub andmete täielikuks haldamiseks basicHttp endpointi. Andmed on turvatud üle SSL protokolli. Samuti on andmete lugemine võimalik ka üle webHttp endpointi, läbi mille lubatakse teatud funktsioonidele läbi brauseri ligipääsu GET päringuga. Viimaseks endpointiks on juba defaultina ära konfitud mexHttp endpoint, mis annab klientrakendusele ülevaate teenusest ning vaheklasside struktuuri.&lt;br /&gt;
&lt;br /&gt;
Veebiteenuse lähtekood koos andmebaasi backupiga on saadavalt klientrakenduse sektsiooni all.&lt;br /&gt;
&lt;br /&gt;
=== XML ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot; ?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;matches xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; xsi:noNamespaceSchemaLocation=&amp;quot;game_matches.xsd&amp;quot;&amp;gt;  &lt;br /&gt;
  &amp;lt;match id=&amp;quot;1&amp;quot; type=&amp;quot;tdm&amp;quot; duration=&amp;quot;00:40:33&amp;quot; created=&amp;quot;2002-09-24-17:31&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;teams&amp;gt;&lt;br /&gt;
			&amp;lt;team name=&amp;quot;red&amp;quot; victorious=&amp;quot;false&amp;quot; score=&amp;quot;885&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;players&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;1&amp;quot; name=&amp;quot;Anissa&amp;quot; score=&amp;quot;614&amp;quot; victorious=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;2&amp;quot; name=&amp;quot;Jesus&amp;quot; score=&amp;quot;157&amp;quot; victorious=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;3&amp;quot; name=&amp;quot;Erick&amp;quot; score=&amp;quot;17&amp;quot; victorious=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;4&amp;quot; name=&amp;quot;Verena&amp;quot; score=&amp;quot;97&amp;quot; victorious=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
				&amp;lt;/players&amp;gt;&lt;br /&gt;
			&amp;lt;/team&amp;gt;&lt;br /&gt;
			&amp;lt;team name=&amp;quot;blue&amp;quot; victorious=&amp;quot;true&amp;quot; score=&amp;quot;2682&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;players&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;5&amp;quot; name=&amp;quot;Fredric&amp;quot; score=&amp;quot;729&amp;quot; victorious=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;6&amp;quot; name=&amp;quot;Lynda&amp;quot; score=&amp;quot;573&amp;quot; victorious=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;7&amp;quot; name=&amp;quot;Ingrid&amp;quot; score=&amp;quot;958&amp;quot; victorious=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;8&amp;quot; name=&amp;quot;Charmaine&amp;quot; score=&amp;quot;422&amp;quot; victorious=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
				&amp;lt;/players&amp;gt;&lt;br /&gt;
			&amp;lt;/team&amp;gt;&lt;br /&gt;
		&amp;lt;/teams&amp;gt;&lt;br /&gt;
	&amp;lt;/match&amp;gt;&lt;br /&gt;
	&amp;lt;match id=&amp;quot;2&amp;quot; type=&amp;quot;dm&amp;quot; duration=&amp;quot;00:31:10&amp;quot; created=&amp;quot;2002-09-23-14:10&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;players&amp;gt;&lt;br /&gt;
			&amp;lt;player id=&amp;quot;9&amp;quot; name=&amp;quot;Rosa&amp;quot; score=&amp;quot;24&amp;quot; victorious=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
			&amp;lt;player id=&amp;quot;10&amp;quot; name=&amp;quot;Jolyn&amp;quot; score=&amp;quot;85&amp;quot; victorious=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
			&amp;lt;player id=&amp;quot;11&amp;quot; name=&amp;quot;Kristyn&amp;quot; score=&amp;quot;61&amp;quot; victorious=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;/players&amp;gt;&lt;br /&gt;
	&amp;lt;/match&amp;gt;&lt;br /&gt;
	&amp;lt;match id=&amp;quot;3&amp;quot; type=&amp;quot;dm&amp;quot; duration=&amp;quot;00:25:50&amp;quot; created=&amp;quot;2002-09-24-16:05&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;players&amp;gt;&lt;br /&gt;
			&amp;lt;player id=&amp;quot;2&amp;quot; name=&amp;quot;Jesus&amp;quot; score=&amp;quot;67&amp;quot; victorious=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
			&amp;lt;player id=&amp;quot;1&amp;quot; name=&amp;quot;Anissa&amp;quot; score=&amp;quot;106&amp;quot; victorious=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
			&amp;lt;player id=&amp;quot;6&amp;quot; name=&amp;quot;Lynda&amp;quot; score=&amp;quot;99&amp;quot; victorious=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;/players&amp;gt;&lt;br /&gt;
	&amp;lt;/match&amp;gt;&lt;br /&gt;
	&amp;lt;match id=&amp;quot;4&amp;quot; type=&amp;quot;tdm&amp;quot; duration=&amp;quot;00:51:19&amp;quot; created=&amp;quot;2002-09-25-23:31&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;teams&amp;gt;&lt;br /&gt;
			&amp;lt;team name=&amp;quot;red&amp;quot; victorious=&amp;quot;true&amp;quot; score=&amp;quot;1882&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;players&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;1&amp;quot; name=&amp;quot;Anissa&amp;quot; score=&amp;quot;1005&amp;quot; victorious=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;2&amp;quot; name=&amp;quot;Jesus&amp;quot; score=&amp;quot;794&amp;quot; victorious=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;3&amp;quot; name=&amp;quot;Erick&amp;quot; score=&amp;quot;81&amp;quot; victorious=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;4&amp;quot; name=&amp;quot;Verena&amp;quot; score=&amp;quot;2&amp;quot; victorious=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
				&amp;lt;/players&amp;gt;&lt;br /&gt;
			&amp;lt;/team&amp;gt;&lt;br /&gt;
			&amp;lt;team name=&amp;quot;blue&amp;quot; victorious=&amp;quot;false&amp;quot; score=&amp;quot;1560&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;players&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;5&amp;quot; name=&amp;quot;Fredric&amp;quot; score=&amp;quot;710&amp;quot; victorious=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;6&amp;quot; name=&amp;quot;Lynda&amp;quot; score=&amp;quot;496&amp;quot; victorious=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;7&amp;quot; name=&amp;quot;Ingrid&amp;quot; score=&amp;quot;194&amp;quot; victorious=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;8&amp;quot; name=&amp;quot;Charmaine&amp;quot; score=&amp;quot;160&amp;quot; victorious=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
				&amp;lt;/players&amp;gt;&lt;br /&gt;
			&amp;lt;/team&amp;gt;&lt;br /&gt;
		&amp;lt;/teams&amp;gt;&lt;br /&gt;
	&amp;lt;/match&amp;gt;&lt;br /&gt;
&amp;lt;/matches&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== XSD ===&lt;br /&gt;
&amp;lt;pre&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;
&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;matches&amp;quot;&amp;gt;&lt;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;match&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element minOccurs=&amp;quot;0&amp;quot; name=&amp;quot;players&amp;quot;&amp;gt;&lt;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;player&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;id&amp;quot; type=&amp;quot;xs:unsignedInt&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;name&amp;quot; type=&amp;quot;xs:string&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;score&amp;quot; type=&amp;quot;xs:unsignedInt&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;victorious&amp;quot; type=&amp;quot;xs:boolean&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:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element minOccurs=&amp;quot;0&amp;quot; name=&amp;quot;teams&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element minOccurs=&amp;quot;2&amp;quot; maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;team&amp;quot;&amp;gt;&lt;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;players&amp;quot;&amp;gt;&lt;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;player&amp;quot;&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                    &amp;lt;xs:attribute name=&amp;quot;id&amp;quot; type=&amp;quot;xs:unsignedInt&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                                    &amp;lt;xs:attribute name=&amp;quot;name&amp;quot; type=&amp;quot;xs:string&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                                    &amp;lt;xs:attribute name=&amp;quot;score&amp;quot; type=&amp;quot;xs:unsignedInt&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                                    &amp;lt;xs:attribute name=&amp;quot;victorious&amp;quot; type=&amp;quot;xs:boolean&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:element&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;name&amp;quot; type=&amp;quot;xs:string&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;victorious&amp;quot; type=&amp;quot;xs:boolean&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;score&amp;quot; type=&amp;quot;xs:unsignedInt&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:element&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:unsignedInt&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xs:attribute name=&amp;quot;type&amp;quot; type=&amp;quot;xs:string&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xs:attribute name=&amp;quot;duration&amp;quot; type=&amp;quot;xs:time&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xs:attribute name=&amp;quot;created&amp;quot; type=&amp;quot;xs:date&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:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== XSLT ===&lt;br /&gt;
&amp;lt;pre&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;
&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;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:output method=&amp;quot;html&amp;quot; encoding=&amp;quot;utf-8&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:text disable-output-escaping=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;amp;lt;!DOCTYPE html&amp;amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
    &amp;lt;html&amp;gt;&lt;br /&gt;
      &amp;lt;body&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Game matches:&amp;lt;/h2&amp;gt;        &lt;br /&gt;
          &amp;lt;xsl:for-each select=&amp;quot;matches/match&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;table border=&amp;quot;1&amp;quot; style=&amp;quot;margin: 10px; float: left;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:when test=&amp;quot;@type = &#039;tdm&#039;&amp;quot;&amp;gt;                                &lt;br /&gt;
                  &amp;lt;tr style=&amp;quot;background-color: #917A56;&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;th&amp;gt;Player&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;th&amp;gt;Team&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;th&amp;gt;Score&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;th&amp;gt;Victorious&amp;lt;/th&amp;gt;&lt;br /&gt;
                  &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:for-each select=&amp;quot;teams/team&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:for-each select=&amp;quot;players/player&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:when test=&amp;quot;position() mod 2 = 0&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:text disable-output-escaping=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;amp;lt;tr style=&amp;quot;background-color: #FEFFC2;&amp;quot;&amp;amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:text&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:text disable-output-escaping=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;amp;lt;tr style=&amp;quot;background-color: #B4BA6C;&amp;quot;&amp;amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:text&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;td&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;@name&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;td&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;../../@name&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;td&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;@score&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;td&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;@victorious&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:text disable-output-escaping=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;amp;lt;/tr&amp;amp;gt;&lt;br /&gt;
                    &amp;lt;/xsl:text&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;/xsl:when&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                &amp;lt;tr style=&amp;quot;background-color: #917A56;&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;th&amp;gt;Player&amp;lt;/th&amp;gt;&lt;br /&gt;
                  &amp;lt;th&amp;gt;Score&amp;lt;/th&amp;gt;&lt;br /&gt;
                  &amp;lt;th&amp;gt;Victorious&amp;lt;/th&amp;gt;&lt;br /&gt;
                &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:for-each select=&amp;quot;players/player&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:when test=&amp;quot;position() mod 2 = 0&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:text disable-output-escaping=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;amp;lt;tr style=&amp;quot;background-color: #FEFFC2;&amp;quot;&amp;amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:text&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:text disable-output-escaping=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;amp;lt;tr style=&amp;quot;background-color: #B4BA6C;&amp;quot;&amp;amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:text&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;td&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;@name&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;@score&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;@victorious&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:text disable-output-escaping=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;amp;lt;/tr&amp;amp;gt;&lt;br /&gt;
                  &amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:for-each&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;/table&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;pre&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;
&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;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:output method=&amp;quot;xml&amp;quot; encoding=&amp;quot;utf-8&amp;quot; indent=&amp;quot;yes&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;matches&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;matches/match&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:when test=&amp;quot;@type = &#039;tdm&#039;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;match&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;type&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;@type&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&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;@duration&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:attribute name=&amp;quot;created&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;@created&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;teams&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:for-each select=&amp;quot;teams/team&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;team&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:attribute name=&amp;quot;name&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;@name&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:attribute name=&amp;quot;victorious&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;@victorious&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:attribute name=&amp;quot;score&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;@score&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                    &amp;lt;players&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:for-each select=&amp;quot;players/player&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;player&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;name&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;@name&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                          &amp;lt;xsl:attribute name=&amp;quot;victorious&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;@victorious&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                          &amp;lt;xsl:attribute name=&amp;quot;score&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;@score&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                        &amp;lt;/player&amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:for-each&amp;gt;&amp;lt;!-- FOREACH PLAYER ENDS HERE --&amp;gt;&lt;br /&gt;
                    &amp;lt;/players&amp;gt;&lt;br /&gt;
                  &amp;lt;/team&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:for-each&amp;gt;&amp;lt;!-- FOREACH TEAM ENDS HERE --&amp;gt;&lt;br /&gt;
              &amp;lt;/teams&amp;gt;                                  &lt;br /&gt;
            &amp;lt;/match&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&amp;lt;!-- FOREACH MATCH ENDS HERE --&amp;gt;   &lt;br /&gt;
    &amp;lt;/matches&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;/div&gt;</summary>
		<author><name>Jvarus</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Hello_Kitty&amp;diff=49148</id>
		<title>Hello Kitty</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Hello_Kitty&amp;diff=49148"/>
		<updated>2012-06-11T16:55:09Z</updated>

		<summary type="html">&lt;p&gt;Jvarus: /* Klientrakendus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== LIIKMED ===&lt;br /&gt;
* Herki Pärn&lt;br /&gt;
* Jaanus Varus&lt;br /&gt;
* Fred Mihkelsoo&lt;br /&gt;
&lt;br /&gt;
=== Klientrakendus ===&lt;br /&gt;
&lt;br /&gt;
Uuendatud 11.06.2012!&lt;br /&gt;
&lt;br /&gt;
Viimased versioonid klientrakendusest, veebiteenusest ja andmebaasi backupist on saadavalt siit:&lt;br /&gt;
http://www.upload.ee/files/2421783/vr2_demo.rar.html&lt;br /&gt;
&lt;br /&gt;
Klientrakendus kujutab endast Kurt Jaegersi poolt XNA platvormile loodud mängu Asteroid Belt Assault porti html5&#039;le. Antud mängu lähtekood ja graafilised/audio komponendid on vabavaraliselt kasutatavad.&lt;br /&gt;
Mängu hostitakse Asp.Net website&#039;il. Rakendus kasutab skooride haldamiseks oma loodud veebiteenust.&lt;br /&gt;
&lt;br /&gt;
=== Veebiteenus ===&lt;br /&gt;
&lt;br /&gt;
Veebiteenus on poolik! Eeldatav lõppkuupäev 21.05.2012.&lt;br /&gt;
&lt;br /&gt;
Veebiteenuse eesmärgiks on pakkuda võimalust mänguettevõtjatele registreerida nende kasutajaid, mänge ning hallata nende skoore üle veebiteenuse.&lt;br /&gt;
Veebiteenus on loodud WCF tehnoloogia abil. Andmeid hoitakse MSSQL 2008 r2 andmebaasis. Kasutajate autentimine käib üle andmebaasi (forms authentication). Suhtlus veebiteenuse ja andmebaasi vahel käib üle LINQu. &lt;br /&gt;
Veebiteenus pakub andmete täielikuks haldamiseks basicHttp endpointi. Andmed on turvatud üle SSL protokolli. Samuti on andmete lugemine võimalik ka üle webHttp endpointi, läbi mille lubatakse teatud funktsioonidele läbi brauseri ligipääsu GET päringuga. Viimaseks endpointiks on juba defaultina ära konfitud mexHttp endpoint, mis annab klientrakendusele ülevaate teenusest ning vaheklasside struktuuri.&lt;br /&gt;
&lt;br /&gt;
Veebiteenuse lähtekood koos andmebaasi backupiga on saadavalt klientrakenduse sektsiooni all.&lt;br /&gt;
&lt;br /&gt;
=== XML ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot; ?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;matches xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; xsi:noNamespaceSchemaLocation=&amp;quot;game_matches.xsd&amp;quot;&amp;gt;  &lt;br /&gt;
  &amp;lt;match id=&amp;quot;1&amp;quot; type=&amp;quot;tdm&amp;quot; duration=&amp;quot;00:40:33&amp;quot; created=&amp;quot;2002-09-24-17:31&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;teams&amp;gt;&lt;br /&gt;
			&amp;lt;team name=&amp;quot;red&amp;quot; victorious=&amp;quot;false&amp;quot; score=&amp;quot;885&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;players&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;1&amp;quot; name=&amp;quot;Anissa&amp;quot; score=&amp;quot;614&amp;quot; victorious=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;2&amp;quot; name=&amp;quot;Jesus&amp;quot; score=&amp;quot;157&amp;quot; victorious=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;3&amp;quot; name=&amp;quot;Erick&amp;quot; score=&amp;quot;17&amp;quot; victorious=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;4&amp;quot; name=&amp;quot;Verena&amp;quot; score=&amp;quot;97&amp;quot; victorious=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
				&amp;lt;/players&amp;gt;&lt;br /&gt;
			&amp;lt;/team&amp;gt;&lt;br /&gt;
			&amp;lt;team name=&amp;quot;blue&amp;quot; victorious=&amp;quot;true&amp;quot; score=&amp;quot;2682&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;players&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;5&amp;quot; name=&amp;quot;Fredric&amp;quot; score=&amp;quot;729&amp;quot; victorious=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;6&amp;quot; name=&amp;quot;Lynda&amp;quot; score=&amp;quot;573&amp;quot; victorious=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;7&amp;quot; name=&amp;quot;Ingrid&amp;quot; score=&amp;quot;958&amp;quot; victorious=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;8&amp;quot; name=&amp;quot;Charmaine&amp;quot; score=&amp;quot;422&amp;quot; victorious=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
				&amp;lt;/players&amp;gt;&lt;br /&gt;
			&amp;lt;/team&amp;gt;&lt;br /&gt;
		&amp;lt;/teams&amp;gt;&lt;br /&gt;
	&amp;lt;/match&amp;gt;&lt;br /&gt;
	&amp;lt;match id=&amp;quot;2&amp;quot; type=&amp;quot;dm&amp;quot; duration=&amp;quot;00:31:10&amp;quot; created=&amp;quot;2002-09-23-14:10&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;players&amp;gt;&lt;br /&gt;
			&amp;lt;player id=&amp;quot;9&amp;quot; name=&amp;quot;Rosa&amp;quot; score=&amp;quot;24&amp;quot; victorious=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
			&amp;lt;player id=&amp;quot;10&amp;quot; name=&amp;quot;Jolyn&amp;quot; score=&amp;quot;85&amp;quot; victorious=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
			&amp;lt;player id=&amp;quot;11&amp;quot; name=&amp;quot;Kristyn&amp;quot; score=&amp;quot;61&amp;quot; victorious=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;/players&amp;gt;&lt;br /&gt;
	&amp;lt;/match&amp;gt;&lt;br /&gt;
	&amp;lt;match id=&amp;quot;3&amp;quot; type=&amp;quot;dm&amp;quot; duration=&amp;quot;00:25:50&amp;quot; created=&amp;quot;2002-09-24-16:05&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;players&amp;gt;&lt;br /&gt;
			&amp;lt;player id=&amp;quot;2&amp;quot; name=&amp;quot;Jesus&amp;quot; score=&amp;quot;67&amp;quot; victorious=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
			&amp;lt;player id=&amp;quot;1&amp;quot; name=&amp;quot;Anissa&amp;quot; score=&amp;quot;106&amp;quot; victorious=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
			&amp;lt;player id=&amp;quot;6&amp;quot; name=&amp;quot;Lynda&amp;quot; score=&amp;quot;99&amp;quot; victorious=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;/players&amp;gt;&lt;br /&gt;
	&amp;lt;/match&amp;gt;&lt;br /&gt;
	&amp;lt;match id=&amp;quot;4&amp;quot; type=&amp;quot;tdm&amp;quot; duration=&amp;quot;00:51:19&amp;quot; created=&amp;quot;2002-09-25-23:31&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;teams&amp;gt;&lt;br /&gt;
			&amp;lt;team name=&amp;quot;red&amp;quot; victorious=&amp;quot;true&amp;quot; score=&amp;quot;1882&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;players&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;1&amp;quot; name=&amp;quot;Anissa&amp;quot; score=&amp;quot;1005&amp;quot; victorious=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;2&amp;quot; name=&amp;quot;Jesus&amp;quot; score=&amp;quot;794&amp;quot; victorious=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;3&amp;quot; name=&amp;quot;Erick&amp;quot; score=&amp;quot;81&amp;quot; victorious=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;4&amp;quot; name=&amp;quot;Verena&amp;quot; score=&amp;quot;2&amp;quot; victorious=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
				&amp;lt;/players&amp;gt;&lt;br /&gt;
			&amp;lt;/team&amp;gt;&lt;br /&gt;
			&amp;lt;team name=&amp;quot;blue&amp;quot; victorious=&amp;quot;false&amp;quot; score=&amp;quot;1560&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;players&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;5&amp;quot; name=&amp;quot;Fredric&amp;quot; score=&amp;quot;710&amp;quot; victorious=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;6&amp;quot; name=&amp;quot;Lynda&amp;quot; score=&amp;quot;496&amp;quot; victorious=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;7&amp;quot; name=&amp;quot;Ingrid&amp;quot; score=&amp;quot;194&amp;quot; victorious=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;8&amp;quot; name=&amp;quot;Charmaine&amp;quot; score=&amp;quot;160&amp;quot; victorious=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
				&amp;lt;/players&amp;gt;&lt;br /&gt;
			&amp;lt;/team&amp;gt;&lt;br /&gt;
		&amp;lt;/teams&amp;gt;&lt;br /&gt;
	&amp;lt;/match&amp;gt;&lt;br /&gt;
&amp;lt;/matches&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== XSD ===&lt;br /&gt;
&amp;lt;pre&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;
&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;matches&amp;quot;&amp;gt;&lt;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;match&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element minOccurs=&amp;quot;0&amp;quot; name=&amp;quot;players&amp;quot;&amp;gt;&lt;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;player&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;id&amp;quot; type=&amp;quot;xs:unsignedInt&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;name&amp;quot; type=&amp;quot;xs:string&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;score&amp;quot; type=&amp;quot;xs:unsignedInt&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;victorious&amp;quot; type=&amp;quot;xs:boolean&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:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element minOccurs=&amp;quot;0&amp;quot; name=&amp;quot;teams&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element minOccurs=&amp;quot;2&amp;quot; maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;team&amp;quot;&amp;gt;&lt;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;players&amp;quot;&amp;gt;&lt;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;player&amp;quot;&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                    &amp;lt;xs:attribute name=&amp;quot;id&amp;quot; type=&amp;quot;xs:unsignedInt&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                                    &amp;lt;xs:attribute name=&amp;quot;name&amp;quot; type=&amp;quot;xs:string&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                                    &amp;lt;xs:attribute name=&amp;quot;score&amp;quot; type=&amp;quot;xs:unsignedInt&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                                    &amp;lt;xs:attribute name=&amp;quot;victorious&amp;quot; type=&amp;quot;xs:boolean&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:element&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;name&amp;quot; type=&amp;quot;xs:string&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;victorious&amp;quot; type=&amp;quot;xs:boolean&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;score&amp;quot; type=&amp;quot;xs:unsignedInt&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:element&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:unsignedInt&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xs:attribute name=&amp;quot;type&amp;quot; type=&amp;quot;xs:string&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xs:attribute name=&amp;quot;duration&amp;quot; type=&amp;quot;xs:time&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xs:attribute name=&amp;quot;created&amp;quot; type=&amp;quot;xs:date&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:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== XSLT ===&lt;br /&gt;
&amp;lt;pre&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;
&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;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:output method=&amp;quot;html&amp;quot; encoding=&amp;quot;utf-8&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:text disable-output-escaping=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;amp;lt;!DOCTYPE html&amp;amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
    &amp;lt;html&amp;gt;&lt;br /&gt;
      &amp;lt;body&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Game matches:&amp;lt;/h2&amp;gt;        &lt;br /&gt;
          &amp;lt;xsl:for-each select=&amp;quot;matches/match&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;table border=&amp;quot;1&amp;quot; style=&amp;quot;margin: 10px; float: left;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:when test=&amp;quot;@type = &#039;tdm&#039;&amp;quot;&amp;gt;                                &lt;br /&gt;
                  &amp;lt;tr style=&amp;quot;background-color: #917A56;&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;th&amp;gt;Player&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;th&amp;gt;Team&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;th&amp;gt;Score&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;th&amp;gt;Victorious&amp;lt;/th&amp;gt;&lt;br /&gt;
                  &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:for-each select=&amp;quot;teams/team&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:for-each select=&amp;quot;players/player&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:when test=&amp;quot;position() mod 2 = 0&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:text disable-output-escaping=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;amp;lt;tr style=&amp;quot;background-color: #FEFFC2;&amp;quot;&amp;amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:text&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:text disable-output-escaping=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;amp;lt;tr style=&amp;quot;background-color: #B4BA6C;&amp;quot;&amp;amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:text&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;td&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;@name&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;td&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;../../@name&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;td&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;@score&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;td&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;@victorious&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:text disable-output-escaping=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;amp;lt;/tr&amp;amp;gt;&lt;br /&gt;
                    &amp;lt;/xsl:text&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;/xsl:when&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                &amp;lt;tr style=&amp;quot;background-color: #917A56;&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;th&amp;gt;Player&amp;lt;/th&amp;gt;&lt;br /&gt;
                  &amp;lt;th&amp;gt;Score&amp;lt;/th&amp;gt;&lt;br /&gt;
                  &amp;lt;th&amp;gt;Victorious&amp;lt;/th&amp;gt;&lt;br /&gt;
                &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:for-each select=&amp;quot;players/player&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:when test=&amp;quot;position() mod 2 = 0&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:text disable-output-escaping=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;amp;lt;tr style=&amp;quot;background-color: #FEFFC2;&amp;quot;&amp;amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:text&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:text disable-output-escaping=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;amp;lt;tr style=&amp;quot;background-color: #B4BA6C;&amp;quot;&amp;amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:text&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;td&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;@name&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;@score&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;@victorious&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:text disable-output-escaping=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;amp;lt;/tr&amp;amp;gt;&lt;br /&gt;
                  &amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:for-each&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;/table&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;pre&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;
&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;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:output method=&amp;quot;xml&amp;quot; encoding=&amp;quot;utf-8&amp;quot; indent=&amp;quot;yes&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;matches&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;matches/match&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:when test=&amp;quot;@type = &#039;tdm&#039;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;match&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;type&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;@type&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&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;@duration&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:attribute name=&amp;quot;created&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;@created&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;teams&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:for-each select=&amp;quot;teams/team&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;team&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:attribute name=&amp;quot;name&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;@name&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:attribute name=&amp;quot;victorious&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;@victorious&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:attribute name=&amp;quot;score&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;@score&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                    &amp;lt;players&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:for-each select=&amp;quot;players/player&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;player&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;name&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;@name&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                          &amp;lt;xsl:attribute name=&amp;quot;victorious&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;@victorious&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                          &amp;lt;xsl:attribute name=&amp;quot;score&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;@score&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                        &amp;lt;/player&amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:for-each&amp;gt;&amp;lt;!-- FOREACH PLAYER ENDS HERE --&amp;gt;&lt;br /&gt;
                    &amp;lt;/players&amp;gt;&lt;br /&gt;
                  &amp;lt;/team&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:for-each&amp;gt;&amp;lt;!-- FOREACH TEAM ENDS HERE --&amp;gt;&lt;br /&gt;
              &amp;lt;/teams&amp;gt;                                  &lt;br /&gt;
            &amp;lt;/match&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&amp;lt;!-- FOREACH MATCH ENDS HERE --&amp;gt;   &lt;br /&gt;
    &amp;lt;/matches&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;/div&gt;</summary>
		<author><name>Jvarus</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Kodut%C3%B6%C3%B6_aines_%22V%C3%B5rgurakendused_II:_hajuss%C3%BCsteemide_ehitamine%22_2012&amp;diff=48326</id>
		<title>Kodutöö aines &quot;Võrgurakendused II: hajussüsteemide ehitamine&quot; 2012</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Kodut%C3%B6%C3%B6_aines_%22V%C3%B5rgurakendused_II:_hajuss%C3%BCsteemide_ehitamine%22_2012&amp;diff=48326"/>
		<updated>2012-05-20T20:49:31Z</updated>

		<summary type="html">&lt;p&gt;Jvarus: /* Meeskonnad 2012 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Võrgurakendused II: hajussüsteemide ehitamine]]&lt;br /&gt;
&lt;br /&gt;
=Kodutöö aines &amp;quot;Võrgurakendused II: hajussüsteemide ehitamine&amp;quot; 2012=&lt;br /&gt;
==Eesmärk==&lt;br /&gt;
Saada praktiline kogemus hajussüsteemide ehitamisest XML veebiteenus ja vastava kliendi loomise abil ning süvendada meeskonnatööoskust. Kaugem eesmärk on loomulikult hinne :).&lt;br /&gt;
&lt;br /&gt;
==Reeglid==&lt;br /&gt;
&#039;&#039;&#039; Kodutöö koosneb kolmest eraldiseisvast ülesandest:&#039;&#039;&#039;&lt;br /&gt;
* Luua XML fail vabalt valitud andmete edastamiseks,selle faili skeemifail ning XSL fail(id) erinevate transformatsioonide tarvis (soovitavalt vähemalt andmete HTML ja XML kujul kuvamiseks)&lt;br /&gt;
* Luua veebiteenus, mis võimaldaks pakkuda teenust, eristada kasutajaid ning näidata teenuse kasutamise statistikat kasutajate ja tegevuste lõikes&lt;br /&gt;
* Luua klientrakendused (soovitavalt vähemalt kaks)endaloodud veebiteenusele&lt;br /&gt;
&lt;br /&gt;
Ühte projektimeeskonda kuulub 3..4 tudengit ning ühel teemal teostab projekti üks või mitu meeskonda.&lt;br /&gt;
&lt;br /&gt;
Töö käiku kajastatakse  http://wiki.itcollege.ee keskkonnas. Wikilehe täitmise eesmärke on kaks: nii on võimalik kirja panna kõik mõtted ja ideed (ning nendest jääb jälg) ning õppejõul on hiljem võimalik saada ülevaade iga projektimeeskonna liikme panusest.&lt;br /&gt;
&lt;br /&gt;
==Tähtajad==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;XML fail&#039;&#039;&#039;&lt;br /&gt;
** XML fail, stiilifail ja skeemifail peavad olema valmis ja wikilehel kirjeldatud hiljemalt 3. märts 2011.&lt;br /&gt;
** Retsensioonid XML-failide kohta peavad tehtud olema 17. märts 2012&lt;br /&gt;
** &#039;&#039;&#039;Meeskonnad on loonud omale enda wiki lehe, kuhu kirjeldavad meeskonna ja panevad nad üles oma tööd. Lisaks hakkavad kogunema ka sinna teiste gruppide poolt kirjutatavad retsensioonid. &amp;lt;ins&amp;gt;Meeskonnalehed lingitakse selle lehe lõppu Meeskonna pealkirja alla.&amp;lt;/ins&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Veebiteenus&#039;&#039;&#039;&lt;br /&gt;
** Veebiteenus peab olema valmis&amp;lt;!--, esitatud--&amp;gt; ja ja wikilehel kirjeldatud hiljemalt 14. aprill 2012.&lt;br /&gt;
** Retsensioonid veebiteenuste kohta peavad tehtud olema 28. aprill 2012&lt;br /&gt;
** &amp;lt;ins&amp;gt;&#039;&#039;&#039;Iga tähtajast üleläinud päev kaotab esitamata tööde hindest 10%&#039;&#039;&#039;&amp;lt;/ins&amp;gt;&lt;br /&gt;
&amp;lt;!--** Veebiteenus tuleb esitleda!--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Klientrakendused&#039;&#039;&#039;&lt;br /&gt;
** Klientrakendused peavad olema valmis&amp;lt;!--, esitatud--&amp;gt; ja ja wikilehel kirjeldatud hiljemalt 5. mai 2012.&lt;br /&gt;
** Retsensioonid veebiteenuste kohta peavad tehtud olema 19. mai 2012&lt;br /&gt;
** &amp;lt;ins&amp;gt;&#039;&#039;&#039;Iga tähtajast üleläinud päev kaotab esitamata tööde hindest 10%&#039;&#039;&#039;&amp;lt;/ins&amp;gt;&lt;br /&gt;
&amp;lt;!--** Klientrakendused tuleb esitleda!--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--* &#039;&#039;&#039;Meeskonna kokkuvõttev aruanne&#039;&#039;&#039;&lt;br /&gt;
** Meeskonnatöö kokkuvõttev aruanne peab olema valmis, esitatud ja ja wikilehel kirjeldatud hiljemalt 8.mai 2011&lt;br /&gt;
** Arvamused Meeskonnatöö kokkuvõtva aruande ja esitluse kohta tuleb esitada hiljemalt päev enne eksamit&lt;br /&gt;
** &#039;&#039;&#039;Meeskonna kokkuvõttev aruanne ja töö lõplik tulemus&#039;&#039;&#039; tuleb esitleda!--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Hindamine==&lt;br /&gt;
===Üldised kriteeriumid===&lt;br /&gt;
&lt;br /&gt;
Teostatuks loetakse projekt juhul, kui lähteülesanne on realiseeritud, lahendus on töötav, kuid esineb suuremaid vigu ning piirsituatsioonidega ei ole arvestatud.&lt;br /&gt;
&lt;br /&gt;
Maksimumtulemuse saavutamiseks peab projekt olema teostatud tehniliselt veatult ning varustatud dokumentatsiooniga, milles sisaldub  arendusprotsessi kirjeldus (peab selguma ka iga rühmaliikme panus projekti teostamisel), kasutajajuhend ning lahenduse kirjeldus. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Maksimumtulemuse annab (vähemalr 4/7):&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Majanduslik mõtlemine (kas loodav teenus ja rakendused oleks kasutatav ka ärilistel eesmärkidel)&lt;br /&gt;
* Mobiilrakendused &lt;br /&gt;
* Kogukondade kaasamine&lt;br /&gt;
* AJAX / Silverlight&lt;br /&gt;
* Kasutajamugavus&lt;br /&gt;
* Läbimõeldud töökorraldus&lt;br /&gt;
* Lisavõimaluste realiseerimine (vt näidisteemad)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===XML andmefail===&lt;br /&gt;
Ülesande täitmiseks tuleb luua XML fail andmete edastamiseks, selle XML faili skeemifail ning paar kolm sobivat XSL faili loodud XML failis olevate andmete  transformeerimiseks HTML formaati ja XML faili formaadi muutmiseks.&lt;br /&gt;
&lt;br /&gt;
XML-il peab olema vähemalt 4 loogilist dimensiooni.&lt;br /&gt;
 &amp;lt;dim1&amp;gt;&lt;br /&gt;
   &amp;lt;dim2&amp;gt;&lt;br /&gt;
     &amp;lt;dim3&amp;gt;&lt;br /&gt;
       &amp;lt;dim4&amp;gt;&lt;br /&gt;
       &amp;lt;/dim4&amp;gt;&lt;br /&gt;
     &amp;lt;/dim3&amp;gt;&lt;br /&gt;
   &amp;lt;/dim2&amp;gt;&lt;br /&gt;
 &amp;lt;/dim1&amp;gt;&lt;br /&gt;
Lisaks tuleb kasutada 3-el dimensioonil attribuute, mis one enamat, kui lihtsalt ID.&lt;br /&gt;
&lt;br /&gt;
===Veebiteenus===&lt;br /&gt;
Loodav veebiteenus peab võimaldama:&lt;br /&gt;
* Teenuse pakkumist&lt;br /&gt;
* &#039;&#039;&#039;Teenuse kasutajate tuvastamist ning haldamist&#039;&#039;&#039;&lt;br /&gt;
* Teenuse kasutajate ja kasutusstatistika üle arve pidamist kasutajate lõikes&lt;br /&gt;
&lt;br /&gt;
Soovitav on luua teenus (FE) ja teenuse seadistamiseks ning kasutajate haldamiseks mõeldud rakendus (BE).&lt;br /&gt;
&lt;br /&gt;
===Klientrakendus===&lt;br /&gt;
Klientrakendus mõnele olemasolevale veebiteenusele, võib olla teostatud veebirakendusena, Silverlight, WPF või vormirakendusena.&lt;br /&gt;
&lt;br /&gt;
Variant1: teha klientrakendus enda loodud veebiteenusele &lt;br /&gt;
&lt;br /&gt;
Variant2: teha klientrakendus mõnele levinud veebiteenusele.&lt;br /&gt;
Näiteks: &lt;br /&gt;
* http://www.bing.com/developer&lt;br /&gt;
* http://www.flickr.com/services/api/response.soap.html&lt;br /&gt;
* http://developer.ebay.com/developercenter/windows/&lt;br /&gt;
* http://apiwiki.twitter.com/Getting-Started&lt;br /&gt;
&lt;br /&gt;
===Retsensioonid===&lt;br /&gt;
Retsensioon on üliõpilase iseseisva teadustöö kriitilise analüüsi põhjal koostatud argumenteeritud hinnang. Retsensioonis tuleb hinnata töö vastavust esitatud tingimustele, programmikoodi loetavust ning kommenteeritust, dokumentatsiooni ja kirjeldada puudusi. Retsensioonide põhjal on meeskondadel õigus oma projekte parandada enne määratud esitamistähtaja kättejõudmist.&lt;br /&gt;
&lt;br /&gt;
Retsensioon peab sisaldama minimaalselt...&lt;br /&gt;
* XML - ...200 sõna.&lt;br /&gt;
* Veebiteenus - ...600 sõna.&lt;br /&gt;
* Klientrakendus - ...600 sõna.&lt;br /&gt;
&lt;br /&gt;
Mõnelauselisest arvamusest ei piisa, kuna tegemist on grupi loodavate arvustustega, mitte individuaalsete arvustustega.&lt;br /&gt;
&lt;br /&gt;
==Konsultatsioonid==&lt;br /&gt;
 Igal projektimeeskonnal on piiramatu õigus saada õppejõu käest konsultatsiooni ja juhendamist oma&lt;br /&gt;
 töö tegemiseks, kas harjutuste ajal või pärast harjutusi ja loenguid. Eriaegade suhtes saab sõlmida&lt;br /&gt;
 õppejõuga kokkuleppeid kontaktidel&lt;br /&gt;
 mait.poska [ät] itcollege.ee (+372 53 469 734) või&lt;br /&gt;
 kaarel.raspel [ät] gmail.com (+372 522 2468)&lt;br /&gt;
 (teksti originaalautor Priit Raspel)&lt;br /&gt;
&lt;br /&gt;
=Teemad 2012 kevad=&lt;br /&gt;
&#039;&#039;&#039; Kodutöö koosneb kolmest eraldiseisvast ülesandest:&#039;&#039;&#039;&lt;br /&gt;
* Luua XML fail vabalt valitud andmete edastamiseks,selle faili skeemifail ning XSL fail(id) erinevate transformatsioonide tarvis (soovitavalt vähemalt andmete HTML ja XML kujul kuvamiseks)&lt;br /&gt;
* Luua veebiteenus, mis võimaldaks pakkuda teenust, eristada kasutajaid ning näidata teenuse kasutamise statistikat kasutajate ja tegevuste lõikes&lt;br /&gt;
* Luua klientrakendus mõnele olemasolevale või endaloodud veebiteenusele&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Näidisteemad==&lt;br /&gt;
&lt;br /&gt;
===Nimede pakkumise teenus===&lt;br /&gt;
Mõte selles, et luua nimede baas, mille abil pakkuda rakenduse loojale sobiva algusega nimesid. Reaalne rakendus: &#039;&#039;autocompleter&#039;&#039; tarvis teenuse pakkumine&lt;br /&gt;
&lt;br /&gt;
====Ülesanne====&lt;br /&gt;
Luua sobiva alguse järgi nimede pakkumise teenus:&lt;br /&gt;
* alates kahetähelisetest algustest pakkuda sobivad nimesid&lt;br /&gt;
* luua võimalus kasutajatel nimesid lisada&lt;br /&gt;
* luua võimalus ühele kasutajale (või erinevatele kasutajagruppidele) maksimumpäringute hulga määramiseks&lt;br /&gt;
&lt;br /&gt;
Lisavõimalused:&lt;br /&gt;
* luua kontroll, et nimi lisatakse baasi alles siis, kui seda nime on pakkunud vähemalt kaks erinevat kasutajat&lt;br /&gt;
* luua roll-back&#039;i võimalus juhuks, kui mõni kasutaja on tegelenud spämmimisega&lt;br /&gt;
&lt;br /&gt;
===Külastusstatistika teenus===&lt;br /&gt;
Mõte selles, et pakkuda teenust, kus kasutajal on võimalik registreerida külastused ning küsida oma külastusstatistikat.&lt;br /&gt;
&lt;br /&gt;
====Ülesanne====&lt;br /&gt;
Luua külastusstatistika teenus:&lt;br /&gt;
* kasutaja saab teenuses registreerida külastusi&lt;br /&gt;
* kasutaja saab küsida külastusstatistikat päevade/kuude/kogu perioodi lõikes&lt;br /&gt;
* luua võimalus ühele kasutajale (või erinevatele kasutajagruppidele) maksimumpäringute hulga määramiseks&lt;br /&gt;
&lt;br /&gt;
Lisavõimalused:&lt;br /&gt;
* luua võimalus registreerida alamlehtede külastusstatistikat&lt;br /&gt;
* luua võimalus külastusstatistikale lisaparameetrite lisamiseks (ip aadress, sirviku versioon jne)&lt;br /&gt;
&lt;br /&gt;
===Telefoniraamatu teenus===&lt;br /&gt;
Mõte selles, et kasutaja saab teenuse abil salvestada kontakte ja nende seast otsida&lt;br /&gt;
&lt;br /&gt;
====Ülesanne====&lt;br /&gt;
Luua telefoniraamatu teenus:&lt;br /&gt;
* kasutaja saab teenuses kontakte lisada ja kustutada&lt;br /&gt;
* kasutaja saab kontaktide nime/telefoninumbri jne abil otsida&lt;br /&gt;
* luua võimalus ühele kasutajale (või erinevatele kasutajagruppidele) maksimumpäringute hulga määramiseks&lt;br /&gt;
&lt;br /&gt;
Lisavõimalused:&lt;br /&gt;
* luua võimalus kasutajatel oma kontaktibaase omavahel jagada&lt;br /&gt;
* luua võimalus pakkuda kontaktibaasis leiduvate nimede järgi sobivaid nimesid&lt;br /&gt;
&lt;br /&gt;
===RSS voogude kogumise ja uudiste kuvamise teenus===&lt;br /&gt;
Mõte selles, et kasutaja saab teenuse abil salvestada talle huvipakkuvaid RSS vooge ja nendelt voogudelt uudiseid lugeda&lt;br /&gt;
&lt;br /&gt;
====Ülesanne====&lt;br /&gt;
Luua RSS voogude haldusteenus:&lt;br /&gt;
* kasutaja saab teenuses RSS vooge lisada ja kustudada&lt;br /&gt;
* kasutaja saab pärida talle huvipakkuvate voogude viimaseid uudiseid&lt;br /&gt;
* luua võimalus ühele kasutajale (või erinevatele kasutajagruppidele) maksimumpäringute hulga määramiseks&lt;br /&gt;
&lt;br /&gt;
Lisavõimalused:&lt;br /&gt;
* luua võimalus kasutajatel erinevaid vooge grupeerida&lt;br /&gt;
* luua võimalus voogudes leiduvate uudiste puhverdamiseks (voogude lugemine võtab enamasti üsna palju aega)&lt;br /&gt;
&lt;br /&gt;
= Meeskonnad 2012=&lt;br /&gt;
&lt;br /&gt;
* [[Hello Kitty]]&lt;br /&gt;
* [[Meeskond &amp;quot;Harold&amp;quot;]]&lt;br /&gt;
* [[PhoneBook | Meeskond &amp;quot;PhoneBook&amp;quot;]]&lt;br /&gt;
* [[LLL | Meeskond &amp;quot;LLL&amp;quot;]]&lt;br /&gt;
* [[Meeskond &amp;quot;.NOT&amp;quot;]]&lt;br /&gt;
* [[Peeter VR2 | Meeskond &amp;quot;Peeter VR2&amp;quot;]]&lt;br /&gt;
* [[Meeskond &amp;quot;HM&amp;quot;]]&lt;/div&gt;</summary>
		<author><name>Jvarus</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Hello_Kitty&amp;diff=48323</id>
		<title>Hello Kitty</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Hello_Kitty&amp;diff=48323"/>
		<updated>2012-05-20T20:13:25Z</updated>

		<summary type="html">&lt;p&gt;Jvarus: /* Klientrakendus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== LIIKMED ===&lt;br /&gt;
* Herki Pärn&lt;br /&gt;
* Jaanus Varus&lt;br /&gt;
* Fred Mihkelsoo&lt;br /&gt;
&lt;br /&gt;
=== Klientrakendus ===&lt;br /&gt;
&lt;br /&gt;
Klientrakendus on poolik! Eeldatav lõppkuupäev 21.05.2012.&lt;br /&gt;
&lt;br /&gt;
Klientrakendus kujutab endast Kurt Jaegersi poolt XNA platvormile loodud mängu Asteroid Belt Assault porti html5&#039;le. Antud mängu lähtekood ja graafilised/audio komponendid on vabavaraliselt kasutatavad.&lt;br /&gt;
Mängu hostitakse Asp.Net website&#039;il. Rakendus kasutab skooride haldamiseks oma loodud veebiteenust.&lt;br /&gt;
&lt;br /&gt;
Klientrakendus koos veebiteenuse ja veebiteenuse andmebaasi backupiga on saadaval siit:&lt;br /&gt;
http://www.upload.ee/files/2359630/ITK_20.05.2012.rar.html&lt;br /&gt;
&lt;br /&gt;
=== Veebiteenus ===&lt;br /&gt;
&lt;br /&gt;
Veebiteenus on poolik! Eeldatav lõppkuupäev 21.05.2012.&lt;br /&gt;
&lt;br /&gt;
Veebiteenuse eesmärgiks on pakkuda võimalust mänguettevõtjatele registreerida nende kasutajaid, mänge ning hallata nende skoore üle veebiteenuse.&lt;br /&gt;
Veebiteenus on loodud WCF tehnoloogia abil. Andmeid hoitakse MSSQL 2008 r2 andmebaasis. Kasutajate autentimine käib üle andmebaasi (forms authentication). Suhtlus veebiteenuse ja andmebaasi vahel käib üle LINQu. &lt;br /&gt;
Veebiteenus pakub andmete täielikuks haldamiseks basicHttp endpointi. Andmed on turvatud üle SSL protokolli. Samuti on andmete lugemine võimalik ka üle webHttp endpointi, läbi mille lubatakse teatud funktsioonidele läbi brauseri ligipääsu GET päringuga. Viimaseks endpointiks on juba defaultina ära konfitud mexHttp endpoint, mis annab klientrakendusele ülevaate teenusest ning vaheklasside struktuuri.&lt;br /&gt;
&lt;br /&gt;
Veebiteenuse lähtekood koos andmebaasi backupiga on saadavalt klientrakenduse sektsiooni all.&lt;br /&gt;
&lt;br /&gt;
=== XML ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot; ?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;matches xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; xsi:noNamespaceSchemaLocation=&amp;quot;game_matches.xsd&amp;quot;&amp;gt;  &lt;br /&gt;
  &amp;lt;match id=&amp;quot;1&amp;quot; type=&amp;quot;tdm&amp;quot; duration=&amp;quot;00:40:33&amp;quot; created=&amp;quot;2002-09-24-17:31&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;teams&amp;gt;&lt;br /&gt;
			&amp;lt;team name=&amp;quot;red&amp;quot; victorious=&amp;quot;false&amp;quot; score=&amp;quot;885&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;players&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;1&amp;quot; name=&amp;quot;Anissa&amp;quot; score=&amp;quot;614&amp;quot; victorious=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;2&amp;quot; name=&amp;quot;Jesus&amp;quot; score=&amp;quot;157&amp;quot; victorious=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;3&amp;quot; name=&amp;quot;Erick&amp;quot; score=&amp;quot;17&amp;quot; victorious=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;4&amp;quot; name=&amp;quot;Verena&amp;quot; score=&amp;quot;97&amp;quot; victorious=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
				&amp;lt;/players&amp;gt;&lt;br /&gt;
			&amp;lt;/team&amp;gt;&lt;br /&gt;
			&amp;lt;team name=&amp;quot;blue&amp;quot; victorious=&amp;quot;true&amp;quot; score=&amp;quot;2682&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;players&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;5&amp;quot; name=&amp;quot;Fredric&amp;quot; score=&amp;quot;729&amp;quot; victorious=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;6&amp;quot; name=&amp;quot;Lynda&amp;quot; score=&amp;quot;573&amp;quot; victorious=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;7&amp;quot; name=&amp;quot;Ingrid&amp;quot; score=&amp;quot;958&amp;quot; victorious=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;8&amp;quot; name=&amp;quot;Charmaine&amp;quot; score=&amp;quot;422&amp;quot; victorious=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
				&amp;lt;/players&amp;gt;&lt;br /&gt;
			&amp;lt;/team&amp;gt;&lt;br /&gt;
		&amp;lt;/teams&amp;gt;&lt;br /&gt;
	&amp;lt;/match&amp;gt;&lt;br /&gt;
	&amp;lt;match id=&amp;quot;2&amp;quot; type=&amp;quot;dm&amp;quot; duration=&amp;quot;00:31:10&amp;quot; created=&amp;quot;2002-09-23-14:10&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;players&amp;gt;&lt;br /&gt;
			&amp;lt;player id=&amp;quot;9&amp;quot; name=&amp;quot;Rosa&amp;quot; score=&amp;quot;24&amp;quot; victorious=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
			&amp;lt;player id=&amp;quot;10&amp;quot; name=&amp;quot;Jolyn&amp;quot; score=&amp;quot;85&amp;quot; victorious=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
			&amp;lt;player id=&amp;quot;11&amp;quot; name=&amp;quot;Kristyn&amp;quot; score=&amp;quot;61&amp;quot; victorious=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;/players&amp;gt;&lt;br /&gt;
	&amp;lt;/match&amp;gt;&lt;br /&gt;
	&amp;lt;match id=&amp;quot;3&amp;quot; type=&amp;quot;dm&amp;quot; duration=&amp;quot;00:25:50&amp;quot; created=&amp;quot;2002-09-24-16:05&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;players&amp;gt;&lt;br /&gt;
			&amp;lt;player id=&amp;quot;2&amp;quot; name=&amp;quot;Jesus&amp;quot; score=&amp;quot;67&amp;quot; victorious=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
			&amp;lt;player id=&amp;quot;1&amp;quot; name=&amp;quot;Anissa&amp;quot; score=&amp;quot;106&amp;quot; victorious=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
			&amp;lt;player id=&amp;quot;6&amp;quot; name=&amp;quot;Lynda&amp;quot; score=&amp;quot;99&amp;quot; victorious=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;/players&amp;gt;&lt;br /&gt;
	&amp;lt;/match&amp;gt;&lt;br /&gt;
	&amp;lt;match id=&amp;quot;4&amp;quot; type=&amp;quot;tdm&amp;quot; duration=&amp;quot;00:51:19&amp;quot; created=&amp;quot;2002-09-25-23:31&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;teams&amp;gt;&lt;br /&gt;
			&amp;lt;team name=&amp;quot;red&amp;quot; victorious=&amp;quot;true&amp;quot; score=&amp;quot;1882&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;players&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;1&amp;quot; name=&amp;quot;Anissa&amp;quot; score=&amp;quot;1005&amp;quot; victorious=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;2&amp;quot; name=&amp;quot;Jesus&amp;quot; score=&amp;quot;794&amp;quot; victorious=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;3&amp;quot; name=&amp;quot;Erick&amp;quot; score=&amp;quot;81&amp;quot; victorious=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;4&amp;quot; name=&amp;quot;Verena&amp;quot; score=&amp;quot;2&amp;quot; victorious=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
				&amp;lt;/players&amp;gt;&lt;br /&gt;
			&amp;lt;/team&amp;gt;&lt;br /&gt;
			&amp;lt;team name=&amp;quot;blue&amp;quot; victorious=&amp;quot;false&amp;quot; score=&amp;quot;1560&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;players&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;5&amp;quot; name=&amp;quot;Fredric&amp;quot; score=&amp;quot;710&amp;quot; victorious=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;6&amp;quot; name=&amp;quot;Lynda&amp;quot; score=&amp;quot;496&amp;quot; victorious=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;7&amp;quot; name=&amp;quot;Ingrid&amp;quot; score=&amp;quot;194&amp;quot; victorious=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;8&amp;quot; name=&amp;quot;Charmaine&amp;quot; score=&amp;quot;160&amp;quot; victorious=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
				&amp;lt;/players&amp;gt;&lt;br /&gt;
			&amp;lt;/team&amp;gt;&lt;br /&gt;
		&amp;lt;/teams&amp;gt;&lt;br /&gt;
	&amp;lt;/match&amp;gt;&lt;br /&gt;
&amp;lt;/matches&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== XSD ===&lt;br /&gt;
&amp;lt;pre&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;
&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;matches&amp;quot;&amp;gt;&lt;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;match&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element minOccurs=&amp;quot;0&amp;quot; name=&amp;quot;players&amp;quot;&amp;gt;&lt;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;player&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;id&amp;quot; type=&amp;quot;xs:unsignedInt&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;name&amp;quot; type=&amp;quot;xs:string&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;score&amp;quot; type=&amp;quot;xs:unsignedInt&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;victorious&amp;quot; type=&amp;quot;xs:boolean&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:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element minOccurs=&amp;quot;0&amp;quot; name=&amp;quot;teams&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element minOccurs=&amp;quot;2&amp;quot; maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;team&amp;quot;&amp;gt;&lt;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;players&amp;quot;&amp;gt;&lt;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;player&amp;quot;&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                    &amp;lt;xs:attribute name=&amp;quot;id&amp;quot; type=&amp;quot;xs:unsignedInt&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                                    &amp;lt;xs:attribute name=&amp;quot;name&amp;quot; type=&amp;quot;xs:string&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                                    &amp;lt;xs:attribute name=&amp;quot;score&amp;quot; type=&amp;quot;xs:unsignedInt&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                                    &amp;lt;xs:attribute name=&amp;quot;victorious&amp;quot; type=&amp;quot;xs:boolean&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:element&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;name&amp;quot; type=&amp;quot;xs:string&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;victorious&amp;quot; type=&amp;quot;xs:boolean&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;score&amp;quot; type=&amp;quot;xs:unsignedInt&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:element&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:unsignedInt&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xs:attribute name=&amp;quot;type&amp;quot; type=&amp;quot;xs:string&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xs:attribute name=&amp;quot;duration&amp;quot; type=&amp;quot;xs:time&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xs:attribute name=&amp;quot;created&amp;quot; type=&amp;quot;xs:date&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:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== XSLT ===&lt;br /&gt;
&amp;lt;pre&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;
&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;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:output method=&amp;quot;html&amp;quot; encoding=&amp;quot;utf-8&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:text disable-output-escaping=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;amp;lt;!DOCTYPE html&amp;amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
    &amp;lt;html&amp;gt;&lt;br /&gt;
      &amp;lt;body&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Game matches:&amp;lt;/h2&amp;gt;        &lt;br /&gt;
          &amp;lt;xsl:for-each select=&amp;quot;matches/match&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;table border=&amp;quot;1&amp;quot; style=&amp;quot;margin: 10px; float: left;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:when test=&amp;quot;@type = &#039;tdm&#039;&amp;quot;&amp;gt;                                &lt;br /&gt;
                  &amp;lt;tr style=&amp;quot;background-color: #917A56;&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;th&amp;gt;Player&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;th&amp;gt;Team&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;th&amp;gt;Score&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;th&amp;gt;Victorious&amp;lt;/th&amp;gt;&lt;br /&gt;
                  &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:for-each select=&amp;quot;teams/team&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:for-each select=&amp;quot;players/player&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:when test=&amp;quot;position() mod 2 = 0&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:text disable-output-escaping=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;amp;lt;tr style=&amp;quot;background-color: #FEFFC2;&amp;quot;&amp;amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:text&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:text disable-output-escaping=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;amp;lt;tr style=&amp;quot;background-color: #B4BA6C;&amp;quot;&amp;amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:text&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;td&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;@name&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;td&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;../../@name&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;td&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;@score&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;td&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;@victorious&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:text disable-output-escaping=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;amp;lt;/tr&amp;amp;gt;&lt;br /&gt;
                    &amp;lt;/xsl:text&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;/xsl:when&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                &amp;lt;tr style=&amp;quot;background-color: #917A56;&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;th&amp;gt;Player&amp;lt;/th&amp;gt;&lt;br /&gt;
                  &amp;lt;th&amp;gt;Score&amp;lt;/th&amp;gt;&lt;br /&gt;
                  &amp;lt;th&amp;gt;Victorious&amp;lt;/th&amp;gt;&lt;br /&gt;
                &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:for-each select=&amp;quot;players/player&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:when test=&amp;quot;position() mod 2 = 0&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:text disable-output-escaping=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;amp;lt;tr style=&amp;quot;background-color: #FEFFC2;&amp;quot;&amp;amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:text&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:text disable-output-escaping=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;amp;lt;tr style=&amp;quot;background-color: #B4BA6C;&amp;quot;&amp;amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:text&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;td&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;@name&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;@score&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;@victorious&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:text disable-output-escaping=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;amp;lt;/tr&amp;amp;gt;&lt;br /&gt;
                  &amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:for-each&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;/table&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;pre&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;
&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;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:output method=&amp;quot;xml&amp;quot; encoding=&amp;quot;utf-8&amp;quot; indent=&amp;quot;yes&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;matches&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;matches/match&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:when test=&amp;quot;@type = &#039;tdm&#039;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;match&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;type&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;@type&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&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;@duration&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:attribute name=&amp;quot;created&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;@created&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;teams&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:for-each select=&amp;quot;teams/team&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;team&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:attribute name=&amp;quot;name&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;@name&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:attribute name=&amp;quot;victorious&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;@victorious&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:attribute name=&amp;quot;score&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;@score&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                    &amp;lt;players&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:for-each select=&amp;quot;players/player&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;player&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;name&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;@name&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                          &amp;lt;xsl:attribute name=&amp;quot;victorious&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;@victorious&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                          &amp;lt;xsl:attribute name=&amp;quot;score&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;@score&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                        &amp;lt;/player&amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:for-each&amp;gt;&amp;lt;!-- FOREACH PLAYER ENDS HERE --&amp;gt;&lt;br /&gt;
                    &amp;lt;/players&amp;gt;&lt;br /&gt;
                  &amp;lt;/team&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:for-each&amp;gt;&amp;lt;!-- FOREACH TEAM ENDS HERE --&amp;gt;&lt;br /&gt;
              &amp;lt;/teams&amp;gt;                                  &lt;br /&gt;
            &amp;lt;/match&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&amp;lt;!-- FOREACH MATCH ENDS HERE --&amp;gt;   &lt;br /&gt;
    &amp;lt;/matches&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;/div&gt;</summary>
		<author><name>Jvarus</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Hello_Kitty&amp;diff=48322</id>
		<title>Hello Kitty</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Hello_Kitty&amp;diff=48322"/>
		<updated>2012-05-20T20:11:42Z</updated>

		<summary type="html">&lt;p&gt;Jvarus: /* Klientrakendus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== LIIKMED ===&lt;br /&gt;
* Herki Pärn&lt;br /&gt;
* Jaanus Varus&lt;br /&gt;
* Fred Mihkelsoo&lt;br /&gt;
&lt;br /&gt;
=== Klientrakendus ===&lt;br /&gt;
[[File:http://www.upload.ee/image/2359695/Capture2.PNG|thumb|alt=Asteroid Belt Assault|Asteroid Belt Assault]]&lt;br /&gt;
Klientrakendus on poolik! Eeldatav lõppkuupäev 21.05.2012.&lt;br /&gt;
&lt;br /&gt;
Klientrakendus kujutab endast Kurt Jaegersi poolt XNA platvormile loodud mängu Asteroid Belt Assault porti html5&#039;le. Antud mängu lähtekood ja graafilised/audio komponendid on vabavaraliselt kasutatavad.&lt;br /&gt;
Mängu hostitakse Asp.Net website&#039;il. Rakendus kasutab skooride haldamiseks oma loodud veebiteenust.&lt;br /&gt;
&lt;br /&gt;
Klientrakendus koos veebiteenuse ja veebiteenuse andmebaasi backupiga on saadaval siit:&lt;br /&gt;
http://www.upload.ee/files/2359630/ITK_20.05.2012.rar.html&lt;br /&gt;
&lt;br /&gt;
=== Veebiteenus ===&lt;br /&gt;
&lt;br /&gt;
Veebiteenus on poolik! Eeldatav lõppkuupäev 21.05.2012.&lt;br /&gt;
&lt;br /&gt;
Veebiteenuse eesmärgiks on pakkuda võimalust mänguettevõtjatele registreerida nende kasutajaid, mänge ning hallata nende skoore üle veebiteenuse.&lt;br /&gt;
Veebiteenus on loodud WCF tehnoloogia abil. Andmeid hoitakse MSSQL 2008 r2 andmebaasis. Kasutajate autentimine käib üle andmebaasi (forms authentication). Suhtlus veebiteenuse ja andmebaasi vahel käib üle LINQu. &lt;br /&gt;
Veebiteenus pakub andmete täielikuks haldamiseks basicHttp endpointi. Andmed on turvatud üle SSL protokolli. Samuti on andmete lugemine võimalik ka üle webHttp endpointi, läbi mille lubatakse teatud funktsioonidele läbi brauseri ligipääsu GET päringuga. Viimaseks endpointiks on juba defaultina ära konfitud mexHttp endpoint, mis annab klientrakendusele ülevaate teenusest ning vaheklasside struktuuri.&lt;br /&gt;
&lt;br /&gt;
Veebiteenuse lähtekood koos andmebaasi backupiga on saadavalt klientrakenduse sektsiooni all.&lt;br /&gt;
&lt;br /&gt;
=== XML ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot; ?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;matches xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; xsi:noNamespaceSchemaLocation=&amp;quot;game_matches.xsd&amp;quot;&amp;gt;  &lt;br /&gt;
  &amp;lt;match id=&amp;quot;1&amp;quot; type=&amp;quot;tdm&amp;quot; duration=&amp;quot;00:40:33&amp;quot; created=&amp;quot;2002-09-24-17:31&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;teams&amp;gt;&lt;br /&gt;
			&amp;lt;team name=&amp;quot;red&amp;quot; victorious=&amp;quot;false&amp;quot; score=&amp;quot;885&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;players&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;1&amp;quot; name=&amp;quot;Anissa&amp;quot; score=&amp;quot;614&amp;quot; victorious=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;2&amp;quot; name=&amp;quot;Jesus&amp;quot; score=&amp;quot;157&amp;quot; victorious=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;3&amp;quot; name=&amp;quot;Erick&amp;quot; score=&amp;quot;17&amp;quot; victorious=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;4&amp;quot; name=&amp;quot;Verena&amp;quot; score=&amp;quot;97&amp;quot; victorious=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
				&amp;lt;/players&amp;gt;&lt;br /&gt;
			&amp;lt;/team&amp;gt;&lt;br /&gt;
			&amp;lt;team name=&amp;quot;blue&amp;quot; victorious=&amp;quot;true&amp;quot; score=&amp;quot;2682&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;players&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;5&amp;quot; name=&amp;quot;Fredric&amp;quot; score=&amp;quot;729&amp;quot; victorious=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;6&amp;quot; name=&amp;quot;Lynda&amp;quot; score=&amp;quot;573&amp;quot; victorious=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;7&amp;quot; name=&amp;quot;Ingrid&amp;quot; score=&amp;quot;958&amp;quot; victorious=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;8&amp;quot; name=&amp;quot;Charmaine&amp;quot; score=&amp;quot;422&amp;quot; victorious=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
				&amp;lt;/players&amp;gt;&lt;br /&gt;
			&amp;lt;/team&amp;gt;&lt;br /&gt;
		&amp;lt;/teams&amp;gt;&lt;br /&gt;
	&amp;lt;/match&amp;gt;&lt;br /&gt;
	&amp;lt;match id=&amp;quot;2&amp;quot; type=&amp;quot;dm&amp;quot; duration=&amp;quot;00:31:10&amp;quot; created=&amp;quot;2002-09-23-14:10&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;players&amp;gt;&lt;br /&gt;
			&amp;lt;player id=&amp;quot;9&amp;quot; name=&amp;quot;Rosa&amp;quot; score=&amp;quot;24&amp;quot; victorious=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
			&amp;lt;player id=&amp;quot;10&amp;quot; name=&amp;quot;Jolyn&amp;quot; score=&amp;quot;85&amp;quot; victorious=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
			&amp;lt;player id=&amp;quot;11&amp;quot; name=&amp;quot;Kristyn&amp;quot; score=&amp;quot;61&amp;quot; victorious=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;/players&amp;gt;&lt;br /&gt;
	&amp;lt;/match&amp;gt;&lt;br /&gt;
	&amp;lt;match id=&amp;quot;3&amp;quot; type=&amp;quot;dm&amp;quot; duration=&amp;quot;00:25:50&amp;quot; created=&amp;quot;2002-09-24-16:05&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;players&amp;gt;&lt;br /&gt;
			&amp;lt;player id=&amp;quot;2&amp;quot; name=&amp;quot;Jesus&amp;quot; score=&amp;quot;67&amp;quot; victorious=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
			&amp;lt;player id=&amp;quot;1&amp;quot; name=&amp;quot;Anissa&amp;quot; score=&amp;quot;106&amp;quot; victorious=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
			&amp;lt;player id=&amp;quot;6&amp;quot; name=&amp;quot;Lynda&amp;quot; score=&amp;quot;99&amp;quot; victorious=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;/players&amp;gt;&lt;br /&gt;
	&amp;lt;/match&amp;gt;&lt;br /&gt;
	&amp;lt;match id=&amp;quot;4&amp;quot; type=&amp;quot;tdm&amp;quot; duration=&amp;quot;00:51:19&amp;quot; created=&amp;quot;2002-09-25-23:31&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;teams&amp;gt;&lt;br /&gt;
			&amp;lt;team name=&amp;quot;red&amp;quot; victorious=&amp;quot;true&amp;quot; score=&amp;quot;1882&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;players&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;1&amp;quot; name=&amp;quot;Anissa&amp;quot; score=&amp;quot;1005&amp;quot; victorious=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;2&amp;quot; name=&amp;quot;Jesus&amp;quot; score=&amp;quot;794&amp;quot; victorious=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;3&amp;quot; name=&amp;quot;Erick&amp;quot; score=&amp;quot;81&amp;quot; victorious=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;4&amp;quot; name=&amp;quot;Verena&amp;quot; score=&amp;quot;2&amp;quot; victorious=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
				&amp;lt;/players&amp;gt;&lt;br /&gt;
			&amp;lt;/team&amp;gt;&lt;br /&gt;
			&amp;lt;team name=&amp;quot;blue&amp;quot; victorious=&amp;quot;false&amp;quot; score=&amp;quot;1560&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;players&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;5&amp;quot; name=&amp;quot;Fredric&amp;quot; score=&amp;quot;710&amp;quot; victorious=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;6&amp;quot; name=&amp;quot;Lynda&amp;quot; score=&amp;quot;496&amp;quot; victorious=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;7&amp;quot; name=&amp;quot;Ingrid&amp;quot; score=&amp;quot;194&amp;quot; victorious=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;8&amp;quot; name=&amp;quot;Charmaine&amp;quot; score=&amp;quot;160&amp;quot; victorious=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
				&amp;lt;/players&amp;gt;&lt;br /&gt;
			&amp;lt;/team&amp;gt;&lt;br /&gt;
		&amp;lt;/teams&amp;gt;&lt;br /&gt;
	&amp;lt;/match&amp;gt;&lt;br /&gt;
&amp;lt;/matches&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== XSD ===&lt;br /&gt;
&amp;lt;pre&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;
&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;matches&amp;quot;&amp;gt;&lt;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;match&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element minOccurs=&amp;quot;0&amp;quot; name=&amp;quot;players&amp;quot;&amp;gt;&lt;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;player&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;id&amp;quot; type=&amp;quot;xs:unsignedInt&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;name&amp;quot; type=&amp;quot;xs:string&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;score&amp;quot; type=&amp;quot;xs:unsignedInt&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;victorious&amp;quot; type=&amp;quot;xs:boolean&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:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element minOccurs=&amp;quot;0&amp;quot; name=&amp;quot;teams&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element minOccurs=&amp;quot;2&amp;quot; maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;team&amp;quot;&amp;gt;&lt;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;players&amp;quot;&amp;gt;&lt;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;player&amp;quot;&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                    &amp;lt;xs:attribute name=&amp;quot;id&amp;quot; type=&amp;quot;xs:unsignedInt&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                                    &amp;lt;xs:attribute name=&amp;quot;name&amp;quot; type=&amp;quot;xs:string&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                                    &amp;lt;xs:attribute name=&amp;quot;score&amp;quot; type=&amp;quot;xs:unsignedInt&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                                    &amp;lt;xs:attribute name=&amp;quot;victorious&amp;quot; type=&amp;quot;xs:boolean&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:element&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;name&amp;quot; type=&amp;quot;xs:string&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;victorious&amp;quot; type=&amp;quot;xs:boolean&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;score&amp;quot; type=&amp;quot;xs:unsignedInt&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:element&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:unsignedInt&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xs:attribute name=&amp;quot;type&amp;quot; type=&amp;quot;xs:string&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xs:attribute name=&amp;quot;duration&amp;quot; type=&amp;quot;xs:time&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xs:attribute name=&amp;quot;created&amp;quot; type=&amp;quot;xs:date&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:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== XSLT ===&lt;br /&gt;
&amp;lt;pre&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;
&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;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:output method=&amp;quot;html&amp;quot; encoding=&amp;quot;utf-8&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:text disable-output-escaping=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;amp;lt;!DOCTYPE html&amp;amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
    &amp;lt;html&amp;gt;&lt;br /&gt;
      &amp;lt;body&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Game matches:&amp;lt;/h2&amp;gt;        &lt;br /&gt;
          &amp;lt;xsl:for-each select=&amp;quot;matches/match&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;table border=&amp;quot;1&amp;quot; style=&amp;quot;margin: 10px; float: left;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:when test=&amp;quot;@type = &#039;tdm&#039;&amp;quot;&amp;gt;                                &lt;br /&gt;
                  &amp;lt;tr style=&amp;quot;background-color: #917A56;&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;th&amp;gt;Player&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;th&amp;gt;Team&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;th&amp;gt;Score&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;th&amp;gt;Victorious&amp;lt;/th&amp;gt;&lt;br /&gt;
                  &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:for-each select=&amp;quot;teams/team&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:for-each select=&amp;quot;players/player&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:when test=&amp;quot;position() mod 2 = 0&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:text disable-output-escaping=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;amp;lt;tr style=&amp;quot;background-color: #FEFFC2;&amp;quot;&amp;amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:text&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:text disable-output-escaping=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;amp;lt;tr style=&amp;quot;background-color: #B4BA6C;&amp;quot;&amp;amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:text&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;td&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;@name&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;td&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;../../@name&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;td&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;@score&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;td&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;@victorious&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:text disable-output-escaping=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;amp;lt;/tr&amp;amp;gt;&lt;br /&gt;
                    &amp;lt;/xsl:text&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;/xsl:when&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                &amp;lt;tr style=&amp;quot;background-color: #917A56;&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;th&amp;gt;Player&amp;lt;/th&amp;gt;&lt;br /&gt;
                  &amp;lt;th&amp;gt;Score&amp;lt;/th&amp;gt;&lt;br /&gt;
                  &amp;lt;th&amp;gt;Victorious&amp;lt;/th&amp;gt;&lt;br /&gt;
                &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:for-each select=&amp;quot;players/player&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:when test=&amp;quot;position() mod 2 = 0&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:text disable-output-escaping=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;amp;lt;tr style=&amp;quot;background-color: #FEFFC2;&amp;quot;&amp;amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:text&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:text disable-output-escaping=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;amp;lt;tr style=&amp;quot;background-color: #B4BA6C;&amp;quot;&amp;amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:text&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;td&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;@name&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;@score&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;@victorious&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:text disable-output-escaping=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;amp;lt;/tr&amp;amp;gt;&lt;br /&gt;
                  &amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:for-each&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;/table&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;pre&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;
&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;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:output method=&amp;quot;xml&amp;quot; encoding=&amp;quot;utf-8&amp;quot; indent=&amp;quot;yes&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;matches&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;matches/match&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:when test=&amp;quot;@type = &#039;tdm&#039;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;match&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;type&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;@type&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&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;@duration&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:attribute name=&amp;quot;created&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;@created&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;teams&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:for-each select=&amp;quot;teams/team&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;team&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:attribute name=&amp;quot;name&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;@name&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:attribute name=&amp;quot;victorious&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;@victorious&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:attribute name=&amp;quot;score&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;@score&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                    &amp;lt;players&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:for-each select=&amp;quot;players/player&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;player&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;name&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;@name&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                          &amp;lt;xsl:attribute name=&amp;quot;victorious&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;@victorious&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                          &amp;lt;xsl:attribute name=&amp;quot;score&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;@score&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                        &amp;lt;/player&amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:for-each&amp;gt;&amp;lt;!-- FOREACH PLAYER ENDS HERE --&amp;gt;&lt;br /&gt;
                    &amp;lt;/players&amp;gt;&lt;br /&gt;
                  &amp;lt;/team&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:for-each&amp;gt;&amp;lt;!-- FOREACH TEAM ENDS HERE --&amp;gt;&lt;br /&gt;
              &amp;lt;/teams&amp;gt;                                  &lt;br /&gt;
            &amp;lt;/match&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&amp;lt;!-- FOREACH MATCH ENDS HERE --&amp;gt;   &lt;br /&gt;
    &amp;lt;/matches&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;/div&gt;</summary>
		<author><name>Jvarus</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Hello_Kitty&amp;diff=48321</id>
		<title>Hello Kitty</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Hello_Kitty&amp;diff=48321"/>
		<updated>2012-05-20T20:11:22Z</updated>

		<summary type="html">&lt;p&gt;Jvarus: /* Klientrakendus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== LIIKMED ===&lt;br /&gt;
* Herki Pärn&lt;br /&gt;
* Jaanus Varus&lt;br /&gt;
* Fred Mihkelsoo&lt;br /&gt;
&lt;br /&gt;
=== Klientrakendus ===&lt;br /&gt;
&lt;br /&gt;
Klientrakendus on poolik! Eeldatav lõppkuupäev 21.05.2012.&lt;br /&gt;
&lt;br /&gt;
Klientrakendus kujutab endast Kurt Jaegersi poolt XNA platvormile loodud mängu Asteroid Belt Assault porti html5&#039;le. Antud mängu lähtekood ja graafilised/audio komponendid on vabavaraliselt kasutatavad.&lt;br /&gt;
Mängu hostitakse Asp.Net website&#039;il. Rakendus kasutab skooride haldamiseks oma loodud veebiteenust.&lt;br /&gt;
&lt;br /&gt;
Klientrakendus koos veebiteenuse ja veebiteenuse andmebaasi backupiga on saadaval siit:&lt;br /&gt;
http://www.upload.ee/files/2359630/ITK_20.05.2012.rar.html&lt;br /&gt;
&lt;br /&gt;
[[File:http://www.upload.ee/image/2359695/Capture2.PNG|thumb|alt=Asteroid Belt Assault|Asteroid Belt Assault]]&lt;br /&gt;
&lt;br /&gt;
=== Veebiteenus ===&lt;br /&gt;
&lt;br /&gt;
Veebiteenus on poolik! Eeldatav lõppkuupäev 21.05.2012.&lt;br /&gt;
&lt;br /&gt;
Veebiteenuse eesmärgiks on pakkuda võimalust mänguettevõtjatele registreerida nende kasutajaid, mänge ning hallata nende skoore üle veebiteenuse.&lt;br /&gt;
Veebiteenus on loodud WCF tehnoloogia abil. Andmeid hoitakse MSSQL 2008 r2 andmebaasis. Kasutajate autentimine käib üle andmebaasi (forms authentication). Suhtlus veebiteenuse ja andmebaasi vahel käib üle LINQu. &lt;br /&gt;
Veebiteenus pakub andmete täielikuks haldamiseks basicHttp endpointi. Andmed on turvatud üle SSL protokolli. Samuti on andmete lugemine võimalik ka üle webHttp endpointi, läbi mille lubatakse teatud funktsioonidele läbi brauseri ligipääsu GET päringuga. Viimaseks endpointiks on juba defaultina ära konfitud mexHttp endpoint, mis annab klientrakendusele ülevaate teenusest ning vaheklasside struktuuri.&lt;br /&gt;
&lt;br /&gt;
Veebiteenuse lähtekood koos andmebaasi backupiga on saadavalt klientrakenduse sektsiooni all.&lt;br /&gt;
&lt;br /&gt;
=== XML ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot; ?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;matches xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; xsi:noNamespaceSchemaLocation=&amp;quot;game_matches.xsd&amp;quot;&amp;gt;  &lt;br /&gt;
  &amp;lt;match id=&amp;quot;1&amp;quot; type=&amp;quot;tdm&amp;quot; duration=&amp;quot;00:40:33&amp;quot; created=&amp;quot;2002-09-24-17:31&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;teams&amp;gt;&lt;br /&gt;
			&amp;lt;team name=&amp;quot;red&amp;quot; victorious=&amp;quot;false&amp;quot; score=&amp;quot;885&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;players&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;1&amp;quot; name=&amp;quot;Anissa&amp;quot; score=&amp;quot;614&amp;quot; victorious=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;2&amp;quot; name=&amp;quot;Jesus&amp;quot; score=&amp;quot;157&amp;quot; victorious=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;3&amp;quot; name=&amp;quot;Erick&amp;quot; score=&amp;quot;17&amp;quot; victorious=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;4&amp;quot; name=&amp;quot;Verena&amp;quot; score=&amp;quot;97&amp;quot; victorious=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
				&amp;lt;/players&amp;gt;&lt;br /&gt;
			&amp;lt;/team&amp;gt;&lt;br /&gt;
			&amp;lt;team name=&amp;quot;blue&amp;quot; victorious=&amp;quot;true&amp;quot; score=&amp;quot;2682&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;players&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;5&amp;quot; name=&amp;quot;Fredric&amp;quot; score=&amp;quot;729&amp;quot; victorious=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;6&amp;quot; name=&amp;quot;Lynda&amp;quot; score=&amp;quot;573&amp;quot; victorious=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;7&amp;quot; name=&amp;quot;Ingrid&amp;quot; score=&amp;quot;958&amp;quot; victorious=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;8&amp;quot; name=&amp;quot;Charmaine&amp;quot; score=&amp;quot;422&amp;quot; victorious=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
				&amp;lt;/players&amp;gt;&lt;br /&gt;
			&amp;lt;/team&amp;gt;&lt;br /&gt;
		&amp;lt;/teams&amp;gt;&lt;br /&gt;
	&amp;lt;/match&amp;gt;&lt;br /&gt;
	&amp;lt;match id=&amp;quot;2&amp;quot; type=&amp;quot;dm&amp;quot; duration=&amp;quot;00:31:10&amp;quot; created=&amp;quot;2002-09-23-14:10&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;players&amp;gt;&lt;br /&gt;
			&amp;lt;player id=&amp;quot;9&amp;quot; name=&amp;quot;Rosa&amp;quot; score=&amp;quot;24&amp;quot; victorious=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
			&amp;lt;player id=&amp;quot;10&amp;quot; name=&amp;quot;Jolyn&amp;quot; score=&amp;quot;85&amp;quot; victorious=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
			&amp;lt;player id=&amp;quot;11&amp;quot; name=&amp;quot;Kristyn&amp;quot; score=&amp;quot;61&amp;quot; victorious=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;/players&amp;gt;&lt;br /&gt;
	&amp;lt;/match&amp;gt;&lt;br /&gt;
	&amp;lt;match id=&amp;quot;3&amp;quot; type=&amp;quot;dm&amp;quot; duration=&amp;quot;00:25:50&amp;quot; created=&amp;quot;2002-09-24-16:05&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;players&amp;gt;&lt;br /&gt;
			&amp;lt;player id=&amp;quot;2&amp;quot; name=&amp;quot;Jesus&amp;quot; score=&amp;quot;67&amp;quot; victorious=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
			&amp;lt;player id=&amp;quot;1&amp;quot; name=&amp;quot;Anissa&amp;quot; score=&amp;quot;106&amp;quot; victorious=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
			&amp;lt;player id=&amp;quot;6&amp;quot; name=&amp;quot;Lynda&amp;quot; score=&amp;quot;99&amp;quot; victorious=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;/players&amp;gt;&lt;br /&gt;
	&amp;lt;/match&amp;gt;&lt;br /&gt;
	&amp;lt;match id=&amp;quot;4&amp;quot; type=&amp;quot;tdm&amp;quot; duration=&amp;quot;00:51:19&amp;quot; created=&amp;quot;2002-09-25-23:31&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;teams&amp;gt;&lt;br /&gt;
			&amp;lt;team name=&amp;quot;red&amp;quot; victorious=&amp;quot;true&amp;quot; score=&amp;quot;1882&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;players&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;1&amp;quot; name=&amp;quot;Anissa&amp;quot; score=&amp;quot;1005&amp;quot; victorious=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;2&amp;quot; name=&amp;quot;Jesus&amp;quot; score=&amp;quot;794&amp;quot; victorious=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;3&amp;quot; name=&amp;quot;Erick&amp;quot; score=&amp;quot;81&amp;quot; victorious=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;4&amp;quot; name=&amp;quot;Verena&amp;quot; score=&amp;quot;2&amp;quot; victorious=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
				&amp;lt;/players&amp;gt;&lt;br /&gt;
			&amp;lt;/team&amp;gt;&lt;br /&gt;
			&amp;lt;team name=&amp;quot;blue&amp;quot; victorious=&amp;quot;false&amp;quot; score=&amp;quot;1560&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;players&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;5&amp;quot; name=&amp;quot;Fredric&amp;quot; score=&amp;quot;710&amp;quot; victorious=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;6&amp;quot; name=&amp;quot;Lynda&amp;quot; score=&amp;quot;496&amp;quot; victorious=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;7&amp;quot; name=&amp;quot;Ingrid&amp;quot; score=&amp;quot;194&amp;quot; victorious=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;8&amp;quot; name=&amp;quot;Charmaine&amp;quot; score=&amp;quot;160&amp;quot; victorious=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
				&amp;lt;/players&amp;gt;&lt;br /&gt;
			&amp;lt;/team&amp;gt;&lt;br /&gt;
		&amp;lt;/teams&amp;gt;&lt;br /&gt;
	&amp;lt;/match&amp;gt;&lt;br /&gt;
&amp;lt;/matches&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== XSD ===&lt;br /&gt;
&amp;lt;pre&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;
&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;matches&amp;quot;&amp;gt;&lt;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;match&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element minOccurs=&amp;quot;0&amp;quot; name=&amp;quot;players&amp;quot;&amp;gt;&lt;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;player&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;id&amp;quot; type=&amp;quot;xs:unsignedInt&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;name&amp;quot; type=&amp;quot;xs:string&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;score&amp;quot; type=&amp;quot;xs:unsignedInt&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;victorious&amp;quot; type=&amp;quot;xs:boolean&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:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element minOccurs=&amp;quot;0&amp;quot; name=&amp;quot;teams&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element minOccurs=&amp;quot;2&amp;quot; maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;team&amp;quot;&amp;gt;&lt;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;players&amp;quot;&amp;gt;&lt;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;player&amp;quot;&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                    &amp;lt;xs:attribute name=&amp;quot;id&amp;quot; type=&amp;quot;xs:unsignedInt&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                                    &amp;lt;xs:attribute name=&amp;quot;name&amp;quot; type=&amp;quot;xs:string&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                                    &amp;lt;xs:attribute name=&amp;quot;score&amp;quot; type=&amp;quot;xs:unsignedInt&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                                    &amp;lt;xs:attribute name=&amp;quot;victorious&amp;quot; type=&amp;quot;xs:boolean&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:element&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;name&amp;quot; type=&amp;quot;xs:string&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;victorious&amp;quot; type=&amp;quot;xs:boolean&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;score&amp;quot; type=&amp;quot;xs:unsignedInt&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:element&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:unsignedInt&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xs:attribute name=&amp;quot;type&amp;quot; type=&amp;quot;xs:string&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xs:attribute name=&amp;quot;duration&amp;quot; type=&amp;quot;xs:time&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xs:attribute name=&amp;quot;created&amp;quot; type=&amp;quot;xs:date&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:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== XSLT ===&lt;br /&gt;
&amp;lt;pre&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;
&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;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:output method=&amp;quot;html&amp;quot; encoding=&amp;quot;utf-8&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:text disable-output-escaping=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;amp;lt;!DOCTYPE html&amp;amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
    &amp;lt;html&amp;gt;&lt;br /&gt;
      &amp;lt;body&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Game matches:&amp;lt;/h2&amp;gt;        &lt;br /&gt;
          &amp;lt;xsl:for-each select=&amp;quot;matches/match&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;table border=&amp;quot;1&amp;quot; style=&amp;quot;margin: 10px; float: left;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:when test=&amp;quot;@type = &#039;tdm&#039;&amp;quot;&amp;gt;                                &lt;br /&gt;
                  &amp;lt;tr style=&amp;quot;background-color: #917A56;&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;th&amp;gt;Player&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;th&amp;gt;Team&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;th&amp;gt;Score&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;th&amp;gt;Victorious&amp;lt;/th&amp;gt;&lt;br /&gt;
                  &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:for-each select=&amp;quot;teams/team&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:for-each select=&amp;quot;players/player&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:when test=&amp;quot;position() mod 2 = 0&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:text disable-output-escaping=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;amp;lt;tr style=&amp;quot;background-color: #FEFFC2;&amp;quot;&amp;amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:text&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:text disable-output-escaping=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;amp;lt;tr style=&amp;quot;background-color: #B4BA6C;&amp;quot;&amp;amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:text&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;td&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;@name&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;td&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;../../@name&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;td&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;@score&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;td&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;@victorious&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:text disable-output-escaping=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;amp;lt;/tr&amp;amp;gt;&lt;br /&gt;
                    &amp;lt;/xsl:text&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;/xsl:when&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                &amp;lt;tr style=&amp;quot;background-color: #917A56;&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;th&amp;gt;Player&amp;lt;/th&amp;gt;&lt;br /&gt;
                  &amp;lt;th&amp;gt;Score&amp;lt;/th&amp;gt;&lt;br /&gt;
                  &amp;lt;th&amp;gt;Victorious&amp;lt;/th&amp;gt;&lt;br /&gt;
                &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:for-each select=&amp;quot;players/player&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:when test=&amp;quot;position() mod 2 = 0&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:text disable-output-escaping=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;amp;lt;tr style=&amp;quot;background-color: #FEFFC2;&amp;quot;&amp;amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:text&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:text disable-output-escaping=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;amp;lt;tr style=&amp;quot;background-color: #B4BA6C;&amp;quot;&amp;amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:text&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;td&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;@name&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;@score&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;@victorious&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:text disable-output-escaping=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;amp;lt;/tr&amp;amp;gt;&lt;br /&gt;
                  &amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:for-each&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;/table&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;pre&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;
&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;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:output method=&amp;quot;xml&amp;quot; encoding=&amp;quot;utf-8&amp;quot; indent=&amp;quot;yes&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;matches&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;matches/match&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:when test=&amp;quot;@type = &#039;tdm&#039;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;match&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;type&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;@type&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&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;@duration&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:attribute name=&amp;quot;created&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;@created&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;teams&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:for-each select=&amp;quot;teams/team&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;team&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:attribute name=&amp;quot;name&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;@name&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:attribute name=&amp;quot;victorious&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;@victorious&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:attribute name=&amp;quot;score&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;@score&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                    &amp;lt;players&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:for-each select=&amp;quot;players/player&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;player&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;name&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;@name&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                          &amp;lt;xsl:attribute name=&amp;quot;victorious&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;@victorious&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                          &amp;lt;xsl:attribute name=&amp;quot;score&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;@score&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                        &amp;lt;/player&amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:for-each&amp;gt;&amp;lt;!-- FOREACH PLAYER ENDS HERE --&amp;gt;&lt;br /&gt;
                    &amp;lt;/players&amp;gt;&lt;br /&gt;
                  &amp;lt;/team&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:for-each&amp;gt;&amp;lt;!-- FOREACH TEAM ENDS HERE --&amp;gt;&lt;br /&gt;
              &amp;lt;/teams&amp;gt;                                  &lt;br /&gt;
            &amp;lt;/match&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&amp;lt;!-- FOREACH MATCH ENDS HERE --&amp;gt;   &lt;br /&gt;
    &amp;lt;/matches&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;/div&gt;</summary>
		<author><name>Jvarus</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Hello_Kitty&amp;diff=48319</id>
		<title>Hello Kitty</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Hello_Kitty&amp;diff=48319"/>
		<updated>2012-05-20T20:04:09Z</updated>

		<summary type="html">&lt;p&gt;Jvarus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== LIIKMED ===&lt;br /&gt;
* Herki Pärn&lt;br /&gt;
* Jaanus Varus&lt;br /&gt;
* Fred Mihkelsoo&lt;br /&gt;
&lt;br /&gt;
=== Klientrakendus ===&lt;br /&gt;
&lt;br /&gt;
Klientrakendus on poolik! Eeldatav lõppkuupäev 21.05.2012.&lt;br /&gt;
&lt;br /&gt;
Klientrakendus kujutab endast Kurt Jaegersi poolt XNA platvormile loodud mängu Asteroid Belt Assault porti html5&#039;le. Antud mängu lähtekood ja graafilised/audio komponendid on vabavaraliselt kasutatavad.&lt;br /&gt;
Mängu hostitakse Asp.Net website&#039;il. Rakendus kasutab skooride haldamiseks oma loodud veebiteenust.&lt;br /&gt;
&lt;br /&gt;
Klientrakendus koos veebiteenuse ja veebiteenuse andmebaasi backupiga on saadaval siit:&lt;br /&gt;
http://www.upload.ee/files/2359630/ITK_20.05.2012.rar.html&lt;br /&gt;
&lt;br /&gt;
=== Veebiteenus ===&lt;br /&gt;
&lt;br /&gt;
Veebiteenus on poolik! Eeldatav lõppkuupäev 21.05.2012.&lt;br /&gt;
&lt;br /&gt;
Veebiteenuse eesmärgiks on pakkuda võimalust mänguettevõtjatele registreerida nende kasutajaid, mänge ning hallata nende skoore üle veebiteenuse.&lt;br /&gt;
Veebiteenus on loodud WCF tehnoloogia abil. Andmeid hoitakse MSSQL 2008 r2 andmebaasis. Kasutajate autentimine käib üle andmebaasi (forms authentication). Suhtlus veebiteenuse ja andmebaasi vahel käib üle LINQu. &lt;br /&gt;
Veebiteenus pakub andmete täielikuks haldamiseks basicHttp endpointi. Andmed on turvatud üle SSL protokolli. Samuti on andmete lugemine võimalik ka üle webHttp endpointi, läbi mille lubatakse teatud funktsioonidele läbi brauseri ligipääsu GET päringuga. Viimaseks endpointiks on juba defaultina ära konfitud mexHttp endpoint, mis annab klientrakendusele ülevaate teenusest ning vaheklasside struktuuri.&lt;br /&gt;
&lt;br /&gt;
Veebiteenuse lähtekood koos andmebaasi backupiga on saadavalt klientrakenduse sektsiooni all.&lt;br /&gt;
&lt;br /&gt;
=== XML ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot; ?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;matches xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; xsi:noNamespaceSchemaLocation=&amp;quot;game_matches.xsd&amp;quot;&amp;gt;  &lt;br /&gt;
  &amp;lt;match id=&amp;quot;1&amp;quot; type=&amp;quot;tdm&amp;quot; duration=&amp;quot;00:40:33&amp;quot; created=&amp;quot;2002-09-24-17:31&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;teams&amp;gt;&lt;br /&gt;
			&amp;lt;team name=&amp;quot;red&amp;quot; victorious=&amp;quot;false&amp;quot; score=&amp;quot;885&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;players&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;1&amp;quot; name=&amp;quot;Anissa&amp;quot; score=&amp;quot;614&amp;quot; victorious=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;2&amp;quot; name=&amp;quot;Jesus&amp;quot; score=&amp;quot;157&amp;quot; victorious=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;3&amp;quot; name=&amp;quot;Erick&amp;quot; score=&amp;quot;17&amp;quot; victorious=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;4&amp;quot; name=&amp;quot;Verena&amp;quot; score=&amp;quot;97&amp;quot; victorious=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
				&amp;lt;/players&amp;gt;&lt;br /&gt;
			&amp;lt;/team&amp;gt;&lt;br /&gt;
			&amp;lt;team name=&amp;quot;blue&amp;quot; victorious=&amp;quot;true&amp;quot; score=&amp;quot;2682&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;players&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;5&amp;quot; name=&amp;quot;Fredric&amp;quot; score=&amp;quot;729&amp;quot; victorious=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;6&amp;quot; name=&amp;quot;Lynda&amp;quot; score=&amp;quot;573&amp;quot; victorious=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;7&amp;quot; name=&amp;quot;Ingrid&amp;quot; score=&amp;quot;958&amp;quot; victorious=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;8&amp;quot; name=&amp;quot;Charmaine&amp;quot; score=&amp;quot;422&amp;quot; victorious=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
				&amp;lt;/players&amp;gt;&lt;br /&gt;
			&amp;lt;/team&amp;gt;&lt;br /&gt;
		&amp;lt;/teams&amp;gt;&lt;br /&gt;
	&amp;lt;/match&amp;gt;&lt;br /&gt;
	&amp;lt;match id=&amp;quot;2&amp;quot; type=&amp;quot;dm&amp;quot; duration=&amp;quot;00:31:10&amp;quot; created=&amp;quot;2002-09-23-14:10&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;players&amp;gt;&lt;br /&gt;
			&amp;lt;player id=&amp;quot;9&amp;quot; name=&amp;quot;Rosa&amp;quot; score=&amp;quot;24&amp;quot; victorious=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
			&amp;lt;player id=&amp;quot;10&amp;quot; name=&amp;quot;Jolyn&amp;quot; score=&amp;quot;85&amp;quot; victorious=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
			&amp;lt;player id=&amp;quot;11&amp;quot; name=&amp;quot;Kristyn&amp;quot; score=&amp;quot;61&amp;quot; victorious=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;/players&amp;gt;&lt;br /&gt;
	&amp;lt;/match&amp;gt;&lt;br /&gt;
	&amp;lt;match id=&amp;quot;3&amp;quot; type=&amp;quot;dm&amp;quot; duration=&amp;quot;00:25:50&amp;quot; created=&amp;quot;2002-09-24-16:05&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;players&amp;gt;&lt;br /&gt;
			&amp;lt;player id=&amp;quot;2&amp;quot; name=&amp;quot;Jesus&amp;quot; score=&amp;quot;67&amp;quot; victorious=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
			&amp;lt;player id=&amp;quot;1&amp;quot; name=&amp;quot;Anissa&amp;quot; score=&amp;quot;106&amp;quot; victorious=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
			&amp;lt;player id=&amp;quot;6&amp;quot; name=&amp;quot;Lynda&amp;quot; score=&amp;quot;99&amp;quot; victorious=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;/players&amp;gt;&lt;br /&gt;
	&amp;lt;/match&amp;gt;&lt;br /&gt;
	&amp;lt;match id=&amp;quot;4&amp;quot; type=&amp;quot;tdm&amp;quot; duration=&amp;quot;00:51:19&amp;quot; created=&amp;quot;2002-09-25-23:31&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;teams&amp;gt;&lt;br /&gt;
			&amp;lt;team name=&amp;quot;red&amp;quot; victorious=&amp;quot;true&amp;quot; score=&amp;quot;1882&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;players&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;1&amp;quot; name=&amp;quot;Anissa&amp;quot; score=&amp;quot;1005&amp;quot; victorious=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;2&amp;quot; name=&amp;quot;Jesus&amp;quot; score=&amp;quot;794&amp;quot; victorious=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;3&amp;quot; name=&amp;quot;Erick&amp;quot; score=&amp;quot;81&amp;quot; victorious=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;4&amp;quot; name=&amp;quot;Verena&amp;quot; score=&amp;quot;2&amp;quot; victorious=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
				&amp;lt;/players&amp;gt;&lt;br /&gt;
			&amp;lt;/team&amp;gt;&lt;br /&gt;
			&amp;lt;team name=&amp;quot;blue&amp;quot; victorious=&amp;quot;false&amp;quot; score=&amp;quot;1560&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;players&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;5&amp;quot; name=&amp;quot;Fredric&amp;quot; score=&amp;quot;710&amp;quot; victorious=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;6&amp;quot; name=&amp;quot;Lynda&amp;quot; score=&amp;quot;496&amp;quot; victorious=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;7&amp;quot; name=&amp;quot;Ingrid&amp;quot; score=&amp;quot;194&amp;quot; victorious=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;8&amp;quot; name=&amp;quot;Charmaine&amp;quot; score=&amp;quot;160&amp;quot; victorious=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
				&amp;lt;/players&amp;gt;&lt;br /&gt;
			&amp;lt;/team&amp;gt;&lt;br /&gt;
		&amp;lt;/teams&amp;gt;&lt;br /&gt;
	&amp;lt;/match&amp;gt;&lt;br /&gt;
&amp;lt;/matches&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== XSD ===&lt;br /&gt;
&amp;lt;pre&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;
&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;matches&amp;quot;&amp;gt;&lt;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;match&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element minOccurs=&amp;quot;0&amp;quot; name=&amp;quot;players&amp;quot;&amp;gt;&lt;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;player&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;id&amp;quot; type=&amp;quot;xs:unsignedInt&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;name&amp;quot; type=&amp;quot;xs:string&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;score&amp;quot; type=&amp;quot;xs:unsignedInt&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;victorious&amp;quot; type=&amp;quot;xs:boolean&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:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element minOccurs=&amp;quot;0&amp;quot; name=&amp;quot;teams&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element minOccurs=&amp;quot;2&amp;quot; maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;team&amp;quot;&amp;gt;&lt;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;players&amp;quot;&amp;gt;&lt;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;player&amp;quot;&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                    &amp;lt;xs:attribute name=&amp;quot;id&amp;quot; type=&amp;quot;xs:unsignedInt&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                                    &amp;lt;xs:attribute name=&amp;quot;name&amp;quot; type=&amp;quot;xs:string&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                                    &amp;lt;xs:attribute name=&amp;quot;score&amp;quot; type=&amp;quot;xs:unsignedInt&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                                    &amp;lt;xs:attribute name=&amp;quot;victorious&amp;quot; type=&amp;quot;xs:boolean&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:element&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;name&amp;quot; type=&amp;quot;xs:string&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;victorious&amp;quot; type=&amp;quot;xs:boolean&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;score&amp;quot; type=&amp;quot;xs:unsignedInt&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:element&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:unsignedInt&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xs:attribute name=&amp;quot;type&amp;quot; type=&amp;quot;xs:string&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xs:attribute name=&amp;quot;duration&amp;quot; type=&amp;quot;xs:time&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xs:attribute name=&amp;quot;created&amp;quot; type=&amp;quot;xs:date&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:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== XSLT ===&lt;br /&gt;
&amp;lt;pre&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;
&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;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:output method=&amp;quot;html&amp;quot; encoding=&amp;quot;utf-8&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:text disable-output-escaping=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;amp;lt;!DOCTYPE html&amp;amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
    &amp;lt;html&amp;gt;&lt;br /&gt;
      &amp;lt;body&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Game matches:&amp;lt;/h2&amp;gt;        &lt;br /&gt;
          &amp;lt;xsl:for-each select=&amp;quot;matches/match&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;table border=&amp;quot;1&amp;quot; style=&amp;quot;margin: 10px; float: left;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:when test=&amp;quot;@type = &#039;tdm&#039;&amp;quot;&amp;gt;                                &lt;br /&gt;
                  &amp;lt;tr style=&amp;quot;background-color: #917A56;&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;th&amp;gt;Player&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;th&amp;gt;Team&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;th&amp;gt;Score&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;th&amp;gt;Victorious&amp;lt;/th&amp;gt;&lt;br /&gt;
                  &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:for-each select=&amp;quot;teams/team&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:for-each select=&amp;quot;players/player&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:when test=&amp;quot;position() mod 2 = 0&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:text disable-output-escaping=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;amp;lt;tr style=&amp;quot;background-color: #FEFFC2;&amp;quot;&amp;amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:text&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:text disable-output-escaping=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;amp;lt;tr style=&amp;quot;background-color: #B4BA6C;&amp;quot;&amp;amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:text&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;td&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;@name&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;td&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;../../@name&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;td&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;@score&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;td&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;@victorious&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:text disable-output-escaping=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;amp;lt;/tr&amp;amp;gt;&lt;br /&gt;
                    &amp;lt;/xsl:text&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;/xsl:when&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                &amp;lt;tr style=&amp;quot;background-color: #917A56;&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;th&amp;gt;Player&amp;lt;/th&amp;gt;&lt;br /&gt;
                  &amp;lt;th&amp;gt;Score&amp;lt;/th&amp;gt;&lt;br /&gt;
                  &amp;lt;th&amp;gt;Victorious&amp;lt;/th&amp;gt;&lt;br /&gt;
                &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:for-each select=&amp;quot;players/player&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:when test=&amp;quot;position() mod 2 = 0&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:text disable-output-escaping=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;amp;lt;tr style=&amp;quot;background-color: #FEFFC2;&amp;quot;&amp;amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:text&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:text disable-output-escaping=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;amp;lt;tr style=&amp;quot;background-color: #B4BA6C;&amp;quot;&amp;amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:text&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;td&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;@name&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;@score&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;@victorious&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:text disable-output-escaping=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;amp;lt;/tr&amp;amp;gt;&lt;br /&gt;
                  &amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:for-each&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;/table&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;pre&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;
&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;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:output method=&amp;quot;xml&amp;quot; encoding=&amp;quot;utf-8&amp;quot; indent=&amp;quot;yes&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;matches&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;matches/match&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:when test=&amp;quot;@type = &#039;tdm&#039;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;match&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;type&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;@type&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&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;@duration&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:attribute name=&amp;quot;created&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;@created&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;teams&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:for-each select=&amp;quot;teams/team&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;team&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:attribute name=&amp;quot;name&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;@name&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:attribute name=&amp;quot;victorious&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;@victorious&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:attribute name=&amp;quot;score&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;@score&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                    &amp;lt;players&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:for-each select=&amp;quot;players/player&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;player&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;name&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;@name&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                          &amp;lt;xsl:attribute name=&amp;quot;victorious&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;@victorious&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                          &amp;lt;xsl:attribute name=&amp;quot;score&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;@score&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                        &amp;lt;/player&amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:for-each&amp;gt;&amp;lt;!-- FOREACH PLAYER ENDS HERE --&amp;gt;&lt;br /&gt;
                    &amp;lt;/players&amp;gt;&lt;br /&gt;
                  &amp;lt;/team&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:for-each&amp;gt;&amp;lt;!-- FOREACH TEAM ENDS HERE --&amp;gt;&lt;br /&gt;
              &amp;lt;/teams&amp;gt;                                  &lt;br /&gt;
            &amp;lt;/match&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&amp;lt;!-- FOREACH MATCH ENDS HERE --&amp;gt;   &lt;br /&gt;
    &amp;lt;/matches&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;/div&gt;</summary>
		<author><name>Jvarus</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Hello_Kitty&amp;diff=48318</id>
		<title>Hello Kitty</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Hello_Kitty&amp;diff=48318"/>
		<updated>2012-05-20T20:02:07Z</updated>

		<summary type="html">&lt;p&gt;Jvarus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== LIIKMED ===&lt;br /&gt;
* Herki Pärn&lt;br /&gt;
* Jaanus Varus&lt;br /&gt;
* Fred Mihkelsoo&lt;br /&gt;
&lt;br /&gt;
=== Klientrakendus ===&lt;br /&gt;
&lt;br /&gt;
Klientrakendus on poolik!&lt;br /&gt;
&lt;br /&gt;
Klientrakendus kujutab endast Kurt Jaegersi poolt XNA platvormile loodud mängu Asteroid Belt Assault porti html5&#039;le. Antud mängu lähtekood ja graafilised/audio komponendid on vabavaraliselt kasutatavad.&lt;br /&gt;
Mängu hostitakse Asp.Net website&#039;il. Rakendus kasutab skooride haldamiseks oma loodud veebiteenust.&lt;br /&gt;
&lt;br /&gt;
Klientrakendus koos veebiteenuse ja veebiteenuse andmebaasi backupiga on saadaval siit:&lt;br /&gt;
http://www.upload.ee/files/2359630/ITK_20.05.2012.rar.html&lt;br /&gt;
&lt;br /&gt;
=== Veebiteenus ===&lt;br /&gt;
&lt;br /&gt;
Veebiteenus on poolik!&lt;br /&gt;
&lt;br /&gt;
Veebiteenuse eesmärgiks on pakkuda võimalust mänguettevõtjatele registreerida nende kasutajaid, mänge ning hallata nende skoore üle veebiteenuse.&lt;br /&gt;
Veebiteenus on loodud WCF tehnoloogia abil. Andmeid hoitakse MSSQL 2008 r2 andmebaasis. Kasutajate autentimine käib üle andmebaasi (forms authentication). Suhtlus veebiteenuse ja andmebaasi vahel käib üle LINQu. &lt;br /&gt;
Veebiteenus pakub andmete täielikuks haldamiseks basicHttp endpointi. Andmed on turvatud üle SSL protokolli. Samuti on andmete lugemine võimalik ka üle webHttp endpointi, läbi mille lubatakse teatud funktsioonidele läbi brauseri ligipääsu GET päringuga. Viimaseks endpointiks on juba defaultina ära konfitud mexHttp endpoint, mis annab klientrakendusele ülevaate teenusest ning vaheklasside struktuuri.&lt;br /&gt;
&lt;br /&gt;
Veebiteenuse lähtekood koos andmebaasi backupiga on saadavalt klientrakenduse sektsiooni all.&lt;br /&gt;
&lt;br /&gt;
=== XML ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot; ?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;matches xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; xsi:noNamespaceSchemaLocation=&amp;quot;game_matches.xsd&amp;quot;&amp;gt;  &lt;br /&gt;
  &amp;lt;match id=&amp;quot;1&amp;quot; type=&amp;quot;tdm&amp;quot; duration=&amp;quot;00:40:33&amp;quot; created=&amp;quot;2002-09-24-17:31&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;teams&amp;gt;&lt;br /&gt;
			&amp;lt;team name=&amp;quot;red&amp;quot; victorious=&amp;quot;false&amp;quot; score=&amp;quot;885&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;players&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;1&amp;quot; name=&amp;quot;Anissa&amp;quot; score=&amp;quot;614&amp;quot; victorious=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;2&amp;quot; name=&amp;quot;Jesus&amp;quot; score=&amp;quot;157&amp;quot; victorious=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;3&amp;quot; name=&amp;quot;Erick&amp;quot; score=&amp;quot;17&amp;quot; victorious=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;4&amp;quot; name=&amp;quot;Verena&amp;quot; score=&amp;quot;97&amp;quot; victorious=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
				&amp;lt;/players&amp;gt;&lt;br /&gt;
			&amp;lt;/team&amp;gt;&lt;br /&gt;
			&amp;lt;team name=&amp;quot;blue&amp;quot; victorious=&amp;quot;true&amp;quot; score=&amp;quot;2682&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;players&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;5&amp;quot; name=&amp;quot;Fredric&amp;quot; score=&amp;quot;729&amp;quot; victorious=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;6&amp;quot; name=&amp;quot;Lynda&amp;quot; score=&amp;quot;573&amp;quot; victorious=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;7&amp;quot; name=&amp;quot;Ingrid&amp;quot; score=&amp;quot;958&amp;quot; victorious=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;8&amp;quot; name=&amp;quot;Charmaine&amp;quot; score=&amp;quot;422&amp;quot; victorious=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
				&amp;lt;/players&amp;gt;&lt;br /&gt;
			&amp;lt;/team&amp;gt;&lt;br /&gt;
		&amp;lt;/teams&amp;gt;&lt;br /&gt;
	&amp;lt;/match&amp;gt;&lt;br /&gt;
	&amp;lt;match id=&amp;quot;2&amp;quot; type=&amp;quot;dm&amp;quot; duration=&amp;quot;00:31:10&amp;quot; created=&amp;quot;2002-09-23-14:10&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;players&amp;gt;&lt;br /&gt;
			&amp;lt;player id=&amp;quot;9&amp;quot; name=&amp;quot;Rosa&amp;quot; score=&amp;quot;24&amp;quot; victorious=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
			&amp;lt;player id=&amp;quot;10&amp;quot; name=&amp;quot;Jolyn&amp;quot; score=&amp;quot;85&amp;quot; victorious=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
			&amp;lt;player id=&amp;quot;11&amp;quot; name=&amp;quot;Kristyn&amp;quot; score=&amp;quot;61&amp;quot; victorious=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;/players&amp;gt;&lt;br /&gt;
	&amp;lt;/match&amp;gt;&lt;br /&gt;
	&amp;lt;match id=&amp;quot;3&amp;quot; type=&amp;quot;dm&amp;quot; duration=&amp;quot;00:25:50&amp;quot; created=&amp;quot;2002-09-24-16:05&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;players&amp;gt;&lt;br /&gt;
			&amp;lt;player id=&amp;quot;2&amp;quot; name=&amp;quot;Jesus&amp;quot; score=&amp;quot;67&amp;quot; victorious=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
			&amp;lt;player id=&amp;quot;1&amp;quot; name=&amp;quot;Anissa&amp;quot; score=&amp;quot;106&amp;quot; victorious=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
			&amp;lt;player id=&amp;quot;6&amp;quot; name=&amp;quot;Lynda&amp;quot; score=&amp;quot;99&amp;quot; victorious=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;/players&amp;gt;&lt;br /&gt;
	&amp;lt;/match&amp;gt;&lt;br /&gt;
	&amp;lt;match id=&amp;quot;4&amp;quot; type=&amp;quot;tdm&amp;quot; duration=&amp;quot;00:51:19&amp;quot; created=&amp;quot;2002-09-25-23:31&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;teams&amp;gt;&lt;br /&gt;
			&amp;lt;team name=&amp;quot;red&amp;quot; victorious=&amp;quot;true&amp;quot; score=&amp;quot;1882&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;players&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;1&amp;quot; name=&amp;quot;Anissa&amp;quot; score=&amp;quot;1005&amp;quot; victorious=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;2&amp;quot; name=&amp;quot;Jesus&amp;quot; score=&amp;quot;794&amp;quot; victorious=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;3&amp;quot; name=&amp;quot;Erick&amp;quot; score=&amp;quot;81&amp;quot; victorious=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;4&amp;quot; name=&amp;quot;Verena&amp;quot; score=&amp;quot;2&amp;quot; victorious=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
				&amp;lt;/players&amp;gt;&lt;br /&gt;
			&amp;lt;/team&amp;gt;&lt;br /&gt;
			&amp;lt;team name=&amp;quot;blue&amp;quot; victorious=&amp;quot;false&amp;quot; score=&amp;quot;1560&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;players&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;5&amp;quot; name=&amp;quot;Fredric&amp;quot; score=&amp;quot;710&amp;quot; victorious=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;6&amp;quot; name=&amp;quot;Lynda&amp;quot; score=&amp;quot;496&amp;quot; victorious=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;7&amp;quot; name=&amp;quot;Ingrid&amp;quot; score=&amp;quot;194&amp;quot; victorious=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;8&amp;quot; name=&amp;quot;Charmaine&amp;quot; score=&amp;quot;160&amp;quot; victorious=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
				&amp;lt;/players&amp;gt;&lt;br /&gt;
			&amp;lt;/team&amp;gt;&lt;br /&gt;
		&amp;lt;/teams&amp;gt;&lt;br /&gt;
	&amp;lt;/match&amp;gt;&lt;br /&gt;
&amp;lt;/matches&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== XSD ===&lt;br /&gt;
&amp;lt;pre&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;
&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;matches&amp;quot;&amp;gt;&lt;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;match&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element minOccurs=&amp;quot;0&amp;quot; name=&amp;quot;players&amp;quot;&amp;gt;&lt;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;player&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;id&amp;quot; type=&amp;quot;xs:unsignedInt&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;name&amp;quot; type=&amp;quot;xs:string&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;score&amp;quot; type=&amp;quot;xs:unsignedInt&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;victorious&amp;quot; type=&amp;quot;xs:boolean&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:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element minOccurs=&amp;quot;0&amp;quot; name=&amp;quot;teams&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element minOccurs=&amp;quot;2&amp;quot; maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;team&amp;quot;&amp;gt;&lt;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;players&amp;quot;&amp;gt;&lt;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;player&amp;quot;&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                    &amp;lt;xs:attribute name=&amp;quot;id&amp;quot; type=&amp;quot;xs:unsignedInt&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                                    &amp;lt;xs:attribute name=&amp;quot;name&amp;quot; type=&amp;quot;xs:string&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                                    &amp;lt;xs:attribute name=&amp;quot;score&amp;quot; type=&amp;quot;xs:unsignedInt&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                                    &amp;lt;xs:attribute name=&amp;quot;victorious&amp;quot; type=&amp;quot;xs:boolean&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:element&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;name&amp;quot; type=&amp;quot;xs:string&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;victorious&amp;quot; type=&amp;quot;xs:boolean&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;score&amp;quot; type=&amp;quot;xs:unsignedInt&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:element&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:unsignedInt&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xs:attribute name=&amp;quot;type&amp;quot; type=&amp;quot;xs:string&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xs:attribute name=&amp;quot;duration&amp;quot; type=&amp;quot;xs:time&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xs:attribute name=&amp;quot;created&amp;quot; type=&amp;quot;xs:date&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:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== XSLT ===&lt;br /&gt;
&amp;lt;pre&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;
&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;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:output method=&amp;quot;html&amp;quot; encoding=&amp;quot;utf-8&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:text disable-output-escaping=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;amp;lt;!DOCTYPE html&amp;amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
    &amp;lt;html&amp;gt;&lt;br /&gt;
      &amp;lt;body&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Game matches:&amp;lt;/h2&amp;gt;        &lt;br /&gt;
          &amp;lt;xsl:for-each select=&amp;quot;matches/match&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;table border=&amp;quot;1&amp;quot; style=&amp;quot;margin: 10px; float: left;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:when test=&amp;quot;@type = &#039;tdm&#039;&amp;quot;&amp;gt;                                &lt;br /&gt;
                  &amp;lt;tr style=&amp;quot;background-color: #917A56;&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;th&amp;gt;Player&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;th&amp;gt;Team&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;th&amp;gt;Score&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;th&amp;gt;Victorious&amp;lt;/th&amp;gt;&lt;br /&gt;
                  &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:for-each select=&amp;quot;teams/team&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:for-each select=&amp;quot;players/player&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:when test=&amp;quot;position() mod 2 = 0&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:text disable-output-escaping=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;amp;lt;tr style=&amp;quot;background-color: #FEFFC2;&amp;quot;&amp;amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:text&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:text disable-output-escaping=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;amp;lt;tr style=&amp;quot;background-color: #B4BA6C;&amp;quot;&amp;amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:text&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;td&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;@name&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;td&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;../../@name&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;td&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;@score&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;td&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;@victorious&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:text disable-output-escaping=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;amp;lt;/tr&amp;amp;gt;&lt;br /&gt;
                    &amp;lt;/xsl:text&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;/xsl:when&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                &amp;lt;tr style=&amp;quot;background-color: #917A56;&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;th&amp;gt;Player&amp;lt;/th&amp;gt;&lt;br /&gt;
                  &amp;lt;th&amp;gt;Score&amp;lt;/th&amp;gt;&lt;br /&gt;
                  &amp;lt;th&amp;gt;Victorious&amp;lt;/th&amp;gt;&lt;br /&gt;
                &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:for-each select=&amp;quot;players/player&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:when test=&amp;quot;position() mod 2 = 0&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:text disable-output-escaping=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;amp;lt;tr style=&amp;quot;background-color: #FEFFC2;&amp;quot;&amp;amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:text&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:text disable-output-escaping=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;amp;lt;tr style=&amp;quot;background-color: #B4BA6C;&amp;quot;&amp;amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:text&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;td&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;@name&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;@score&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;@victorious&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:text disable-output-escaping=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;amp;lt;/tr&amp;amp;gt;&lt;br /&gt;
                  &amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:for-each&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;/table&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;pre&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;
&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;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:output method=&amp;quot;xml&amp;quot; encoding=&amp;quot;utf-8&amp;quot; indent=&amp;quot;yes&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;matches&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;matches/match&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:when test=&amp;quot;@type = &#039;tdm&#039;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;match&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;type&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;@type&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&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;@duration&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:attribute name=&amp;quot;created&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;@created&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;teams&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:for-each select=&amp;quot;teams/team&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;team&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:attribute name=&amp;quot;name&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;@name&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:attribute name=&amp;quot;victorious&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;@victorious&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:attribute name=&amp;quot;score&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;@score&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                    &amp;lt;players&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:for-each select=&amp;quot;players/player&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;player&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;name&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;@name&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                          &amp;lt;xsl:attribute name=&amp;quot;victorious&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;@victorious&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                          &amp;lt;xsl:attribute name=&amp;quot;score&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;@score&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                        &amp;lt;/player&amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:for-each&amp;gt;&amp;lt;!-- FOREACH PLAYER ENDS HERE --&amp;gt;&lt;br /&gt;
                    &amp;lt;/players&amp;gt;&lt;br /&gt;
                  &amp;lt;/team&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:for-each&amp;gt;&amp;lt;!-- FOREACH TEAM ENDS HERE --&amp;gt;&lt;br /&gt;
              &amp;lt;/teams&amp;gt;                                  &lt;br /&gt;
            &amp;lt;/match&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&amp;lt;!-- FOREACH MATCH ENDS HERE --&amp;gt;   &lt;br /&gt;
    &amp;lt;/matches&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;/div&gt;</summary>
		<author><name>Jvarus</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Hello_Kitty&amp;diff=48316</id>
		<title>Hello Kitty</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Hello_Kitty&amp;diff=48316"/>
		<updated>2012-05-20T19:50:11Z</updated>

		<summary type="html">&lt;p&gt;Jvarus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== LIIKMED ===&lt;br /&gt;
* Herki Pärn&lt;br /&gt;
* Jaanus Varus&lt;br /&gt;
* Fred Mihkelsoo&lt;br /&gt;
&lt;br /&gt;
=== XML ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot; ?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;matches xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; xsi:noNamespaceSchemaLocation=&amp;quot;game_matches.xsd&amp;quot;&amp;gt;  &lt;br /&gt;
  &amp;lt;match id=&amp;quot;1&amp;quot; type=&amp;quot;tdm&amp;quot; duration=&amp;quot;00:40:33&amp;quot; created=&amp;quot;2002-09-24-17:31&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;teams&amp;gt;&lt;br /&gt;
			&amp;lt;team name=&amp;quot;red&amp;quot; victorious=&amp;quot;false&amp;quot; score=&amp;quot;885&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;players&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;1&amp;quot; name=&amp;quot;Anissa&amp;quot; score=&amp;quot;614&amp;quot; victorious=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;2&amp;quot; name=&amp;quot;Jesus&amp;quot; score=&amp;quot;157&amp;quot; victorious=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;3&amp;quot; name=&amp;quot;Erick&amp;quot; score=&amp;quot;17&amp;quot; victorious=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;4&amp;quot; name=&amp;quot;Verena&amp;quot; score=&amp;quot;97&amp;quot; victorious=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
				&amp;lt;/players&amp;gt;&lt;br /&gt;
			&amp;lt;/team&amp;gt;&lt;br /&gt;
			&amp;lt;team name=&amp;quot;blue&amp;quot; victorious=&amp;quot;true&amp;quot; score=&amp;quot;2682&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;players&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;5&amp;quot; name=&amp;quot;Fredric&amp;quot; score=&amp;quot;729&amp;quot; victorious=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;6&amp;quot; name=&amp;quot;Lynda&amp;quot; score=&amp;quot;573&amp;quot; victorious=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;7&amp;quot; name=&amp;quot;Ingrid&amp;quot; score=&amp;quot;958&amp;quot; victorious=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;8&amp;quot; name=&amp;quot;Charmaine&amp;quot; score=&amp;quot;422&amp;quot; victorious=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
				&amp;lt;/players&amp;gt;&lt;br /&gt;
			&amp;lt;/team&amp;gt;&lt;br /&gt;
		&amp;lt;/teams&amp;gt;&lt;br /&gt;
	&amp;lt;/match&amp;gt;&lt;br /&gt;
	&amp;lt;match id=&amp;quot;2&amp;quot; type=&amp;quot;dm&amp;quot; duration=&amp;quot;00:31:10&amp;quot; created=&amp;quot;2002-09-23-14:10&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;players&amp;gt;&lt;br /&gt;
			&amp;lt;player id=&amp;quot;9&amp;quot; name=&amp;quot;Rosa&amp;quot; score=&amp;quot;24&amp;quot; victorious=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
			&amp;lt;player id=&amp;quot;10&amp;quot; name=&amp;quot;Jolyn&amp;quot; score=&amp;quot;85&amp;quot; victorious=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
			&amp;lt;player id=&amp;quot;11&amp;quot; name=&amp;quot;Kristyn&amp;quot; score=&amp;quot;61&amp;quot; victorious=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;/players&amp;gt;&lt;br /&gt;
	&amp;lt;/match&amp;gt;&lt;br /&gt;
	&amp;lt;match id=&amp;quot;3&amp;quot; type=&amp;quot;dm&amp;quot; duration=&amp;quot;00:25:50&amp;quot; created=&amp;quot;2002-09-24-16:05&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;players&amp;gt;&lt;br /&gt;
			&amp;lt;player id=&amp;quot;2&amp;quot; name=&amp;quot;Jesus&amp;quot; score=&amp;quot;67&amp;quot; victorious=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
			&amp;lt;player id=&amp;quot;1&amp;quot; name=&amp;quot;Anissa&amp;quot; score=&amp;quot;106&amp;quot; victorious=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
			&amp;lt;player id=&amp;quot;6&amp;quot; name=&amp;quot;Lynda&amp;quot; score=&amp;quot;99&amp;quot; victorious=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;/players&amp;gt;&lt;br /&gt;
	&amp;lt;/match&amp;gt;&lt;br /&gt;
	&amp;lt;match id=&amp;quot;4&amp;quot; type=&amp;quot;tdm&amp;quot; duration=&amp;quot;00:51:19&amp;quot; created=&amp;quot;2002-09-25-23:31&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;teams&amp;gt;&lt;br /&gt;
			&amp;lt;team name=&amp;quot;red&amp;quot; victorious=&amp;quot;true&amp;quot; score=&amp;quot;1882&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;players&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;1&amp;quot; name=&amp;quot;Anissa&amp;quot; score=&amp;quot;1005&amp;quot; victorious=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;2&amp;quot; name=&amp;quot;Jesus&amp;quot; score=&amp;quot;794&amp;quot; victorious=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;3&amp;quot; name=&amp;quot;Erick&amp;quot; score=&amp;quot;81&amp;quot; victorious=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;4&amp;quot; name=&amp;quot;Verena&amp;quot; score=&amp;quot;2&amp;quot; victorious=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
				&amp;lt;/players&amp;gt;&lt;br /&gt;
			&amp;lt;/team&amp;gt;&lt;br /&gt;
			&amp;lt;team name=&amp;quot;blue&amp;quot; victorious=&amp;quot;false&amp;quot; score=&amp;quot;1560&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;players&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;5&amp;quot; name=&amp;quot;Fredric&amp;quot; score=&amp;quot;710&amp;quot; victorious=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;6&amp;quot; name=&amp;quot;Lynda&amp;quot; score=&amp;quot;496&amp;quot; victorious=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;7&amp;quot; name=&amp;quot;Ingrid&amp;quot; score=&amp;quot;194&amp;quot; victorious=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
					&amp;lt;player id=&amp;quot;8&amp;quot; name=&amp;quot;Charmaine&amp;quot; score=&amp;quot;160&amp;quot; victorious=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
				&amp;lt;/players&amp;gt;&lt;br /&gt;
			&amp;lt;/team&amp;gt;&lt;br /&gt;
		&amp;lt;/teams&amp;gt;&lt;br /&gt;
	&amp;lt;/match&amp;gt;&lt;br /&gt;
&amp;lt;/matches&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== XSD ===&lt;br /&gt;
&amp;lt;pre&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;
&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;matches&amp;quot;&amp;gt;&lt;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;match&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element minOccurs=&amp;quot;0&amp;quot; name=&amp;quot;players&amp;quot;&amp;gt;&lt;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;player&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;id&amp;quot; type=&amp;quot;xs:unsignedInt&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;name&amp;quot; type=&amp;quot;xs:string&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;score&amp;quot; type=&amp;quot;xs:unsignedInt&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;victorious&amp;quot; type=&amp;quot;xs:boolean&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:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element minOccurs=&amp;quot;0&amp;quot; name=&amp;quot;teams&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element minOccurs=&amp;quot;2&amp;quot; maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;team&amp;quot;&amp;gt;&lt;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;players&amp;quot;&amp;gt;&lt;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;player&amp;quot;&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                    &amp;lt;xs:attribute name=&amp;quot;id&amp;quot; type=&amp;quot;xs:unsignedInt&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                                    &amp;lt;xs:attribute name=&amp;quot;name&amp;quot; type=&amp;quot;xs:string&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                                    &amp;lt;xs:attribute name=&amp;quot;score&amp;quot; type=&amp;quot;xs:unsignedInt&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                                    &amp;lt;xs:attribute name=&amp;quot;victorious&amp;quot; type=&amp;quot;xs:boolean&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:element&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;name&amp;quot; type=&amp;quot;xs:string&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;victorious&amp;quot; type=&amp;quot;xs:boolean&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;score&amp;quot; type=&amp;quot;xs:unsignedInt&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:element&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:unsignedInt&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xs:attribute name=&amp;quot;type&amp;quot; type=&amp;quot;xs:string&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xs:attribute name=&amp;quot;duration&amp;quot; type=&amp;quot;xs:time&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xs:attribute name=&amp;quot;created&amp;quot; type=&amp;quot;xs:date&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:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== XSLT ===&lt;br /&gt;
&amp;lt;pre&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;
&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;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:output method=&amp;quot;html&amp;quot; encoding=&amp;quot;utf-8&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:text disable-output-escaping=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;amp;lt;!DOCTYPE html&amp;amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
    &amp;lt;html&amp;gt;&lt;br /&gt;
      &amp;lt;body&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Game matches:&amp;lt;/h2&amp;gt;        &lt;br /&gt;
          &amp;lt;xsl:for-each select=&amp;quot;matches/match&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;table border=&amp;quot;1&amp;quot; style=&amp;quot;margin: 10px; float: left;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:when test=&amp;quot;@type = &#039;tdm&#039;&amp;quot;&amp;gt;                                &lt;br /&gt;
                  &amp;lt;tr style=&amp;quot;background-color: #917A56;&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;th&amp;gt;Player&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;th&amp;gt;Team&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;th&amp;gt;Score&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;th&amp;gt;Victorious&amp;lt;/th&amp;gt;&lt;br /&gt;
                  &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:for-each select=&amp;quot;teams/team&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:for-each select=&amp;quot;players/player&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:when test=&amp;quot;position() mod 2 = 0&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;xsl:text disable-output-escaping=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;amp;lt;tr style=&amp;quot;background-color: #FEFFC2;&amp;quot;&amp;amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:text&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:text disable-output-escaping=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;amp;lt;tr style=&amp;quot;background-color: #B4BA6C;&amp;quot;&amp;amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:text&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;td&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;@name&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;td&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;../../@name&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;td&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;@score&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;td&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;@victorious&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:text disable-output-escaping=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;amp;lt;/tr&amp;amp;gt;&lt;br /&gt;
                    &amp;lt;/xsl:text&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;/xsl:when&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                &amp;lt;tr style=&amp;quot;background-color: #917A56;&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;th&amp;gt;Player&amp;lt;/th&amp;gt;&lt;br /&gt;
                  &amp;lt;th&amp;gt;Score&amp;lt;/th&amp;gt;&lt;br /&gt;
                  &amp;lt;th&amp;gt;Victorious&amp;lt;/th&amp;gt;&lt;br /&gt;
                &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:for-each select=&amp;quot;players/player&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:when test=&amp;quot;position() mod 2 = 0&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:text disable-output-escaping=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;amp;lt;tr style=&amp;quot;background-color: #FEFFC2;&amp;quot;&amp;amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:text&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:text disable-output-escaping=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;amp;lt;tr style=&amp;quot;background-color: #B4BA6C;&amp;quot;&amp;amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:text&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;td&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;@name&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;@score&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:value-of select=&amp;quot;@victorious&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:text disable-output-escaping=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;amp;lt;/tr&amp;amp;gt;&lt;br /&gt;
                  &amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:for-each&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;/table&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;pre&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;
&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;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:output method=&amp;quot;xml&amp;quot; encoding=&amp;quot;utf-8&amp;quot; indent=&amp;quot;yes&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;matches&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;matches/match&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:when test=&amp;quot;@type = &#039;tdm&#039;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;match&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;type&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;@type&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&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;@duration&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:attribute name=&amp;quot;created&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;@created&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
              &amp;lt;teams&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:for-each select=&amp;quot;teams/team&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;team&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:attribute name=&amp;quot;name&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;@name&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:attribute name=&amp;quot;victorious&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;@victorious&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:attribute name=&amp;quot;score&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:value-of select=&amp;quot;@score&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                    &amp;lt;players&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:for-each select=&amp;quot;players/player&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;player&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;name&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;@name&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                          &amp;lt;xsl:attribute name=&amp;quot;victorious&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;@victorious&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                          &amp;lt;xsl:attribute name=&amp;quot;score&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xsl:value-of select=&amp;quot;@score&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                        &amp;lt;/player&amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:for-each&amp;gt;&amp;lt;!-- FOREACH PLAYER ENDS HERE --&amp;gt;&lt;br /&gt;
                    &amp;lt;/players&amp;gt;&lt;br /&gt;
                  &amp;lt;/team&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:for-each&amp;gt;&amp;lt;!-- FOREACH TEAM ENDS HERE --&amp;gt;&lt;br /&gt;
              &amp;lt;/teams&amp;gt;                                  &lt;br /&gt;
            &amp;lt;/match&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&amp;lt;!-- FOREACH MATCH ENDS HERE --&amp;gt;   &lt;br /&gt;
    &amp;lt;/matches&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;
=== Veebiteenus ===&lt;br /&gt;
Veebiteenuse eesmärgiks on pakkuda võimalust mänguettevõtjatele registreerida nende kasutajaid, mänge ning hallata nende skoore üle veebiteenuse.&lt;br /&gt;
Andmeid hoitakse MSSQL 2008 r2 andmebaasis. Kasutajate autentimine käib üle andmebaasi (forms authentication). Suhtlus veebiteenuse ja andmebaasi vahel käib üle LINQu. &lt;br /&gt;
Veebiteenus pakub andmete täielikuks haldamiseks basicHttp endpointi. Andmed on turvatud üle SSL protokolli. Samuti on andmete lugemine võimalik ka üle webHttp endpointi, läbi mille lubatakse teatud funktsioonidele läbi brauseri ligipääsu GET päringuga. Viimaseks endpointiks on juba defaultina ära konfitud mexHttp endpoint, mis annab klientrakendusele ülevaate teenusest ning vaheklasside struktuuri.&lt;/div&gt;</summary>
		<author><name>Jvarus</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Kodut%C3%B6%C3%B6_aines_%22V%C3%B5rgurakendused_II:_hajuss%C3%BCsteemide_ehitamine%22_2012&amp;diff=48315</id>
		<title>Kodutöö aines &quot;Võrgurakendused II: hajussüsteemide ehitamine&quot; 2012</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Kodut%C3%B6%C3%B6_aines_%22V%C3%B5rgurakendused_II:_hajuss%C3%BCsteemide_ehitamine%22_2012&amp;diff=48315"/>
		<updated>2012-05-20T19:34:06Z</updated>

		<summary type="html">&lt;p&gt;Jvarus: /* Meeskonnad 2012 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Võrgurakendused II: hajussüsteemide ehitamine]]&lt;br /&gt;
&lt;br /&gt;
=Kodutöö aines &amp;quot;Võrgurakendused II: hajussüsteemide ehitamine&amp;quot; 2012=&lt;br /&gt;
==Eesmärk==&lt;br /&gt;
Saada praktiline kogemus hajussüsteemide ehitamisest XML veebiteenus ja vastava kliendi loomise abil ning süvendada meeskonnatööoskust. Kaugem eesmärk on loomulikult hinne :).&lt;br /&gt;
&lt;br /&gt;
==Reeglid==&lt;br /&gt;
&#039;&#039;&#039; Kodutöö koosneb kolmest eraldiseisvast ülesandest:&#039;&#039;&#039;&lt;br /&gt;
* Luua XML fail vabalt valitud andmete edastamiseks,selle faili skeemifail ning XSL fail(id) erinevate transformatsioonide tarvis (soovitavalt vähemalt andmete HTML ja XML kujul kuvamiseks)&lt;br /&gt;
* Luua veebiteenus, mis võimaldaks pakkuda teenust, eristada kasutajaid ning näidata teenuse kasutamise statistikat kasutajate ja tegevuste lõikes&lt;br /&gt;
* Luua klientrakendused (soovitavalt vähemalt kaks)endaloodud veebiteenusele&lt;br /&gt;
&lt;br /&gt;
Ühte projektimeeskonda kuulub 3..4 tudengit ning ühel teemal teostab projekti üks või mitu meeskonda.&lt;br /&gt;
&lt;br /&gt;
Töö käiku kajastatakse  http://wiki.itcollege.ee keskkonnas. Wikilehe täitmise eesmärke on kaks: nii on võimalik kirja panna kõik mõtted ja ideed (ning nendest jääb jälg) ning õppejõul on hiljem võimalik saada ülevaade iga projektimeeskonna liikme panusest.&lt;br /&gt;
&lt;br /&gt;
==Tähtajad==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;XML fail&#039;&#039;&#039;&lt;br /&gt;
** XML fail, stiilifail ja skeemifail peavad olema valmis ja wikilehel kirjeldatud hiljemalt 3. märts 2011.&lt;br /&gt;
** Retsensioonid XML-failide kohta peavad tehtud olema 17. märts 2012&lt;br /&gt;
** &#039;&#039;&#039;Meeskonnad on loonud omale enda wiki lehe, kuhu kirjeldavad meeskonna ja panevad nad üles oma tööd. Lisaks hakkavad kogunema ka sinna teiste gruppide poolt kirjutatavad retsensioonid. &amp;lt;ins&amp;gt;Meeskonnalehed lingitakse selle lehe lõppu Meeskonna pealkirja alla.&amp;lt;/ins&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Veebiteenus&#039;&#039;&#039;&lt;br /&gt;
** Veebiteenus peab olema valmis&amp;lt;!--, esitatud--&amp;gt; ja ja wikilehel kirjeldatud hiljemalt 14. aprill 2012.&lt;br /&gt;
** Retsensioonid veebiteenuste kohta peavad tehtud olema 28. aprill 2012&lt;br /&gt;
** &amp;lt;ins&amp;gt;&#039;&#039;&#039;Iga tähtajast üleläinud päev kaotab esitamata tööde hindest 10%&#039;&#039;&#039;&amp;lt;/ins&amp;gt;&lt;br /&gt;
&amp;lt;!--** Veebiteenus tuleb esitleda!--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Klientrakendused&#039;&#039;&#039;&lt;br /&gt;
** Klientrakendused peavad olema valmis&amp;lt;!--, esitatud--&amp;gt; ja ja wikilehel kirjeldatud hiljemalt 5. mai 2012.&lt;br /&gt;
** Retsensioonid veebiteenuste kohta peavad tehtud olema 19. mai 2012&lt;br /&gt;
** &amp;lt;ins&amp;gt;&#039;&#039;&#039;Iga tähtajast üleläinud päev kaotab esitamata tööde hindest 10%&#039;&#039;&#039;&amp;lt;/ins&amp;gt;&lt;br /&gt;
&amp;lt;!--** Klientrakendused tuleb esitleda!--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--* &#039;&#039;&#039;Meeskonna kokkuvõttev aruanne&#039;&#039;&#039;&lt;br /&gt;
** Meeskonnatöö kokkuvõttev aruanne peab olema valmis, esitatud ja ja wikilehel kirjeldatud hiljemalt 8.mai 2011&lt;br /&gt;
** Arvamused Meeskonnatöö kokkuvõtva aruande ja esitluse kohta tuleb esitada hiljemalt päev enne eksamit&lt;br /&gt;
** &#039;&#039;&#039;Meeskonna kokkuvõttev aruanne ja töö lõplik tulemus&#039;&#039;&#039; tuleb esitleda!--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Hindamine==&lt;br /&gt;
===Üldised kriteeriumid===&lt;br /&gt;
&lt;br /&gt;
Teostatuks loetakse projekt juhul, kui lähteülesanne on realiseeritud, lahendus on töötav, kuid esineb suuremaid vigu ning piirsituatsioonidega ei ole arvestatud.&lt;br /&gt;
&lt;br /&gt;
Maksimumtulemuse saavutamiseks peab projekt olema teostatud tehniliselt veatult ning varustatud dokumentatsiooniga, milles sisaldub  arendusprotsessi kirjeldus (peab selguma ka iga rühmaliikme panus projekti teostamisel), kasutajajuhend ning lahenduse kirjeldus. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Maksimumtulemuse annab (vähemalr 4/7):&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Majanduslik mõtlemine (kas loodav teenus ja rakendused oleks kasutatav ka ärilistel eesmärkidel)&lt;br /&gt;
* Mobiilrakendused &lt;br /&gt;
* Kogukondade kaasamine&lt;br /&gt;
* AJAX / Silverlight&lt;br /&gt;
* Kasutajamugavus&lt;br /&gt;
* Läbimõeldud töökorraldus&lt;br /&gt;
* Lisavõimaluste realiseerimine (vt näidisteemad)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===XML andmefail===&lt;br /&gt;
Ülesande täitmiseks tuleb luua XML fail andmete edastamiseks, selle XML faili skeemifail ning paar kolm sobivat XSL faili loodud XML failis olevate andmete  transformeerimiseks HTML formaati ja XML faili formaadi muutmiseks.&lt;br /&gt;
&lt;br /&gt;
XML-il peab olema vähemalt 4 loogilist dimensiooni.&lt;br /&gt;
 &amp;lt;dim1&amp;gt;&lt;br /&gt;
   &amp;lt;dim2&amp;gt;&lt;br /&gt;
     &amp;lt;dim3&amp;gt;&lt;br /&gt;
       &amp;lt;dim4&amp;gt;&lt;br /&gt;
       &amp;lt;/dim4&amp;gt;&lt;br /&gt;
     &amp;lt;/dim3&amp;gt;&lt;br /&gt;
   &amp;lt;/dim2&amp;gt;&lt;br /&gt;
 &amp;lt;/dim1&amp;gt;&lt;br /&gt;
Lisaks tuleb kasutada 3-el dimensioonil attribuute, mis one enamat, kui lihtsalt ID.&lt;br /&gt;
&lt;br /&gt;
===Veebiteenus===&lt;br /&gt;
Loodav veebiteenus peab võimaldama:&lt;br /&gt;
* Teenuse pakkumist&lt;br /&gt;
* &#039;&#039;&#039;Teenuse kasutajate tuvastamist ning haldamist&#039;&#039;&#039;&lt;br /&gt;
* Teenuse kasutajate ja kasutusstatistika üle arve pidamist kasutajate lõikes&lt;br /&gt;
&lt;br /&gt;
Soovitav on luua teenus (FE) ja teenuse seadistamiseks ning kasutajate haldamiseks mõeldud rakendus (BE).&lt;br /&gt;
&lt;br /&gt;
===Klientrakendus===&lt;br /&gt;
Klientrakendus mõnele olemasolevale veebiteenusele, võib olla teostatud veebirakendusena, Silverlight, WPF või vormirakendusena.&lt;br /&gt;
&lt;br /&gt;
Variant1: teha klientrakendus enda loodud veebiteenusele &lt;br /&gt;
&lt;br /&gt;
Variant2: teha klientrakendus mõnele levinud veebiteenusele.&lt;br /&gt;
Näiteks: &lt;br /&gt;
* http://www.bing.com/developer&lt;br /&gt;
* http://www.flickr.com/services/api/response.soap.html&lt;br /&gt;
* http://developer.ebay.com/developercenter/windows/&lt;br /&gt;
* http://apiwiki.twitter.com/Getting-Started&lt;br /&gt;
&lt;br /&gt;
===Retsensioonid===&lt;br /&gt;
Retsensioon on üliõpilase iseseisva teadustöö kriitilise analüüsi põhjal koostatud argumenteeritud hinnang. Retsensioonis tuleb hinnata töö vastavust esitatud tingimustele, programmikoodi loetavust ning kommenteeritust, dokumentatsiooni ja kirjeldada puudusi. Retsensioonide põhjal on meeskondadel õigus oma projekte parandada enne määratud esitamistähtaja kättejõudmist.&lt;br /&gt;
&lt;br /&gt;
Retsensioon peab sisaldama minimaalselt...&lt;br /&gt;
* XML - ...200 sõna.&lt;br /&gt;
* Veebiteenus - ...600 sõna.&lt;br /&gt;
* Klientrakendus - ...600 sõna.&lt;br /&gt;
&lt;br /&gt;
Mõnelauselisest arvamusest ei piisa, kuna tegemist on grupi loodavate arvustustega, mitte individuaalsete arvustustega.&lt;br /&gt;
&lt;br /&gt;
==Konsultatsioonid==&lt;br /&gt;
 Igal projektimeeskonnal on piiramatu õigus saada õppejõu käest konsultatsiooni ja juhendamist oma&lt;br /&gt;
 töö tegemiseks, kas harjutuste ajal või pärast harjutusi ja loenguid. Eriaegade suhtes saab sõlmida&lt;br /&gt;
 õppejõuga kokkuleppeid kontaktidel&lt;br /&gt;
 mait.poska [ät] itcollege.ee (+372 53 469 734) või&lt;br /&gt;
 kaarel.raspel [ät] gmail.com (+372 522 2468)&lt;br /&gt;
 (teksti originaalautor Priit Raspel)&lt;br /&gt;
&lt;br /&gt;
=Teemad 2012 kevad=&lt;br /&gt;
&#039;&#039;&#039; Kodutöö koosneb kolmest eraldiseisvast ülesandest:&#039;&#039;&#039;&lt;br /&gt;
* Luua XML fail vabalt valitud andmete edastamiseks,selle faili skeemifail ning XSL fail(id) erinevate transformatsioonide tarvis (soovitavalt vähemalt andmete HTML ja XML kujul kuvamiseks)&lt;br /&gt;
* Luua veebiteenus, mis võimaldaks pakkuda teenust, eristada kasutajaid ning näidata teenuse kasutamise statistikat kasutajate ja tegevuste lõikes&lt;br /&gt;
* Luua klientrakendus mõnele olemasolevale või endaloodud veebiteenusele&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Näidisteemad==&lt;br /&gt;
&lt;br /&gt;
===Nimede pakkumise teenus===&lt;br /&gt;
Mõte selles, et luua nimede baas, mille abil pakkuda rakenduse loojale sobiva algusega nimesid. Reaalne rakendus: &#039;&#039;autocompleter&#039;&#039; tarvis teenuse pakkumine&lt;br /&gt;
&lt;br /&gt;
====Ülesanne====&lt;br /&gt;
Luua sobiva alguse järgi nimede pakkumise teenus:&lt;br /&gt;
* alates kahetähelisetest algustest pakkuda sobivad nimesid&lt;br /&gt;
* luua võimalus kasutajatel nimesid lisada&lt;br /&gt;
* luua võimalus ühele kasutajale (või erinevatele kasutajagruppidele) maksimumpäringute hulga määramiseks&lt;br /&gt;
&lt;br /&gt;
Lisavõimalused:&lt;br /&gt;
* luua kontroll, et nimi lisatakse baasi alles siis, kui seda nime on pakkunud vähemalt kaks erinevat kasutajat&lt;br /&gt;
* luua roll-back&#039;i võimalus juhuks, kui mõni kasutaja on tegelenud spämmimisega&lt;br /&gt;
&lt;br /&gt;
===Külastusstatistika teenus===&lt;br /&gt;
Mõte selles, et pakkuda teenust, kus kasutajal on võimalik registreerida külastused ning küsida oma külastusstatistikat.&lt;br /&gt;
&lt;br /&gt;
====Ülesanne====&lt;br /&gt;
Luua külastusstatistika teenus:&lt;br /&gt;
* kasutaja saab teenuses registreerida külastusi&lt;br /&gt;
* kasutaja saab küsida külastusstatistikat päevade/kuude/kogu perioodi lõikes&lt;br /&gt;
* luua võimalus ühele kasutajale (või erinevatele kasutajagruppidele) maksimumpäringute hulga määramiseks&lt;br /&gt;
&lt;br /&gt;
Lisavõimalused:&lt;br /&gt;
* luua võimalus registreerida alamlehtede külastusstatistikat&lt;br /&gt;
* luua võimalus külastusstatistikale lisaparameetrite lisamiseks (ip aadress, sirviku versioon jne)&lt;br /&gt;
&lt;br /&gt;
===Telefoniraamatu teenus===&lt;br /&gt;
Mõte selles, et kasutaja saab teenuse abil salvestada kontakte ja nende seast otsida&lt;br /&gt;
&lt;br /&gt;
====Ülesanne====&lt;br /&gt;
Luua telefoniraamatu teenus:&lt;br /&gt;
* kasutaja saab teenuses kontakte lisada ja kustutada&lt;br /&gt;
* kasutaja saab kontaktide nime/telefoninumbri jne abil otsida&lt;br /&gt;
* luua võimalus ühele kasutajale (või erinevatele kasutajagruppidele) maksimumpäringute hulga määramiseks&lt;br /&gt;
&lt;br /&gt;
Lisavõimalused:&lt;br /&gt;
* luua võimalus kasutajatel oma kontaktibaase omavahel jagada&lt;br /&gt;
* luua võimalus pakkuda kontaktibaasis leiduvate nimede järgi sobivaid nimesid&lt;br /&gt;
&lt;br /&gt;
===RSS voogude kogumise ja uudiste kuvamise teenus===&lt;br /&gt;
Mõte selles, et kasutaja saab teenuse abil salvestada talle huvipakkuvaid RSS vooge ja nendelt voogudelt uudiseid lugeda&lt;br /&gt;
&lt;br /&gt;
====Ülesanne====&lt;br /&gt;
Luua RSS voogude haldusteenus:&lt;br /&gt;
* kasutaja saab teenuses RSS vooge lisada ja kustudada&lt;br /&gt;
* kasutaja saab pärida talle huvipakkuvate voogude viimaseid uudiseid&lt;br /&gt;
* luua võimalus ühele kasutajale (või erinevatele kasutajagruppidele) maksimumpäringute hulga määramiseks&lt;br /&gt;
&lt;br /&gt;
Lisavõimalused:&lt;br /&gt;
* luua võimalus kasutajatel erinevaid vooge grupeerida&lt;br /&gt;
* luua võimalus voogudes leiduvate uudiste puhverdamiseks (voogude lugemine võtab enamasti üsna palju aega)&lt;br /&gt;
&lt;br /&gt;
= Meeskonnad 2012=&lt;br /&gt;
&lt;br /&gt;
* [[ Meeskond &amp;quot;Hello Kitty&amp;quot;]]&lt;br /&gt;
* [[Meeskond &amp;quot;Harold&amp;quot;]]&lt;br /&gt;
* [[PhoneBook | Meeskond &amp;quot;PhoneBook&amp;quot;]]&lt;br /&gt;
* [[LLL | Meeskond &amp;quot;LLL&amp;quot;]]&lt;br /&gt;
* [[Meeskond &amp;quot;.NOT&amp;quot;]]&lt;br /&gt;
* [[Peeter VR2 | Meeskond &amp;quot;Peeter VR2&amp;quot;]]&lt;br /&gt;
* [[Meeskond &amp;quot;HM&amp;quot;]]&lt;/div&gt;</summary>
		<author><name>Jvarus</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Meeskond_%22Hello_Kitty%22&amp;diff=46471</id>
		<title>Meeskond &quot;Hello Kitty&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Meeskond_%22Hello_Kitty%22&amp;diff=46471"/>
		<updated>2012-03-08T08:03:16Z</updated>

		<summary type="html">&lt;p&gt;Jvarus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Projekti juht: Jaanus Varus&lt;br /&gt;
&lt;br /&gt;
Liikmed: Herki Pärn, Jaanus Varus&lt;br /&gt;
&lt;br /&gt;
Idee:&lt;br /&gt;
Loome veebirakenduse kindlustus kahjude haldamiseks. Mis on suunatud firmadle kes viivad läbi kindlustus (Garantii) remonti. Näiteks autofirmad. Selle rakendusega soovima aidata anda ülevaate kulude ja tulude kohta. Ja et oleks ka võimalus statistikat teha.&lt;br /&gt;
&lt;br /&gt;
Analüüs:&lt;br /&gt;
Rakendus jaotub kaheks. Esimene osa on kus töötajad saavad sisestada kahju ja selle maksumist andmebaasi ja neid ka hiljem vaadata. Teine osa peaks olema kus ülemus saab vaadata kokku võtet ikka kindlustus firmaga seotud tegevustest. Rakendus siis sisaldaks endas sisuhaldust kus saab lisada uusi kindlustus asutusi ja neid ka kirjeldada. Teiseks peaks olema võimalus laiendada ka erinevaid osakondasid. Näiteks on üks suur firma ja millel on kolm osakonda eri linnades. Ja kuna iga osakond on eraldatud teistest siis peab olema ka võimalus sisestada osakonna paasil. Ja kui firma peaks laienema või mõne osakonna kinni panama siis peab olema võimalus ka osakondasid hallata. Kolmandaks peaks olema ka kasutajate haldus. Kuna süsteem ei ole suunatud tavakasutajatele siis on kinnine registeerimine ja mis toimub sisuhalduse kaudu. Ehk siis administraator saab ainult lisada uusi inimesi süsteemi ja määrata neile rollid. Neljandaks peaks olema võimalus ka muuta muid sisu lehti. Näiteks KKK lehte kuhu saab panna korduma kippuvaid küsimus. See lihtsustaks administraatori tööd märgataval määral&lt;br /&gt;
Eesmärk on anda ülevaade kindlustus kulude kohta ja ka sissetulekud. Saab teha erinevaid uuringuid näiteks mis kindlustust inimesed rohkem kasutavad. Põhi eesmärk jab siiski algus firma siseseks ehk ülevaate andmiseks ülemusele ja ka tehtud või tegemisel tööde hoidmiseks ühes kohas ja et seda oleks kerge hallata. Ja vähendada filide hulka arvutis või siis paberkandjal. Et ei peaks olema kõik asjad eraldi vaid oleks ühes koos. Lihtsamini öelda siis viia süsteem ühele standartsele kujule.   &lt;br /&gt;
See rakendus on suunatud siis firmadele ja mitte tavakasutajatele. Kuna see oleks siis firma sisene süsteem aga võimalik ka mõelda selle edasi arendamisele. Luua samma süsteemi basil ka muid firmale vajalike haldus vahendeid. Kas või raamatu pidamisega seotud vahendeid. Näiteks tavainimene saaks vaadata endaga seotud kindlustus insitente.&lt;br /&gt;
Probleemikamateks osadeks kujuneb sisuhaldus kuna kõik andmed tulevad dünaamiliselt. Ja ka andmebaasi osa pool kus tuleb läbi mõelda kuida süsteem peaks olema üles ehitatud. Ja kõige suurimaks probleemiks võib osutada asja lihtsaks tegemine tavakasutajale. Kuna see on meie esimen project mis on nii suures mahus siis me ei oska hinnata veel selleks kuluvat töö aeg ja ka muid seonduvaid probleeme selle projektiga.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Funktsionaalsus:&lt;br /&gt;
+Kindlustus andmete sisestamine.&lt;br /&gt;
+Uute kindlustus firmade lisamine.&lt;br /&gt;
+Arhiveerimine.&lt;br /&gt;
&lt;br /&gt;
Nice to have:&lt;br /&gt;
+Kujundus.&lt;/div&gt;</summary>
		<author><name>Jvarus</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Meeskond_%22Hello_Kitty%22&amp;diff=46469</id>
		<title>Meeskond &quot;Hello Kitty&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Meeskond_%22Hello_Kitty%22&amp;diff=46469"/>
		<updated>2012-03-08T08:01:56Z</updated>

		<summary type="html">&lt;p&gt;Jvarus: Created page with &amp;#039;Projekti juht: Jaanus Varus Liikmed: Herki Pärn, Jaanus Varus  Idee: Loome veebirakenduse kindlustus kahjude haldamiseks. Mis on suunatud firmadle kes viivad läbi kindlustus (G…&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Projekti juht: Jaanus Varus&lt;br /&gt;
Liikmed: Herki Pärn, Jaanus Varus&lt;br /&gt;
&lt;br /&gt;
Idee:&lt;br /&gt;
Loome veebirakenduse kindlustus kahjude haldamiseks. Mis on suunatud firmadle kes viivad läbi kindlustus (Garantii) remonti. Näiteks autofirmad. Selle rakendusega soovima aidata anda ülevaate kulude ja tulude kohta. Ja et oleks ka võimalus statistikat teha.&lt;br /&gt;
&lt;br /&gt;
Analüüs:&lt;br /&gt;
Rakendus jaotub kaheks. Esimene osa on kus töötajad saavad sisestada kahju ja selle maksumist andmebaasi ja neid ka hiljem vaadata. Teine osa peaks olema kus ülemus saab vaadata kokku võtet ikka kindlustus firmaga seotud tegevustest. Rakendus siis sisaldaks endas sisuhaldust kus saab lisada uusi kindlustus asutusi ja neid ka kirjeldada. Teiseks peaks olema võimalus laiendada ka erinevaid osakondasid. Näiteks on üks suur firma ja millel on kolm osakonda eri linnades. Ja kuna iga osakond on eraldatud teistest siis peab olema ka võimalus sisestada osakonna paasil. Ja kui firma peaks laienema või mõne osakonna kinni panama siis peab olema võimalus ka osakondasid hallata. Kolmandaks peaks olema ka kasutajate haldus. Kuna süsteem ei ole suunatud tavakasutajatele siis on kinnine registeerimine ja mis toimub sisuhalduse kaudu. Ehk siis administraator saab ainult lisada uusi inimesi süsteemi ja määrata neile rollid. Neljandaks peaks olema võimalus ka muuta muid sisu lehti. Näiteks KKK lehte kuhu saab panna korduma kippuvaid küsimus. See lihtsustaks administraatori tööd märgataval määral&lt;br /&gt;
Eesmärk on anda ülevaade kindlustus kulude kohta ja ka sissetulekud. Saab teha erinevaid uuringuid näiteks mis kindlustust inimesed rohkem kasutavad. Põhi eesmärk jab siiski algus firma siseseks ehk ülevaate andmiseks ülemusele ja ka tehtud või tegemisel tööde hoidmiseks ühes kohas ja et seda oleks kerge hallata. Ja vähendada filide hulka arvutis või siis paberkandjal. Et ei peaks olema kõik asjad eraldi vaid oleks ühes koos. Lihtsamini öelda siis viia süsteem ühele standartsele kujule.   &lt;br /&gt;
See rakendus on suunatud siis firmadele ja mitte tavakasutajatele. Kuna see oleks siis firma sisene süsteem aga võimalik ka mõelda selle edasi arendamisele. Luua samma süsteemi basil ka muid firmale vajalike haldus vahendeid. Kas või raamatu pidamisega seotud vahendeid. Näiteks tavainimene saaks vaadata endaga seotud kindlustus insitente.&lt;br /&gt;
Probleemikamateks osadeks kujuneb sisuhaldus kuna kõik andmed tulevad dünaamiliselt. Ja ka andmebaasi osa pool kus tuleb läbi mõelda kuida süsteem peaks olema üles ehitatud. Ja kõige suurimaks probleemiks võib osutada asja lihtsaks tegemine tavakasutajale. Kuna see on meie esimen project mis on nii suures mahus siis me ei oska hinnata veel selleks kuluvat töö aeg ja ka muid seonduvaid probleeme selle projektiga.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Funktsionaalsus:&lt;br /&gt;
+Kindlustus andmete sisestamine.&lt;br /&gt;
+Uute kindlustus firmade lisamine.&lt;br /&gt;
+Arhiveerimine.&lt;br /&gt;
&lt;br /&gt;
Nice to have:&lt;br /&gt;
+Kujundus.&lt;/div&gt;</summary>
		<author><name>Jvarus</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Kodut%C3%B6%C3%B6_aines_%22Veebirakenduste_loomine_ASP.NET_abil%22_2012&amp;diff=46468</id>
		<title>Kodutöö aines &quot;Veebirakenduste loomine ASP.NET abil&quot; 2012</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Kodut%C3%B6%C3%B6_aines_%22Veebirakenduste_loomine_ASP.NET_abil%22_2012&amp;diff=46468"/>
		<updated>2012-03-08T08:01:45Z</updated>

		<summary type="html">&lt;p&gt;Jvarus: /* Meeskonnad 2012 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Veebirakenduste loomine ASP.NET abil]]&lt;br /&gt;
&lt;br /&gt;
=Kodutöö aines &amp;quot;Veebirakenduste loomine ASP.NET abil&amp;quot;=&lt;br /&gt;
==Eesmärk==&lt;br /&gt;
Saada praktiline kogemus veebiarendusest Asp.Net tehnoloogia abil ning süvendada meeskonnatööoskust. Kaugem eesmärk on loomulikult hinne :).&lt;br /&gt;
&lt;br /&gt;
==Reeglid==&lt;br /&gt;
Ühte projektimeeskonda kuulub 3..5 tudengit (erandjuhul ka 2) ning ühel teemal teostab projekti üks meeskond.&lt;br /&gt;
Töö käiku kajastatakse ajaveebis (blogis) või http://wiki.itcollege.ee keskkonnas. Ajaveebi pidamise eesmärke on kaks: nii on võimalik kirja panna kõik mõtted ja ideed (ning nendest jääb jälg) ning õppejõul on hiljem võimalik saada ülevaade iga projektimeeskonna liikme panusest. Ajaveebi loob ja ajaveebi haldab projektimeeskond vabalt valitud (avalikus) keskkonnas.&lt;br /&gt;
&lt;br /&gt;
==Tähtajad==&lt;br /&gt;
Kodutöö on üks suur meeskonnatööna valmiv ülesanne, mis on jaotatud väiksemateks osadeks. Osade kirjeldused ja tähtajad on kirjeldatud allpool.&lt;br /&gt;
&lt;br /&gt;
Tähtaegadest mitte kinnipidamisel kaotatakse punkte.Kui töö esitatakse tähtajast hiljem ,kaotatakse iga hilinenud päeva kohta 10% punktidest. Maksimaalselt kaotatakse 50%.&lt;br /&gt;
&lt;br /&gt;
Näide: &lt;br /&gt;
Töö esitamise tähtaeg on 4.09.2011 kell 23:59 ja selle osa eest on võimalik teenida 8p. &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Meeskond1 esitab töö, mis vastab nõuetele, tähtajaks. &amp;lt;br/&amp;gt;&lt;br /&gt;
Tulemus:8p&lt;br /&gt;
&lt;br /&gt;
Meeskond2 esitab töö, mis vastab nõuetele 05.09.2011 02:00 (ehk tähtajast paar tundi hiljem). &amp;lt;br/&amp;gt;&lt;br /&gt;
Tulemus: 7,1 punkti. &lt;br /&gt;
&lt;br /&gt;
Meeskond3 esitab töö, mis vastab nõuetele 06.09.2011 12:00 (ehk tähtajast paar päeva hiljem). &amp;lt;br/&amp;gt;&lt;br /&gt;
Tulemus: 6,4 punkti. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Teema ning meeskonna koosseis. Analüüs===&lt;br /&gt;
&amp;lt;i&amp;gt;Tähtaeg: 06.03.2012 23:59&amp;lt;/i&amp;gt;&lt;br /&gt;
(10 punkti)&lt;br /&gt;
&lt;br /&gt;
Tähtajaks tuleb:&lt;br /&gt;
*kooskõlastada õppejõuga idee&lt;br /&gt;
*panna kokku meeskond&lt;br /&gt;
*luua meeskonnale wiki leht, kus&lt;br /&gt;
** tuuakse välja meeskonna kõik liikmed ja määratakse projektijuht&lt;br /&gt;
** sõnastatakse idee olemus&lt;br /&gt;
** teostatakse esmane analüüs&lt;br /&gt;
***Analüüs rakendusele. (Mida see endas sisaldab? Mis on selle eesmärk? Mida tavakasutaja sellega teha saaks? Milliste osade realiseerimine võib osutuda problemaatiliseks?) Kui on tööjaotus paigas, siis tuua ka see välja.&lt;br /&gt;
***Tuua välja nimekiri funktsionaalsusest, mida plaanitakse kindlasti teostada(&#039;&#039;Must have&#039;&#039;)&lt;br /&gt;
***Nimekiri funktsionaalsustest, mis võiks olla, aga mida ei pruugita ajapuuduse tõttu realiseerida.(&#039;&#039;Nice to have&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
Analüüsi ja idee sõnade maht on arvuliselt minimaalselt 700.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Retsensioon&#039;&#039;&#039; &lt;br /&gt;
&amp;lt;i&amp;gt;Tähtaeg: 15.03.2012 &amp;lt;/i&amp;gt;&lt;br /&gt;
(5 punkti)&lt;br /&gt;
&lt;br /&gt;
===Lõpptoode===&lt;br /&gt;
&amp;lt;i&amp;gt; Tähtaeg:12.05.2012 (25p)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Selleks faasiks peab projekt maksimumpuntkide saavutamiseks olema teostatud tehniliselt veatult ning varustatud dokumentatsiooniga, milles sisaldub arendusprotsessi kirjeldus (peab selguma ka iga rühmaliikme panus projekti teostamisel), kasutajajuhend ning lahenduse kirjeldus. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Retsensioon&#039;&#039;&#039;&lt;br /&gt;
24.05.2012 (5p)&lt;br /&gt;
&lt;br /&gt;
===Kaitsmine===&lt;br /&gt;
&amp;lt;i&amp;gt;Siia ilmub mais registreerumisleht&amp;lt;/i&amp;gt;&lt;br /&gt;
(5 punkti)&lt;br /&gt;
&lt;br /&gt;
Esitlusel kaitstakse projekti. Tutvustatakse tehnoloogiat, mida kasutati rakenduse realiseerimiseks. Lühidalt räägitakse tööjaotusest ning probleemidest, mis tekkisid projekti realiseerimisel. Näidatakse lähtekoodi ja demonstreeritakse oma rakendust teistele tudengitele, kes võivad selle kohta küsimusi küsida. Kestvus ~20min.&lt;br /&gt;
&lt;br /&gt;
==Hindamine==&lt;br /&gt;
Teostatuks loetakse projekt juhul, kui lähteülesanne on realiseeritud, lahendus on töötav, kuid esineb suuremaid vigu ning piirsituatsioonidega ei ole arvestatud.&lt;br /&gt;
&lt;br /&gt;
Maksimumtulemuse saavutamiseks peab projekt olema teostatud tehniliselt veatult ning varustatud dokumentatsiooniga, milles sisaldub  arendusprotsessi kirjeldus (peab selguma ka iga rühmaliikme panus projekti teostamisel), kasutajajuhend ning lahenduse kirjeldus. &lt;br /&gt;
Tehnilisi ja vormistuslike puudujääke on võimalik korvata lisavõimaluste realiseerimisega.Üldjuhul tuleb loodud lahendust ka praktikumides teistele tudengitele tutvustada (ca 20 min).&lt;br /&gt;
&lt;br /&gt;
Kogu aine mahust annab projekt 50% ehk edaspidi 50p. Täpsem kirjeldus projekti erinevate osade ja tähtaegade kohta on kirjeldatud sektsioonis: Tähtajad &lt;br /&gt;
&lt;br /&gt;
Tähtaegadest kinni pidamine on oluline. &lt;br /&gt;
Iga hilinenud päev vähendab tulemust 10% võrra. Maksimaalselt võib kaotada -50% võimalikest punktidest.&lt;br /&gt;
&lt;br /&gt;
==Konsultatsioonid==&lt;br /&gt;
 Igal projektimeeskonnal on piiramatu õigus saada õppejõu käest konsultatsiooni ja juhendamist oma&lt;br /&gt;
 töö tegemiseks, kas harjutuste ajal või pärast harjutusi ja loenguid. Eriaegade suhtes saab sõlmida&lt;br /&gt;
 õppejõuga kokkuleppeid kontaktidel +372 53 469 734 või mait.poska [ät] itcollege.ee&lt;br /&gt;
 (teksti originaalautor Priit Raspel)&lt;br /&gt;
&lt;br /&gt;
=Teemad 2012 kevad=&lt;br /&gt;
Kodutööna tuleb luua: &lt;br /&gt;
* CMS ehk sisuhalduskeskkond&lt;br /&gt;
* Vabalt valitud teemal (vt näidisteemad) mingisugune ärirakendus: näiteks kodune raamatukogu, e-pood, pere eelarve keskkond jne.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Nõuded==&lt;br /&gt;
&#039;&#039;&#039;Loodav lahendus peab sisaldama:&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;CMS&#039;i funktsionaalsust&#039;&#039;&#039;&lt;br /&gt;
** Võimalus lehtede sisu muuta veebiliidese abil&lt;br /&gt;
** Võimalus lehti leheküljestikku lisada&lt;br /&gt;
** Võimalus lehti leheküljestikust kustutada&lt;br /&gt;
** Võimalus lehti avaldada või varjata&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Piiratud kasutajatele mõeldud ala&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Mingisugust ärirakendust (vt näidisteemad)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Loodavas süsteemis tuleb kasutada:&#039;&#039;&#039;&lt;br /&gt;
* Oma teadmisi :)&lt;br /&gt;
* Master-lehekülgi&lt;br /&gt;
* Kasutajahaldust&lt;br /&gt;
* Andmeallikat (XML, andmebaas jne)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lisapunkte annab:&#039;&#039;&#039;&lt;br /&gt;
* Majanduslik mõtlemine (kas loodav rakendus oleks kasutatav ka ärilistel eesmärkidel)&lt;br /&gt;
* AJAX / Silverlight&lt;br /&gt;
* Kasutajamugavus&lt;br /&gt;
* Läbimõeldud töökorraldus&lt;br /&gt;
* Lisavõimaluste realiseerimine (vt näidisteemad)&lt;br /&gt;
&lt;br /&gt;
==Näidisteemad==&lt;br /&gt;
&lt;br /&gt;
===Terviseleht===&lt;br /&gt;
&#039;&#039;&#039;Selle teema võib valida mitu meeskonda&#039;&#039;&#039;&lt;br /&gt;
Vaata: http://www.terviseleht.ee&lt;br /&gt;
&lt;br /&gt;
====Ülesanne====&lt;br /&gt;
Ülesandeks on see, et leida terviselehele tehniline lahendus, mis oleks kaasaegne ning pilkupüüdev. Realiseeritud peaks olema:&lt;br /&gt;
* Uute arktiklite postitamine&lt;br /&gt;
** Võimalus artikleid lehtedeks jagada&lt;br /&gt;
** Võimalus artikleid kategooriateks jagada&lt;br /&gt;
** Võimalus artikleid &amp;quot;sildistada&amp;quot;&lt;br /&gt;
* Arhiiv&lt;br /&gt;
* Otsing&lt;br /&gt;
* Küsitlus&lt;br /&gt;
&lt;br /&gt;
Lisavõimalused:&lt;br /&gt;
* võimalda Terviselehte mugavalt lugeda ka mobiilsete seadmetega, sh uue iPadi ja &amp;quot;vana&amp;quot; iPhonega,&lt;br /&gt;
* sündmuste kalender&lt;br /&gt;
** piiratud võimalused partneritele sündmuste kalendrisse sündmuste lisamiseks&lt;br /&gt;
* lisada võimalused kasutamaks videolõike, telereklaame jne&lt;br /&gt;
* luua (ID kaardiga) kommenteerimisvõimalus&lt;br /&gt;
* tekitada väike veebipood&lt;br /&gt;
* üle vaadata kogu reklaamide paigutuse, suuruste, võimaluste osa&lt;br /&gt;
* luua piiratud ligipääsuga tasuline ala&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Õppekavade infosüsteem===&lt;br /&gt;
Eksamikeskuse koduleheküljel on kutseõppe riiklikud õppekavad ja nende seotud õppematerjalide kaardistused http://www.ekk.edu.ee/valdkonnad/kutseharidus/kutseoppe-riiklikud-oppekavad&lt;br /&gt;
&lt;br /&gt;
====Ülesanne====&lt;br /&gt;
Luua rakendus, mis&lt;br /&gt;
* Võimaldaks sisestada, vaadata, muuta jne õppekavasid ja nendega seotud õppematerjale&lt;br /&gt;
** Iga õppekava koosneb moodulitest&lt;br /&gt;
** Iga mooduliga on seotud õppematerjalid (samas võib olla, et õppematerjale ei ole)&lt;br /&gt;
* Õppekavu peab olema võimalik välja importida (kuvada) ka antud etteantud kujul (pärast muutmist, täiendamist)&lt;br /&gt;
* Õppematerjalide kaardistust peab olema võimalik välja importida (kuvada) ka antud etteantud kujul (pärast muutmist, täiendamist)&lt;br /&gt;
* Peab olema võimalik teha erialade analüüsi: näha palju on ühiseid mooduleid kahel õppekaval&lt;br /&gt;
&lt;br /&gt;
Lisavõimalused:&lt;br /&gt;
* Võimalda siduda mooduliga märksõnad ning kuvada moodulid ka märksõnade kaupa&lt;br /&gt;
* Iga moodulis käsitletud teema võiks olla omaette märksõna&lt;br /&gt;
* Erialade analüüsi: näha palju on ühiseid märksõnu kahel õppekaval&lt;br /&gt;
&lt;br /&gt;
===Kodune raamatukogu===&lt;br /&gt;
Kodudes on tihti erinevaid raamatuid ja sõbrad tahavad neid vahel laenutada.&lt;br /&gt;
&lt;br /&gt;
====Ülesanne====&lt;br /&gt;
Loo rakendus, mis&lt;br /&gt;
* Võimaldaks sisestada kodused raamatud&lt;br /&gt;
* Võimaldaks luua laenutajate profiile&lt;br /&gt;
* Raamatuid välja laenutada (tähtajaliselt)&lt;br /&gt;
* Laseks koostada erinevaid aruandeid (kodusolevad raamatud, väljalaenutatud raamatud, tähtaja ületanud laenutused  jne)&lt;br /&gt;
&lt;br /&gt;
Lisavõimalused:&lt;br /&gt;
* Kui laenutaja profiilis on e-mail, siis saada automaatselt e-kiri „kallis sõber see ja see, Sinu käes on minu raamat, kas tood tagasi ka?”&lt;br /&gt;
* Kuva hoiatused, kui laenutaja laenutuste ajalugu on vilets või kui mõni raamat on tagastamata.&lt;br /&gt;
* Lase lisada raamatutele pilt&lt;br /&gt;
* Loo lihtne avalik veebivaade&lt;br /&gt;
&lt;br /&gt;
===Küsimustike genereerimise ja täitmise rakendus===&lt;br /&gt;
eFormular on nüüd tasuline, teeme ise uue ja parema.&lt;br /&gt;
&lt;br /&gt;
====Ülesanne====&lt;br /&gt;
Loo rakendus, mis:&lt;br /&gt;
* Võimaldab küsimustike luua ja salvestada&lt;br /&gt;
* Võimaldab loodud küsimustike täita&lt;br /&gt;
* Võimaldab täidetud küsimustike baasil lihtsamat statistikat teha&lt;br /&gt;
* Võimaldab kasutada erinevat tüüpi küsimusi&lt;br /&gt;
&lt;br /&gt;
Lisavõimalused&lt;br /&gt;
* Loo võimalus saata link küsimustikele otse rakendusest küsimustike täitjatele&lt;br /&gt;
* Loo võimalus, et iga vastaja saab küsimustikku täita vaid ühe korra.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===CRM===&lt;br /&gt;
Klientidest peab olema ülevaade.&lt;br /&gt;
&lt;br /&gt;
====Ülesanne====&lt;br /&gt;
Loo rakendus, mis võimaldab:&lt;br /&gt;
* Kliente ning nende kontaktisikuid sisestada, muuta ning kustutada&lt;br /&gt;
* Võimalda sisestada kliendikontakte&lt;br /&gt;
* Koostada hinnapakkumisi klientidele, kusjuures hinnapakkumine lisatakse süsteemi ka kui kliendikontakt ning saadetakse samast süsteemist kliendile.&lt;br /&gt;
* Kliendi andmete vaatamisel kuvatakse ka kliendikontaktid&lt;br /&gt;
&lt;br /&gt;
Lisavõimalused:&lt;br /&gt;
* Loo võimalus, kus kontaktisiku sünnipäeva saabumisel saadetakse automaatselt inimesele meil õnnesoovidega&lt;br /&gt;
* Õnnitlusmeilide template’sid võiks olla mitu&lt;br /&gt;
* Loo võimalus kliendi huvide (huvialade) kajastamiseks süsteemis&lt;br /&gt;
* Loo võimalus klientide omavaheliseks sidumiseks (ehk võimalus klientide võimalike omavaheliste suhete kirjeldamiseks)&lt;br /&gt;
&lt;br /&gt;
= Meeskonnad 2012=&lt;br /&gt;
==[[Meeskond &amp;quot;Hello Kitty&amp;quot;]]==&lt;br /&gt;
&lt;br /&gt;
==[[Meeskond &amp;quot;Miski nimi&amp;quot;]]==&lt;br /&gt;
===Teema===&lt;br /&gt;
Mis on selle projekti sisuks&lt;br /&gt;
 &lt;br /&gt;
==[[Meeskond &amp;quot;BugTracker&amp;quot;]]==&lt;br /&gt;
&lt;br /&gt;
===Teema===&lt;br /&gt;
Veahaldussüsteem&lt;br /&gt;
&lt;br /&gt;
[[Category: Veebirakenduste loomine ASP.NET abil]]&lt;br /&gt;
&lt;br /&gt;
==Meeskond [[&amp;quot;ASP .NOT&amp;quot;]]==&lt;br /&gt;
===Teema===&lt;br /&gt;
Online küsimustike loomine ja vastamine&lt;br /&gt;
==Meeskond[[&amp;quot;LLL&amp;quot;]]==&lt;br /&gt;
===Teema===&lt;br /&gt;
Terviseleht&lt;br /&gt;
==Meeskond [[&amp;quot;Peeter ASP.NET&amp;quot;]]==&lt;br /&gt;
===Teema===&lt;br /&gt;
Kodune raamatukogu&lt;/div&gt;</summary>
		<author><name>Jvarus</name></author>
	</entry>
</feed>