Meeskond "Offline": Difference between revisions

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


Luua XML fail andmete edastamiseks, selle XML faili skeemifail ning paar kolm sobivat XSL faili loodud XML failis olevate andmete transformeerimiseks HTML formaati ja XML faili formaadi muutmiseks. XML-il peab olema vähemalt 4 loogilist dimensiooni. Lisaks tuleb kasutada 3-el dimensioonil attribuute, mis on enamat, kui lihtsalt ID.
Luua XML fail andmete edastamiseks, selle XML faili skeemifail ning paar kolm sobivat XSL faili loodud XML failis olevate andmete transformeerimiseks HTML formaati ja XML faili formaadi muutmiseks. XML-il peab olema vähemalt 4 loogilist dimensiooni. Lisaks tuleb kasutada 3-el dimensioonil attribuute, mis on enamat, kui lihtsalt ID.
===XML===
[url:link codeplexis olevale xml-ile|https://ehak.codeplex.com/SourceControl/changeset/view/16692#260910] (see on liiga suur siia panekuks).
===XML schema (XSD)===
<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="ehak">
    <xs:complexType>
      <xs:sequence >
        <!-- maakodi võib olla maksimaalselt 90 kuna maakonna kood peab olema unikaalne ja alati kahekohaline integer-->
        <xs:element maxOccurs="90" name="maakond">
          <!-- keelame ära maakonna mixed contenti, sest kõik info on atribuutides ja elemendil endal puudub väärtus -->
          <xs:complexType mixed="false">
            <xs:sequence>
              <xs:element maxOccurs="unbounded" name="omavalitsus">
                <!-- keelame ära omavalitsuse mixed contenti, sest kõik info on atribuutides ja elemendil endal puudub väärtus -->
                <xs:complexType mixed="false">
                  <xs:sequence >
                    <xs:element maxOccurs="unbounded" name="asustusüksus">
                      <!-- keelame ära asustusüksuse mixed contenti, sest kõik info on atribuutides ja elemendil endal puudub väärtus -->
                      <xs:complexType mixed="false">
                        <xs:attribute name="nimi" type="xs:string" use="required" />
                        <!-- alati neljakohaline positiivne integer - seda peaks kuidagi saama pareimini ära määrata/piirata...-->
                        <xs:attribute name="kood" type="xs:unsignedShort" use="required"></xs:attribute>
                        <!-- alati ühekohaline positiivne integer - seda peaks kuidagi saama pareimini ära määrata/piirata...-->
                        <xs:attribute name="tüüp" type="xs:unsignedByte" use="required" />
                        <xs:attribute name="tüübinimi" type="xs:string" use="required" />
                        <!-- osadel küladel, kus on suur hulk sisserännanuid (Noarootsi) on kasutusel ka võõrkeelne nimi -->
                        <xs:attribute name="rööpnimi" type="xs:string" use="optional" />
                      </xs:complexType>
                    </xs:element>
                  </xs:sequence>
                  <xs:attribute name="nimi" type="xs:string" use="required" />
                  <!-- alati kolmekohaline positiivne integer - seda peaks kuidagi saama pareimini ära määrata/piirata...-->
                  <xs:attribute name="kood" type="xs:unsignedShort" use="required" />
                  <xs:attribute name="tüübinimi" type="xs:string" use="required" />
                </xs:complexType>
                <xs:unique name="UnikaalneAsustusüksuseKood">
                  <xs:selector xpath="asustusüksus" />
                  <xs:field xpath="@kood" />
                </xs:unique>
              </xs:element>
            </xs:sequence>
            <xs:attribute name="nimi" type="xs:string" use="required"/>
            <!-- alati kahekohaline positiivne integer - seda peaks kuidagi saama pareimini ära määrata/piirata...-->
            <xs:attribute name="kood" type="xs:unsignedByte" use="required" />
          </xs:complexType>
          <xs:unique name="UnikaalneOmavalitsuseKood">
            <xs:selector xpath="omavalitsus" />
            <xs:field xpath="@kood" />
          </xs:unique>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
    <xs:unique name="UnikaalneMaakonnaKood">
      <xs:selector xpath="maakond" />
      <xs:field xpath="@kood" />
    </xs:unique>
  </xs:element>
</xs:schema>
===XSLT (esimene)===
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl"
>
  <xsl:output method="html" indent="yes"/>
  <xsl:template match="/">
    <html>
      <head>
        <title>Superkena haldus- ja asustusüksuste kuvamise leht!</title>
      </head>
      <body>
        <h2>
          Maakonnad, omavalitsused ja asustusüksused
        </h2>
        <table border="0">
          <xsl:for-each select="/ehak/maakond">
            <tr valign="top">
              <th>
                <br/>
                <h2>
                  <xsl:value-of select="@nimi"/>
                </h2>
              </th>
            </tr>
            <tr valign="top">
              <th>
                <br/>
                <i>
                  <b>
                    <font size="5">Vallad</font>
                  </b>
                </i>
              </th>
            </tr>
            <!-- omavalitsuste puhul on kaks tsüklit - esimene kuvab vallad ja teine linnad-->
            <xsl:for-each select="omavalitsus">
              <xsl:if test="@tüübinimi='vald'">
                <tr valign="top">
                  <th>
                    <br/>
                    <xsl:value-of select="@nimi"/>
                    <xsl:text> </xsl:text>
                    <xsl:value-of select="@tüübinimi"/>
                  </th>
                </tr>
                <tr valign="top">
                  <th>
                    <i>Külad, alevikud, alevid</i>
                  </th>
                </tr>
                <!-- asustusüksuste kuvamiseks on kolm tsüklit, sest need kuvatakse sorteeritult
                - esmalt külad, siis alevikud ja lõpuks alevid -->
                <xsl:for-each select="asustusüksus">
                  <xsl:if test="@tüübinimi='küla'">
                    <tr valign="top">
                      <td>
                        <!-- kirjutame nime koos tüübinimega-->
                        <xsl:value-of select="@nimi"/>
                        <xsl:text> </xsl:text>
                        <xsl:value-of select="@tüübinimi"/>
                        <!-- kui leidub rööpnimesid, siis pane need nime järgi, sulgudesse-->
                        <xsl:if test="@rööpnimi">
                          <xsl:text> (</xsl:text>
                          <xsl:value-of select="@rööpnimi"/>
                          <xsl:text>)</xsl:text>
                        </xsl:if>
                      </td>
                    </tr>
                  </xsl:if>
                </xsl:for-each>
                <xsl:for-each select="asustusüksus">
                  <xsl:if test="@tüübinimi='alevik'">
                    <tr valign="top">
                      <td>
                        <!-- kirjutame nime koos tüübinimega-->
                        <xsl:value-of select="@nimi"/>
                        <xsl:text> </xsl:text>
                        <u>
                          <xsl:value-of select="@tüübinimi"/>
                        </u>
                        <!-- kui leidub rööpnimesid, siis pane need nime järgi, sulgudesse-->
                        <xsl:if test="@rööpnimi">
                          <xsl:text> (</xsl:text>
                          <xsl:value-of select="@rööpnimi"/>
                          <xsl:text>)</xsl:text>
                        </xsl:if>
                      </td>
                    </tr>
                  </xsl:if>
                </xsl:for-each>
                <xsl:for-each select="asustusüksus">
                  <xsl:if test="@tüübinimi='alev'">
                    <tr valign="top">
                      <td>
                        <!-- kirjutame nime koos tüübinimega-->
                        <xsl:value-of select="@nimi"/>
                        <xsl:text> </xsl:text>
                        <u>
                          <xsl:value-of select="@tüübinimi"/>
                        </u>
                        <!-- kui leidub rööpnimesid, siis pane need nime järgi, sulgudesse-->
                        <xsl:if test="@rööpnimi">
                          <xsl:text> (</xsl:text>
                          <xsl:value-of select="@rööpnimi"/>
                          <xsl:text>)</xsl:text>
                        </xsl:if>
                      </td>
                    </tr>
                  </xsl:if>
                </xsl:for-each>
              </xsl:if>
            </xsl:for-each>
            <tr valign="top">
              <th>
                <br/>
                <i>
                  <b>
                    <font size="5">Linnad</font>
                  </b>
                </i>
              </th>
            </tr>
            <xsl:for-each select="omavalitsus">
              <xsl:if test="@tüübinimi='linn'">
                <tr valign="top">
                  <th>
                    <br/>
                    <xsl:value-of select="@nimi"/>
                  </th>
                </tr>
                <tr valign="top">
                  <th>
                    <i>Linnaosad</i>
                  </th>
                </tr>
                <!-- kuna linnas saavad ainsaks asustusüksuseks olla linnaosad,
                siis on ainult üks tsükkel ja tüübinime ei kontrollita-->
                <xsl:for-each select="asustusüksus">
                  <tr valign="top">
                    <td>
                      <xsl:value-of select="@nimi"/>
                      <xsl:text> </xsl:text>
                      <xsl:value-of select="@tüübinimi"/>
                    </td>
                  </tr>
                </xsl:for-each>
              </xsl:if>
            </xsl:for-each>
          </xsl:for-each>
        </table>
      </body>
    </html>
  </xsl:template>
</xsl:stylesheet>

Revision as of 15:51, 5 May 2012

Meeskond

  • Kristjan Roosild
  • Ragnar Rattas
  • Holger Rünkaru

XML

Luua XML fail andmete edastamiseks, selle XML faili skeemifail ning paar kolm sobivat XSL faili loodud XML failis olevate andmete transformeerimiseks HTML formaati ja XML faili formaadi muutmiseks. XML-il peab olema vähemalt 4 loogilist dimensiooni. Lisaks tuleb kasutada 3-el dimensioonil attribuute, mis on enamat, kui lihtsalt ID.

XML

[url:link codeplexis olevale xml-ile|https://ehak.codeplex.com/SourceControl/changeset/view/16692#260910] (see on liiga suur siia panekuks).

XML schema (XSD)

<?xml version="1.0" encoding="utf-8"?> <xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">

 <xs:element name="ehak">
   <xs:complexType>
     <xs:sequence >
       <xs:element maxOccurs="90" name="maakond">
         <xs:complexType mixed="false">
           <xs:sequence>
             <xs:element maxOccurs="unbounded" name="omavalitsus">
               <xs:complexType mixed="false">
                 <xs:sequence >
                   <xs:element maxOccurs="unbounded" name="asustusüksus">
                     <xs:complexType mixed="false">
                       <xs:attribute name="nimi" type="xs:string" use="required" />
                       <xs:attribute name="kood" type="xs:unsignedShort" use="required"></xs:attribute>
                       <xs:attribute name="tüüp" type="xs:unsignedByte" use="required" />
                       <xs:attribute name="tüübinimi" type="xs:string" use="required" />
                       <xs:attribute name="rööpnimi" type="xs:string" use="optional" />
                     </xs:complexType>
                   </xs:element>
                 </xs:sequence>
                 <xs:attribute name="nimi" type="xs:string" use="required" />
                 <xs:attribute name="kood" type="xs:unsignedShort" use="required" />
                 <xs:attribute name="tüübinimi" type="xs:string" use="required" />
               </xs:complexType>
               <xs:unique name="UnikaalneAsustusüksuseKood">
                 <xs:selector xpath="asustusüksus" />
                 <xs:field xpath="@kood" />
               </xs:unique>
             </xs:element>
           </xs:sequence>
           <xs:attribute name="nimi" type="xs:string" use="required"/>
           <xs:attribute name="kood" type="xs:unsignedByte" use="required" />
         </xs:complexType>
         <xs:unique name="UnikaalneOmavalitsuseKood">
           <xs:selector xpath="omavalitsus" />
           <xs:field xpath="@kood" />
         </xs:unique>
       </xs:element>
     </xs:sequence>
   </xs:complexType>
   <xs:unique name="UnikaalneMaakonnaKood">
     <xs:selector xpath="maakond" />
     <xs:field xpath="@kood" />
   </xs:unique>
 </xs:element>

</xs:schema>

XSLT (esimene)

<?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"

   xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl"

>

 <xsl:output method="html" indent="yes"/>
 <xsl:template match="/">
   <html>
     <head>
       <title>Superkena haldus- ja asustusüksuste kuvamise leht!</title>
     </head>
     <body>

Maakonnad, omavalitsused ja asustusüksused

<xsl:for-each select="/ehak/maakond"> <xsl:for-each select="omavalitsus"> <xsl:if test="@tüübinimi='vald'"> <xsl:for-each select="asustusüksus"> <xsl:if test="@tüübinimi='küla'"> </xsl:if> </xsl:for-each> <xsl:for-each select="asustusüksus"> <xsl:if test="@tüübinimi='alevik'"> </xsl:if> </xsl:for-each> <xsl:for-each select="asustusüksus"> <xsl:if test="@tüübinimi='alev'"> </xsl:if> </xsl:for-each> </xsl:if> </xsl:for-each> <xsl:for-each select="omavalitsus"> <xsl:if test="@tüübinimi='linn'"> <xsl:for-each select="asustusüksus"> </xsl:for-each> </xsl:if> </xsl:for-each> </xsl:for-each>
               

<xsl:value-of select="@nimi"/>

               
Vallad
                   
<xsl:value-of select="@nimi"/> <xsl:text> </xsl:text> <xsl:value-of select="@tüübinimi"/>
                   Külad, alevikud, alevid
                       <xsl:value-of select="@nimi"/>
                       <xsl:text> </xsl:text>
                       <xsl:value-of select="@tüübinimi"/>
                       <xsl:if test="@rööpnimi">
                         <xsl:text> (</xsl:text>
                         <xsl:value-of select="@rööpnimi"/>
                         <xsl:text>)</xsl:text>
                       </xsl:if>
                       <xsl:value-of select="@nimi"/>
                       <xsl:text> </xsl:text>
                       
                         <xsl:value-of select="@tüübinimi"/>
                       
                       <xsl:if test="@rööpnimi">
                         <xsl:text> (</xsl:text>
                         <xsl:value-of select="@rööpnimi"/>
                         <xsl:text>)</xsl:text>
                       </xsl:if>
                       <xsl:value-of select="@nimi"/>
                       <xsl:text> </xsl:text>
                       
                         <xsl:value-of select="@tüübinimi"/>
                       
                       <xsl:if test="@rööpnimi">
                         <xsl:text> (</xsl:text>
                         <xsl:value-of select="@rööpnimi"/>
                         <xsl:text>)</xsl:text>
                       </xsl:if>
               
Linnad
                   
<xsl:value-of select="@nimi"/>
                   Linnaosad
                     <xsl:value-of select="@nimi"/>
                     <xsl:text> </xsl:text>
                     <xsl:value-of select="@tüübinimi"/>
     </body>
   </html>
 </xsl:template>

</xsl:stylesheet>