Föderaalreserv

From ICO wiki
Revision as of 13:16, 16 February 2017 by Rott (talk | contribs)

Meeskond

  • Rene Ott

Retsensioonid

  • XML
  • Veebirakendus
  • Klientrakendus

Veebi-ja klientrakendus

Analüüs

Sissejuhatus

Finanzi on rakendus, mis võimaldab kasutajal märkida üles oma igapäevaseid kulutusi, selleks et saada tagasivaatavalt aimu oma igapäeva kulutuste kohta. Projekti idee on ajendatud minu personaalsest soovist jälgida, mille peale ning kuhu ma oma raha paigutan. Täpsemalt, kui suur osa igapäevastest kulutustest moodustub juhostudest elik šokolaadid, kommid, krõpsud jne ning kui palju ma reaalselt ostan hädavajalikke tooteid ja teenuseid. Kuigi on olemas erinevaid analoogseid personaalse rahatarkuse rakendusi, siis otsustasin sellise rakenduse realiseerida ise, sest oma arendatud rakendust on hiljem võimalik täiendada lisafunktsionaalsusega vastavalt oma vajadustele.

XML, XSD ning XSL

XML

<?xml version="1.0" encoding="UTF-8"?>
<Asjad xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

   <Asi onKohtuasi="false" id="1">
      <AsjaNr>166366</AsjaNr>
      <Liik>Väärteoasi</Liik>
     
      <Menetlused kogus="1">
         <Menetlus id="11">
            <MenetluseNr>1666366</MenetluseNr>
            <Liik>Kohtuväline menetlus</Liik>

            <Osalised kogus="2">
               <Osaline id="111" onMenetleja="true">
                  <Liik>Kohtuväline menetleja</Liik>
                  <Isik id="1000">
                     <Nimi>Inspektor Kukeke</Nimi>
                  </Isik>
               </Osaline>
               <Osaline id="112" onMenetleja="false">
                  <Liik>Menetlusalune isik</Liik>
                  <Isik id="1001">
                     <Nimi>Andrus ElBling</Nimi>
                  </Isik>
               </Osaline>
               <Osaline id="113" onMenetleja="false">
                  <Liik>Tunnistaja</Liik>
                  <Isik id="1002">
                     <Nimi>Paks Peeter</Nimi>
                  </Isik>
               </Osaline>
            </Osalised>

            <Toimingud kogus="2">
               <Toiming id="114">
                  <Liik>Kiirmenetluse otsus</Liik>
                  <ToiminguOsalised>
                     <ToiminguOsaline osaliseId="111" />
                     <ToiminguOsaline osaliseId="112" />
                  </ToiminguOsalised>
               </Toiming>
               <Toiming id="115">
                  <Liik>Ülekuulamisprotokoll</Liik>
                  <ToiminguOsalised>
                     <ToiminguOsaline osaliseId="111" />
                     <ToiminguOsaline osaliseId="113" />
                  </ToiminguOsalised>
               </Toiming>
            </Toimingud>
         </Menetlus>
      </Menetlused>
     
      <SeotudAsjad>
         <Asi id="2" />
      </SeotudAsjad>
   </Asi>
  
   <Asi onKohtuasi="true" id="2">
      <AsjaNr>1-3-455</AsjaNr>
      <Liik>Väärteoasi</Liik>

      <Menetlused kogus="1">
         <Menetlus id="21">
            <MenetluseNr>1-3-455(1)</MenetluseNr>
            <Liik>Kohtu I Astme menetlus</Liik>
            <Osalised>
               <Osaline id="211" onMenetleja="true">
                  <Liik>Kohtunik</Liik>
                  <Isik id="1003">
                     <Nimi>Kohtu Mõistja</Nimi>
                  </Isik>
               </Osaline>
               <Osaline id="212" onMenetleja="false">
                  <Liik>Menetlusalune isik</Liik>
                  <Isik id="1001">
                     <Nimi>Andrus ElBling</Nimi>
                  </Isik>
               </Osaline>
            </Osalised>
           
            <Toimingud kogus="2">
               <Toiming>
                  <Liik>Kaebus kohtuvälise menetleja otsuse peale</Liik>
                  <ToiminguOsalised>
                     <ToiminguOsaline osaliseId="211" />
                  </ToiminguOsalised>
               </Toiming>
               <Toiming>
                  <Liik>Kohtuotsus</Liik>
                  <ToiminguOsalised>
                     <ToiminguOsaline osaliseId="211" />
                     <ToiminguOsaline osaliseId="212" />
                  </ToiminguOsalised>
               </Toiming>
            </Toimingud>
         </Menetlus>
      </Menetlused>

      <SeotudAsjad>
         <Asi id="1" />
      </SeotudAsjad>
   </Asi>
  
   <Asi onKohtuasi="false" id="3">
      <AsjaNr>180000</AsjaNr>
      <Liik>Kriminaalasi</Liik>

      <Menetlused kogus="1">
         <Menetlus id="31">
            <MenetluseNr>17554354</MenetluseNr>
            <Liik>Kohtueelne menetlus</Liik>

            <Osalised kogus="2">
               <Osaline id="311" onMenetleja="true">
                  <Liik>Uurija</Liik>
                  <Isik id="1005">
                     <Nimi>Elmar Vaher</Nimi>
                  </Isik>
               </Osaline>
               <Osaline id="312" onMenetleja="true">
                  <Liik>Prokuror</Liik>
                  <Isik id="1006">
                     <Nimi>Lavly Perling</Nimi>
                  </Isik>
               </Osaline>
            </Osalised>
           
            <Toimingud xsi:nil="true" />
         </Menetlus>
      </Menetlused>

      <SeotudAsjad xsi:nil="true" />
   </Asi>

   <Asi onKohtuasi="false" id="4">
      <AsjaNr>170000</AsjaNr>
      <Liik>Kriminaalasi</Liik>

      <Menetlused kogus="1">
         <Menetlus id="41">
            <MenetluseNr>17554355</MenetluseNr>
            <Liik>Kohtueelne menetlus</Liik>

            <Osalised kogus="2">
               <Osaline id="411" onMenetleja="false">
                  <Liik>Uurija</Liik>
                  <Isik id="1005">
                     <Nimi>Elmar Vaher</Nimi>
                  </Isik>
               </Osaline>
               <Osaline id="412" onMenetleja="false">
                  <Liik>Prokuror</Liik>
                  <Isik id="1006">
                     <Nimi>Lavly Perling</Nimi>
                  </Isik>
               </Osaline>
            </Osalised>

            <Toimingud kogus="1">
               <Toiming>
                  <Liik>Kriminaalmenetluse lõpetamise määrus</Liik>
                  <ToiminguOsalised>
                     <ToiminguOsaline osaliseId="412" />
                  </ToiminguOsalised>
               </Toiming>
            </Toimingud>
         </Menetlus>
      </Menetlused>
     
      <SeotudAsjad xsi:nil="true" />
   </Asi>
</Asjad>

XSD

<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="Asjad">
    <xs:complexType>
      <xs:sequence>
        
        <xs:element name="Asi" minOccurs="1" maxOccurs="unbounded">
          <xs:complexType>
            <xs:sequence>
              
              <xs:element name="AsjaNr" type="xs:string"/>
              <xs:element name="Liik" type="xs:string"/>
              
              <xs:element name="Menetlused">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="Menetlus" minOccurs="1" maxOccurs="unbounded">
                      <xs:complexType>
                        <xs:sequence>
                          
                          <xs:element name="MenetluseNr" type="xs:string"/>
                          <xs:element name="Liik" type="xs:string"/>
                          
                          <xs:element name="Osalised" maxOccurs="1" nillable="true">
                            <xs:complexType>
                              <xs:sequence>
                                <xs:element name="Osaline" minOccurs="1" maxOccurs="unbounded">
                                  <xs:complexType>
                                    <xs:sequence>
                                      <xs:element name="Liik" type="xs:string"/>
                                      <xs:element name="Isik">
                                        <xs:complexType>
                                          <xs:sequence>
                                            <xs:element name="Nimi" type="xs:string"/>
                                          </xs:sequence>
                                          <xs:attribute name="id" type="xs:unsignedInt"/>
                                        </xs:complexType>
                                      </xs:element>
                                    </xs:sequence>
                                    <xs:attribute name="id" type="xs:unsignedInt"/>
                                    <xs:attribute name="onMenetleja" type="xs:boolean"/>
                                  </xs:complexType>
                                </xs:element>
                              </xs:sequence>
                              <xs:attribute name="kogus" type="xs:int"/>
                            </xs:complexType>
                          </xs:element>
                          
                          <xs:element name="Toimingud" maxOccurs="1" nillable="true">
                            <xs:complexType>
                              <xs:sequence>
                                <xs:element name="Toiming" minOccurs="1" maxOccurs="unbounded">
                                  <xs:complexType>
                                    <xs:sequence>
                                      <xs:element name="Liik" type="xs:string"/>
                                      <xs:element name="ToiminguOsalised" maxOccurs="1" nillable="true">
                                        <xs:complexType>
                                          <xs:sequence>
                                            <xs:element name="ToiminguOsaline" minOccurs="1" maxOccurs="unbounded">
                                              <xs:complexType>
                                                <xs:attribute name="osaliseId" type="xs:string"/>
                                              </xs:complexType>
                                            </xs:element>
                                          </xs:sequence>
                                        </xs:complexType>
                                      </xs:element>
                                    </xs:sequence>
                                    <xs:attribute name="id" type="xs:unsignedInt"/>
                                  </xs:complexType>
                                </xs:element>
                              </xs:sequence>
                              <xs:attribute name="kogus" type="xs:unsignedInt"/>
                            </xs:complexType>
                          </xs:element>
                        </xs:sequence>
                        <xs:attribute name="id" type="xs:unsignedInt"/>
                      </xs:complexType>
                    </xs:element>
                  </xs:sequence>
                  <xs:attribute name="kogus" type="xs:unsignedInt"/>
                </xs:complexType>
              </xs:element>

              <xs:element name="SeotudAsjad" maxOccurs="1" nillable="true">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="Asi" minOccurs="1" maxOccurs="unbounded"/>
                  </xs:sequence>
                  <xs:attribute name="id" type="xs:unsignedInt"/>
                </xs:complexType>
              </xs:element>
              
            </xs:sequence>
            <xs:attribute name="id" type="xs:unsignedInt"/>
            <xs:attribute name="onKohtuasi" type="xs:boolean"/>
          </xs:complexType>
        </xs:element>
        
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

XSLT 1

Kuvab isikute menetlusi, milles nad on osalised üle asjade.

<?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" encoding="UTF-8" />

  <xsl:template match="/">
    <html>
      <head>
        <title>Kuvab kõik isikud ning nendega seotud menetlused.</title>
      </head>
      <body>
        <table border="1">
          <thead>
            <th>Isik</th>
            <th>Menetlus</th>
          </thead>
          <tbody>
            <xsl:apply-templates select="//Isik"/>
          </tbody>
        </table>
      </body>
    </html>
  </xsl:template>

  <!--Eraldab kõik erinevad nimed välja -->
  <!-- Kasutame for loopi asemel eraldi template'i -->
  <xsl:template match="//Isik">
    <xsl:if test="Nimi[not(.=preceding::*)]">
    <xsl:variable name="isikuId" select="./@id"/>
      <tr>
        <td>
          <ul>
            <li><xsl:value-of select="Nimi"/> [<xsl:value-of select="$isikuId"/>]</li>
          </ul>
        </td>
        <td>
          <xsl:call-template name="IsikuMenetlused">
            <xsl:with-param name="isikuId" select="$isikuId"/>
          </xsl:call-template>
        </td>
      </tr>
    </xsl:if>
  </xsl:template>

  <!-- Eraldame kõikide isikute menetlused, kasutame alamtemplate'i -->
  <xsl:template name="IsikuMenetlused">
    <xsl:param name="isikuId"/>
    <ul>
      <xsl:for-each select="//Menetlus">
        <xsl:if test="./Osalised/Osaline/Isik/@id=$isikuId">
        <li>
          <xsl:value-of select="./MenetluseNr"/> - <xsl:value-of select="./Liik"/>
        </li>
        </xsl:if>
      </xsl:for-each>
    </ul>
  </xsl:template>

</xsl:stylesheet>

XSLT 2

Kuvab asjadega seotud infot toimingute täpsuseni.

<?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" encoding="UTF-8" />

  <xsl:template match="/">
    <html>
      <head>
        <title>Kuvab kõikide asjadega seotud info</title>
        <!--
        <link rel="stylesheet" type="text/css" href="asjad.css"/>
        -->
        <style>
            .table {
              border-collapse:collapse;
            }
            .inner-table{
              width: 100%;
              padding: 200px;
            }
            tr.equal-width td,
            tr.equal-width th {
              width: 25%;
            }
        </style>
      </head>
      <body>
        <h1>
          Kõik menetluses olevad asjad (<xsl:value-of select="count(Asjad/Asi)"/>)
        </h1>
        <table border="1" style="border-collapse:collapse">
          <thead>
            <th>Asi</th>
            <th>Menetlused</th>
            <th>Seotud asjade number</th>
          </thead>
          <tbody>
            <xsl:apply-templates select="Asjad/Asi"/>
          </tbody>
        </table>
      </body>
    </html>
  </xsl:template>

  <!-- Koik menetletavad asjad -->
  <xsl:template match="Asjad/Asi">
    <tr>
      <td>
        <xsl:value-of select="./Liik"/>
        <br/>
        <xsl:value-of select="./AsjaNr"/>
      </td>
      <td>
        <table border="1" class="table inner-table">
          <thead>
            <tr class="equal-width">
              <th>Menetluse liik</th>
              <th>Menetluse number</th>
              <th>Kohtumenetlus</th>
              <th>Toimingud</th>
            </tr>
          </thead>
        <tbody>
          <xsl:apply-templates select="Menetlused"/>
        </tbody>
        </table>
      </td>
      <td><xsl:apply-templates select="SeotudAsjad/Asi"/> </td>
    </tr>
  </xsl:template>
  
  <!-- Asjas olevad menetlused -->
  <xsl:template match="Menetlused">
    <xsl:for-each select="./Menetlus">
      <tr class="equal-width">
        <td><xsl:value-of select="./Liik"/></td>
        <td><xsl:value-of select="./MenetluseNr"/></td>
        <td>
        <xsl:choose >
          <xsl:when test="../../@onKohtuasi='true'">Jah</xsl:when>
          <xsl:otherwise>Ei</xsl:otherwise>
        </xsl:choose>
        </td>
        <td>
          <xsl:apply-templates select="./Toimingud"/>
        </td>
      </tr>
    </xsl:for-each>
  </xsl:template>
 
  <!-- Menetluses olevad toimingud -->
  <xsl:template match="Toimingud">
    <xsl:variable name="toiminguidMenetluses" select="./Toiming"/>
      <xsl:choose>
        <xsl:when test="count($toiminguidMenetluses) != 0">
          <ul>
            <xsl:for-each select="./Toiming">
              <li><xsl:value-of select="./Liik"/></li>
            </xsl:for-each>
          </ul>
          </xsl:when>
          <xsl:otherwise>
            <em>Puuduvad</em>
          </xsl:otherwise>
      </xsl:choose>
  </xsl:template>

  <!-- Asjaga seotud teised asjad -->
  <xsl:template match="SeotudAsjad/Asi">
    <xsl:variable name="seotudAsjaId" select="./@id"/>
        <ul>
          <xsl:for-each select="/Asjad/Asi">
            <xsl:if test="./@id=$seotudAsjaId">
              <li><xsl:value-of select="./AsjaNr"/></li>
            </xsl:if>
          </xsl:for-each>
        </ul>
  </xsl:template>

</xsl:stylesheet>