Föderaalreserv

From ICO wiki
Revision as of 15:10, 15 February 2017 by Rott (talk | contribs) (→‎XSLT 2)
Jump to navigationJump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

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

<?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>