Leemur: Difference between revisions

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


====XSD====
====XSD====
XSD-failis 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.
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?
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.
Dimensiooni "tänavad" elemendid peavad olema kirjeldatud kindlas järjekorras (nimi, pikkus, augud). Koodi loetavuse seisukohalt on hea, kui  see nii on.

Revision as of 21:02, 22 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