Meeskond "HM": Difference between revisions

From ICO wiki
Jump to navigationJump to search
Mlaak (talk | contribs)
Aperi (talk | contribs)
No edit summary
 
(50 intermediate revisions by 4 users not shown)
Line 3: Line 3:
  http://www.geonames.org/ (Creative Commons Attribution 3.0) <br>
  http://www.geonames.org/ (Creative Commons Attribution 3.0) <br>


=== XML ===
== Meeskond ==
* Henry Mäeorg - XML, XSD, XSL
* Martin Laak - XML, XSL, Wiki
* Andre-Marcel Peri - XSL
 
== XML Ülesanne ==
Lõime ülemaailmse lennujaamade andmebaasi. Selleks kombineerisime järgnevaid vabavaralisi andmebaase:
* http://www.ourairports.com/data/airports.csv (public domain)
* http://download.geonames.org/export/dump/countryInfo.txt (Creative Commons Attribution 3.0)
Seoses suure mahuga, piirasime andmeid. Lisasime oma xml-i ainult suured lennujaamad mis asuvad suurlinnades (suurlinna definitsioon  - linn milles asub mitu suurt lennujaama).
 
Liikmete tööpanus:
* XML loomine - Martin Laak, Henry Mäeorg
* XSD loomine - Henry Mäeorg
* XSLT1 - Henry Mäeorg
* XSLT2 - Andre-Marcel, Martin Laak (maps)
* XSLT3 - Martin Laak
 
 
=== XSD skeemifail ===
<pre>
<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="Maa">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="7" name="kontinent">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="nimi" type="xs:string" />
              <xs:element minOccurs="0" maxOccurs="unbounded" name="riik">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="nimi" type="xs:string" />
                    <xs:element maxOccurs="unbounded" name="linn">
                      <xs:complexType>
                        <xs:sequence>
                          <xs:element name="nimi" type="xs:string" />
                          <xs:element minOccurs="0" maxOccurs="unbounded" name="lennujaam">
                            <xs:complexType>
                              <xs:sequence>
                                <xs:element name="nimi" type="xs:string" />
                              </xs:sequence>
                              <xs:attribute name="id" type="xs:string" use="required" />
                              <xs:attribute name="long" type="xs:string" use="required" />
                              <xs:attribute name="lat" type="xs:string" use="required" />
                            </xs:complexType>
                          </xs:element>
                        </xs:sequence>
                        <xs:attribute name="id" type="xs:string" use="required" />
                      </xs:complexType>
                    </xs:element>
                  </xs:sequence>
                  <xs:attribute name="id" type="xs:string" use="required" />
                  <xs:attribute name="raha" type="xs:string" use="required" />
                  <xs:attribute name="rahanimi" type="xs:string" use="required" />
                </xs:complexType>
              </xs:element>
            </xs:sequence>
            <xs:attribute name="rahvaarv" type="xs:string" use="required" />
            <xs:attribute name="id" type="xs:string" use="required" />
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>
</pre>
 
=== XSL stiilifail 1===
Lennujaamade andmebaasi esitus HTML kujul.
<pre>
<?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" version="1.0" encoding="UTF-8" indent="yes"/>
  <xsl:template match="/">
    <html>
      <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
      </head>
      <body>
        <xsl:for-each select="Maa/kontinent">
        <h1><xsl:value-of select="nimi"/></h1>
          <xsl:for-each select="riik">
          <h2><xsl:value-of select="nimi"/></h2>
            <xsl:for-each select="linn">
            <h3><xsl:value-of select="nimi"/></h3>
              <xsl:if test="count(lennujaam) !=0">
              <h4>Lennujaamad:</h4>
              <ul>
                <xsl:for-each select="lennujaam">
                <li><xsl:value-of select="nimi"/></li>
                </xsl:for-each>
              </ul>
              </xsl:if>           
            </xsl:for-each>
          </xsl:for-each>     
        </xsl:for-each>
      </body>
    </html>
  </xsl:template>
</xsl:stylesheet>
</pre>
 
=== XSL stiilifail 2===
Lennujaamade esitus tabelina html-is. Google static maps abil kuvatakse ka lennujaamade asukohad kaardil.
<pre>
<?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" version="1.0" encoding="UTF-8" indent="yes"/>
  <xsl:template match="/">
    <html>
      <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
      </head>
      <body>
        <table border="1">
          <tr bgcolor="#20B2AA">
            <th>Kontinent</th>
            <th>Rahvaarv</th>
            <th>Riigid</th>
            <th>Linnad</th>
            <th>Lennujaamad</th>
          </tr>
          <xsl:for-each select="Maa/kontinent">
            <tr bgcolor="#E0FFFF">
              <td>
                <xsl:value-of select="nimi"/>
              </td>
         
              <td>
                <xsl:value-of select="@rahvaarv"/>
              </td>
              <xsl:for-each select="riik">
                  <td>
                    <xsl:value-of select="nimi"/>
                  </td>
 
              <xsl:for-each select="linn">
                  <td>
                    <xsl:value-of select="nimi"/>
                  </td>
                <xsl:for-each select="lennujaam">
                  <td>
                    <xsl:value-of select="nimi"/>
                  </td>
                </xsl:for-each>
                </xsl:for-each>
              </xsl:for-each>
            </tr>
          </xsl:for-each>
        </table>
      </body>
    </html>
  </xsl:template>
</xsl:stylesheet>
</pre>
 
=== XSL stiilifail 3 ===
XML to XML. Luuakse xml vormis
<pre>
<lennujaamad>
- <lennujaam id="" nimi="">
    <linn nimi="" />
    <riik id="" nimi="" />
  </lennujaam>
  <lennujaam id="" nimi="">
    <linn nimi="" />
    <riik id="" nimi="" />
  </lennujaam>
  ....
</lennujaamad>
</pre>
 
XSLT:
<pre>
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="/">
  <lennujaamad>
    <xsl:for-each select="Maa/kontinent/riik/linn/lennujaam">
    <xsl:sort select="nimi"/>
      <lennujaam>
        <xsl:attribute name="id">
          <xsl:value-of select="@id"/>
        </xsl:attribute>
        <xsl:attribute name="nimi">
          <xsl:value-of select="nimi"/>
        </xsl:attribute>
        <linn>
          <xsl:attribute name="nimi">
            <xsl:value-of select="../nimi"/>
          </xsl:attribute>
        </linn>
        <riik>
          <xsl:attribute name="id">
            <xsl:value-of select="../../@id"/>
          </xsl:attribute>
          <xsl:attribute name="nimi">
            <xsl:value-of select="../../nimi"/>
          </xsl:attribute>
         
        </riik>
      </lennujaam>
    </xsl:for-each>
  </lennujaamad>
</xsl:template>
</xsl:stylesheet>
</pre>
 
=== XML andmefail ===
<source lang="xml">
<?xml version="1.0" encoding="utf-8" ?>
<!-- Sources:
http://www.ourairports.com/data/ (public domain)
http://www.geonames.org/ (Creative Commons Attribution 3.0)
-->
<Maa>
  <kontinent rahvaarv="738199000" id="EU">
    <nimi>Euroopa</nimi>
    <riik id="DE" raha="EUR" rahanimi="Euro">
      <nimi>Germany</nimi>
      <linn id="Berlin">
        <nimi>Berlin</nimi>
        <lennujaam id="SXF" lat="52.3800010681152" long="13.522500038147" >
          <nimi>Berlin-Schönefeld International Airport</nimi>
        </lennujaam>
        <lennujaam id="TXL" lat="52.559700012207" long="13.2876996994019" >
          <nimi>Berlin-Tegel International Airport</nimi>
        </lennujaam>
      </linn>
    </riik>
    <riik id="GB" raha="GBP" rahanimi="Pound">
      <nimi>United Kingdom</nimi>
      <linn id="Belfast">
        <nimi>Belfast</nimi>
        <lennujaam id="BFS" lat="54.6575012207031" long="-6.21582984924316" >
          <nimi>Belfast International Airport</nimi>
        </lennujaam>
        <lennujaam id="BHD" lat="54.6180992126465" long="-5.87249994277954" >
          <nimi>George Best Belfast City Airport</nimi>
        </lennujaam>
      </linn>
      <linn id="London">
        <nimi>London</nimi>
        <lennujaam id="LTN" lat="51.874698638916" long="-0.368333011865616" >
          <nimi>London Luton Airport</nimi>
        </lennujaam>
        <lennujaam id="LGW" lat="51.1481018066406" long="-0.190277993679047" >
          <nimi>London Gatwick Airport</nimi>
        </lennujaam>
        <lennujaam id="LCY" lat="51.505298614502" long="0.0552779994904995" >
          <nimi>London City Airport</nimi>
        </lennujaam>
        <lennujaam id="LHR" lat="51.4706001282" long="-0.461941003799" >
          <nimi>London Heathrow Airport</nimi>
        </lennujaam>
        <lennujaam id="STN" lat="51.8849983215332" long="0.234999999403954" >
          <nimi>London Stansted Airport</nimi>
        </lennujaam>
      </linn>
    </riik>
    <riik id="ES" raha="EUR" rahanimi="Euro">
      <nimi>Spain</nimi>
      <linn id="Tenerife Island">
        <nimi>Tenerife Island</nimi>
        <lennujaam id="TFS" lat="28.044500351" long="-16.5725002289" >
          <nimi>Tenerife South Airport</nimi>
        </lennujaam>
        <lennujaam id="TFN" lat="28.4827003479" long="-16.3414993286" >
          <nimi>Tenerife Norte Airport</nimi>
        </lennujaam>
      </linn>
    </riik>
    <riik id="FR" raha="EUR" rahanimi="Euro">
      <nimi>France</nimi>
      <linn id="Paris">
        <nimi>Paris</nimi>
        <lennujaam id="CDG" lat="49.0127983093" long="2.54999995232" >
          <nimi>Charles de Gaulle International Airport</nimi>
        </lennujaam>
        <lennujaam id="ORY" lat="48.7252998352" long="2.35944008827" >
          <nimi>Paris-Orly Airport</nimi>
        </lennujaam>
      </linn>
    </riik>
    <riik id="IT" raha="EUR" rahanimi="Euro">
      <nimi>Italy</nimi>
      <linn id="Milan">
        <nimi>Milan</nimi>
        <lennujaam id="MXP" lat="45.6305999756" long="8.72811031342" >
          <nimi>Malpensa International Airport</nimi>
        </lennujaam>
        <lennujaam id="LIN" lat="45.445098877" long="9.27674007416" >
          <nimi>Linate Airport</nimi>
        </lennujaam>
      </linn>
    </riik>
    <riik id="TR" raha="TRY" rahanimi="Lira">
      <nimi>Turkey</nimi>
      <linn id="Istanbul">
        <nimi>Istanbul</nimi>
        <lennujaam id="IST" lat="40.9768981934" long="28.8145999908" >
          <nimi>Atatürk International Airport</nimi>
        </lennujaam>
      </linn>
    </riik>
    <riik id="RU" raha="RUB" rahanimi="Ruble">
      <nimi>Russia</nimi>
      <linn id="Moscow">
        <nimi>Moscow</nimi>
        <lennujaam id="DME" lat="55.4087982177734" long="37.9062995910645" >
          <nimi>Domodedovo International Airport</nimi>
        </lennujaam>
        <lennujaam id="SVO" lat="55.972599029541" long="37.4146003723145" >
          <nimi>Sheremetyevo International Airport</nimi>
        </lennujaam>
        <lennujaam id="" lat="55.8782997131348" long="38.0616989135742" >
          <nimi>Chkalovskiy Airport</nimi>
        </lennujaam>
      </linn>
    </riik>
  </kontinent>
  <kontinent rahvaarv="528720588" id="NA">
    <nimi>Põhja-Ameerika</nimi>
    <riik id="US" raha="USD" rahanimi="Dollar">
      <nimi>United States</nimi>
      <linn id="Fort Worth">
        <nimi>Fort Worth</nimi>
        <lennujaam id="AFW" lat="32.9875984192" long="-97.3188018799" >
          <nimi>Fort Worth Alliance Airport</nimi>
        </lennujaam>
        <lennujaam id="FTW" lat="32.8198013306" long="-97.3623962402" >
          <nimi>Fort Worth Meacham International Airport</nimi>
        </lennujaam>
      </linn>
      <linn id="Seattle">
        <nimi>Seattle</nimi>
        <lennujaam id="BFI" lat="47.5299987792969" long="-122.302001953125" >
          <nimi>Boeing Field King County International Airport</nimi>
        </lennujaam>
        <lennujaam id="SEA" lat="47.4490013122559" long="-122.30899810791" >
          <nimi>Seattle Tacoma International Airport</nimi>
        </lennujaam>
      </linn>
      <linn id="Columbus">
        <nimi>Columbus</nimi>
        <lennujaam id="" lat="39.8138008117676" long="-82.9278030395508" >
          <nimi>Rickenbacker International Airport</nimi>
        </lennujaam>
        <lennujaam id="CMH" lat="39.9980010986328" long="-82.8918991088867" >
          <nimi>Port Columbus International Airport</nimi>
        </lennujaam>
      </linn>
      <linn id="Charleston">
        <nimi>Charleston</nimi>
        <lennujaam id="CHS" lat="32.89860153" long="-80.04049683" >
          <nimi>Charleston Air Force Base-International Airport</nimi>
        </lennujaam>
        <lennujaam id="CRW" lat="38.3731002807617" long="-81.5932006835938" >
          <nimi>Yeager Airport</nimi>
        </lennujaam>
      </linn>
      <linn id="Dayton">
        <nimi>Dayton</nimi>
        <lennujaam id="DAY" lat="39.902400970459" long="-84.2193984985352" >
          <nimi>James M Cox Dayton International Airport</nimi>
        </lennujaam>
        <lennujaam id="" lat="39.826099395752" long="-84.0483016967773" >
          <nimi>Wright Patterson Air Force Base</nimi>
        </lennujaam>
      </linn>
      <linn id="Washington">
        <nimi>Washington</nimi>
        <lennujaam id="DCA" lat="38.8521003723145" long="-77.0376968383789" >
          <nimi>Ronald Reagan Washington National Airport</nimi>
        </lennujaam>
        <lennujaam id="IAD" lat="38.94449997" long="-77.45580292" >
          <nimi>Washington Dulles International Airport</nimi>
        </lennujaam>
      </linn>
      <linn id="Spokane">
        <nimi>Spokane</nimi>
        <lennujaam id="GEG" lat="47.6198997497559" long="-117.533996582031" >
          <nimi>Spokane International Airport</nimi>
        </lennujaam>
        <lennujaam id="" lat="47.6151008605957" long="-117.65599822998" >
          <nimi>Fairchild Air Force Base</nimi>
        </lennujaam>
      </linn>
      <linn id="Houston">
        <nimi>Houston</nimi>
        <lennujaam id="HOU" lat="29.64539909" long="-95.27890015" >
          <nimi>William P Hobby Airport</nimi>
        </lennujaam>
        <lennujaam id="IAH" lat="29.9843997955322" long="-95.3414001464844" >
          <nimi>George Bush Intercontinental Houston Airport</nimi>
        </lennujaam>
      </linn>
      <linn id="New York">
        <nimi>New York</nimi>
        <lennujaam id="JFK" lat="40.63980103" long="-73.77890015" >
          <nimi>John F Kennedy International Airport</nimi>
        </lennujaam>
        <lennujaam id="LGA" lat="40.77719879" long="-73.87259674" >
          <nimi>La Guardia Airport</nimi>
        </lennujaam>
      </linn>
      <linn id="Tampa">
        <nimi>Tampa</nimi>
        <lennujaam id="" lat="27.84930038" long="-82.52120209" >
          <nimi>Mac Dill Air Force Base</nimi>
        </lennujaam>
        <lennujaam id="TPA" lat="27.9755001068115" long="-82.533203125" >
          <nimi>Tampa International Airport</nimi>
        </lennujaam>
      </linn>
      <linn id="Orlando">
        <nimi>Orlando</nimi>
        <lennujaam id="MCO" lat="28.4293994903564" long="-81.3089981079102" >
          <nimi>Orlando International Airport</nimi>
        </lennujaam>
        <lennujaam id="SFB" lat="28.7775993347168" long="-81.2375030517578" >
          <nimi>Orlando Sanford International Airport</nimi>
        </lennujaam>
      </linn>
      <linn id="Chicago">
        <nimi>Chicago</nimi>
        <lennujaam id="MDW" lat="41.7859992980957" long="-87.7524032592773" >
          <nimi>Chicago Midway International Airport</nimi>
        </lennujaam>
        <lennujaam id="ORD" lat="41.97859955" long="-87.90480042" >
          <nimi>Chicago O'Hare International Airport</nimi>
        </lennujaam>
      </linn>
      <linn id="Oklahoma City">
        <nimi>Oklahoma City</nimi>
        <lennujaam id="OKC" lat="35.3931007385254" long="-97.600700378418" >
          <nimi>Will Rogers World Airport</nimi>
        </lennujaam>
        <lennujaam id="" lat="35.4146995544434" long="-97.3865966796875" >
          <nimi>Tinker Air Force Base</nimi>
        </lennujaam>
      </linn>
      <linn id="Portland">
        <nimi>Portland</nimi>
        <lennujaam id="PDX" lat="45.58869934" long="-122.5979996" >
          <nimi>Portland International Airport</nimi>
        </lennujaam>
        <lennujaam id="PWM" lat="43.64619827" long="-70.30930328" >
          <nimi>Portland International Jetport Airport</nimi>
        </lennujaam>
      </linn>
      <linn id="Rochester">
        <nimi>Rochester</nimi>
        <lennujaam id="ROC" lat="43.1189002990723" long="-77.6724014282227" >
          <nimi>Greater Rochester International Airport</nimi>
        </lennujaam>
        <lennujaam id="RST" lat="43.9082984924316" long="-92.5" >
          <nimi>Rochester International Airport</nimi>
        </lennujaam>
      </linn>
      <linn id="Springfield">
        <nimi>Springfield</nimi>
        <lennujaam id="SGF" lat="37.24570084" long="-93.38860321" >
          <nimi>Springfield Branson National Airport</nimi>
        </lennujaam>
        <lennujaam id="SPI" lat="39.84410095" long="-89.67790222" >
          <nimi>Abraham Lincoln Capital Airport</nimi>
        </lennujaam>
      </linn>
      <linn id="St Louis">
        <nimi>St Louis</nimi>
        <lennujaam id="STL" lat="38.7486991882324" long="-90.370002746582" >
          <nimi>Lambert St Louis International Airport</nimi>
        </lennujaam>
        <lennujaam id="" lat="38.6621017456055" long="-90.6520004272461" >
          <nimi>Spirit of St Louis Airport</nimi>
        </lennujaam>
      </linn>
    </riik>
    <riik id="PR" raha="USD" rahanimi="Dollar">
      <nimi>Puerto Rico</nimi>
      <linn id="San Juan">
        <nimi>San Juan</nimi>
        <lennujaam id="" lat="18.4577999115" long="-66.1211013794" >
          <nimi>San Juan Seaplane Base</nimi>
        </lennujaam>
        <lennujaam id="SJU" lat="18.4393997192383" long="-66.0018005371094" >
          <nimi>Luis Munoz Marin International Airport</nimi>
        </lennujaam>
      </linn>
    </riik>
  </kontinent>
  <kontinent rahvaarv="4164252000" id="AS">
    <nimi>Aasia</nimi>
    <riik id="TR" raha="TRY" rahanimi="Lira">
      <nimi>Turkey</nimi>
      <linn id="Istanbul">
        <nimi>Istanbul</nimi>
        <lennujaam id="SAW" lat="40.898601532" long="29.3092002869" >
          <nimi>Sabiha Gökçen International Airport</nimi>
        </lennujaam>
      </linn>
    </riik>
    <riik id="IR" raha="IRR" rahanimi="Rial">
      <nimi>Iran</nimi>
      <linn id="Tehran">
        <nimi>Tehran</nimi>
        <lennujaam id="IKA" lat="35.4160995483398" long="51.1521987915039" >
          <nimi>Imam Khomeini International Airport</nimi>
        </lennujaam>
        <lennujaam id="THR" lat="35.6892013549805" long="51.3134002685547" >
          <nimi>Mehrabad International Airport</nimi>
        </lennujaam>
      </linn>
    </riik>
    <riik id="PK" raha="PKR" rahanimi="Rupee">
      <nimi>Pakistan</nimi>
      <linn id="Islamabad">
        <nimi>Islamabad</nimi>
        <lennujaam id="ISB" lat="33.61669921875" long="73.0991973876953" >
          <nimi>Benazir Bhutto International Airport</nimi>
        </lennujaam>
        <lennujaam id="" lat="33.560714" long="72.851614" >
          <nimi>(Under construction) New Islamabad International Airport</nimi>
        </lennujaam>
      </linn>
    </riik>
    <riik id="JP" raha="JPY" rahanimi="Yen">
      <nimi>Japan</nimi>
      <linn id="Tokyo">
        <nimi>Tokyo</nimi>
        <lennujaam id="NRT" lat="35.7647018432617" long="140.386001586914" >
          <nimi>Narita International Airport</nimi>
        </lennujaam>
        <lennujaam id="HND" lat="35.5522994995117" long="139.779998779297" >
          <nimi>Tokyo International Airport</nimi>
        </lennujaam>
      </linn>
      <linn id="Osaka">
        <nimi>Osaka</nimi>
        <lennujaam id="KIX" lat="34.4272994995117" long="135.244003295898" >
          <nimi>Kansai International Airport</nimi>
        </lennujaam>
        <lennujaam id="ITM" lat="34.7854995727539" long="135.438003540039" >
          <nimi>Osaka International Airport</nimi>
        </lennujaam>
      </linn>
      <linn id="">
        <nimi></nimi>
        <lennujaam id="" lat="34.7960434679" long="138.18775177" >
          <nimi>Mt. Fuji Shizuoka Airport</nimi>
        </lennujaam>
        <lennujaam id="DNA" lat="26.3556003570557" long="127.767997741699" >
          <nimi>Kadena Air Base</nimi>
        </lennujaam>
      </linn>
    </riik>
    <riik id="KR" raha="KRW" rahanimi="Won">
      <nimi>South Korea</nimi>
      <linn id="Seoul">
        <nimi>Seoul</nimi>
        <lennujaam id="ICN" lat="37.4691009521484" long="126.450996398926" >
          <nimi>Incheon International Airport</nimi>
        </lennujaam>
        <lennujaam id="GMP" lat="37.5583000183" long="126.791000366" >
          <nimi>Gimpo International Airport</nimi>
        </lennujaam>
      </linn>
    </riik>
    <riik id="TH" raha="THB" rahanimi="Baht">
      <nimi>Thailand</nimi>
      <linn id="Bangkok">
        <nimi>Bangkok</nimi>
        <lennujaam id="DMK" lat="13.9125995635986" long="100.607002258301" >
          <nimi>Don Mueang International Airport</nimi>
        </lennujaam>
        <lennujaam id="BKK" lat="13.6810998916626" long="100.747001647949" >
          <nimi>Suvarnabhumi Airport</nimi>
        </lennujaam>
      </linn>
    </riik>
    <riik id="CN" raha="CNY" rahanimi="Yuan Renminbi">
      <nimi>China</nimi>
      <linn id="Beijing">
        <nimi>Beijing</nimi>
        <lennujaam id="PEK" lat="40.0801010131836" long="116.584999084473" >
          <nimi>Beijing Capital International Airport</nimi>
        </lennujaam>
        <lennujaam id="NAY" lat="39.7827987670898" long="116.388000488281" >
          <nimi>Beijing Nanyuan Airport</nimi>
        </lennujaam>
      </linn>
      <linn id="Shanghai">
        <nimi>Shanghai</nimi>
        <lennujaam id="PVG" lat="31.1434001922607" long="121.805000305176" >
          <nimi>Shanghai Pudong International Airport</nimi>
        </lennujaam>
        <lennujaam id="SHA" lat="31.1979007720947" long="121.335998535156" >
          <nimi>Shanghai Hongqiao International Airport</nimi>
        </lennujaam>
      </linn>
    </riik>
  </kontinent>
  <kontinent rahvaarv="385742554" id="SA">
    <nimi>Lõuna Ameerika</nimi>
    <riik id="BR" raha="BRL" rahanimi="Real">
      <nimi>Brazil</nimi>
      <linn id="São Paulo">
        <nimi>São Paulo</nimi>
        <lennujaam id="GRU" lat="-23.4355564117432" long="-46.4730567932129" >
          <nimi>Guarulhos - Governador André Franco Montoro International Airport</nimi>
        </lennujaam>
        <lennujaam id="CGH" lat="-23.6261100769043" long="-46.6563873291016" >
          <nimi>Congonhas Airport</nimi>
        </lennujaam>
      </linn>
    </riik>
  </kontinent>
</Maa>
</source>
 
=== Sisemiseks kasutamiseks ===
Siia tulevad asjad mis ei kuulu presenteerimisele, aga võivad olla vajalikud
 
 
==== vana XML andmefail ====
<pre>
<pre>
<?xml version="1.0" encoding="utf-8" ?>
<?xml version="1.0" encoding="utf-8" ?>
Line 93: Line 724:
</Maa>
</Maa>
</pre>
</pre>
==== Source code for xml generator ====
<pre>
<?php
$CONT_POPULATION=array(
"EU"=>738199000,
"AS"=>4164252000,
"NA"=>528720588,
"AF"=>1022234000,
"AN"=>5000,
"SA"=>385742554,
"OC"=>36593000
);
$CONT_NAME=array(
"EU"=>"Euroopa",
"AS"=>"Aasia",
"NA"=>"Põhja-Ameerika",
"AF"=>"Aafrika",
"AN"=>"Antarktika",
"SA"=>"Lõuna Ameerika",
"OC"=>"Okeaania"
);
$CONT = array();
$CC = explode("\n",str_replace("\r","",file_get_contents("countryInfo.txt")));
$CC_keys = array_shift($CC);
$CC_keys = explode("\t",$CC_keys);
$CCA = ARRAY();
foreach($CC as $cline){
if(trim($cline)=="")continue;
$c = explode("\t",$cline);
$a = array();
foreach($CC_keys as $num=>$key){
$a[$key] = $c[$num];
}
//print_r($a);
$CCA[$a['ISO']]=$a;
$CONT[$a['Continent']]=true;
//exit();
}
$WORLD = array();
//$AIRP=array();
$CIT=array();
$f = fopen("airports.csv",'r');
$num = "";
while($a = fgetcsv ($f)){
if($a[2]!="large_airport")continue;
if($a[4]=="0")continue;
$continent = $a[7];
$country = $a[8];
$munip = $a[10];
$airp_code = $a[13];
if(!isset($CIT[$country."/".$munip]))$CIT[$country."/".$munip]=0;
$CIT[$country."/".$munip]++;
//$WORLD[$continent]['children'][$country]['children'][$munip]['children'][$airp_code]=$a;
//if($a[2]=="large_airport")$num++;
}
$f = fopen("airports.csv",'r');
$num = "";
while($a = fgetcsv ($f)){
if($a[2]!="large_airport")continue;
if($a[4]=="0")continue;
$continent = $a[7];
$country = $a[8];
$munip = $a[10];
$airp_code = $a[13];
if($CIT[$country."/".$munip]<2)continue;
if(!isset($WORLD[$continent])){
$WORLD[$continent] = array('children'=>array());
}
if(!isset($WORLD[$continent]['children'][$country])){
$WORLD[$continent]['children'][$country] = array('children'=>array());
}
if(!isset($WORLD[$continent]['children'][$country]['children'][$munip])){
$WORLD[$continent]['children'][$country]['children'][$munip] = array('children'=>array());
}
$a['id']=$airp_code;
$a['lat']=$a[4];
$a['long']=$a[5];
$a['nimi']=$a[3];
$WORLD[$continent]['children'][$country]['children'][$munip]['children'][$airp_code]=$a;
$WORLD[$continent]['id'] = $continent;
$WORLD[$continent]['nimi'] = $CONT_NAME[$continent];
$WORLD[$continent]['rahvaarv'] = $CONT_POPULATION[$continent];
$WORLD[$continent]['children'][$country]['id'] = $country;
$WORLD[$continent]['children'][$country]['nimi'] = $CCA[$country]['Country'];
$WORLD[$continent]['children'][$country]['raha'] = $CCA[$country]['CurrencyCode'];
$WORLD[$continent]['children'][$country]['rahanimi'] = $CCA[$country]['CurrencyName'];
$WORLD[$continent]['children'][$country]['children'][$munip]['id']=$munip;
$WORLD[$continent]['children'][$country]['children'][$munip]['nimi']=$munip;
if($a[2]=="large_airport")$num++;
}
//echo $num;
echo '<?xml version="1.0" encoding="utf-8" ?>'."\n";
echo "<!-- Sources:\n http://www.ourairports.com/data/ (public domain) \n http://www.geonames.org/ (Creative Commons Attribution 3.0) \n-->\n";
echo "<Maa>\n";
foreach($WORLD as $continent){
$id = $continent['id'];
$nimi = $continent['nimi'];
$rahvaarv = $continent['rahvaarv'];
echo str_pad("",2);
echo "<kontinent rahvaarv=\"$rahvaarv\" id=\"$id\">\n";
echo str_pad("",4);
echo "<nimi>$nimi</nimi>\n";
foreach($continent['children'] as $country){
$id = $country['id'];
$nimi = $country['nimi'];
$raha = $country['raha'];
$rahanimi=$country['rahanimi'];
echo str_pad("",4);
echo "<riik id=\"$id\" raha=\"$raha\" rahanimi=\"$rahanimi\">\n";
echo str_pad("",6);
echo "<nimi>$nimi</nimi>\n";
foreach($country['children'] as $city){
$id = $city['id'];
$nimi = $city['nimi'];
echo str_pad("",6);
echo "<linn id=\"$id\">\n";
echo str_pad("",8);
echo "<nimi>$nimi</nimi>\n";
foreach($city['children'] as $airport){
$id = $airport['id'];
$nimi = $airport['nimi'];
$lat = $airport['lat'];
$long=$airport['long'];
echo str_pad("",8);
echo "<lennujaam id=\"$id\" lat=\"$lat\" long=\"$long\" >\n";
echo str_pad("",10);
echo "<nimi>$nimi</nimi>\n";
echo str_pad("",8);
echo "</lennujaam>\n";
}
echo str_pad("",6);
echo "</linn>\n";
}
echo str_pad("",4);
echo "</riik>\n";
}
echo str_pad("",2);
echo "</kontinent>\n";
}
echo "</Maa>\n";
</pre>
==== countryInfo.txt (tab delim file) ====
Source http://download.geonames.org/export/dump/countryInfo.txt (Creative Commons Attribution 3.0)
Enne töötlemist eemaldada kommenteeritud read (algavad #) välja arvatud viimane kommenteeritud rida (kus on veerunimed).
Sealt reast lihtsalt eemaldada # sümbol
==== airporst.csv  ====
http://www.ourairports.com/data/airports.csv (public domain)
== Veebiteenus ==
Lõime veebiteenuse enda eelneva teema lennujaamad põhjal.
Teenus võimaldab kasutajal sisse logida ja teha lennujaamade otsinguid kontinentide, riikide ja linnade piires. Lisaks võimaldab teenus otsida lennujaamu laius- ja pikkuskraadide järgi.
Sisselogimisel eristab süsteem automaatselt tavakasutajat administraatorist.
Kui kasutaja on administraator siis kuvatakse talle admininstraatori paneel, kui kasutaja on tavakasutaja kuvatakse talle tavapaneel.
Administraatori paneeli kuvatakse peale tavaandmete ka kasutajate informatsioon.
Administraator võib kasutajaid kustutada ja lennujaamu kustutada ja lisada.
Teenuse meetodid:
*logiSisse(string kasutajanimi, string password)
*kuvaLennujaamadLinnas(string linn)
*kuvaLennujaamadRiigis(string riik)
*kuvaLennujaamadKontinendil(string kontinent)
*kuvaLennujaamadLaiuskraadideVahemikus(float latStart, float latEnd, float longStart, float longEnd)
*kuvaLinnadRiigis(string riik)
*kuvaKontinendid()
*kuvaRiigidKontinendil(string kontinent)
*kuvaKasutajad()
*lisaLennujaam(int id, string nimi, float latitude, float longitude, string lennujaamkood)
*kustutaLennujaam(int id)
*kustutaKasutaja(int id)
Projekt failid asuvad siin:
http://enos.itcollege.ee/~aperi/WcfService2_a.rar
ˇ
== Veebirakendused ==
Lõime 2 rakendust lennujaamade veebiteenuse kasutamiseks.
Üks on loodud C# ja windows Forms'i näol, teine aga PHP ja HTML'ina.
C# windows forms rakendus:
http://enos.itcollege.ee/~aperi/Veebiteenus_Rakendus2viimane.zip
PHP rakendus:
http://enos.itcollege.ee/~hmaeorg/V%f5rgurakendused2/airports.zip

Latest revision as of 10:51, 24 May 2012

Sources for xml:

http://www.ourairports.com/data/ (public domain) 
http://www.geonames.org/ (Creative Commons Attribution 3.0)

Meeskond

  • Henry Mäeorg - XML, XSD, XSL
  • Martin Laak - XML, XSL, Wiki
  • Andre-Marcel Peri - XSL

XML Ülesanne

Lõime ülemaailmse lennujaamade andmebaasi. Selleks kombineerisime järgnevaid vabavaralisi andmebaase:

* http://www.ourairports.com/data/airports.csv (public domain)
* http://download.geonames.org/export/dump/countryInfo.txt (Creative Commons Attribution 3.0)

Seoses suure mahuga, piirasime andmeid. Lisasime oma xml-i ainult suured lennujaamad mis asuvad suurlinnades (suurlinna definitsioon - linn milles asub mitu suurt lennujaama).

Liikmete tööpanus:

  • XML loomine - Martin Laak, Henry Mäeorg
  • XSD loomine - Henry Mäeorg
  • XSLT1 - Henry Mäeorg
  • XSLT2 - Andre-Marcel, Martin Laak (maps)
  • XSLT3 - Martin Laak


XSD skeemifail

<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="Maa">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="7" name="kontinent">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="nimi" type="xs:string" />
              <xs:element minOccurs="0" maxOccurs="unbounded" name="riik">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="nimi" type="xs:string" />
                    <xs:element maxOccurs="unbounded" name="linn">
                      <xs:complexType>
                        <xs:sequence>
                          <xs:element name="nimi" type="xs:string" />
                          <xs:element minOccurs="0" maxOccurs="unbounded" name="lennujaam">
                            <xs:complexType>
                              <xs:sequence>
                                <xs:element name="nimi" type="xs:string" />
                              </xs:sequence>
                              <xs:attribute name="id" type="xs:string" use="required" />
                              <xs:attribute name="long" type="xs:string" use="required" />
                              <xs:attribute name="lat" type="xs:string" use="required" />
                            </xs:complexType>
                          </xs:element>
                        </xs:sequence>
                        <xs:attribute name="id" type="xs:string" use="required" />
                      </xs:complexType>
                    </xs:element>
                  </xs:sequence>
                  <xs:attribute name="id" type="xs:string" use="required" />
                  <xs:attribute name="raha" type="xs:string" use="required" />
                  <xs:attribute name="rahanimi" type="xs:string" use="required" />
                </xs:complexType>
              </xs:element>
            </xs:sequence>
            <xs:attribute name="rahvaarv" type="xs:string" use="required" />
            <xs:attribute name="id" type="xs:string" use="required" />
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

XSL stiilifail 1

Lennujaamade andmebaasi esitus HTML kujul.

<?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" version="1.0" encoding="UTF-8" indent="yes"/>
  <xsl:template match="/">
    <html>
      <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
      </head>
      <body>
        <xsl:for-each select="Maa/kontinent">
        <h1><xsl:value-of select="nimi"/></h1>
          <xsl:for-each select="riik">
          <h2><xsl:value-of select="nimi"/></h2>
            <xsl:for-each select="linn">
            <h3><xsl:value-of select="nimi"/></h3>
              <xsl:if test="count(lennujaam) !=0">
              <h4>Lennujaamad:</h4>
              <ul>
                <xsl:for-each select="lennujaam">
                <li><xsl:value-of select="nimi"/></li>
                </xsl:for-each>
              </ul>
              </xsl:if>             
            </xsl:for-each>
          </xsl:for-each>      
        </xsl:for-each>
      </body>
    </html>
  </xsl:template>
</xsl:stylesheet>

XSL stiilifail 2

Lennujaamade esitus tabelina html-is. Google static maps abil kuvatakse ka lennujaamade asukohad kaardil.

<?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" version="1.0" encoding="UTF-8" indent="yes"/>
  <xsl:template match="/">
    <html>
      <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
      </head>
      <body>
        <table border="1">
          <tr bgcolor="#20B2AA">
            <th>Kontinent</th>
            <th>Rahvaarv</th>
            <th>Riigid</th>
            <th>Linnad</th>
            <th>Lennujaamad</th>
          </tr>
          <xsl:for-each select="Maa/kontinent">
            <tr	bgcolor="#E0FFFF">
              <td>
                <xsl:value-of select="nimi"/>
              </td>
           
              <td>
                <xsl:value-of select="@rahvaarv"/>
              </td>
              <xsl:for-each select="riik"> 
                  <td>
                    <xsl:value-of select="nimi"/>
                  </td>

              <xsl:for-each select="linn">
                  <td>
                    <xsl:value-of select="nimi"/>
                  </td>
                <xsl:for-each select="lennujaam">
                  <td>
                    <xsl:value-of select="nimi"/>
                  </td>
                </xsl:for-each>
                </xsl:for-each>
              </xsl:for-each>
            </tr>
          </xsl:for-each>
        </table>
      </body>
    </html>
  </xsl:template>
</xsl:stylesheet>

XSL stiilifail 3

XML to XML. Luuakse xml vormis

<lennujaamad>
- <lennujaam id="" nimi="">
    <linn nimi="" /> 
    <riik id="" nimi="" /> 
  </lennujaam>
  <lennujaam id="" nimi="">
    <linn nimi="" /> 
    <riik id="" nimi="" /> 
  </lennujaam>
  ....
</lennujaamad>

XSLT:

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="/">
  <lennujaamad>
    <xsl:for-each select="Maa/kontinent/riik/linn/lennujaam">
    <xsl:sort select="nimi"/>
      <lennujaam>
        <xsl:attribute name="id">
          <xsl:value-of select="@id"/>
        </xsl:attribute>
        <xsl:attribute name="nimi">
          <xsl:value-of select="nimi"/>
        </xsl:attribute>
        <linn>
          <xsl:attribute name="nimi">
            <xsl:value-of select="../nimi"/>
          </xsl:attribute>
        </linn>
        <riik>
          <xsl:attribute name="id">
            <xsl:value-of select="../../@id"/>
          </xsl:attribute>
          <xsl:attribute name="nimi">
            <xsl:value-of select="../../nimi"/>
          </xsl:attribute>
          
        </riik>
      </lennujaam>
    </xsl:for-each>
  </lennujaamad>
</xsl:template>
</xsl:stylesheet>

XML andmefail

<?xml version="1.0" encoding="utf-8" ?>
<!-- Sources:
 http://www.ourairports.com/data/ (public domain) 
 http://www.geonames.org/ (Creative Commons Attribution 3.0) 
-->
<Maa>
  <kontinent rahvaarv="738199000" id="EU">
    <nimi>Euroopa</nimi>
    <riik id="DE" raha="EUR" rahanimi="Euro">
      <nimi>Germany</nimi>
      <linn id="Berlin">
        <nimi>Berlin</nimi>
        <lennujaam id="SXF" lat="52.3800010681152" long="13.522500038147" >
          <nimi>Berlin-Schönefeld International Airport</nimi>
        </lennujaam>
        <lennujaam id="TXL" lat="52.559700012207" long="13.2876996994019" >
          <nimi>Berlin-Tegel International Airport</nimi>
        </lennujaam>
      </linn>
    </riik>
    <riik id="GB" raha="GBP" rahanimi="Pound">
      <nimi>United Kingdom</nimi>
      <linn id="Belfast">
        <nimi>Belfast</nimi>
        <lennujaam id="BFS" lat="54.6575012207031" long="-6.21582984924316" >
          <nimi>Belfast International Airport</nimi>
        </lennujaam>
        <lennujaam id="BHD" lat="54.6180992126465" long="-5.87249994277954" >
          <nimi>George Best Belfast City Airport</nimi>
        </lennujaam>
      </linn>
      <linn id="London">
        <nimi>London</nimi>
        <lennujaam id="LTN" lat="51.874698638916" long="-0.368333011865616" >
          <nimi>London Luton Airport</nimi>
        </lennujaam>
        <lennujaam id="LGW" lat="51.1481018066406" long="-0.190277993679047" >
          <nimi>London Gatwick Airport</nimi>
        </lennujaam>
        <lennujaam id="LCY" lat="51.505298614502" long="0.0552779994904995" >
          <nimi>London City Airport</nimi>
        </lennujaam>
        <lennujaam id="LHR" lat="51.4706001282" long="-0.461941003799" >
          <nimi>London Heathrow Airport</nimi>
        </lennujaam>
        <lennujaam id="STN" lat="51.8849983215332" long="0.234999999403954" >
          <nimi>London Stansted Airport</nimi>
        </lennujaam>
      </linn>
    </riik>
    <riik id="ES" raha="EUR" rahanimi="Euro">
      <nimi>Spain</nimi>
      <linn id="Tenerife Island">
        <nimi>Tenerife Island</nimi>
        <lennujaam id="TFS" lat="28.044500351" long="-16.5725002289" >
          <nimi>Tenerife South Airport</nimi>
        </lennujaam>
        <lennujaam id="TFN" lat="28.4827003479" long="-16.3414993286" >
          <nimi>Tenerife Norte Airport</nimi>
        </lennujaam>
      </linn>
    </riik>
    <riik id="FR" raha="EUR" rahanimi="Euro">
      <nimi>France</nimi>
      <linn id="Paris">
        <nimi>Paris</nimi>
        <lennujaam id="CDG" lat="49.0127983093" long="2.54999995232" >
          <nimi>Charles de Gaulle International Airport</nimi>
        </lennujaam>
        <lennujaam id="ORY" lat="48.7252998352" long="2.35944008827" >
          <nimi>Paris-Orly Airport</nimi>
        </lennujaam>
      </linn>
    </riik>
    <riik id="IT" raha="EUR" rahanimi="Euro">
      <nimi>Italy</nimi>
      <linn id="Milan">
        <nimi>Milan</nimi>
        <lennujaam id="MXP" lat="45.6305999756" long="8.72811031342" >
          <nimi>Malpensa International Airport</nimi>
        </lennujaam>
        <lennujaam id="LIN" lat="45.445098877" long="9.27674007416" >
          <nimi>Linate Airport</nimi>
        </lennujaam>
      </linn>
    </riik>
    <riik id="TR" raha="TRY" rahanimi="Lira">
      <nimi>Turkey</nimi>
      <linn id="Istanbul">
        <nimi>Istanbul</nimi>
        <lennujaam id="IST" lat="40.9768981934" long="28.8145999908" >
          <nimi>Atatürk International Airport</nimi>
        </lennujaam>
      </linn>
    </riik>
    <riik id="RU" raha="RUB" rahanimi="Ruble">
      <nimi>Russia</nimi>
      <linn id="Moscow">
        <nimi>Moscow</nimi>
        <lennujaam id="DME" lat="55.4087982177734" long="37.9062995910645" >
          <nimi>Domodedovo International Airport</nimi>
        </lennujaam>
        <lennujaam id="SVO" lat="55.972599029541" long="37.4146003723145" >
          <nimi>Sheremetyevo International Airport</nimi>
        </lennujaam>
        <lennujaam id="" lat="55.8782997131348" long="38.0616989135742" >
          <nimi>Chkalovskiy Airport</nimi>
        </lennujaam>
      </linn>
    </riik>
  </kontinent>
  <kontinent rahvaarv="528720588" id="NA">
    <nimi>Põhja-Ameerika</nimi>
    <riik id="US" raha="USD" rahanimi="Dollar">
      <nimi>United States</nimi>
      <linn id="Fort Worth">
        <nimi>Fort Worth</nimi>
        <lennujaam id="AFW" lat="32.9875984192" long="-97.3188018799" >
          <nimi>Fort Worth Alliance Airport</nimi>
        </lennujaam>
        <lennujaam id="FTW" lat="32.8198013306" long="-97.3623962402" >
          <nimi>Fort Worth Meacham International Airport</nimi>
        </lennujaam>
      </linn>
      <linn id="Seattle">
        <nimi>Seattle</nimi>
        <lennujaam id="BFI" lat="47.5299987792969" long="-122.302001953125" >
          <nimi>Boeing Field King County International Airport</nimi>
        </lennujaam>
        <lennujaam id="SEA" lat="47.4490013122559" long="-122.30899810791" >
          <nimi>Seattle Tacoma International Airport</nimi>
        </lennujaam>
      </linn>
      <linn id="Columbus">
        <nimi>Columbus</nimi>
        <lennujaam id="" lat="39.8138008117676" long="-82.9278030395508" >
          <nimi>Rickenbacker International Airport</nimi>
        </lennujaam>
        <lennujaam id="CMH" lat="39.9980010986328" long="-82.8918991088867" >
          <nimi>Port Columbus International Airport</nimi>
        </lennujaam>
      </linn>
      <linn id="Charleston">
        <nimi>Charleston</nimi>
        <lennujaam id="CHS" lat="32.89860153" long="-80.04049683" >
          <nimi>Charleston Air Force Base-International Airport</nimi>
        </lennujaam>
        <lennujaam id="CRW" lat="38.3731002807617" long="-81.5932006835938" >
          <nimi>Yeager Airport</nimi>
        </lennujaam>
      </linn>
      <linn id="Dayton">
        <nimi>Dayton</nimi>
        <lennujaam id="DAY" lat="39.902400970459" long="-84.2193984985352" >
          <nimi>James M Cox Dayton International Airport</nimi>
        </lennujaam>
        <lennujaam id="" lat="39.826099395752" long="-84.0483016967773" >
          <nimi>Wright Patterson Air Force Base</nimi>
        </lennujaam>
      </linn>
      <linn id="Washington">
        <nimi>Washington</nimi>
        <lennujaam id="DCA" lat="38.8521003723145" long="-77.0376968383789" >
          <nimi>Ronald Reagan Washington National Airport</nimi>
        </lennujaam>
        <lennujaam id="IAD" lat="38.94449997" long="-77.45580292" >
          <nimi>Washington Dulles International Airport</nimi>
        </lennujaam>
      </linn>
      <linn id="Spokane">
        <nimi>Spokane</nimi>
        <lennujaam id="GEG" lat="47.6198997497559" long="-117.533996582031" >
          <nimi>Spokane International Airport</nimi>
        </lennujaam>
        <lennujaam id="" lat="47.6151008605957" long="-117.65599822998" >
          <nimi>Fairchild Air Force Base</nimi>
        </lennujaam>
      </linn>
      <linn id="Houston">
        <nimi>Houston</nimi>
        <lennujaam id="HOU" lat="29.64539909" long="-95.27890015" >
          <nimi>William P Hobby Airport</nimi>
        </lennujaam>
        <lennujaam id="IAH" lat="29.9843997955322" long="-95.3414001464844" >
          <nimi>George Bush Intercontinental Houston Airport</nimi>
        </lennujaam>
      </linn>
      <linn id="New York">
        <nimi>New York</nimi>
        <lennujaam id="JFK" lat="40.63980103" long="-73.77890015" >
          <nimi>John F Kennedy International Airport</nimi>
        </lennujaam>
        <lennujaam id="LGA" lat="40.77719879" long="-73.87259674" >
          <nimi>La Guardia Airport</nimi>
        </lennujaam>
      </linn>
      <linn id="Tampa">
        <nimi>Tampa</nimi>
        <lennujaam id="" lat="27.84930038" long="-82.52120209" >
          <nimi>Mac Dill Air Force Base</nimi>
        </lennujaam>
        <lennujaam id="TPA" lat="27.9755001068115" long="-82.533203125" >
          <nimi>Tampa International Airport</nimi>
        </lennujaam>
      </linn>
      <linn id="Orlando">
        <nimi>Orlando</nimi>
        <lennujaam id="MCO" lat="28.4293994903564" long="-81.3089981079102" >
          <nimi>Orlando International Airport</nimi>
        </lennujaam>
        <lennujaam id="SFB" lat="28.7775993347168" long="-81.2375030517578" >
          <nimi>Orlando Sanford International Airport</nimi>
        </lennujaam>
      </linn>
      <linn id="Chicago">
        <nimi>Chicago</nimi>
        <lennujaam id="MDW" lat="41.7859992980957" long="-87.7524032592773" >
          <nimi>Chicago Midway International Airport</nimi>
        </lennujaam>
        <lennujaam id="ORD" lat="41.97859955" long="-87.90480042" >
          <nimi>Chicago O'Hare International Airport</nimi>
        </lennujaam>
      </linn>
      <linn id="Oklahoma City">
        <nimi>Oklahoma City</nimi>
        <lennujaam id="OKC" lat="35.3931007385254" long="-97.600700378418" >
          <nimi>Will Rogers World Airport</nimi>
        </lennujaam>
        <lennujaam id="" lat="35.4146995544434" long="-97.3865966796875" >
          <nimi>Tinker Air Force Base</nimi>
        </lennujaam>
      </linn>
      <linn id="Portland">
        <nimi>Portland</nimi>
        <lennujaam id="PDX" lat="45.58869934" long="-122.5979996" >
          <nimi>Portland International Airport</nimi>
        </lennujaam>
        <lennujaam id="PWM" lat="43.64619827" long="-70.30930328" >
          <nimi>Portland International Jetport Airport</nimi>
        </lennujaam>
      </linn>
      <linn id="Rochester">
        <nimi>Rochester</nimi>
        <lennujaam id="ROC" lat="43.1189002990723" long="-77.6724014282227" >
          <nimi>Greater Rochester International Airport</nimi>
        </lennujaam>
        <lennujaam id="RST" lat="43.9082984924316" long="-92.5" >
          <nimi>Rochester International Airport</nimi>
        </lennujaam>
      </linn>
      <linn id="Springfield">
        <nimi>Springfield</nimi>
        <lennujaam id="SGF" lat="37.24570084" long="-93.38860321" >
          <nimi>Springfield Branson National Airport</nimi>
        </lennujaam>
        <lennujaam id="SPI" lat="39.84410095" long="-89.67790222" >
          <nimi>Abraham Lincoln Capital Airport</nimi>
        </lennujaam>
      </linn>
      <linn id="St Louis">
        <nimi>St Louis</nimi>
        <lennujaam id="STL" lat="38.7486991882324" long="-90.370002746582" >
          <nimi>Lambert St Louis International Airport</nimi>
        </lennujaam>
        <lennujaam id="" lat="38.6621017456055" long="-90.6520004272461" >
          <nimi>Spirit of St Louis Airport</nimi>
        </lennujaam>
      </linn>
    </riik>
    <riik id="PR" raha="USD" rahanimi="Dollar">
      <nimi>Puerto Rico</nimi>
      <linn id="San Juan">
        <nimi>San Juan</nimi>
        <lennujaam id="" lat="18.4577999115" long="-66.1211013794" >
          <nimi>San Juan Seaplane Base</nimi>
        </lennujaam>
        <lennujaam id="SJU" lat="18.4393997192383" long="-66.0018005371094" >
          <nimi>Luis Munoz Marin International Airport</nimi>
        </lennujaam>
      </linn>
    </riik>
  </kontinent>
  <kontinent rahvaarv="4164252000" id="AS">
    <nimi>Aasia</nimi>
    <riik id="TR" raha="TRY" rahanimi="Lira">
      <nimi>Turkey</nimi>
      <linn id="Istanbul">
        <nimi>Istanbul</nimi>
        <lennujaam id="SAW" lat="40.898601532" long="29.3092002869" >
          <nimi>Sabiha Gökçen International Airport</nimi>
        </lennujaam>
      </linn>
    </riik>
    <riik id="IR" raha="IRR" rahanimi="Rial">
      <nimi>Iran</nimi>
      <linn id="Tehran">
        <nimi>Tehran</nimi>
        <lennujaam id="IKA" lat="35.4160995483398" long="51.1521987915039" >
          <nimi>Imam Khomeini International Airport</nimi>
        </lennujaam>
        <lennujaam id="THR" lat="35.6892013549805" long="51.3134002685547" >
          <nimi>Mehrabad International Airport</nimi>
        </lennujaam>
      </linn>
    </riik>
    <riik id="PK" raha="PKR" rahanimi="Rupee">
      <nimi>Pakistan</nimi>
      <linn id="Islamabad">
        <nimi>Islamabad</nimi>
        <lennujaam id="ISB" lat="33.61669921875" long="73.0991973876953" >
          <nimi>Benazir Bhutto International Airport</nimi>
        </lennujaam>
        <lennujaam id="" lat="33.560714" long="72.851614" >
          <nimi>(Under construction) New Islamabad International Airport</nimi>
        </lennujaam>
      </linn>
    </riik>
    <riik id="JP" raha="JPY" rahanimi="Yen">
      <nimi>Japan</nimi>
      <linn id="Tokyo">
        <nimi>Tokyo</nimi>
        <lennujaam id="NRT" lat="35.7647018432617" long="140.386001586914" >
          <nimi>Narita International Airport</nimi>
        </lennujaam>
        <lennujaam id="HND" lat="35.5522994995117" long="139.779998779297" >
          <nimi>Tokyo International Airport</nimi>
        </lennujaam>
      </linn>
      <linn id="Osaka">
        <nimi>Osaka</nimi>
        <lennujaam id="KIX" lat="34.4272994995117" long="135.244003295898" >
          <nimi>Kansai International Airport</nimi>
        </lennujaam>
        <lennujaam id="ITM" lat="34.7854995727539" long="135.438003540039" >
          <nimi>Osaka International Airport</nimi>
        </lennujaam>
      </linn>
      <linn id="">
        <nimi></nimi>
        <lennujaam id="" lat="34.7960434679" long="138.18775177" >
          <nimi>Mt. Fuji Shizuoka Airport</nimi>
        </lennujaam>
        <lennujaam id="DNA" lat="26.3556003570557" long="127.767997741699" >
          <nimi>Kadena Air Base</nimi>
        </lennujaam>
      </linn>
    </riik>
    <riik id="KR" raha="KRW" rahanimi="Won">
      <nimi>South Korea</nimi>
      <linn id="Seoul">
        <nimi>Seoul</nimi>
        <lennujaam id="ICN" lat="37.4691009521484" long="126.450996398926" >
          <nimi>Incheon International Airport</nimi>
        </lennujaam>
        <lennujaam id="GMP" lat="37.5583000183" long="126.791000366" >
          <nimi>Gimpo International Airport</nimi>
        </lennujaam>
      </linn>
    </riik>
    <riik id="TH" raha="THB" rahanimi="Baht">
      <nimi>Thailand</nimi>
      <linn id="Bangkok">
        <nimi>Bangkok</nimi>
        <lennujaam id="DMK" lat="13.9125995635986" long="100.607002258301" >
          <nimi>Don Mueang International Airport</nimi>
        </lennujaam>
        <lennujaam id="BKK" lat="13.6810998916626" long="100.747001647949" >
          <nimi>Suvarnabhumi Airport</nimi>
        </lennujaam>
      </linn>
    </riik>
    <riik id="CN" raha="CNY" rahanimi="Yuan Renminbi">
      <nimi>China</nimi>
      <linn id="Beijing">
        <nimi>Beijing</nimi>
        <lennujaam id="PEK" lat="40.0801010131836" long="116.584999084473" >
          <nimi>Beijing Capital International Airport</nimi>
        </lennujaam>
        <lennujaam id="NAY" lat="39.7827987670898" long="116.388000488281" >
          <nimi>Beijing Nanyuan Airport</nimi>
        </lennujaam>
      </linn>
      <linn id="Shanghai">
        <nimi>Shanghai</nimi>
        <lennujaam id="PVG" lat="31.1434001922607" long="121.805000305176" >
          <nimi>Shanghai Pudong International Airport</nimi>
        </lennujaam>
        <lennujaam id="SHA" lat="31.1979007720947" long="121.335998535156" >
          <nimi>Shanghai Hongqiao International Airport</nimi>
        </lennujaam>
      </linn>
    </riik>
  </kontinent>
  <kontinent rahvaarv="385742554" id="SA">
    <nimi>Lõuna Ameerika</nimi>
    <riik id="BR" raha="BRL" rahanimi="Real">
      <nimi>Brazil</nimi>
      <linn id="São Paulo">
        <nimi>São Paulo</nimi>
        <lennujaam id="GRU" lat="-23.4355564117432" long="-46.4730567932129" >
          <nimi>Guarulhos - Governador André Franco Montoro International Airport</nimi>
        </lennujaam>
        <lennujaam id="CGH" lat="-23.6261100769043" long="-46.6563873291016" >
          <nimi>Congonhas Airport</nimi>
        </lennujaam>
      </linn>
    </riik>
  </kontinent>
</Maa>

Sisemiseks kasutamiseks

Siia tulevad asjad mis ei kuulu presenteerimisele, aga võivad olla vajalikud


vana XML andmefail

<?xml version="1.0" encoding="utf-8" ?>
<Maa>
  <manner rahvaarv="1 022 234 000">
    <nimi>Aafrika</nimi>     
    <riik>
      <nimi></nimi>
      <linn ajatsoon="">
        <nimi></nimi>
        <lennujaam long="" lat="">
          <nimi></nimi>
        </lennujaam>
      </linn>
    </riik>
  </manner>
  <manner rahvaarv="4 164 252 000">
    <nimi>Aasia</nimi>
    <riik>
      <nimi></nimi>
      <linn ajatsoon="">
        <nimi></nimi>
        <lennujaam long="" lat="">
          <nimi></nimi>
        </lennujaam>
      </linn>
    </riik>
  </manner>
  <manner rahvaarv="738 199 000">
    <nimi>Euroopa</nimi>
    <riik>
      <nimi></nimi>
      <linn ajatsoon="">
        <nimi></nimi>
        <lennujaam long="" lat="">
          <nimi></nimi>
        </lennujaam>
      </linn>
    </riik>
  </manner>
  <manner rahvaarv="528 720 588">
    <nimi>Põhja-Ameerika</nimi>
    <riik>
      <nimi></nimi>
      <linn ajatsoon="">
        <nimi></nimi>
        <lennujaam long="" lat="">
          <nimi></nimi>
        </lennujaam>
      </linn>
    </riik>
  </manner>
  <manner rahvaarv="385 742 554">
    <nimi>Lõuna-Ameerika</nimi>
    <riik>
      <nimi></nimi>
      <linn ajatsoon="">
        <nimi></nimi>
        <lennujaam long="" lat="">
          <nimi></nimi>
        </lennujaam>
      </linn>
    </riik>
  </manner>
  <manner rahvaarv="36 593 000">
    <nimi>Okeaania</nimi>
    <riik>
      <nimi></nimi>
      <linn ajatsoon="">
        <nimi></nimi>
        <lennujaam long="" lat="">
          <nimi></nimi>
        </lennujaam>
      </linn>
    </riik>
  </manner>
  <manner rahvaarv="1000-5000">
    <nimi>Antarktika</nimi>
    <riik>
      <nimi></nimi>
      <linn ajatsoon="">
        <nimi></nimi>
        <lennujaam long="" lat="">
          <nimi></nimi>
        </lennujaam>
      </linn>
    </riik>
  </manner>
</Maa>

Source code for xml generator

<?php

$CONT_POPULATION=array(
	"EU"=>738199000,
	"AS"=>4164252000,
	"NA"=>528720588,
	"AF"=>1022234000,
	"AN"=>5000,
	"SA"=>385742554,
	"OC"=>36593000
);


$CONT_NAME=array(
	"EU"=>"Euroopa",
	"AS"=>"Aasia",
	"NA"=>"Põhja-Ameerika",
	"AF"=>"Aafrika",
	"AN"=>"Antarktika",
	"SA"=>"Lõuna Ameerika",
	"OC"=>"Okeaania"
	);

$CONT = array();

$CC = explode("\n",str_replace("\r","",file_get_contents("countryInfo.txt")));
$CC_keys = array_shift($CC);
$CC_keys = explode("\t",$CC_keys);

$CCA = ARRAY();
foreach($CC as $cline){
	if(trim($cline)=="")continue;
	$c = explode("\t",$cline);
	$a = array();
	foreach($CC_keys as $num=>$key){
		$a[$key] = $c[$num];
	}
	//print_r($a);
	$CCA[$a['ISO']]=$a;
	$CONT[$a['Continent']]=true;
	//exit();
	
}


$WORLD = array();
//$AIRP=array();

$CIT=array();

$f = fopen("airports.csv",'r');
$num = "";
while($a = fgetcsv ($f)){
	if($a[2]!="large_airport")continue;
	if($a[4]=="0")continue;
	$continent = $a[7];
	$country = $a[8];
	$munip = $a[10];
	$airp_code = $a[13];
	if(!isset($CIT[$country."/".$munip]))$CIT[$country."/".$munip]=0;
	$CIT[$country."/".$munip]++;
	//$WORLD[$continent]['children'][$country]['children'][$munip]['children'][$airp_code]=$a;
	//if($a[2]=="large_airport")$num++;
	
}


$f = fopen("airports.csv",'r');
$num = "";
while($a = fgetcsv ($f)){
	if($a[2]!="large_airport")continue;
	if($a[4]=="0")continue;
	$continent = $a[7];
	$country = $a[8];
	$munip = $a[10];
	$airp_code = $a[13];
	
	if($CIT[$country."/".$munip]<2)continue;
	
	if(!isset($WORLD[$continent])){
		$WORLD[$continent] = array('children'=>array());
	}
	if(!isset($WORLD[$continent]['children'][$country])){
		$WORLD[$continent]['children'][$country] = array('children'=>array());
	}
	if(!isset($WORLD[$continent]['children'][$country]['children'][$munip])){
		$WORLD[$continent]['children'][$country]['children'][$munip] = array('children'=>array());
	}
	
	$a['id']=$airp_code;
	$a['lat']=$a[4];
	$a['long']=$a[5];
	$a['nimi']=$a[3];
	
	$WORLD[$continent]['children'][$country]['children'][$munip]['children'][$airp_code]=$a;
	
	$WORLD[$continent]['id'] = $continent;
	$WORLD[$continent]['nimi'] = $CONT_NAME[$continent];
	$WORLD[$continent]['rahvaarv'] = $CONT_POPULATION[$continent];
	$WORLD[$continent]['children'][$country]['id'] = $country;
	$WORLD[$continent]['children'][$country]['nimi'] = $CCA[$country]['Country'];
	$WORLD[$continent]['children'][$country]['raha'] = $CCA[$country]['CurrencyCode'];
	$WORLD[$continent]['children'][$country]['rahanimi'] = $CCA[$country]['CurrencyName'];	
	$WORLD[$continent]['children'][$country]['children'][$munip]['id']=$munip;
	$WORLD[$continent]['children'][$country]['children'][$munip]['nimi']=$munip;
	if($a[2]=="large_airport")$num++;
}
//echo $num;

echo '<?xml version="1.0" encoding="utf-8" ?>'."\n";
echo "<!-- Sources:\n http://www.ourairports.com/data/ (public domain) \n http://www.geonames.org/ (Creative Commons Attribution 3.0) \n-->\n";
echo "<Maa>\n";
foreach($WORLD as $continent){
	$id = $continent['id'];
	$nimi = $continent['nimi'];
	$rahvaarv = $continent['rahvaarv'];
	echo str_pad("",2);
	echo "<kontinent rahvaarv=\"$rahvaarv\" id=\"$id\">\n";
	echo str_pad("",4);
	echo "<nimi>$nimi</nimi>\n";
	foreach($continent['children'] as $country){
		$id = $country['id'];
		$nimi = $country['nimi'];
		$raha = $country['raha'];
		$rahanimi=$country['rahanimi'];
		echo str_pad("",4);
		echo "<riik id=\"$id\" raha=\"$raha\" rahanimi=\"$rahanimi\">\n";
		echo str_pad("",6);
		echo "<nimi>$nimi</nimi>\n";
		foreach($country['children'] as $city){
			$id = $city['id'];
			$nimi = $city['nimi'];
			echo str_pad("",6);
			echo "<linn id=\"$id\">\n";
			echo str_pad("",8);
			echo "<nimi>$nimi</nimi>\n";
			foreach($city['children'] as $airport){
					$id = $airport['id'];
					$nimi = $airport['nimi'];
					$lat = $airport['lat'];
					$long=$airport['long'];
					echo str_pad("",8);
					echo "<lennujaam id=\"$id\" lat=\"$lat\" long=\"$long\" >\n";
					echo str_pad("",10);
					echo "<nimi>$nimi</nimi>\n";

					echo str_pad("",8);
					echo "</lennujaam>\n";
			}
			echo str_pad("",6);
			echo "</linn>\n";
		}
		echo str_pad("",4);
		echo "</riik>\n";
	}
	echo str_pad("",2);
	echo "</kontinent>\n";
}
echo "</Maa>\n";

countryInfo.txt (tab delim file)

Source http://download.geonames.org/export/dump/countryInfo.txt (Creative Commons Attribution 3.0)

Enne töötlemist eemaldada kommenteeritud read (algavad #) välja arvatud viimane kommenteeritud rida (kus on veerunimed). Sealt reast lihtsalt eemaldada # sümbol

airporst.csv

http://www.ourairports.com/data/airports.csv (public domain)


Veebiteenus

Lõime veebiteenuse enda eelneva teema lennujaamad põhjal. Teenus võimaldab kasutajal sisse logida ja teha lennujaamade otsinguid kontinentide, riikide ja linnade piires. Lisaks võimaldab teenus otsida lennujaamu laius- ja pikkuskraadide järgi.

Sisselogimisel eristab süsteem automaatselt tavakasutajat administraatorist. Kui kasutaja on administraator siis kuvatakse talle admininstraatori paneel, kui kasutaja on tavakasutaja kuvatakse talle tavapaneel.

Administraatori paneeli kuvatakse peale tavaandmete ka kasutajate informatsioon. Administraator võib kasutajaid kustutada ja lennujaamu kustutada ja lisada.


Teenuse meetodid:

  • logiSisse(string kasutajanimi, string password)
  • kuvaLennujaamadLinnas(string linn)
  • kuvaLennujaamadRiigis(string riik)
  • kuvaLennujaamadKontinendil(string kontinent)
  • kuvaLennujaamadLaiuskraadideVahemikus(float latStart, float latEnd, float longStart, float longEnd)
  • kuvaLinnadRiigis(string riik)
  • kuvaKontinendid()
  • kuvaRiigidKontinendil(string kontinent)
  • kuvaKasutajad()
  • lisaLennujaam(int id, string nimi, float latitude, float longitude, string lennujaamkood)
  • kustutaLennujaam(int id)
  • kustutaKasutaja(int id)

Projekt failid asuvad siin: http://enos.itcollege.ee/~aperi/WcfService2_a.rar ˇ


Veebirakendused

Lõime 2 rakendust lennujaamade veebiteenuse kasutamiseks. Üks on loodud C# ja windows Forms'i näol, teine aga PHP ja HTML'ina.

C# windows forms rakendus: http://enos.itcollege.ee/~aperi/Veebiteenus_Rakendus2viimane.zip

PHP rakendus: http://enos.itcollege.ee/~hmaeorg/V%f5rgurakendused2/airports.zip