Sille: Difference between revisions

From ICO wiki
Jump to navigationJump to search
Line 450: Line 450:
                   </li>
                   </li>
                 </xsl:when>
                 </xsl:when>
                <xsl:otherwise>
                 
                </xsl:otherwise>
               </xsl:choose>
               </xsl:choose>
             </ul>
             </ul>
Line 461: Line 458:
</xsl:stylesheet>
</xsl:stylesheet>
</pre>
</pre>
===XML retsensioon===
===XML retsensioon===
==Veebiteenus==
==Veebiteenus==

Revision as of 23:40, 20 March 2016

Kodutöö aines "Võrgurakendused II: hajussüsteemide ehitamine"

Meeskond

  • Andres Trei
  • Lasse Kolkanen

Idee

XML/XSD/XSLT

XML

XML fail hoiab endas riigimaanteedel olevaid sildasid.

<?xml version="1.0" encoding="utf-8" ?>
<Sillad>
  <Sild Id="1" Ehitusaasta="2012">
    <Nimi Nr="799">Sauga</Nimi>
    <Takistus>Sauga jõgi</Takistus>
    <Asukoht KoordX="527056" KoordY="6473072">
      <TeeNimetus Nr="60">Pärnu-Lihula</TeeNimetus>
      <Algusest Ühik="m">2386</Algusest>
      <Maakond>Pärnu</Maakond>
    </Asukoht>
    <Ylevaatused>
      <Järgmine>2016</Järgmine>
      <Viimane></Viimane>
    </Ylevaatused>
    <Kandevõime Ühik="t" Väärtus="800">N-30/NK-80</Kandevõime>
    <Sillaparameetrid>
      <Pikkus Ühik="m">70</Pikkus>
      <Laius Ühik="m">16.35</Laius>
      <TeeLaius Ühik="m">9.4</TeeLaius>
    </Sillaparameetrid>
    <Liiklusandmed>
      <Liiklussagedus Ühik="sõidukit/24h" Loendusaasta="2014">4444</Liiklussagedus>
      <Jaotus Ühik="%">
        <Sõidukid>85</Sõidukid>
        <Veokid>3</Veokid>
        <Autorongid>12</Autorongid>
      </Jaotus>
    </Liiklusandmed>
    <Indeksid>
      <SeisundiIndeks Hindamiseaasta="2012">99</SeisundiIndeks>
      <PontisIndeks Hindamiseaasta="2013">100</PontisIndeks>
    </Indeksid>
  </Sild>
  <Sild Id="2" Ehitusaasta="1939">
    <Nimi Nr="89">Kiviloo</Nimi>
    <Takistus>Jõelähtme jõgi</Takistus>
    <Asukoht KoordX="571748" KoordY="6572314">
      <TeeNimetus Nr="11125">Perila-Jäneda</TeeNimetus>
      <Algusest Ühik="m">5758</Algusest>
      <Maakond>Harju</Maakond>
    </Asukoht>
    <Ylevaatused>
      <Järgmine>2019</Järgmine>
      <Viimane>2015-10-09</Viimane>
    </Ylevaatused>
    <Kandevõime Ühik="t" Väärtus="600">N-13/NG-60</Kandevõime>
    <Sillaparameetrid>
      <Pikkus Ühik="m">17</Pikkus>
      <Laius Ühik="m">7.4</Laius>
      <TeeLaius Ühik="m">6</TeeLaius>
    </Sillaparameetrid>
    <Liiklusandmed>
      <Liiklussagedus Ühik="sõidukit/24h" Loendusaasta="2014">1214</Liiklussagedus>
      <Jaotus Ühik="%">
        <Sõidukid>95</Sõidukid>
        <Veokid>2</Veokid>
        <Autorongid>3</Autorongid>
      </Jaotus>
    </Liiklusandmed>
    <Indeksid>
      <SeisundiIndeks Hindamiseaasta="2010">55</SeisundiIndeks>
      <PontisIndeks Hindamiseaasta="2010">56</PontisIndeks>
    </Indeksid>
  </Sild>
  <Sild Id="3" Ehitusaasta="1952">
    <Nimi Nr="776">Majaka</Nimi>
    <Takistus>Majaka kanal</Takistus>
    <Asukoht KoordX="525662" KoordY="6428719">
      <TeeNimetus Nr="19331">Rannametsa-Ikla</TeeNimetus>
      <Algusest Ühik="m">15758</Algusest>
      <Maakond>Pärnu</Maakond>
    </Asukoht>
    <Ylevaatused>
      <Järgmine>2017</Järgmine>
      <Viimane></Viimane>
    </Ylevaatused>
    <Kandevõime Ühik="t" Väärtus="600">N-13/NG-60</Kandevõime>
    <Sillaparameetrid>
      <Pikkus Ühik="m">4.6</Pikkus>
      <Laius Ühik="m">8.9</Laius>
      <TeeLaius Ühik="m">7</TeeLaius>
    </Sillaparameetrid>
    <Liiklusandmed>
      <Liiklussagedus Ühik="sõidukit/24h" Loendusaasta="2014">479</Liiklussagedus>
      <Jaotus Ühik="%">
        <Sõidukid>95</Sõidukid>
        <Veokid>4</Veokid>
        <Autorongid>1</Autorongid>
      </Jaotus>
    </Liiklusandmed>
    <Indeksid>
      <SeisundiIndeks Hindamiseaasta="2006">65.7</SeisundiIndeks>
      <PontisIndeks Hindamiseaasta="2011">62</PontisIndeks>
    </Indeksid>
  </Sild>
  <Sild Id="4" Ehitusaasta="2015">
    <Nimi Nr="1500">Jõhvi I</Nimi>
    <Takistus>Tapa-Narva raudtee</Takistus>
    <Asukoht KoordX="694100" KoordY="6584697">
      <TeeNimetus Nr="3">Jõhvi-Tartu-Valga</TeeNimetus>
      <Algusest Ühik="m">2169</Algusest>
      <Maakond>Ida-Viru</Maakond>
    </Asukoht>
    <Ylevaatused>
      <Järgmine>2017</Järgmine>
      <Viimane></Viimane>
    </Ylevaatused>
    <Kandevõime Ühik="ts" Väärtus="2400">2400/200</Kandevõime>
    <Sillaparameetrid>
      <Pikkus Ühik="m">255.72</Pikkus>
      <Laius Ühik="m">9.4</Laius>
      <TeeLaius Ühik="m">7.5</TeeLaius>
    </Sillaparameetrid>
    <Liiklusandmed>
      <Liiklussagedus Ühik="sõidukit/24h" Loendusaasta="2014">16450</Liiklussagedus>
      <Jaotus Ühik="%">
        <Sõidukid>98</Sõidukid>
        <Veokid>2</Veokid>
        <Autorongid>0</Autorongid>
      </Jaotus>
    </Liiklusandmed>
    <Indeksid>
      <SeisundiIndeks Hindamiseaasta="2013">100</SeisundiIndeks>
      <PontisIndeks Hindamiseaasta=""></PontisIndeks>
    </Indeksid>
  </Sild>
</Sillad>

XSD

<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:simpleType name="pikkusühik">
    <xs:restriction base="xs:string">
      <xs:enumeration value="m"/>
      <xs:enumeration value="km"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="massiühik">
    <xs:restriction base="xs:string">
      <xs:enumeration value="kg"/>
      <xs:enumeration value="t"/>
      <xs:enumeration value="ts"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="sagedusühik">
    <xs:restriction base="xs:string">
      <xs:enumeration value="sõidukit/24h"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="protsent">
    <xs:restriction base="xs:string">
      <xs:enumeration value="%"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="maakond">
    <xs:restriction base="xs:string">
      <xs:enumeration value="Harju"/>
      <xs:enumeration value="Pärnu"/>
      <xs:enumeration value="Rapla"/>
      <xs:enumeration value="Valga"/>
      <xs:enumeration value="Ida-Viru"/>
      <!--jne-->
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="kandevõime">
    <xs:restriction base="xs:string">
      <xs:enumeration value="N-13/NG-60"/>
      <xs:enumeration value="N-30/NK-80"/>
      <xs:enumeration value="N-10/NG-30"/>
      <xs:enumeration value="N-8/NG-60"/>
      <xs:enumeration value="3600/240kN"/>
      <xs:enumeration value="260 kN/3x210 kN"/>
      <xs:enumeration value="2400/200"/>
      <xs:enumeration value="N-18/NG-60"/>
      <!--jne-->
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="aastad">
    <xs:restriction base="xs:unsignedShort">
      <xs:minInclusive value="1900"/>
      <xs:maxInclusive value="2100"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:element name="Sillad">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="unbounded" name="Sild">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="Nimi">
                <xs:complexType>
                  <xs:simpleContent>
                    <xs:extension base="xs:string">
                      <xs:attribute name="Nr" type="xs:unsignedShort" use="required" />
                    </xs:extension>
                  </xs:simpleContent>
                </xs:complexType>
              </xs:element>
              <xs:element name="Takistus">
                <xs:simpleType>
                  <xs:restriction base="xs:string">
                    <xs:maxLength value="60"/>
                  </xs:restriction>
                </xs:simpleType>
              </xs:element>
              <xs:element name="Asukoht">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="TeeNimetus">
                      <xs:complexType>
                        <xs:simpleContent>
                          <xs:extension base="xs:string">
                            <xs:attribute name="Nr" type="xs:unsignedShort" use="required" />
                          </xs:extension>
                        </xs:simpleContent>
                      </xs:complexType>
                    </xs:element>
                    <xs:element name="Algusest">
                      <xs:complexType>
                        <xs:simpleContent>
                          <xs:extension base="xs:unsignedInt">
                            <xs:attribute name="Ühik" type="pikkusühik" use="required" />
                          </xs:extension>
                        </xs:simpleContent>
                      </xs:complexType>
                    </xs:element>
                    <xs:element name="Maakond" type="maakond" />
                  </xs:sequence>
                  <xs:attribute name="KoordX" type="xs:unsignedInt" use="required" />
                  <xs:attribute name="KoordY" type="xs:unsignedInt" use="required" />
                </xs:complexType>
              </xs:element>
              <xs:element name="Ylevaatused">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="Järgmine" type="xs:unsignedShort" />
                    <xs:element name="Viimane" type="xs:date" nillable="true"/>
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
              <xs:element name="Kandevõime">
                <xs:complexType>
                  <xs:simpleContent>
                    <xs:extension base="kandevõime">
                      <xs:attribute name="Ühik" type="massiühik" use="required" />
                      <xs:attribute name="Väärtus" type="xs:unsignedShort" use="optional" />
                    </xs:extension>
                  </xs:simpleContent>
                </xs:complexType>
              </xs:element>
              <xs:element name="Sillaparameetrid">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="Pikkus">
                      <xs:complexType>
                        <xs:simpleContent>
                          <xs:extension base="xs:decimal">
                            <xs:attribute name="Ühik" type="pikkusühik" use="required" />
                          </xs:extension>
                        </xs:simpleContent>
                      </xs:complexType>
                    </xs:element>
                    <xs:element name="Laius">
                      <xs:complexType>
                        <xs:simpleContent>
                          <xs:extension base="xs:decimal">
                            <xs:attribute name="Ühik" type="pikkusühik" use="required" />
                          </xs:extension>
                        </xs:simpleContent>
                      </xs:complexType>
                    </xs:element>
                    <xs:element name="TeeLaius">
                      <xs:complexType>
                        <xs:simpleContent>
                          <xs:extension base="xs:decimal">
                            <xs:attribute name="Ühik" type="pikkusühik" use="required" />
                          </xs:extension>
                        </xs:simpleContent>
                      </xs:complexType>
                    </xs:element>
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
              <xs:element name="Liiklusandmed">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="Liiklussagedus">
                      <xs:complexType>
                        <xs:simpleContent>
                          <xs:extension base="xs:unsignedShort">
                            <xs:attribute name="Ühik" type="sagedusühik" use="required" />
                            <xs:attribute name="Loendusaasta" type="xs:unsignedShort" use="required" />
                          </xs:extension>
                        </xs:simpleContent>
                      </xs:complexType>
                    </xs:element>
                    <xs:element name="Jaotus">
                      <xs:complexType>
                        <xs:sequence>
                          <xs:element name="Sõidukid" type="xs:unsignedByte" />
                          <xs:element name="Veokid" type="xs:unsignedByte" />
                          <xs:element name="Autorongid" type="xs:unsignedByte" />
                        </xs:sequence>
                        <xs:attribute name="Ühik" type="protsent" use="required" />
                      </xs:complexType>
                    </xs:element>
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
              <xs:element name="Indeksid">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="SeisundiIndeks" nillable="true">
                      <xs:complexType>
                        <xs:simpleContent>
                          <xs:extension base="xs:decimal">
                            <xs:attribute name="Hindamiseaasta" type="aastad" use="optional" />
                          </xs:extension>
                        </xs:simpleContent>
                      </xs:complexType>
                    </xs:element>
                    <xs:element name="PontisIndeks" nillable="true">
                      <xs:complexType>
                        <xs:simpleContent>
                          <xs:extension base="xs:decimal">
                            <xs:attribute name="Hindamiseaasta" type="aastad" use="optional" />
                          </xs:extension>
                        </xs:simpleContent>
                      </xs:complexType>
                    </xs:element>
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
            </xs:sequence>
            <xs:attribute name="Id" type="xs:unsignedInt" use="required" />
            <xs:attribute name="Ehitusaasta" type="aastad" use="required" />
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

XSLT

XSLT 1

<?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>Sille transformatsioon 1</title>
        </head>
        <body>
            <xsl:variable name="maakond" select="'Pärnu'"/>
            <p>Sillad mis asuvad <xsl:value-of select="$maakond"/> maakonnas</p>
            <xsl:for-each select="/Sillad/Sild">
              
              <xsl:variable select="Nimi" name="Sillanimi"/>
              <!--<xsl:value-of select="$Sillanimi"/>-->
              <ul>
                
                <xsl:if test="Asukoht/Maakond = $maakond">
                  <li>
                    <xsl:value-of select="$Sillanimi"/>
                    <xsl:text> </xsl:text>
                  </li>
                </xsl:if>
              </ul>
            </xsl:for-each>
          <xsl:variable name="sagedus" select="'500'"/>
          <p>
            Sillad mis asuvad <xsl:value-of select="$maakond"/> maakonnas ja kus liiklussagedus on väiksem kui <xsl:value-of select="$sagedus"/> autot/24h
          </p>
          <xsl:for-each select="/Sillad/Sild">

            <xsl:variable select="Nimi" name="Sillanimi"/>
            <xsl:variable select="Liiklusandmed/Liiklussagedus" name="liiklussagedus"/>
            <ul>

              <xsl:if test="Asukoht/Maakond = $maakond and Liiklusandmed/Liiklussagedus < $sagedus">
                <li>
                  <xsl:value-of select="$Sillanimi"/>
                  <xsl:text> - </xsl:text>
                  <xsl:value-of select="$liiklussagedus"/>
                  <xsl:text> autot 24/h </xsl:text>
                </li>
              </xsl:if>
            </ul>
          </xsl:for-each>
        </body>
      </html>
    </xsl:template>
</xsl:stylesheet>

XSLT 2

<?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>Sille transformatsioon 2</title>
        </head>
        <body>
          <xsl:variable name="kandevõime" select="'1000'"/>
          <xsl:variable name="osakaal" select="'10'"/>
          <p>
            Sillad mille kandevõime on rohkem kui <xsl:value-of select="$kandevõime"/> t või kus kandevõime on väiksem/võrdne <xsl:value-of select="$kandevõime"/> t ja autorongide osakaal on üle <xsl:value-of select="$osakaal"/>% 
          </p>

          <xsl:for-each select="/Sillad/Sild">

            <xsl:variable select="Kandevõime/@Väärtus" name="Kandevõime"/>
            <xsl:variable select="Nimi" name="Nimi"/>
            <xsl:variable select="Liiklusandmed/Jaotus/Autorongid" name="autorongid"/>
            <ul>
              <xsl:choose>
                <xsl:when test="$Kandevõime > $kandevõime">
                  <li>
                    <xsl:value-of select="$Nimi"/>
                  </li>
                  
                </xsl:when>
                <xsl:when test="$Kandevõime <= $kandevõime and $autorongid > $osakaal">
                  <li>
                    <xsl:value-of select="$Nimi"/>
                  </li>
                </xsl:when>
              </xsl:choose>
            </ul>
          </xsl:for-each>
        </body>
      </html>
    </xsl:template>
</xsl:stylesheet>

XML retsensioon

Veebiteenus

Veebiteenuse retsensioon

Klientrakendus

Klientrakenduse retsensioon

Arendusprotsess

  1. 17.03.16 - wiki lehe loomine, XML, XSD
  2. 19.03.16 - XSLT