Nipitiri

From ICO wiki
Jump to navigationJump to search

Nipitiri

Meeskonna liikmed

  • Kristjan Pihus
  • Hanno Sirkel
  • Rait Ots
  • Ago Kütt
  • Merje Kungla

Projekti esimene osa: XML

Idee

Luua 4-tasemeline XML definitsioon, näidis sellele ning transleerimised HTML ja XML formaati.

XML

XML fail

<?xml version="1.0" encoding="UTF-8"?>
<tns:autod xmlns:tns="http://www.example.org/autod" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.example.org/autod autod.xsd ">
  <tns:auto id="0" mark="Ford" mudel="Sierra">
    <tns:mootor>
      <tns:kytus>bensiin</tns:kytus>
      <tns:kubatuur yhik="ccm">2000</tns:kubatuur>
    </tns:mootor>
    <tns:kere v2rv="punane"/>
  </tns:auto>
  
  <tns:auto id="1" mark="ZAZ" mudel="969">
    <tns:mootor>
      <tns:kytus>diisel</tns:kytus>
      <tns:kubatuur yhik="ccm">2500</tns:kubatuur>
    </tns:mootor>
    <tns:kere v2rv="roheline"/>
  </tns:auto>
    
  <tns:auto id="2" mark="Saab" mudel="9-5">
    <tns:mootor>
      <tns:kytus>bensiin</tns:kytus>
      <tns:kubatuur yhik="ccm">1500</tns:kubatuur>
    </tns:mootor>
    <tns:kere v2rv="sinine"/>
  </tns:auto>
  
  <tns:auto id="3" mark="Volvo" mudel="960">
    <tns:mootor>
      <tns:kytus>elekter</tns:kytus>
    </tns:mootor>
    <tns:kere v2rv="sinine"/>
  </tns:auto>

  <tns:auto id="4" mark="Volvo" mudel="V40">
    <tns:mootor>
      <tns:kytus>diisel</tns:kytus>
      <tns:kubatuur yhik="ccm">2400</tns:kubatuur>
    </tns:mootor>
    <tns:kere v2rv="must"/>
  </tns:auto>
  
  <tns:auto id="5" mark="Volvo" mudel="V70">
    <tns:mootor>
      <tns:kytus>gaas</tns:kytus>
      <tns:kubatuur yhik="ccm">2000</tns:kubatuur>
    </tns:mootor>
    <tns:kere v2rv="valge"/>
  </tns:auto>
  
</tns:autod>

XSD fail

<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
  targetNamespace="http://www.example.org/autod" 
  xmlns:tns="http://www.example.org/autod"
  elementFormDefault="qualified">

    <simpleType name="kytusSimpleType">
    	<restriction base="string">
    		<enumeration value="bensiin"></enumeration>
    		<enumeration value="diisel"></enumeration>
    		<enumeration value="elekter"></enumeration>
    	</restriction>
    </simpleType>

    <complexType name="mootorComplexType">
    	<sequence>
    		<element name="kytus" type="tns:kytusSimpleType"
    			maxOccurs="1" minOccurs="0">
    		</element>
    		<element name="kubatuur" maxOccurs="1" minOccurs="0">
    			<complexType>
    			 	<simpleContent>
      					<extension base="int">
    						<attribute name="yhik" use="required">
		    					<simpleType>
									<restriction base="string">
										<enumeration value="ccm"/>
										<enumeration value="l"/>
									</restriction>
								</simpleType>
							</attribute>
						</extension>
   					</simpleContent>
				</complexType>
    		</element>
    	</sequence>
    </complexType>

    <complexType name="autoComplexType">
    	<sequence>
    		<element name="mootor" type="tns:mootorComplexType"></element>
    		<element name="kere" type="tns:kereComplexType"
    			maxOccurs="1" minOccurs="1">
    		</element>
    	</sequence>
    	<attribute name="id" type="int"></attribute>
        <attribute name="mark" type="string"></attribute>
        <attribute name="mudel" type="string"></attribute>
    </complexType>
    
    <simpleType name="v2rvSimpleType">
    	<restriction base="string">
    		<enumeration value="punane"></enumeration>
    		<enumeration value="roheline"></enumeration>
    		<enumeration value="sinine"></enumeration>
    	</restriction>
    </simpleType>

    <complexType name="kereComplexType">
        <attribute name="v2rv" type="tns:v2rvSimpleType"></attribute>
    </complexType>

    <element name="autod" type="tns:AutodListComplexType"></element>
    
    <complexType name="AutodListComplexType">
    	<sequence>
    		<element name="auto" type="tns:autoComplexType" maxOccurs="unbounded" minOccurs="0"></element>
    	</sequence>
    </complexType>
</schema>

XSLT failid

XML -> HTML

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:tns="http://www.example.org/autod">

<xsl:output encoding="UTF-8" method="html" />

<xsl:template match="/">
  <html>
  <body>

  <h2>Autode nimekiri</h2>

  <table border="1">
  <tr><td>Mark</td><td>Mudel</td><td>Värv</td><td>Mootor</td></tr>
  <xsl:for-each select="tns:autod/tns:auto">
  <tr>
    <td><xsl:value-of select="@mark"/></td>
    <td><xsl:value-of select="@mudel"/></td>
    <td><xsl:value-of select="tns:kere/@v2rv"/></td>
    <td><xsl:value-of select="tns:mootor/tns:kytus"/> <xsl:text> </xsl:text> <xsl:value-of select="tns:mootor/tns:kubatuur"/><xsl:value-of select="tns:mootor/tns:kubatuur/@yhik"/></td>
  </tr>
  <p> </p>
  </xsl:for-each>
  </table>
  </body>
  </html>
</xsl:template>
</xsl:stylesheet>

XML -> XML

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:tns="http://www.example.org/autod">
  <xsl:output method="xml" indent="yes"/>
  <xsl:template match="/">
    <tns:autod>

      <xsl:for-each select="tns:autod/tns:auto">
        <xsl:if test="@mark='Volvo'">
        <auto>
         <mark>
           <xsl:value-of select="@mark"/> 
         </mark>
         <mudel>
           <xsl:value-of select="@mudel"/>
         </mudel>
        </auto>
        </xsl:if>
      </xsl:for-each>
    </tns:autod>
  </xsl:template>
</xsl:stylesheet>

Projekti teine osa: veebiteenus ja klientrakendus

Analüüs

Projekti tulemina luuakse keeleõppe keskkond milles õppijal on võimalik testida ning selle käigus laiendada oma sõnavara õpitavas võõrkeeles. Veebirakendus realiseeritakse JavaScripti abil (AngularJS raamistikku kasutades) ning veebiteenus MVC Web API tehnoloogial.

Andmemudel koosneb kolmest olemist (sõnad, õppetükkid, skoor), lisaks hoitakse andmebaasis logi kasutaja tehtud tegevuste kohta ning kasutajate autentimisega seotud olemid (Web API Security). Igal olemil on olemas primaarvõti ID näol. Andmemudel on graafiliselt kujutatud joonisel.

Olemite kirjeldused: Lesson - siia salvestatakse õppetüki nimi Word - Sõnad ning nende vasted siht- ja lähtekeeles, seotud Lesson olemiga Score - Rakenduse kasutaja poolt sõna arvamise tulemus, seotud Word olemiga

Andmemudel:

Esialgne API kirjeldus:

Esialgne API kirjeldus

Kasutaja vaate kirjeldus:

Rakenduse kasutajale kuvatakse sisselogimisvaade. Peale sisselogimist saab kasutaja valida õppetüki, mille järel rakendus pakub arvamiseks sõna sellest peatükist veel mittäraarvatud sõnade hulgast. API kontrollib vastuse ning salvestab tulemuse skooritabelisse. API's on ka päringud kasutaja õppetükkide hetkeseisu kohta. API tagastab õppetüki kohta äraarvatud sõnade arvu ning sõnade koguarvu. Kui see on võrdne, kuvatakse vastavat õppetükki kasutaja vaates rohelisena ning vastava õppetüki valik mitteaktiivsena.

Klientrakendus

Klientrakendus on realiseeritud JavaScriptis, lähtekood asub siin: [1]

Veebiteenus

Veebiteenus on realiseeritud ASP.NET MVC Web API vahenditega. Lähtekood asub siin: [2]

Retsensioon meeskonna XYZ xml rakendusele

XML töö raames on loodud nõutud osad: XML fail, neli skeemifaili, ning XSLT transformatsioonifail. XML töös on kirjeldatud reisipakkumiste infot, ning XSLTs koondatakse reisipakkumised tabeli kujule ning kuvatakse reisipakkumiste hinnad. XML andmefailis on kirjeldatud neli dimensiooni, nii nagu lähteülesandes nõutud. Sellest johtuvalt võib lugeda töö igati püstitatud tingimustele vastavaks. Arvestades tõsiasja, et projeki meeskond koosnes ühest isikust, on tööga äraütlemata hästi toime tuldud. XML faili tagide nimedes on kasutataud eesti keeleruumile omaseid täpitähti, mis on ASCII kooditabeli laiendatud osas. See teguviis ei ole otseselt keelatud. Seda enam et xml fail on määratud kasutama utf-8 kodeeringut, mis saab hakkama kõigi tähemärkidega. Siiski võiks võimalusel laientatud ascii kooditabeli osasse jäävaid tähemärke vältida, kuna osade xml faili parseritega võib tekkida probleeme nimetatud tähti sisaldavate tagide parsimisel. Mis XML faili sisulisse poolde puutub, siis eraldi on välja toodud valuutakursid, aga ei ole kuskilt näha milline on baas valuuta, ehk mis valuua suhtes need kursid on määratud. Niisamuti ei ole määratud millised valuutas on sätestatud reisi hind. Jääb üle vaid loota et baas valuuta, ehk ka reisis spetsifitseeritud hinna valuutaks on meil kehtiv euro.