Sense Of Direction: Difference between revisions

From ICO wiki
Jump to navigationJump to search
Ababokin (talk | contribs)
Ababokin (talk | contribs)
No edit summary
 
(4 intermediate revisions by 4 users not shown)
Line 6: Line 6:
*Vladislav Lahtarin
*Vladislav Lahtarin
*Vladislav Kovaltšuk
*Vladislav Kovaltšuk
==Idee==
Projekti eesmärgiks on teha keskonna, kus saaks korraldada orienteerimismänge. Mängu alustamiseks on vaja luua marsruut ja panna kokku paar meeskonda. Iga meeskonnal on oma marsruut, mis on täis erinevaid väljakutseid.
==Analüüs==
Veebirakendus on mänguteenus, mis aitab inimestel mõnusalt aega veeta, arendada koostöö võimet, leida uusi sõpru ning teha sporti.
Üks inimene loob mängu, kus ta märgib selle läbiviimise ala, aja ja kirjeldab kõik kontrollpunktid. Teised registreerivad ennast kasutajateks, loovad uue meeskonna või liituvad juba olemasolevaga. Mängu alustamiseks on vaja panna kokku vähemalt kaks meeskonda. Igal meeskonnal on antud oma marsruut kontrollpunktidest, kus neid ootavad erinevad ülesanded.
Mängu põhiideeks on läbida oma meeskonnaga kontrollpunktid kiiremini kui vastasmeeskond.
==Must to have==
*Kasutajatel on erinevad rollid: Admin, külaline, mängu looja, mängu osaleja.
*Registreerimis ja logimis sisse võimalus.
*Luua uue mängu või liituda olemasolevaga.
*Uue mängu loomisel võimalus lisada challenge-id.
*Luua uue meeskonna või liituda olemaolevaga.
*Uue meeskonna loomisel võimalus anda meeskonnale nime.
*Meeskonna loojal võimalus vastu võtma uusi osalejaid või visata välja juba liitunud olevaid.
*Mängu ajal iga meeskond peab näha GPS peal enda ja oma järgmise challenge asukoha.
*Võimalus anda meeskondadele hinnangu.
==Nice to have==
*Rakenduse korralik disain.
*Võimalus korraldada mängud väljaspool Mustamäe.
*Keele valiku võimalust.
==Lähtekood==
*'''Veebiteenus:''' [https://drive.google.com/file/d/0B6DMyDk0pwzLR2ZXNklfeXc4dE0/view?usp=sharing Link]
*'''Klientrakendus''' [https://drive.google.com/file/d/0B6DMyDk0pwzLUnNSYWUtWXdhNkE/view?usp=sharing Link]


=XML/XSD/XSLT=
=XML/XSD/XSLT=
Line 488: Line 516:
</xsl:stylesheet>
</xsl:stylesheet>
</pre>
</pre>
== Retsensioon XML-failide kohta meeskonnale "Poly" ==
Meeskonna "Poly" XML failide sisu leiab [https://wiki.itcollege.ee/index.php/2017_Meeskond_Poly siit!]
*'''XML'''
XML fail andmete edastamiseks on läbinud valideerimist ja ei näitanud ühtegi viga.
Selles on olemas 4 loogilist dimensiooni, mis vastab ülesande miinimum nõuetele.
XML failis on kasutusel ka atribuudid, kuid nad tunduvat väga lihtsad olevat (id, riigi ja uhikute määramiseks).
Samuti XML failis on olemas näidisandmed sees, kuid erilist variatsiooni andmete sees ei ole, nad on peeaegu samad.
XML failis kasutatud kirjutamise stiil on arusaadav ja ilus. Kuid XML'i puudus on see, et selles ei ole kasutusel CDATA-d, ning üldine mulje XML faili kohta on vasturääkiv. Ühest küljest vaadates on see konkreetne ja arusaadav, kuid teisest küljest on see väga lihtne ja ebahuvitav.
*'''Skeemifail'''
XSD skeemi fail on meie arvates korralikult tehtud ning andmetüübid on valitud õigesti. XSD skeemifail ja XML fail vastavad teineteisele.
*'''Transformatsioonid'''
XSLT HTML tundub liiga lihtne olevat, kasutusel on ainult üks for-each tsükkel ja if tingimus. Samuti on väga lihtsasti tehtud ka teine transformatsioon XML faili.
* '''Kokkuvõtte'''
Kokkuvõtteks, valitud teema, mille kohta on XML fail ja selle transformatsioonid tehtud on iseenesest huvitav, kuid tundub, et meeskond ei ole seda väga põhjalikult läbi töötanud. Võiks olla rohkem elemente ja atribuute ning struktuur keerulisem.
== "Bob's Burgers" veebiteenuse ja klientrakenduse retsensioon ==
Meeskonna "Bob's Burgers" wiki leht asub [https://wiki.itcollege.ee/index.php/Bob%27s_Burgers siin!]
Meeskond Bob's Burgers on valmis teinud veebiteenuse, kui ka klientrakenduse, mis võimaldab mänguturniire luua. Analüüsis on välja toodud ideid, mis meeskond tahab realiseerida. Tahaks, et analüüs oleks rohkem informatiivne ning olid välja toodud nii "must have" kui ka "nice to have" asjad, mida loodud teenus peab võimaldama. Analüüsist on näha, et andmebaas eeldusena on olemas ning olemeid on seal kohe kindlasti üle kuue. See aitab mõista, millega on täpsemalt tegu. Projekti sai ühe klikiga allalaadida ja IDE’s avada. Näha on, et kasutatakse kõiki õpitud arendusmustreid, kuid projekti ülesehitus võiks olla loogilisem. Meeldis, et kogu kood on loetav, kuid kommentaarid puuduvad. Klientrakendus oli tehtud angularjs-iga. Probleemi sisse logimisega ei olnud. Paraku meeskonna wiki veebilehes polnud administraatori õigustega kasutaja sisse logimis andmed (leidsime neid andmed projekti sees, kasutajanimi: admin, parool: asd). Mitte kõik funktsionaalsus, mis on rakenduses olemas töötab korrektselt. Admin ei saa mänge kustutada. Samuti pole arusaadav, kuidas anda roll meeskonna mängijale ja kuidas jaotada mängijad Party’deks. Klientrakenduses oli samuti kasutada häid tavasid ja ülesehitus oli loogiline. Samuti meeldis lehe user-friendly disain, kõik on hästi arusaadav ja nähtav. Arvan, et projektiga on väga palju vaeva nähtud ja tehtud head meeskonnatööd. Kasutatud on kõike õpitud ja veelgi rohkem. Selline töö on peaaegu maksimaalset tulemust väärt.

Latest revision as of 00:56, 13 June 2017

Kodutöö aines "Võrgurakendused II: hajussüsteemide ehitamine"

Meeskond

  • Ilja Andrejev
  • Aleksandr Babõkin
  • Vladislav Lahtarin
  • Vladislav Kovaltšuk

Idee

Projekti eesmärgiks on teha keskonna, kus saaks korraldada orienteerimismänge. Mängu alustamiseks on vaja luua marsruut ja panna kokku paar meeskonda. Iga meeskonnal on oma marsruut, mis on täis erinevaid väljakutseid.

Analüüs

Veebirakendus on mänguteenus, mis aitab inimestel mõnusalt aega veeta, arendada koostöö võimet, leida uusi sõpru ning teha sporti. Üks inimene loob mängu, kus ta märgib selle läbiviimise ala, aja ja kirjeldab kõik kontrollpunktid. Teised registreerivad ennast kasutajateks, loovad uue meeskonna või liituvad juba olemasolevaga. Mängu alustamiseks on vaja panna kokku vähemalt kaks meeskonda. Igal meeskonnal on antud oma marsruut kontrollpunktidest, kus neid ootavad erinevad ülesanded. Mängu põhiideeks on läbida oma meeskonnaga kontrollpunktid kiiremini kui vastasmeeskond.

Must to have

  • Kasutajatel on erinevad rollid: Admin, külaline, mängu looja, mängu osaleja.
  • Registreerimis ja logimis sisse võimalus.
  • Luua uue mängu või liituda olemasolevaga.
  • Uue mängu loomisel võimalus lisada challenge-id.
  • Luua uue meeskonna või liituda olemaolevaga.
  • Uue meeskonna loomisel võimalus anda meeskonnale nime.
  • Meeskonna loojal võimalus vastu võtma uusi osalejaid või visata välja juba liitunud olevaid.
  • Mängu ajal iga meeskond peab näha GPS peal enda ja oma järgmise challenge asukoha.
  • Võimalus anda meeskondadele hinnangu.

Nice to have

  • Rakenduse korralik disain.
  • Võimalus korraldada mängud väljaspool Mustamäe.
  • Keele valiku võimalust.

Lähtekood

XML/XSD/XSLT

XML

<?xml version="1.0" encoding="utf-8"?>
<bussiLiinid>
    <bussiLiin liik="Ekspress" number="456TN">
        <buss bussiLiik="tavaline">
            <regMark>567TFL</regMark>
            <mark>Scania</mark>
            <mudel>68l</mudel>
            <maht yhik="kohta">45</maht>
            <varustus>Kohviautomaat, 220 V, A/C, internet, multimeedia, WC</varustus>
        </buss>
        <bussiJuht>
            <nimi><![CDATA[Jaan]]></nimi>
            <perekonnaNimi><![CDATA[Puu]]></perekonnaNimi>
        </bussiJuht>
        <marsruut>
            <lahteKoht valjumine="15:00"><![CDATA[Tallinn]]></lahteKoht>
            <sihtKoht saabumine="18:30"><![CDATA[Narva]]></sihtKoht>
            <soiduKestusTund yhik="h">3</soiduKestusTund>
            <soiduKestusMinut yhik="m">30</soiduKestusMinut>
        </marsruut>
        <suund><![CDATA[Tallinn - Narva]]></suund>
        <peatused>
            <peatus saabumine="17:30"><![CDATA[Kohtla-Jarve]]></peatus>
            <peatus saabumine="17:45"><![CDATA[Johvi]]></peatus>
            <peatus saabumine="18:05"><![CDATA[Sillamae]]></peatus>
        </peatused>
        <valjumisPaevad>
            <valjumisPaev soidab="true">E</valjumisPaev>
            <valjumisPaev soidab="true">T</valjumisPaev>
            <valjumisPaev soidab="true">K</valjumisPaev>
            <valjumisPaev soidab="true">N</valjumisPaev>
            <valjumisPaev soidab="true">R</valjumisPaev>
            <valjumisPaev soidab="false">L</valjumisPaev>
            <valjumisPaev soidab="false">P</valjumisPaev>
        </valjumisPaevad>
    </bussiLiin>
    <bussiLiin liik="Ekspress" number="456NT">
        <buss bussiLiik="tavaline">
            <regMark>567TFL</regMark>
            <mark>Scania</mark>
            <mudel>68l</mudel>
            <maht yhik="kohta">45</maht>
            <varustus>Kohviautomaat, 220 V, A/C, internet, multimeedia, WC</varustus>
        </buss>
        <bussiJuht>
            <nimi><![CDATA[Jaan]]></nimi>
            <perekonnaNimi><![CDATA[Puu]]></perekonnaNimi>
        </bussiJuht>
        <marsruut>
            <lahteKoht valjumine="19:00"><![CDATA[Narva]]></lahteKoht>
            <sihtKoht saabumine="22:30"><![CDATA[Tallinn]]></sihtKoht>
            <soiduKestusTund yhik="h">3</soiduKestusTund>
            <soiduKestusMinut yhik="m">30</soiduKestusMinut>
        </marsruut>
        <suund><![CDATA[Narva - Tallinn]]></suund>
        <peatused>
            <peatus saabumine="19:25"><![CDATA[Sillamae]]></peatus>
            <peatus saabumine="19:45"><![CDATA[Johvi]]></peatus>
            <peatus saabumine="20:00"><![CDATA[Kohtla-Jarve]]></peatus>
        </peatused>
        <valjumisPaevad>
            <valjumisPaev soidab="true">E</valjumisPaev>
            <valjumisPaev soidab="true">T</valjumisPaev>
            <valjumisPaev soidab="true">K</valjumisPaev>
            <valjumisPaev soidab="true">N</valjumisPaev>
            <valjumisPaev soidab="true">R</valjumisPaev>
            <valjumisPaev soidab="false">L</valjumisPaev>
            <valjumisPaev soidab="false">P</valjumisPaev>
        </valjumisPaevad>
    </bussiLiin>
    <bussiLiin liik="Ekspress" number="189TP">
        <buss bussiLiik="tavaline">
            <regMark>496DLY</regMark>
            <mark>Scania</mark>
            <mudel>40l</mudel>
            <maht yhik="kohta">40</maht>
            <varustus>Kohviautomaat, 220 V, A/C, internet, multimeedia, WC</varustus>
        </buss>
        <bussiJuht>
            <nimi><![CDATA[Jaak]]></nimi>
            <perekonnaNimi><![CDATA[Mand]]></perekonnaNimi>
        </bussiJuht>
        <marsruut>
            <lahteKoht valjumine="14:00"><![CDATA[Tallinn]]></lahteKoht>
            <sihtKoht saabumine="15:50"><![CDATA[Parnu]]></sihtKoht>
            <soiduKestusTund yhik="h">1</soiduKestusTund>
            <soiduKestusMinut yhik="m">50</soiduKestusMinut>
        </marsruut>
        <suund><![CDATA[Tallinn - Parnu]]></suund>
        <peatused>
            <peatus saabumine="14:20"><![CDATA[Vana-Paaskula]]></peatus>
        </peatused>
        <valjumisPaevad>
            <valjumisPaev soidab="false">E</valjumisPaev>
            <valjumisPaev soidab="false">T</valjumisPaev>
            <valjumisPaev soidab="false">K</valjumisPaev>
            <valjumisPaev soidab="false">N</valjumisPaev>
            <valjumisPaev soidab="true">R</valjumisPaev>
            <valjumisPaev soidab="true">L</valjumisPaev>
            <valjumisPaev soidab="true">P</valjumisPaev>
        </valjumisPaevad>
    </bussiLiin>
    <bussiLiin liik="Ekspress" number="189PT">
        <buss bussiLiik="tavaline">
            <regMark>496DLY</regMark>
            <mark>Scania</mark>
            <mudel>40l</mudel>
            <maht yhik="kohta">40</maht>
            <varustus>Kohviautomaat, 220 V, A/C, internet, multimeedia, WC</varustus>
        </buss>
        <bussiJuht>
            <nimi><![CDATA[Jaak]]></nimi>
            <perekonnaNimi><![CDATA[Mand]]></perekonnaNimi>
        </bussiJuht>
        <marsruut>
            <lahteKoht valjumine="16:30"><![CDATA[Parnu]]></lahteKoht>
            <sihtKoht saabumine="18:20"><![CDATA[Tallinn]]></sihtKoht>
            <soiduKestusTund yhik="h">1</soiduKestusTund>
            <soiduKestusMinut yhik="m">50</soiduKestusMinut>
        </marsruut>
        <suund><![CDATA[Parnu - Tallinn]]></suund>
        <peatused>
            <peatus saabumine="18:00"><![CDATA[Vana-Paaskula]]></peatus>
        </peatused>
        <valjumisPaevad>
            <valjumisPaev soidab="false">E</valjumisPaev>
            <valjumisPaev soidab="false">T</valjumisPaev>
            <valjumisPaev soidab="false">K</valjumisPaev>
            <valjumisPaev soidab="false">N</valjumisPaev>
            <valjumisPaev soidab="true">R</valjumisPaev>
            <valjumisPaev soidab="true">L</valjumisPaev>
            <valjumisPaev soidab="true">P</valjumisPaev>
        </valjumisPaevad>
    </bussiLiin>
    <bussiLiin liik="Ekspress" number="738TT">
        <buss bussiLiik="tavaline">
            <regMark>209BDI</regMark>
            <mark>Scania</mark>
            <mudel>55l</mudel>
            <maht yhik="kohta">50</maht>
            <varustus>Kohviautomaat, 220 V, A/C, internet, multimeedia, WC</varustus>
        </buss>
        <bussiJuht>
            <nimi><![CDATA[Raul]]></nimi>
            <perekonnaNimi><![CDATA[Kala]]></perekonnaNimi>
        </bussiJuht>
        <marsruut>
            <lahteKoht valjumine="17:00"><![CDATA[Tallinn]]></lahteKoht>
            <sihtKoht saabumine="19:30"><![CDATA[Tartu]]></sihtKoht>
            <soiduKestusTund yhik="h">2</soiduKestusTund>
            <soiduKestusMinut yhik="m">30</soiduKestusMinut>
        </marsruut>
        <suund><![CDATA[Tallinn - Tartu]]></suund>
        <peatused>
            <peatus saabumine="17:15"><![CDATA[Tallinna Lennujaam]]></peatus>
        </peatused>
        <valjumisPaevad>
            <valjumisPaev soidab="true">E</valjumisPaev>
            <valjumisPaev soidab="true">T</valjumisPaev>
            <valjumisPaev soidab="true">K</valjumisPaev>
            <valjumisPaev soidab="true">N</valjumisPaev>
            <valjumisPaev soidab="true">R</valjumisPaev>
            <valjumisPaev soidab="true">L</valjumisPaev>
            <valjumisPaev soidab="true">P</valjumisPaev>
        </valjumisPaevad>
    </bussiLiin>
    <bussiLiin liik="Ekspress" number="738TT">
        <buss bussiLiik="tavaline">
            <regMark>209BDI</regMark>
            <mark>Scania</mark>
            <mudel>55l</mudel>
            <maht yhik="kohta">50</maht>
            <varustus>Kohviautomaat, 220 V, A/C, internet, multimeedia, WC</varustus>
        </buss>
        <bussiJuht>
            <nimi><![CDATA[Raul]]></nimi>
            <perekonnaNimi><![CDATA[Kala]]></perekonnaNimi>
        </bussiJuht>
        <marsruut>
            <lahteKoht valjumine="20:00"><![CDATA[Tartu]]></lahteKoht>
            <sihtKoht saabumine="22:30"><![CDATA[Tallinn]]></sihtKoht>
            <soiduKestusTund yhik="h">2</soiduKestusTund>
            <soiduKestusMinut yhik="m">30</soiduKestusMinut>
        </marsruut>
        <suund><![CDATA[Tartu - Tallinn]]></suund>
        <peatused>
            <peatus saabumine="22:15"><![CDATA[Tallinna Lennujaam]]></peatus>
        </peatused>
        <valjumisPaevad>
            <valjumisPaev soidab="true">E</valjumisPaev>
            <valjumisPaev soidab="true">T</valjumisPaev>
            <valjumisPaev soidab="true">K</valjumisPaev>
            <valjumisPaev soidab="true">N</valjumisPaev>
            <valjumisPaev soidab="true">R</valjumisPaev>
            <valjumisPaev soidab="true">L</valjumisPaev>
            <valjumisPaev soidab="true">P</valjumisPaev>
        </valjumisPaevad>
    </bussiLiin>
</bussiLiinid>

XSD

<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="bussiLiinid">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="unbounded" name="bussiLiin">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="buss">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="regMark" type="xs:string" />
                    <xs:element name="mark" type="xs:string" />
                    <xs:element name="mudel" type="xs:string" />
                    <xs:element name="maht">
                      <xs:complexType>
                        <xs:simpleContent>
                          <xs:extension base="xs:unsignedByte">
                            <xs:attribute name="yhik" type="xs:string" use="required" />
                          </xs:extension>
                        </xs:simpleContent>
                      </xs:complexType>
                    </xs:element>
                    <xs:element minOccurs="0" name="varustus" type="xs:string" />
                  </xs:sequence>
                  <xs:attribute name="bussiLiik" type="xs:string" use="optional" />
                </xs:complexType>
              </xs:element>
              <xs:element name="bussiJuht">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="nimi" type="xs:string" />
                    <xs:element name="perekonnaNimi" type="xs:string" />
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
              <xs:element name="marsruut">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="lahteKoht">
                      <xs:complexType>
                        <xs:simpleContent>
                          <xs:extension base="xs:string">
                            <xs:attribute name="valjumine" type="xs:string" use="required" />
                          </xs:extension>
                        </xs:simpleContent>
                      </xs:complexType>
                    </xs:element>
                    <xs:element name="sihtKoht">
                      <xs:complexType>
                        <xs:simpleContent>
                          <xs:extension base="xs:string">
                            <xs:attribute name="saabumine" type="xs:string" use="required" />
                          </xs:extension>
                        </xs:simpleContent>
                      </xs:complexType>
                    </xs:element>
                    <xs:element name="soiduKestusTund">
                      <xs:complexType>
                        <xs:simpleContent>
                          <xs:extension base="xs:unsignedByte">
                            <xs:attribute name="yhik" type="xs:string" use="required" />
                          </xs:extension>
                        </xs:simpleContent>
                      </xs:complexType>
                    </xs:element>
                    <xs:element name="soiduKestusMinut">
                      <xs:complexType>
                        <xs:simpleContent>
                          <xs:extension base="xs:unsignedByte">
                            <xs:attribute name="yhik" type="xs:string" use="required" />
                          </xs:extension>
                        </xs:simpleContent>
                      </xs:complexType>
                    </xs:element>
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
              <xs:element name="suund" type="xs:string" />
              <xs:element name="peatused">
                <xs:complexType mixed="true">
                  <xs:sequence minOccurs="0">
                    <xs:element maxOccurs="unbounded" name="peatus">
                      <xs:complexType>
                        <xs:simpleContent>
                          <xs:extension base="xs:string">
                            <xs:attribute name="saabumine" type="xs:string" use="required" />
                          </xs:extension>
                        </xs:simpleContent>
                      </xs:complexType>
                    </xs:element>
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
              <xs:element name="valjumisPaevad">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element minOccurs="1" maxOccurs="7" name="valjumisPaev">
                      <xs:complexType>
                        <xs:simpleContent>
                          <xs:extension base="xs:string">
                            <xs:attribute name="soidab" type="xs:boolean" use="required" />
                          </xs:extension>
                        </xs:simpleContent>
                      </xs:complexType>
                    </xs:element>
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
            </xs:sequence>
            <xs:attribute name="liik" type="xs:string" use="optional" />
            <xs:attribute name="number" type="xs:string" use="required" />
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

XSLT(html)

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl">
  <xsl:output method="html" indent="yes" />
  <xsl:template match="/">
    <html>
      <head>
        <title>Bussiliini info</title>
        <style>
          body {background-color:FFFFCC;}
          table {width:700px; text-align: left; margin: auto; border: 3px solid black; font-size: large;}
          #bussiNo {text-align: center;}
        </style>
      </head>
      <body>
        <xsl:for-each select="bussiLiinid/bussiLiin">
          <table>
            <tr>
              <th id="bussiNo" colspan="4">
                <xsl:text>Bussiliini no. </xsl:text>
                <xsl:value-of select="@number"></xsl:value-of>
                <xsl:text> </xsl:text>
                <xsl:value-of select="@liik"></xsl:value-of>
              </th>
            </tr>
            <tr>
              <td>
                <xsl:text>Suund</xsl:text>
              </td>
              <td>
                <xsl:value-of select="suund"></xsl:value-of>
              </td>
              <td>
                <xsl:text>Kestus</xsl:text>
              </td>
              <td>
                <xsl:value-of select="marsruut/soiduKestusTund" />
                <xsl:value-of select="marsruut/soiduKestusTund/@yhik" />
                <xsl:text> </xsl:text>
                <xsl:value-of select="marsruut/soiduKestusMinut" />
                <xsl:value-of select="marsruut/soiduKestusMinut/@yhik" />
              </td>
            </tr>
            <tr>
              <td>
                <xsl:text>Valjumine</xsl:text>
              </td>
              <td>
                <xsl:value-of select="marsruut/lahteKoht/@valjumine" />
              </td>
              <td>
                <xsl:text>Saabumine</xsl:text>
              </td>
              <td>
                <xsl:value-of select="marsruut/sihtKoht/@saabumine" />
              </td>
            </tr>
            <tr>
              <td>
                <xsl:text>Valjumispaevad</xsl:text>
              </td>
              <td colspan="3">
                <xsl:for-each select="valjumisPaevad/valjumisPaev">
                  <xsl:if test="@soidab = 'true'">
                    <xsl:value-of select="." />
                    <xsl:text> </xsl:text>
                  </xsl:if>
                </xsl:for-each>
              </td>
            </tr>
            <tr>
              <td>
                <xsl:text>Bussi mahutuvus</xsl:text>
              </td>
              <td colspan="3">
                <xsl:value-of select="buss/maht" />
                <xsl:text> </xsl:text>
                <xsl:value-of select="buss/maht/@yhik" />
              </td>
            </tr>
            <xsl:if test="buss/varustus">
              <tr>
                <td>
                  <xsl:text>Varustus</xsl:text>
                </td>
                <td colspan="3">
                  <xsl:value-of select="buss/varustus" />
                </td>
              </tr>
            </xsl:if>
            <xsl:if test="peatused/peatus">
              <th colspan="2">
                <xsl:text>Peatused</xsl:text>
              </th>
              <th>
                <xsl:text>Saabumine</xsl:text>
              </th>
            </xsl:if>
            <xsl:for-each select="peatused/peatus">
              <tr>
                <td colspan="2">
                  <xsl:value-of select="." />
                </td>
                <td>
                  <xsl:value-of select="@saabumine" />
                </td>
              </tr>
            </xsl:for-each>
          </table>
          <br />
        </xsl:for-each>
      </body>
    </html>
  </xsl:template>
</xsl:stylesheet>

XSLT(txt)

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl">
    <xsl:output method="text" indent="yes" />
    <xsl:template match="/">
        <xsl:text>Bussijuhide tunniplaan</xsl:text>
        <xsl:for-each select="bussiLiinid/bussiLiin">
            <xsl:text></xsl:text>
            <xsl:text></xsl:text>
            <xsl:value-of select="bussiJuht/nimi" />
            <xsl:text></xsl:text>
            <xsl:value-of select="bussiJuht/perekonnaNimi" />
            <xsl:text></xsl:text>
            <xsl:value-of select="suund" />
            <xsl:text></xsl:text>
            <xsl:for-each select="valjumisPaevad/valjumisPaev">
                <xsl:if test="@soidab = 'true'">
                    <xsl:value-of select="." />
                    <xsl:text></xsl:text>
                </xsl:if>
            </xsl:for-each>
            <xsl:text></xsl:text>
            <xsl:value-of select="marsruut/lahteKoht" />
            <xsl:text></xsl:text>
            <xsl:value-of select="marsruut/lahteKoht/@valjumine" />
            <xsl:text> -> </xsl:text>
            <xsl:for-each select="peatused/peatus">
                <xsl:value-of select="." />
                <xsl:text></xsl:text>
                <xsl:value-of select="@saabumine" />
                <xsl:text> -> </xsl:text>
            </xsl:for-each>
            <xsl:value-of select="marsruut/sihtKoht" />
            <xsl:text></xsl:text>
            <xsl:value-of select="marsruut/sihtKoht/@saabumine" />
        </xsl:for-each>
    </xsl:template>
</xsl:stylesheet>

Retsensioon XML-failide kohta meeskonnale "Poly"

Meeskonna "Poly" XML failide sisu leiab siit!

  • XML

XML fail andmete edastamiseks on läbinud valideerimist ja ei näitanud ühtegi viga. Selles on olemas 4 loogilist dimensiooni, mis vastab ülesande miinimum nõuetele. XML failis on kasutusel ka atribuudid, kuid nad tunduvat väga lihtsad olevat (id, riigi ja uhikute määramiseks). Samuti XML failis on olemas näidisandmed sees, kuid erilist variatsiooni andmete sees ei ole, nad on peeaegu samad. XML failis kasutatud kirjutamise stiil on arusaadav ja ilus. Kuid XML'i puudus on see, et selles ei ole kasutusel CDATA-d, ning üldine mulje XML faili kohta on vasturääkiv. Ühest küljest vaadates on see konkreetne ja arusaadav, kuid teisest küljest on see väga lihtne ja ebahuvitav.

  • Skeemifail

XSD skeemi fail on meie arvates korralikult tehtud ning andmetüübid on valitud õigesti. XSD skeemifail ja XML fail vastavad teineteisele.

  • Transformatsioonid

XSLT HTML tundub liiga lihtne olevat, kasutusel on ainult üks for-each tsükkel ja if tingimus. Samuti on väga lihtsasti tehtud ka teine transformatsioon XML faili.

  • Kokkuvõtte

Kokkuvõtteks, valitud teema, mille kohta on XML fail ja selle transformatsioonid tehtud on iseenesest huvitav, kuid tundub, et meeskond ei ole seda väga põhjalikult läbi töötanud. Võiks olla rohkem elemente ja atribuute ning struktuur keerulisem.

"Bob's Burgers" veebiteenuse ja klientrakenduse retsensioon

Meeskonna "Bob's Burgers" wiki leht asub siin!

Meeskond Bob's Burgers on valmis teinud veebiteenuse, kui ka klientrakenduse, mis võimaldab mänguturniire luua. Analüüsis on välja toodud ideid, mis meeskond tahab realiseerida. Tahaks, et analüüs oleks rohkem informatiivne ning olid välja toodud nii "must have" kui ka "nice to have" asjad, mida loodud teenus peab võimaldama. Analüüsist on näha, et andmebaas eeldusena on olemas ning olemeid on seal kohe kindlasti üle kuue. See aitab mõista, millega on täpsemalt tegu. Projekti sai ühe klikiga allalaadida ja IDE’s avada. Näha on, et kasutatakse kõiki õpitud arendusmustreid, kuid projekti ülesehitus võiks olla loogilisem. Meeldis, et kogu kood on loetav, kuid kommentaarid puuduvad. Klientrakendus oli tehtud angularjs-iga. Probleemi sisse logimisega ei olnud. Paraku meeskonna wiki veebilehes polnud administraatori õigustega kasutaja sisse logimis andmed (leidsime neid andmed projekti sees, kasutajanimi: admin, parool: asd). Mitte kõik funktsionaalsus, mis on rakenduses olemas töötab korrektselt. Admin ei saa mänge kustutada. Samuti pole arusaadav, kuidas anda roll meeskonna mängijale ja kuidas jaotada mängijad Party’deks. Klientrakenduses oli samuti kasutada häid tavasid ja ülesehitus oli loogiline. Samuti meeldis lehe user-friendly disain, kõik on hästi arusaadav ja nähtav. Arvan, et projektiga on väga palju vaeva nähtud ja tehtud head meeskonnatööd. Kasutatud on kõike õpitud ja veelgi rohkem. Selline töö on peaaegu maksimaalset tulemust väärt.