<?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=Tjuris</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=Tjuris"/>
	<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php/Special:Contributions/Tjuris"/>
	<updated>2026-05-10T03:39:48Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Talk:LLL&amp;diff=49128</id>
		<title>Talk:LLL</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Talk:LLL&amp;diff=49128"/>
		<updated>2012-06-09T13:51:32Z</updated>

		<summary type="html">&lt;p&gt;Tjuris: &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;/div&gt;</summary>
		<author><name>Tjuris</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=PhoneBook&amp;diff=49127</id>
		<title>PhoneBook</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=PhoneBook&amp;diff=49127"/>
		<updated>2012-06-09T11:01:08Z</updated>

		<summary type="html">&lt;p&gt;Tjuris: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Meeskond ==&lt;br /&gt;
* Lauri Jansen - wiki, XML, schema, progemine&lt;br /&gt;
* Tanel Jüris - XSLT XML-i, progemine&lt;br /&gt;
* Madis Rääk - XSLT html-i, progemine&lt;br /&gt;
&lt;br /&gt;
== Idee ==&lt;br /&gt;
Luua näidisteemades välja pakutud telefoniraamatu teenus kus:&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;
Kusjuures on olemas ka 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;
== XML fail ==&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;
&lt;br /&gt;
Lisaks tuleb kasutada 3-el dimensioonil attribuute, mis on enamat, kui lihtsalt ID.&lt;br /&gt;
=== XML ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&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;contacts&amp;gt;&lt;br /&gt;
  &amp;lt;contact id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
    &amp;lt;names&amp;gt;&lt;br /&gt;
      &amp;lt;first_name&amp;gt; Mart &amp;lt;/first_name&amp;gt;&lt;br /&gt;
      &amp;lt;middle_names&amp;gt;&lt;br /&gt;
        &amp;lt;middle_name&amp;gt;&amp;lt;/middle_name&amp;gt;&lt;br /&gt;
      &amp;lt;/middle_names&amp;gt;&lt;br /&gt;
      &amp;lt;last_name&amp;gt; Tamm &amp;lt;/last_name&amp;gt;&lt;br /&gt;
    &amp;lt;/names&amp;gt;&lt;br /&gt;
    &amp;lt;addresses default=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;address id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;country&amp;gt; Eesti &amp;lt;/country&amp;gt;&lt;br /&gt;
        &amp;lt;county&amp;gt; Tartumaa &amp;lt;/county&amp;gt;&lt;br /&gt;
        &amp;lt;town&amp;gt; Tartu &amp;lt;/town&amp;gt;&lt;br /&gt;
        &amp;lt;street&amp;gt; Põllu &amp;lt;/street&amp;gt;&lt;br /&gt;
        &amp;lt;house_nr&amp;gt; 6 &amp;lt;/house_nr&amp;gt;&lt;br /&gt;
        &amp;lt;zip_code&amp;gt; 50210 &amp;lt;/zip_code&amp;gt;&lt;br /&gt;
      &amp;lt;/address&amp;gt;&lt;br /&gt;
      &amp;lt;address id=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;country&amp;gt; Eesti &amp;lt;/country&amp;gt;&lt;br /&gt;
        &amp;lt;county&amp;gt; Jõgevamaa &amp;lt;/county&amp;gt;&lt;br /&gt;
        &amp;lt;town&amp;gt; Palamuse &amp;lt;/town&amp;gt;&lt;br /&gt;
        &amp;lt;street&amp;gt; Oti Talu &amp;lt;/street&amp;gt;&lt;br /&gt;
        &amp;lt;house_nr&amp;gt; &amp;lt;/house_nr&amp;gt;&lt;br /&gt;
        &amp;lt;zip_code&amp;gt; 47292 &amp;lt;/zip_code&amp;gt;&lt;br /&gt;
      &amp;lt;/address&amp;gt;&lt;br /&gt;
    &amp;lt;/addresses&amp;gt;&lt;br /&gt;
    &amp;lt;phones default=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;phone type=&amp;quot;landline&amp;quot; id=&amp;quot;1&amp;quot;&amp;gt; 7249959 &amp;lt;/phone&amp;gt;&lt;br /&gt;
      &amp;lt;phone type=&amp;quot;skype&amp;quot; id=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;/phone&amp;gt;&lt;br /&gt;
      &amp;lt;phone type=&amp;quot;mobile&amp;quot; id=&amp;quot;3&amp;quot;&amp;gt; 53345699 &amp;lt;/phone&amp;gt;&lt;br /&gt;
      &amp;lt;phone type=&amp;quot;work&amp;quot; id=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;/phone&amp;gt;&lt;br /&gt;
      &amp;lt;phone type=&amp;quot;other&amp;quot; id=&amp;quot;5&amp;quot;&amp;gt;&amp;lt;/phone&amp;gt;&lt;br /&gt;
    &amp;lt;/phones&amp;gt;&lt;br /&gt;
    &amp;lt;comments&amp;gt;&amp;lt;/comments&amp;gt;&lt;br /&gt;
  &amp;lt;/contact&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;contact id=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;names&amp;gt;&lt;br /&gt;
      &amp;lt;first_name&amp;gt; Linda &amp;lt;/first_name&amp;gt;&lt;br /&gt;
      &amp;lt;middle_names&amp;gt;&lt;br /&gt;
        &amp;lt;middle_name&amp;gt;&amp;lt;/middle_name&amp;gt;&lt;br /&gt;
      &amp;lt;/middle_names&amp;gt;&lt;br /&gt;
      &amp;lt;last_name&amp;gt; Kuusk &amp;lt;/last_name&amp;gt;&lt;br /&gt;
    &amp;lt;/names&amp;gt;&lt;br /&gt;
    &amp;lt;addresses default=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;address id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;country&amp;gt; Eesti &amp;lt;/country&amp;gt;&lt;br /&gt;
        &amp;lt;county&amp;gt; Harjumaa &amp;lt;/county&amp;gt;&lt;br /&gt;
        &amp;lt;town&amp;gt; Tallinn &amp;lt;/town&amp;gt;&lt;br /&gt;
        &amp;lt;street&amp;gt; Akadeemia tee &amp;lt;/street&amp;gt;&lt;br /&gt;
        &amp;lt;house_nr&amp;gt; 28 &amp;lt;/house_nr&amp;gt;&lt;br /&gt;
        &amp;lt;zip_code&amp;gt; 12300 &amp;lt;/zip_code&amp;gt;&lt;br /&gt;
      &amp;lt;/address&amp;gt;&lt;br /&gt;
    &amp;lt;/addresses&amp;gt;&lt;br /&gt;
    &amp;lt;phones default=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;phone type=&amp;quot;landline&amp;quot; id=&amp;quot;1&amp;quot;&amp;gt; 6359866 &amp;lt;/phone&amp;gt;&lt;br /&gt;
      &amp;lt;phone type=&amp;quot;skype&amp;quot; id=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;/phone&amp;gt;&lt;br /&gt;
      &amp;lt;phone type=&amp;quot;mobile&amp;quot; id=&amp;quot;3&amp;quot;&amp;gt; 56777521 &amp;lt;/phone&amp;gt;&lt;br /&gt;
      &amp;lt;phone type=&amp;quot;work&amp;quot; id=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;/phone&amp;gt;&lt;br /&gt;
      &amp;lt;phone type=&amp;quot;other&amp;quot; id=&amp;quot;5&amp;quot;&amp;gt;&amp;lt;/phone&amp;gt;&lt;br /&gt;
    &amp;lt;/phones&amp;gt;&lt;br /&gt;
    &amp;lt;comments&amp;gt;&amp;lt;/comments&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/contact&amp;gt;&lt;br /&gt;
&amp;lt;/contacts&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XML schema (XSD) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xs:schema attributeFormDefault=&amp;quot;unqualified&amp;quot; elementFormDefault=&amp;quot;qualified&amp;quot; xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xs:element name=&amp;quot;contacts&amp;quot;&amp;gt;&lt;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;contact&amp;quot;&amp;gt;&lt;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;names&amp;quot;&amp;gt;&lt;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;first_name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;middle_names&amp;quot;&amp;gt;&lt;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;middle_name&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;last_name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;addresses&amp;quot;&amp;gt;&lt;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;address&amp;quot;&amp;gt;&lt;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;country&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element name=&amp;quot;county&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element name=&amp;quot;town&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element name=&amp;quot;street&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element name=&amp;quot;house_nr&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element name=&amp;quot;zip_code&amp;quot; type=&amp;quot;xs:unsignedShort&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;id&amp;quot; type=&amp;quot;xs:unsignedByte&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:attribute name=&amp;quot;default&amp;quot; type=&amp;quot;xs:unsignedByte&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:element name=&amp;quot;phones&amp;quot;&amp;gt;&lt;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;phone&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:attribute name=&amp;quot;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;id&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:attribute name=&amp;quot;default&amp;quot; type=&amp;quot;xs:unsignedByte&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:element name=&amp;quot;comments&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
            &amp;lt;xs:attribute name=&amp;quot;id&amp;quot; type=&amp;quot;xs:unsignedByte&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;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSLT ===&lt;br /&gt;
&lt;br /&gt;
Transformeerimine HTML formaati&lt;br /&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;
&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:template match=&amp;quot;/&amp;quot;&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;Phone book entries (a-z)&amp;lt;/h2&amp;gt;&lt;br /&gt;
    &amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;tr bgcolor=&amp;quot;#9acd32&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;th&amp;gt;Name&amp;lt;/th&amp;gt;&lt;br /&gt;
	&amp;lt;th&amp;gt;Address&amp;lt;/th&amp;gt;&lt;br /&gt;
	&amp;lt;th&amp;gt;Landline&amp;lt;/th&amp;gt;&lt;br /&gt;
	&amp;lt;th&amp;gt;Mobile phone&amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:for-each select=&amp;quot;contacts/contact&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:sort select=&amp;quot;names/first_name&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
	&amp;lt;td&amp;gt;&lt;br /&gt;
	    &amp;lt;xsl:value-of select=&amp;quot;names/first_name&amp;quot;/&amp;gt;&amp;lt;xsl:text&amp;gt; &amp;lt;/xsl:text&amp;gt; &amp;lt;!-- extra space --&amp;gt;&lt;br /&gt;
	    &amp;lt;xsl:value-of select=&amp;quot;names/last_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;addresses/address/country&amp;quot;/&amp;gt;,&lt;br /&gt;
	    &amp;lt;xsl:value-of select=&amp;quot;addresses/address/town&amp;quot;/&amp;gt;,&lt;br /&gt;
	    &amp;lt;xsl:value-of select=&amp;quot;addresses/address/street&amp;quot;/&amp;gt;&amp;lt;xsl:text&amp;gt; &amp;lt;/xsl:text&amp;gt; &amp;lt;!-- extra space --&amp;gt;&lt;br /&gt;
	    &amp;lt;xsl:value-of select=&amp;quot;addresses/address/house_nr&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;/td&amp;gt;&lt;br /&gt;
	    &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;phones/phone[@type=&#039;landline&#039;]&amp;quot;/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
	    &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;phones/phone[@type=&#039;mobile&#039;]&amp;quot;/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
    &amp;lt;/table&amp;gt;&lt;br /&gt;
  &amp;lt;/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;
&lt;br /&gt;
&lt;br /&gt;
Tulemus, kus on tähestikuliselt järjestatud tabelina nimi, aadress, lauatelefon ja mobiil:&lt;br /&gt;
Pilt tulemusest&lt;br /&gt;
http://www.upload.ee/image/2170301/tulemus.png&lt;br /&gt;
&amp;lt;pre&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;Phone book entries (a-z)&amp;lt;/h2&amp;gt;&lt;br /&gt;
    &amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;tr bgcolor=&amp;quot;#9acd32&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Name&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Address&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Landline&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Mobile phone&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;/tr&amp;gt;&lt;br /&gt;
      &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt; Linda   Kuusk &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt; Eesti ,Tallinn , Akadeemia tee  28 &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt; 6359866 &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt; 56777521 &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;/tr&amp;gt;&lt;br /&gt;
      &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt; Mart   Tamm &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt; Eesti , Tartu , Põllu   6 &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt; 7249959 &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt; 53345699 &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;/table&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
XML faili formaadi muutmine&lt;br /&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;
&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;
  &lt;br /&gt;
  &amp;lt;xsl:output method=&amp;quot;xml&amp;quot; indent=&amp;quot;yes&amp;quot;/&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:element name =&amp;quot;contacts&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;contacts/contact&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:element name=&amp;quot;contact&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:attribute name=&amp;quot;id&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;@id&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:copy-of select=&amp;quot;names&amp;quot;/&amp;gt;&lt;br /&gt;
        &lt;br /&gt;
        &amp;lt;xsl:variable name =&amp;quot;default&amp;quot; select=&amp;quot;phones/@default&amp;quot; /&amp;gt;&lt;br /&gt;
        &lt;br /&gt;
        &amp;lt;xsl:for-each select = &amp;quot;phones/phone&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test=&amp;quot;$default = @id&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:copy-of select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:element&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:element&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;
&lt;br /&gt;
&lt;br /&gt;
XML, kus on alles ainult nimi ja vaikimisi telefoni number:&lt;br /&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;
&amp;lt;contacts&amp;gt;&lt;br /&gt;
  &amp;lt;contact id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;names&amp;gt;&lt;br /&gt;
      &amp;lt;first_name&amp;gt; Mart &amp;lt;/first_name&amp;gt;&lt;br /&gt;
      &amp;lt;middle_names&amp;gt;&lt;br /&gt;
        &amp;lt;middle_name /&amp;gt;&lt;br /&gt;
      &amp;lt;/middle_names&amp;gt;&lt;br /&gt;
      &amp;lt;last_name&amp;gt; Tamm &amp;lt;/last_name&amp;gt;&lt;br /&gt;
    &amp;lt;/names&amp;gt;&lt;br /&gt;
    &amp;lt;phone type=&amp;quot;landline&amp;quot; id=&amp;quot;1&amp;quot;&amp;gt; 7249959 &amp;lt;/phone&amp;gt;&lt;br /&gt;
  &amp;lt;/contact&amp;gt;&lt;br /&gt;
  &amp;lt;contact id=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;names&amp;gt;&lt;br /&gt;
      &amp;lt;first_name&amp;gt; Linda &amp;lt;/first_name&amp;gt;&lt;br /&gt;
      &amp;lt;middle_names&amp;gt;&lt;br /&gt;
        &amp;lt;middle_name /&amp;gt;&lt;br /&gt;
      &amp;lt;/middle_names&amp;gt;&lt;br /&gt;
      &amp;lt;last_name&amp;gt; Kuusk &amp;lt;/last_name&amp;gt;&lt;br /&gt;
    &amp;lt;/names&amp;gt;&lt;br /&gt;
    &amp;lt;phone type=&amp;quot;mobile&amp;quot; id=&amp;quot;3&amp;quot;&amp;gt; 56777521 &amp;lt;/phone&amp;gt;&lt;br /&gt;
  &amp;lt;/contact&amp;gt;&lt;br /&gt;
&amp;lt;/contacts&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Veebiteenus ==&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;GetUserCount&#039;&#039;&#039; - Tagastab mitu kasutajat on andmebaasis.&lt;br /&gt;
*&#039;&#039;&#039;GetPersonCount&#039;&#039;&#039; - Tagastab mitu kontakti on andmebaasis kõikide kasutajate peale kokku.&lt;br /&gt;
*&#039;&#039;&#039;GetPersonCountByUser&#039;&#039;&#039; - Tagastab mitu kontakti on andmebaasis kindlal kasutajal.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;AddContact&#039;&#039;&#039; - Uue kontakti lisamine kasutaja külge.&lt;br /&gt;
*&#039;&#039;&#039;UpdateContact&#039;&#039;&#039; - Kontakti info uuendamine.&lt;br /&gt;
*&#039;&#039;&#039;DeleteConcact&#039;&#039;&#039; - Kontakti kustutamine.&lt;br /&gt;
*&#039;&#039;&#039;GetAllPersons&#039;&#039;&#039; - Väljastab kõik listis olevad inimesed.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;AddCompany&#039;&#039;&#039; - Uue ettevõtte kui kontakti lisamine kasutaja külge.&lt;br /&gt;
*&#039;&#039;&#039;UpdateCompany&#039;&#039;&#039; - Ettevõtte info uuendamine.&lt;br /&gt;
*&#039;&#039;&#039;DeleteCompany&#039;&#039;&#039; - Ettevõtte kustutamine.&lt;br /&gt;
*&#039;&#039;&#039;GetAllCompanies&#039;&#039;&#039; - Väljastab kõik listis olevad ettevõtted.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;DeleteUser&#039;&#039;&#039; - Kustutab kasutaja.&lt;br /&gt;
*&#039;&#039;&#039;RestoreUser&#039;&#039;&#039; - Taastab kasutaja.&lt;br /&gt;
*&#039;&#039;&#039;GetAllUsers&#039;&#039;&#039; - List kõikidest kasutajatest.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;RegisterUser&#039;&#039;&#039; - Registreerib uue kasutaja.&lt;br /&gt;
*&#039;&#039;&#039;LoginUser&#039;&#039;&#039; - Logib kasutaja sisse.&lt;br /&gt;
*&#039;&#039;&#039;LogoutUser&#039;&#039;&#039; - Logib kasutaja välja.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;SearchUser&#039;&#039;&#039; - Tagastab otsingu kasutaja järgi.&lt;br /&gt;
*&#039;&#039;&#039;SearchContactByFirstName&#039;&#039;&#039; - Tagastab otsitud kontakti info eesnime järgi. (Annab ka mitu tulemust kui on sama nimega)&lt;br /&gt;
*&#039;&#039;&#039;SearchContactByMiddleName&#039;&#039;&#039; - Tagastab otsitud kontakti info &amp;quot;teise nime&amp;quot; järgi. (Annab ka mitu tulemust kui on sama nimega)&lt;br /&gt;
*&#039;&#039;&#039;SearchContactByLastName&#039;&#039;&#039; - Tagastab otsitud kontakti info perekonna nime järgi. (Annab ka mitu tulemust kui on sama nimega)&lt;br /&gt;
*&#039;&#039;&#039;SearchContactByPhone&#039;&#039;&#039; - Tagastab otsitud kontakti telefoni numbri järgi.&lt;br /&gt;
*&#039;&#039;&#039;SearchCompanyByName&#039;&#039;&#039; - Tagastab otsitud ettevõtte nime järgi.&lt;br /&gt;
*&#039;&#039;&#039;SearchCompanyByPhone&#039;&#039;&#039; - Tagastab otsitud ettevõtte telefoni numbri järgi.&lt;br /&gt;
&lt;br /&gt;
Lahendus on klientrakenduse all.&lt;br /&gt;
&lt;br /&gt;
== Kliendirakendus ==&lt;br /&gt;
Viimane versioon, mida me ka kaitsmisel näitasime: [http://enos.itcollege.ee/~tjuris/PhoneBookService.rar Klientrakendus ja teenus]&lt;br /&gt;
&lt;br /&gt;
== Log ==&lt;br /&gt;
=== 09.06.2012 ===&lt;br /&gt;
* Viimane versioon teenusest ja klientrakendusest&lt;br /&gt;
&lt;br /&gt;
=== kuni 20.05.2012 ===&lt;br /&gt;
* Veebiteenuse parandamine ja kliendirakendus&lt;br /&gt;
* Lisaks ka wiki muutmine :)&lt;br /&gt;
&lt;br /&gt;
=== kuni 30.04.2012 ===&lt;br /&gt;
* Veebiteenusega tegelemine, aga üles sai natuke katki versioon&lt;br /&gt;
&lt;br /&gt;
=== 05.03.2012 ===&lt;br /&gt;
* Kolisime üle korrektsemale aadressile. &lt;br /&gt;
&lt;br /&gt;
=== 03.03.2012 ===&lt;br /&gt;
* XSLT XML transformatsiooni lisamine wikisse.&lt;br /&gt;
&lt;br /&gt;
=== 03.02.2012 ===&lt;br /&gt;
* XSLT html transformatsiooni lisamine wikisse. Viimased lihvimised hinde jaoks.&lt;br /&gt;
&lt;br /&gt;
=== 28.02.2012 ===&lt;br /&gt;
* XML täiendatud/parandatud versioon&lt;br /&gt;
&lt;br /&gt;
=== 27.02.2012 ===&lt;br /&gt;
* XML algne versioon ja wiki valmimine&lt;/div&gt;</summary>
		<author><name>Tjuris</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Meeskond_%22PhoneBook%22&amp;diff=46270</id>
		<title>Meeskond &quot;PhoneBook&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Meeskond_%22PhoneBook%22&amp;diff=46270"/>
		<updated>2012-03-03T13:10:58Z</updated>

		<summary type="html">&lt;p&gt;Tjuris: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Meeskond ==&lt;br /&gt;
* Lauri Jansen - wiki, XML, schema&lt;br /&gt;
* Tanel Jüris - XSLT XML-i&lt;br /&gt;
* Madis Rääk - XSLT html-i&lt;br /&gt;
&lt;br /&gt;
== Idee ==&lt;br /&gt;
Luua näidisteemades välja pakutud telefoniraamatu teenus kus:&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;
Kusjuures on olemas ka 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;
== XML fail ==&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;
&lt;br /&gt;
Lisaks tuleb kasutada 3-el dimensioonil attribuute, mis on enamat, kui lihtsalt ID.&lt;br /&gt;
=== XML ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&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;contacts&amp;gt;&lt;br /&gt;
  &amp;lt;contact id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
    &amp;lt;names&amp;gt;&lt;br /&gt;
      &amp;lt;first_name&amp;gt; Mart &amp;lt;/first_name&amp;gt;&lt;br /&gt;
      &amp;lt;middle_names&amp;gt;&lt;br /&gt;
        &amp;lt;middle_name&amp;gt;&amp;lt;/middle_name&amp;gt;&lt;br /&gt;
      &amp;lt;/middle_names&amp;gt;&lt;br /&gt;
      &amp;lt;last_name&amp;gt; Tamm &amp;lt;/last_name&amp;gt;&lt;br /&gt;
    &amp;lt;/names&amp;gt;&lt;br /&gt;
    &amp;lt;addresses default=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;address id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;country&amp;gt; Eesti &amp;lt;/country&amp;gt;&lt;br /&gt;
        &amp;lt;county&amp;gt; Tartumaa &amp;lt;/county&amp;gt;&lt;br /&gt;
        &amp;lt;town&amp;gt; Tartu &amp;lt;/town&amp;gt;&lt;br /&gt;
        &amp;lt;street&amp;gt; Põllu &amp;lt;/street&amp;gt;&lt;br /&gt;
        &amp;lt;house_nr&amp;gt; 6 &amp;lt;/house_nr&amp;gt;&lt;br /&gt;
        &amp;lt;zip_code&amp;gt; 50210 &amp;lt;/zip_code&amp;gt;&lt;br /&gt;
      &amp;lt;/address&amp;gt;&lt;br /&gt;
      &amp;lt;address id=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;country&amp;gt; Eesti &amp;lt;/country&amp;gt;&lt;br /&gt;
        &amp;lt;county&amp;gt; Jõgevamaa &amp;lt;/county&amp;gt;&lt;br /&gt;
        &amp;lt;town&amp;gt; Palamuse &amp;lt;/town&amp;gt;&lt;br /&gt;
        &amp;lt;street&amp;gt; Oti Talu &amp;lt;/street&amp;gt;&lt;br /&gt;
        &amp;lt;house_nr&amp;gt; &amp;lt;/house_nr&amp;gt;&lt;br /&gt;
        &amp;lt;zip_code&amp;gt; 47292 &amp;lt;/zip_code&amp;gt;&lt;br /&gt;
      &amp;lt;/address&amp;gt;&lt;br /&gt;
    &amp;lt;/addresses&amp;gt;&lt;br /&gt;
    &amp;lt;phones default=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;phone type=&amp;quot;landline&amp;quot; id=&amp;quot;1&amp;quot;&amp;gt; 7249959 &amp;lt;/phone&amp;gt;&lt;br /&gt;
      &amp;lt;phone type=&amp;quot;skype&amp;quot; id=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;/phone&amp;gt;&lt;br /&gt;
      &amp;lt;phone type=&amp;quot;mobile&amp;quot; id=&amp;quot;3&amp;quot;&amp;gt; 53345699 &amp;lt;/phone&amp;gt;&lt;br /&gt;
      &amp;lt;phone type=&amp;quot;work&amp;quot; id=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;/phone&amp;gt;&lt;br /&gt;
      &amp;lt;phone type=&amp;quot;other&amp;quot; id=&amp;quot;5&amp;quot;&amp;gt;&amp;lt;/phone&amp;gt;&lt;br /&gt;
    &amp;lt;/phones&amp;gt;&lt;br /&gt;
    &amp;lt;comments&amp;gt;&amp;lt;/comments&amp;gt;&lt;br /&gt;
  &amp;lt;/contact&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;contact id=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;names&amp;gt;&lt;br /&gt;
      &amp;lt;first_name&amp;gt; Linda &amp;lt;/first_name&amp;gt;&lt;br /&gt;
      &amp;lt;middle_names&amp;gt;&lt;br /&gt;
        &amp;lt;middle_name&amp;gt;&amp;lt;/middle_name&amp;gt;&lt;br /&gt;
      &amp;lt;/middle_names&amp;gt;&lt;br /&gt;
      &amp;lt;last_name&amp;gt; Kuusk &amp;lt;/last_name&amp;gt;&lt;br /&gt;
    &amp;lt;/names&amp;gt;&lt;br /&gt;
    &amp;lt;addresses default=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;address id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;country&amp;gt; Eesti &amp;lt;/country&amp;gt;&lt;br /&gt;
        &amp;lt;county&amp;gt; Harjumaa &amp;lt;/county&amp;gt;&lt;br /&gt;
        &amp;lt;town&amp;gt; Tallinn &amp;lt;/town&amp;gt;&lt;br /&gt;
        &amp;lt;street&amp;gt; Akadeemia tee &amp;lt;/street&amp;gt;&lt;br /&gt;
        &amp;lt;house_nr&amp;gt; 28 &amp;lt;/house_nr&amp;gt;&lt;br /&gt;
        &amp;lt;zip_code&amp;gt; 12300 &amp;lt;/zip_code&amp;gt;&lt;br /&gt;
      &amp;lt;/address&amp;gt;&lt;br /&gt;
    &amp;lt;/addresses&amp;gt;&lt;br /&gt;
    &amp;lt;phones default=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;phone type=&amp;quot;landline&amp;quot; id=&amp;quot;1&amp;quot;&amp;gt; 6359866 &amp;lt;/phone&amp;gt;&lt;br /&gt;
      &amp;lt;phone type=&amp;quot;skype&amp;quot; id=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;/phone&amp;gt;&lt;br /&gt;
      &amp;lt;phone type=&amp;quot;mobile&amp;quot; id=&amp;quot;3&amp;quot;&amp;gt; 56777521 &amp;lt;/phone&amp;gt;&lt;br /&gt;
      &amp;lt;phone type=&amp;quot;work&amp;quot; id=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;/phone&amp;gt;&lt;br /&gt;
      &amp;lt;phone type=&amp;quot;other&amp;quot; id=&amp;quot;5&amp;quot;&amp;gt;&amp;lt;/phone&amp;gt;&lt;br /&gt;
    &amp;lt;/phones&amp;gt;&lt;br /&gt;
    &amp;lt;comments&amp;gt;&amp;lt;/comments&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/contact&amp;gt;&lt;br /&gt;
&amp;lt;/contacts&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XML schema (XSD) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xs:schema attributeFormDefault=&amp;quot;unqualified&amp;quot; elementFormDefault=&amp;quot;qualified&amp;quot; xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xs:element name=&amp;quot;contacts&amp;quot;&amp;gt;&lt;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;contact&amp;quot;&amp;gt;&lt;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;names&amp;quot;&amp;gt;&lt;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;first_name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;middle_names&amp;quot;&amp;gt;&lt;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;middle_name&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;last_name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;addresses&amp;quot;&amp;gt;&lt;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;address&amp;quot;&amp;gt;&lt;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;country&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element name=&amp;quot;county&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element name=&amp;quot;town&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element name=&amp;quot;street&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element name=&amp;quot;house_nr&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element name=&amp;quot;zip_code&amp;quot; type=&amp;quot;xs:unsignedShort&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:attribute name=&amp;quot;id&amp;quot; type=&amp;quot;xs:unsignedByte&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:attribute name=&amp;quot;default&amp;quot; type=&amp;quot;xs:unsignedByte&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:element name=&amp;quot;phones&amp;quot;&amp;gt;&lt;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;phone&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:attribute name=&amp;quot;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;id&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:attribute name=&amp;quot;default&amp;quot; type=&amp;quot;xs:unsignedByte&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:element name=&amp;quot;comments&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
            &amp;lt;xs:attribute name=&amp;quot;id&amp;quot; type=&amp;quot;xs:unsignedByte&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;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSLT ===&lt;br /&gt;
&lt;br /&gt;
Transformeerimine HTML formaati&lt;br /&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;
&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:template match=&amp;quot;/&amp;quot;&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;Phone book entries (a-z)&amp;lt;/h2&amp;gt;&lt;br /&gt;
    &amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;tr bgcolor=&amp;quot;#9acd32&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;th&amp;gt;Name&amp;lt;/th&amp;gt;&lt;br /&gt;
	&amp;lt;th&amp;gt;Address&amp;lt;/th&amp;gt;&lt;br /&gt;
	&amp;lt;th&amp;gt;Landline&amp;lt;/th&amp;gt;&lt;br /&gt;
	&amp;lt;th&amp;gt;Mobile phone&amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:for-each select=&amp;quot;contacts/contact&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:sort select=&amp;quot;names/first_name&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
	&amp;lt;td&amp;gt;&lt;br /&gt;
	    &amp;lt;xsl:value-of select=&amp;quot;names/first_name&amp;quot;/&amp;gt;&amp;lt;xsl:text&amp;gt; &amp;lt;/xsl:text&amp;gt; &amp;lt;!-- extra space --&amp;gt;&lt;br /&gt;
	    &amp;lt;xsl:value-of select=&amp;quot;names/last_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;addresses/address/country&amp;quot;/&amp;gt;,&lt;br /&gt;
	    &amp;lt;xsl:value-of select=&amp;quot;addresses/address/town&amp;quot;/&amp;gt;,&lt;br /&gt;
	    &amp;lt;xsl:value-of select=&amp;quot;addresses/address/street&amp;quot;/&amp;gt;&amp;lt;xsl:text&amp;gt; &amp;lt;/xsl:text&amp;gt; &amp;lt;!-- extra space --&amp;gt;&lt;br /&gt;
	    &amp;lt;xsl:value-of select=&amp;quot;addresses/address/house_nr&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;/td&amp;gt;&lt;br /&gt;
	    &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;phones/phone[@type=&#039;landline&#039;]&amp;quot;/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
	    &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;phones/phone[@type=&#039;mobile&#039;]&amp;quot;/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
    &amp;lt;/table&amp;gt;&lt;br /&gt;
  &amp;lt;/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;
&lt;br /&gt;
&lt;br /&gt;
Tulemus, kus on tähestikuliselt järjestatud tabelina nimi, aadress, lauatelefon ja mobiil:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&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;Phone book entries (a-z)&amp;lt;/h2&amp;gt;&lt;br /&gt;
    &amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;tr bgcolor=&amp;quot;#9acd32&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Name&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Address&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Landline&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Mobile phone&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;/tr&amp;gt;&lt;br /&gt;
      &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt; Linda   Kuusk &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt; Eesti ,&lt;br /&gt;
                 Tallinn ,&lt;br /&gt;
                 Akadeemia tee   28 &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt; 6359866 &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt; 56777521 &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;/tr&amp;gt;&lt;br /&gt;
      &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt; Mart   Tamm &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt; Eesti ,&lt;br /&gt;
                 Tartu ,&lt;br /&gt;
                 Põllu   6 &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt; 7249959 &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt; 53345699 &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;/table&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
XML faili formaadi muutmine&lt;br /&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;
&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;
  &lt;br /&gt;
  &amp;lt;xsl:output method=&amp;quot;xml&amp;quot; indent=&amp;quot;yes&amp;quot;/&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:element name =&amp;quot;contacts&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;contacts/contact&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:element name=&amp;quot;contact&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:attribute name=&amp;quot;id&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;@id&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:copy-of select=&amp;quot;names&amp;quot;/&amp;gt;&lt;br /&gt;
        &lt;br /&gt;
        &amp;lt;xsl:variable name =&amp;quot;default&amp;quot; select=&amp;quot;phones/@default&amp;quot; /&amp;gt;&lt;br /&gt;
        &lt;br /&gt;
        &amp;lt;xsl:for-each select = &amp;quot;phones/phone&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test=&amp;quot;$default = @id&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:copy-of select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:element&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:element&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;
&lt;br /&gt;
&lt;br /&gt;
XML, kus on alles ainult nimi ja vaikimisi telefoni number:&lt;br /&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;
&amp;lt;contacts&amp;gt;&lt;br /&gt;
  &amp;lt;contact id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;names&amp;gt;&lt;br /&gt;
      &amp;lt;first_name&amp;gt; Mart &amp;lt;/first_name&amp;gt;&lt;br /&gt;
      &amp;lt;middle_names&amp;gt;&lt;br /&gt;
        &amp;lt;middle_name /&amp;gt;&lt;br /&gt;
      &amp;lt;/middle_names&amp;gt;&lt;br /&gt;
      &amp;lt;last_name&amp;gt; Tamm &amp;lt;/last_name&amp;gt;&lt;br /&gt;
    &amp;lt;/names&amp;gt;&lt;br /&gt;
    &amp;lt;phone type=&amp;quot;landline&amp;quot; id=&amp;quot;1&amp;quot;&amp;gt; 7249959 &amp;lt;/phone&amp;gt;&lt;br /&gt;
  &amp;lt;/contact&amp;gt;&lt;br /&gt;
  &amp;lt;contact id=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;names&amp;gt;&lt;br /&gt;
      &amp;lt;first_name&amp;gt; Linda &amp;lt;/first_name&amp;gt;&lt;br /&gt;
      &amp;lt;middle_names&amp;gt;&lt;br /&gt;
        &amp;lt;middle_name /&amp;gt;&lt;br /&gt;
      &amp;lt;/middle_names&amp;gt;&lt;br /&gt;
      &amp;lt;last_name&amp;gt; Kuusk &amp;lt;/last_name&amp;gt;&lt;br /&gt;
    &amp;lt;/names&amp;gt;&lt;br /&gt;
    &amp;lt;phone type=&amp;quot;mobile&amp;quot; id=&amp;quot;3&amp;quot;&amp;gt; 56777521 &amp;lt;/phone&amp;gt;&lt;br /&gt;
  &amp;lt;/contact&amp;gt;&lt;br /&gt;
&amp;lt;/contacts&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Log ==&lt;br /&gt;
&lt;br /&gt;
=== 03.03.2012 ===&lt;br /&gt;
* XSLT XML transformatsiooni lisamine wikisse.&lt;br /&gt;
&lt;br /&gt;
=== 03.02.2012 ===&lt;br /&gt;
* XSLT html transformatsiooni lisamine wikisse. Viimased lihvimised hinde jaoks.&lt;br /&gt;
&lt;br /&gt;
=== 28.02.2012 ===&lt;br /&gt;
* XML täiendatud/parandatud versioon&lt;br /&gt;
&lt;br /&gt;
=== 27.02.2012 ===&lt;br /&gt;
* XML algne versioon ja wiki valmimine&lt;/div&gt;</summary>
		<author><name>Tjuris</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Talk:%C3%96%C3%B6&amp;diff=41237</id>
		<title>Talk:Öö</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Talk:%C3%96%C3%B6&amp;diff=41237"/>
		<updated>2011-11-02T18:28:38Z</updated>

		<summary type="html">&lt;p&gt;Tjuris: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Idee retsensioon==&lt;br /&gt;
Esimese muljena jäi, et selliseid mänge leidub palju. Aga samas on võimalik, et tegu on ikkagi omamoodi mänguga - teistsuguse graafika, stoori ja mänguelamusega. Üks huvitav faktor on kindlasti automaatselt genereeritud levelid, mille realiseerimine võib olla keeruline, kuid kindlasti annab mängule juurde nii-öelda korduva mängitavuse väärtust. Tundub, et mäng on plaanis teha mugavaks andes võimaluse juhtida ainult hiirega.&lt;br /&gt;
&lt;br /&gt;
Idee suund on selgelt paika pandud, kuid valmistoodang tundub veel suhteliselt lahtine. Seda sellepärast, et tegemist on veel mängu arenduse algfaasiga. Me oleme kindlad, et see projekt on teostatav.&lt;br /&gt;
&lt;br /&gt;
Lisandused ideele.&lt;br /&gt;
Tegelane võiks saada experience punkte ja leveleid. Läbi selle siis mingeid boonuseid ( tugevust, kiirust jne ). Ja muidugi lihtsalt silmailu (Muutuv välimus tegelasel).&lt;br /&gt;
Lisaks highscorele võiks olla ka Achievementide süsteem.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lahtiseks jäid küsimused:&lt;br /&gt;
*Kas tegelane on lennuk?&lt;br /&gt;
*Kuidas hakkab koostöö käima (Arenduskäik - failide ja bugide haldus) ?&lt;br /&gt;
&lt;br /&gt;
Retsentseeris meeskond [[IT_Gurud]]&lt;br /&gt;
&lt;br /&gt;
==Analüüsi retsensioon==&lt;br /&gt;
Selle mängu arendajatel tundub olevat selge ettekujutus, mida nad teha kavatsevad. Ilmselgelt on põhjuseks minimaalne kõrvalekalle varasematest samasugustest mängudest.&lt;br /&gt;
&lt;br /&gt;
Samas ei ole projekti detaile kas ära otsustatud või kirja pandud. Funktsionaalsuste nimekiri on küll ilusti välja toodud, kuid võiks olla neist lähemalt kirjutatud.&lt;br /&gt;
&lt;br /&gt;
Täpsemalt - puudub info menüü ülesehituse kohta. Graafika poole pealt teame vaid seda, et see on 2D. Pole öeldud, mille poolest erinevad raskusastmed teineteisest erinevad. Kuigi selle kohta võib edukalt oletusi teha, võiks üldsuuna ikka ära otsustada.&lt;br /&gt;
&lt;br /&gt;
Ajapiirangu, töömahu ja problemaatiliste osade realiseerimise vallas ollakse väga vaoshoitud, kuid selline kindla peale minek on ehk mõistlikum kui liialt palju korraga ette võtta.&lt;br /&gt;
Retsentseeris meeskond [[IT_Gurud]]&lt;/div&gt;</summary>
		<author><name>Tjuris</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=IT_Gurud&amp;diff=39709</id>
		<title>IT Gurud</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=IT_Gurud&amp;diff=39709"/>
		<updated>2011-10-22T16:11:24Z</updated>

		<summary type="html">&lt;p&gt;Tjuris: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Meeskond: IT Gurud ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Madis Rääk - Arendusjuht&lt;br /&gt;
&lt;br /&gt;
Indrek Reemi&lt;br /&gt;
&lt;br /&gt;
Tanel Jüris&lt;br /&gt;
&lt;br /&gt;
Kullo-Kalev Aru&lt;br /&gt;
&lt;br /&gt;
== Idee suund ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Indie 2D Action-game&lt;br /&gt;
&lt;br /&gt;
Tugi: PC, Xbox360&lt;br /&gt;
&lt;br /&gt;
Free Download. Installer.&lt;br /&gt;
&lt;br /&gt;
Tegelane peab läbima erinevaid tasemeid, et läbida mäng ja saada punkte. Võimalik on hüpata, tulistada ja asju korjata.&lt;br /&gt;
Skoori mõjutavad erinevad tegurid: Vaenlaste mahalöömine, leveli läbimise aeg, väärtuslike objektide korjamine.&lt;br /&gt;
&lt;br /&gt;
Mängija põhimõte on kiiresti mõelda, tegutseda. Tegu on pingelise mänguga.&lt;br /&gt;
&lt;br /&gt;
== Arenduse leht ==&lt;br /&gt;
[https://github.com/ECMadis/trunk Meie koduke siis projekti jaoks]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/ECMadis/trunk/blob/General-1.0/Other/Main%20Analysis.doc?raw=true ANALÜÜS]&lt;br /&gt;
&lt;br /&gt;
== Logi ==&lt;br /&gt;
&lt;br /&gt;
=== 20 sept ===&lt;br /&gt;
* Lõime meeskonna&lt;br /&gt;
* Arutasime ideed&lt;br /&gt;
* Tegime wiki lehe&lt;br /&gt;
&lt;br /&gt;
=== 27 sept ===&lt;br /&gt;
* Paigaldasime kõigile töökeskkonna&lt;br /&gt;
* Githubiga tutvumine&lt;br /&gt;
* Alustasime analüüsiga&lt;br /&gt;
&lt;br /&gt;
=== 4 okt ===&lt;br /&gt;
* Meeskonnaga liitus Kullo-Kalev Aru&lt;br /&gt;
* Retsentseerisime meeskonda [[Öö]]&lt;/div&gt;</summary>
		<author><name>Tjuris</name></author>
	</entry>
</feed>