Föderaalreserv

From ICO wiki
Revision as of 15:10, 15 February 2017 by Rott (talk | contribs) (XSLT 1)

Meeskond

  • Rene Ott

Retsensioonid

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>