Leemur: Difference between revisions

From ICO wiki
Jump to navigationJump to search
Line 471: Line 471:


Meeskond TeravC
Meeskond TeravC
--------------------
Tiim "Leemur" on pakkunud välja XML liidese definitsiooni tänavaaukude kohta käiva info edastamiseks. Teema on igati ajakohane ning antud lahendus omab ka reaalset rakendust näiteks autojuhi GPS tarkvaras. Iseasi, et andmemahu kokkuhoiu mõttes võibolla oleks kasulik terved kohad edastada aukude asemel.
Esitatud lahendus vastab kodutöös nõutud tingimustele ja ootustele keerukuse osas ning isegi ületab neid. XML faili struktuur on arusaadav ja lisakommentaare ei vaja.
Näidisena välja pakutud XSLT abil õnnestub genereerida väljund nii HTML kui XML formaadis.
Andmete grupeerimine tänavate kaupa tundub mõistlik arvestades potentsiaalse info tarbija vajadust saada infot parasjagu läbitava tänava kohta. Tänava pikkuse esitamise vajadusest ei saa hästi aru. Aukudel on ka omadus taastekkida, antud struktuur võimaldab aga esitada ühe(viimase?) teataja ning parandaja. Rakenduse võib muidugi luua selliselt, et uuesti teatades muutub parandaja väli väljund XML'is uuesti tühjaks. samas oleks hea info aukude kohta, mis pidevalt lagunevad ja parandatud saavad.
XML välja nimetuses täpitähtede kasutamine ei pruugi olla alati hea mõte, ehkki on loomulikult lubatud.
Meeskond Hops

Revision as of 05:11, 23 April 2013

Meeskond "Leemur"

  • Liikmed
    • Marika Mäemets
    • Rasmus Hommuk
    • Mairo Puusepp
    • Einar Kivisalu

Idee

Et käesoleval hetkel on aktuaalne teedelagunemine ja augud tekivad igalepoole üleöö, siis on meie XML asfaldiaukude teemaline.

XML

XML fail

<?xml version="1.0" encoding="utf-8"?>
<teeauk>
  <tänavad>
    <tänav id = "CU00609359" tyyp = "tänav">
      <nimi>Raja</nimi>
      <pikkus yhik="meeter">856</pikkus>
      <augud>
        <auk id = "1">
          <xkoord>6584427.3</xkoord>
          <ykoord>537660</ykoord>
          <sügavus yhik="meeter">0.08</sügavus>
          <pindala yhik="ruutmeeter">0.4</pindala>
          <teataja id = "1">
            <nimi>Peeter Linnakodanik</nimi>
            <roll>autojuht</roll>
          </teataja>
          <avastatud>2013-02-15</avastatud>
          <likvideeritud>2013-04-10</likvideeritud>
        </auk>
        <auk id = "2">
          <xkoord>6584348.6</xkoord>
          <ykoord>537658.6</ykoord>
          <sügavus yhik="meeter">0.8</sügavus>
          <pindala yhik="ruutmeeter">0.54</pindala>
          <teataja id = "1">
            <nimi>Peeter Linnakodanik</nimi>
            <roll>autojuht</roll>
          </teataja>
          <avastatud>2013-02-15</avastatud>
        </auk>
      </augud>
    </tänav>
    <tänav id = "CU00464822" tyyp = "tänav">
      <nimi>Ehitajate tee</nimi>
      <pikkus yhik="meeter">23</pikkus>
      <augud>
        <auk id = "3">
          <xkoord>6584526.2</xkoord>
          <ykoord>537923.8</ykoord>
          <sügavus yhik="meeter">0.9</sügavus>
          <pindala yhik="ruutmeeter">0.5</pindala>
          <teataja id = "2">
            <nimi>Jüri Kõvaametnik</nimi>
            <roll>Maanteeameti kontroll</roll>
          </teataja>
          <avastatud>2013-02-15</avastatud>
          <likvideeritud>2013-02-15</likvideeritud>
        </auk>
        <auk id = "4">
          <xkoord>6584655.9</xkoord>
          <ykoord>537637.5</ykoord>
          <sügavus yhik="meeter">0.6</sügavus>
          <pindala yhik="ruutmeeter">0.7</pindala>
          <teataja id = "2">
            <nimi>Jüri Kõvaametnik</nimi>
            <roll>Maanteeameti kontroll</roll>
          </teataja>
          <avastatud>2013-02-15</avastatud>
          <likvideeritud>2013-02-15</likvideeritud>
        </auk>
        <auk id = "5">
          <xkoord>6584532</xkoord>
          <ykoord>537954.2</ykoord>
          <sügavus yhik="meeter">0.6</sügavus>
          <pindala yhik="ruutmeeter">1.7</pindala>
          <teataja id = "2">
            <nimi>Jüri Kõvaametnik</nimi>
            <roll>Maanteeameti kontroll</roll>
          </teataja>
          <avastatud>2013-02-15</avastatud>
          <likvideeritud>2013-02-15</likvideeritud>
        </auk>
      </augud>
    </tänav>
    <tänav id = "CU00464824" tyyp = "tänav">
      <nimi>Sõpruse puiestee</nimi>
      <pikkus yhik="meeter">4623</pikkus>
      <augud>
        <auk id = "6">
          <xkoord>6584621.1</xkoord>
          <ykoord>538267</ykoord>
          <sügavus yhik="meeter">0.11</sügavus>
          <pindala yhik="ruutmeeter">2.7</pindala>
          <teataja id = "2">
            <nimi>Jüri Kõvaametnik</nimi>
            <roll>Maanteeameti kontroll</roll>
          </teataja>
          <avastatud>2013-02-15</avastatud>
          <likvideeritud>2013-02-15</likvideeritud>
        </auk>
      </augud>
    </tänav>

    <tänav id = "CU00072238" tyyp = "tänav">
      <nimi>Ranna tee</nimi>
      <pikkus yhik="meeter">623</pikkus>
      <augud>
        <auk id = "11">
          <xkoord>6587966.2</xkoord>
          <ykoord>531049.2</ykoord>
          <sügavus yhik="meeter">0.07</sügavus>
          <pindala yhik="ruutmeeter">0.25</pindala>
          <teataja id = "3">
            <nimi>Mari Vallaametnik</nimi>
            <roll>Vallavalitsuse insener</roll>
          </teataja>
          <avastatud>2013-02-15</avastatud>
          <likvideeritud>2013-02-15</likvideeritud>
        </auk>
      </augud>
    </tänav>
    <tänav id = "CU00072411" tyyp = "tänav">
      <nimi>Ranna tee</nimi>
      <pikkus yhik="meeter">1023</pikkus>
      <augud>
        <auk id = "12">
          <xkoord>6587827.8</xkoord>
          <ykoord>531034.3</ykoord>
          <sügavus yhik="meeter">0.07</sügavus>
          <pindala yhik="ruutmeeter">0.75</pindala>
          <teataja id = "3">
            <nimi>Mari Vallaametnik</nimi>
            <roll>Vallavalitsuse insener</roll>
          </teataja>
          <avastatud>2013-02-15</avastatud>
          <likvideeritud>2013-02-15</likvideeritud>
        </auk>
      </augud>
    </tänav>
    <tänav id = "CU00069699" tyyp = "maantee">
      <nimi>Klooga mnt</nimi>
      <pikkus yhik="meeter">623</pikkus>
      <augud>
        <auk id = "13">
          <xkoord>6588082</xkoord>
          <ykoord>531159.8</ykoord>
          <sügavus yhik="meeter">0.16</sügavus>
          <pindala yhik="ruutmeeter">0.75</pindala>
          <teataja id = "3">
            <nimi>Mari Vallaametnik</nimi>
            <roll>Vallavalitsuse insener</roll>
          </teataja>
          <avastatud>2013-02-15</avastatud>
          <likvideeritud>2013-02-15</likvideeritud>
        </auk>
      </augud>
    </tänav>

    <tänav id = "CU02094396" tyyp = "tänav">
      <nimi>Nõlvaku tänav</nimi>
      <pikkus yhik="meeter">823</pikkus>
      <augud>
        <auk id = "11">
          <xkoord>6579325.4</xkoord>
          <ykoord>536312.7</ykoord>
          <sügavus yhik="meeter">0.11</sügavus>
          <pindala yhik="ruutmeeter">1.55</pindala>
          <teataja id = "4">
            <nimi>Ülo Vallavanem</nimi>
            <roll>Vallavanem</roll>
          </teataja>
          <avastatud>2013-02-15</avastatud>
          <likvideeritud>2013-02-15</likvideeritud>
        </auk>
      </augud>
    </tänav>
  </tänavad>

</teeauk>

XSD fail

<?xml version="1.0" encoding="utf-8"?>
<xs:schema id="XMLSchema1"
    targetNamespace="http://tempuri.org/teeauk.xsd"
    elementFormDefault="qualified"
    xmlns="http://tempuri.org/teeauk.xsd"
    xmlns:mstns="http://tempuri.org/teeauk.xsd"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
>
  <xs:simpleType name="yhikpikkus">
    <xs:restriction base="xs:string">
      <xs:enumeration value="meeter"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="yhiksygavus">
    <xs:restriction base="xs:string">
      <xs:enumeration value="meeter"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="yhikpindala">
    <xs:restriction base="xs:string">
      <xs:enumeration value="ruutmeeter"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:element name="teeauk">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs ="0" maxOccurs="unbounded" name="tänavad">
          <xs:complexType>
            <xs:choice>
              <xs:element minOccurs ="0" maxOccurs="unbounded" name="tänav">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="nimi" type="xs:string"></xs:element>
                    <xs:element name="pikkus">
                      <xs:complexType>
                        <xs:simpleContent>
                          <xs:extension base="xs:int">
                            <xs:attribute name="yhik" type="yhikpikkus"/>
                          </xs:extension>
                        </xs:simpleContent>
                      </xs:complexType>
                    </xs:element>
                    <xs:element name="augud">
                      <xs:complexType>
                        <xs:sequence>
                          <xs:element maxOccurs="unbounded" name="auk">
                            <xs:complexType>
                              <xs:sequence>
                                <xs:element name="xkoord" type="xs:double"></xs:element>
                                <xs:element name="ykoord" type="xs:double"></xs:element>
                                <xs:element name="sügavus">
                                  <xs:complexType>
                                    <xs:simpleContent>
                                      <xs:extension base="xs:double">
                                        <xs:attribute name="yhik" type="yhiksygavus"/>
                                      </xs:extension>
                                    </xs:simpleContent>
                                  </xs:complexType>
                                </xs:element>
                                <xs:element name="pindala">
                                  <xs:complexType>
                                    <xs:simpleContent>
                                      <xs:extension base="xs:double">
                                        <xs:attribute name="yhik" type="yhikpindala"/>
                                      </xs:extension>
                                    </xs:simpleContent>
                                  </xs:complexType>
                                </xs:element>
                                <xs:element name="teataja">
                                  <xs:complexType>
                                    <xs:sequence>
                                      <xs:element name="nimi" type="xs:string"></xs:element>
                                      <xs:element name="roll" type="xs:string"></xs:element>
                                    </xs:sequence>
                                    <xs:attribute name="id" type="xs:int"></xs:attribute>
                                  </xs:complexType>
                                </xs:element>
                                <xs:element name="avastatud" type="xs:date"></xs:element>
                                <xs:element name="likvideeritud" type="xs:date" minOccurs ="0"></xs:element>
                              </xs:sequence>
                              <xs:attribute name="id" type="xs:int"></xs:attribute>
                            </xs:complexType>
                          </xs:element>
                        </xs:sequence>
                      </xs:complexType>
                    </xs:element>
                  </xs:sequence>
                  <xs:attribute name="id" type="xs:string"></xs:attribute>
                  <xs:attribute name="tyyp" type="xs:string"></xs:attribute>
                </xs:complexType>
              </xs:element>
            </xs:choice>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

XSLT failid

Asfaldiaukude tabel

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="html" indent="yes"/>
  <xsl:template match="/">
    <html>
      <head>
        <title>Asfaldiaugud üle kogu maa</title>
      </head>
      <body>
        <h1>Asfaldiaukude nimekiri</h1>
        <ul>
          <xsl:for-each select="/teeauk/tänavad/tänav">
            <li>
              <xsl:value-of select="nimi"/>
              <xsl:text> </xsl:text>
              <xsl:value-of select="@tyyp"/>
              <xsl:text>-</xsl:text>
              <xsl:value-of select="pikkus"/>
              <xsl:value-of select="@yhik"/>
              <xsl:text>-</xsl:text>
                <table border="1">
                  <th>
                    <td>Koordinaadid</td>
                    <td>Sügavus ja pindlala</td>
                    <td>Teavitaja</td>
                    <td>Avastatud</td>
                    <td>Likvideeritud</td>
                  </th>
                  <xsl:for-each select="augud/auk">
                    <tr>
                      <td>
                        <xsl:value-of select="@id" />
                      </td>
                      <td>
                        <xsl:text>X </xsl:text>
                        <xsl:value-of select="xkoord" />
                        <br/>
                        <xsl:text>Y </xsl:text>
                        <xsl:value-of select="ykoord" />
                      </td>
                      <td>
                        <xsl:value-of select="sügavus" />
                        <br/>
                        <xsl:value-of select="pindala" />
                      </td>
                      <td>
                        <xsl:value-of select="teataja/nimi" />
                        <br/>
                        <xsl:value-of select="teataja/roll" />
                      </td>
                      <td>
                        <xsl:value-of select="avastatud" />
                      </td>
                      <td>
                        <xsl:value-of select="likvideeritud" />
                        <xsl:text>.</xsl:text>
                      </td>
                    </tr>
                  </xsl:for-each>
                </table>
            </li>
          </xsl:for-each>
        </ul>
      </body>
    </html>
  </xsl:template>
</xsl:stylesheet>

Aukudest teatajad

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="html" indent="yes"/>
  <xsl:template match="/">
    <html>
      <head>
        <title>Asfaldiaugud üle kogu maa</title>
      </head>
      <body>
        <h1>Aukudest teatajate nimekiri</h1>
        <ul>
          <xsl:for-each select="/teeauk/tänavad/tänav/augud/auk/teataja">
            <li>
              <xsl:value-of select="./nimi"/>
              <xsl:text> - </xsl:text>
              <xsl:value-of select="./roll"/>
              <xsl:text> </xsl:text>
            </li>
          </xsl:for-each>
        </ul>
      </body>
    </html>
  </xsl:template>
</xsl:stylesheet>

Tänavate nimekiri

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="xml" indent="yes"/>
  <xsl:template match="/">
    <html>
      <head>
        <title>Teede/tänavate nimekiri</title>
      </head>
      <body>
        <h1>Teede/tänavate nimekiri</h1>
        <ul>
          <xsl:for-each select="/teeauk/tänavad/tänav">
            <li>
              <xsl:value-of select="./nimi"/>
              <xsl:text> - </xsl:text>
              <xsl:value-of select="./pikkus"/>
              <xsl:text> meetrit </xsl:text>
            </li>
          </xsl:for-each>
        </ul>
      </body>
    </html>
  </xsl:template>
</xsl:stylesheet>

Retsensioonid

XML

XML

XML-failis on 6 loogilist dimensiooni. Tasemete kaupa välja kirjutatuna: tase 1: teeauk tase 2: tänavad tase 3: tänav (atribuudid: tüüp) tase 4: nimi, pikkus, augud tase 5: auk tase 6: xkoord, ykoord, sügavus, pindala, teataja, avastatud, likvideeritud. Atribuute on kasutatud nõuetele vastavas koguses. Taseme "tänav" juurde on loodud atribuut "tyyp", mis võib olla kas "tänav" või "maantee". Rühma Leemur oleks võinud paari sõnaga kommenteerida, miks on tänava ja maantee eristamine oluline.

XSD

XSD-faili põhjal võib aukudega tänavaid ka üldse mitte eksisteerida või olla piiramata arv. Põhimõtteliselt võiks tänavate arv olla piiratud mõne mõistliku numbriga, aga samas ei tohiks ka piiramata arv olla probleem. Dimensioon "tänavad" sisaldab järgmise tasemena elemente tüübist "tänav". Miks on sealjuures taseme "tänavad" elementide kirjeldamiseks kasutatud tag'i "choise", mille sees on ainult üks element? Dimensiooni "tänavad" elemendid peavad olema kirjeldatud kindlas järjekorras (nimi, pikkus, augud). Koodi loetavuse seisukohalt on hea, kui see nii on. Atribuutide kirjelduses võiks ehk augu pindala ja sügavus olla lubatud kirjeldada ka vastavalt sentimeetrites ja ruutsentimeetrites.

XSL

XSL-faile on kokku 3, mida on rohkem kui minimaalselt nõutud- 2. Asfaldiaukude tabel Tabelis on augu id, koordinaadid, pindala, teataja nimi ja roll, avastamise ja likvideerimise kuupäev. Aukudest teatajate tabel Tabelis näidatakse teatajate nimesid ja rollisid. Tänavate tabel Näidatakse tänavanimesid koos tänavate pikkustega. Mõne sõnaga võiks ehk kirjeldada, millist eesmärki html-kujule teisendatud tabelid kasutaja seisukohast võiksid täita.

Kokkuvõtvalt võib öelda, et meeskond "Leemur" on oma XML-, XSD -ja XSL-failid koostanud loogiliselt ja hästi struktureeritult.

Meeskond TeravC


Tiim "Leemur" on pakkunud välja XML liidese definitsiooni tänavaaukude kohta käiva info edastamiseks. Teema on igati ajakohane ning antud lahendus omab ka reaalset rakendust näiteks autojuhi GPS tarkvaras. Iseasi, et andmemahu kokkuhoiu mõttes võibolla oleks kasulik terved kohad edastada aukude asemel.


Esitatud lahendus vastab kodutöös nõutud tingimustele ja ootustele keerukuse osas ning isegi ületab neid. XML faili struktuur on arusaadav ja lisakommentaare ei vaja. Näidisena välja pakutud XSLT abil õnnestub genereerida väljund nii HTML kui XML formaadis.


Andmete grupeerimine tänavate kaupa tundub mõistlik arvestades potentsiaalse info tarbija vajadust saada infot parasjagu läbitava tänava kohta. Tänava pikkuse esitamise vajadusest ei saa hästi aru. Aukudel on ka omadus taastekkida, antud struktuur võimaldab aga esitada ühe(viimase?) teataja ning parandaja. Rakenduse võib muidugi luua selliselt, et uuesti teatades muutub parandaja väli väljund XML'is uuesti tühjaks. samas oleks hea info aukude kohta, mis pidevalt lagunevad ja parandatud saavad.


XML välja nimetuses täpitähtede kasutamine ei pruugi olla alati hea mõte, ehkki on loomulikult lubatud.

Meeskond Hops