Meeskond "HM": Difference between revisions

From ICO wiki
Jump to navigationJump to search
No edit summary
 
(33 intermediate revisions by 4 users not shown)
Line 6: Line 6:
* Henry Mäeorg - XML, XSD, XSL
* Henry Mäeorg - XML, XSD, XSL
* Martin Laak - XML, XSL, Wiki
* Martin Laak - XML, XSL, Wiki
* Andre-Marcel Peri - XML, XSL
* 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




Line 16: Line 29:
     <xs:complexType>
     <xs:complexType>
       <xs:sequence>
       <xs:sequence>
         <xs:element maxOccurs="7" name="maailmajagu">
         <xs:element maxOccurs="7" name="kontinent">
           <xs:complexType>
           <xs:complexType>
             <xs:sequence>
             <xs:sequence>
Line 33: Line 46:
                                 <xs:element name="nimi" type="xs:string" />
                                 <xs:element name="nimi" type="xs:string" />
                               </xs:sequence>
                               </xs:sequence>
                              <xs:attribute name="id" type="xs:string" use="required" />
                               <xs:attribute name="long" type="xs:string" use="required" />
                               <xs:attribute name="long" type="xs:string" use="required" />
                               <xs:attribute name="lat" type="xs:string" use="required" />
                               <xs:attribute name="lat" type="xs:string" use="required" />
Line 38: Line 52:
                           </xs:element>
                           </xs:element>
                         </xs:sequence>
                         </xs:sequence>
                         <xs:attribute name="ajatsoon" type="xs:string" use="required" />
                         <xs:attribute name="id" type="xs:string" use="required" />
                       </xs:complexType>
                       </xs:complexType>
                     </xs:element>
                     </xs:element>
                   </xs:sequence>
                   </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:complexType>
               </xs:element>
               </xs:element>
             </xs:sequence>
             </xs:sequence>
             <xs:attribute name="rahvaarv" type="xs:string" use="required" />
             <xs:attribute name="rahvaarv" type="xs:string" use="required" />
            <xs:attribute name="id" type="xs:string" use="required" />
           </xs:complexType>
           </xs:complexType>
         </xs:element>
         </xs:element>
Line 55: Line 73:


=== XSL stiilifail 1===
=== XSL stiilifail 1===
Lennujaamade andmebaasi esitus HTML kujul.
<pre>
<pre>
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0"
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" version="1.0" encoding="UTF-8" indent="yes"/>
   <xsl:template match="/">
   <xsl:template match="/">
     <html>
     <html>
      <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
      </head>
       <body>
       <body>
         <xsl:for-each select="Maa/maailmajagu">
         <xsl:for-each select="Maa/kontinent">
         <h1><xsl:value-of select="nimi"/></h1>
         <h1><xsl:value-of select="nimi"/></h1>
           <xsl:for-each select="riik">
           <xsl:for-each select="riik">
Line 86: Line 109:


=== XSL stiilifail 2===
=== XSL stiilifail 2===
Lennujaamade esitus tabelina html-is. Google static maps abil kuvatakse ka lennujaamade asukohad kaardil.
<pre>
<pre>
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0"
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" version="1.0" encoding="UTF-8" indent="yes"/>
   <xsl:template match="/">
   <xsl:template match="/">
     <html>
     <html>
      <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
      </head>
       <body>
       <body>
         <table border="1">
         <table border="1">
           <tr bgcolor="#20B2AA">
           <tr bgcolor="#20B2AA">
             <th>Maailmajagu</th>
             <th>Kontinent</th>
             <th>Rahvaarv</th>
             <th>Rahvaarv</th>
             <th>Riigid</th>
             <th>Riigid</th>
Line 101: Line 129:
             <th>Lennujaamad</th>
             <th>Lennujaamad</th>
           </tr>
           </tr>
           <xsl:for-each select="Maa/maailmajagu">
           <xsl:for-each select="Maa/kontinent">
             <tr bgcolor="#E0FFFF">
             <tr bgcolor="#E0FFFF">
               <td>
               <td>
Line 135: Line 163:
</pre>
</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 ===
=== XML andmefail ===
<pre>
<source lang="xml">
<?xml version="1.0" encoding="utf-8" ?>
<?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>
<Maa>
   <manner id="EU">
   <kontinent rahvaarv="738199000" id="EU">
     <nimi>Euroopa</nimi>
     <nimi>Euroopa</nimi>
     <riik id="DE" raha="EUR" rahanimi="Euro">
     <riik id="DE" raha="EUR" rahanimi="Euro">
Line 244: Line 329:
       </linn>
       </linn>
     </riik>
     </riik>
   </manner>
   </kontinent>
   <manner id="NA">
   <kontinent rahvaarv="528720588" id="NA">
     <nimi>Põhja-Ameerika</nimi>
     <nimi>Põhja-Ameerika</nimi>
     <riik id="US" raha="USD" rahanimi="Dollar">
     <riik id="US" raha="USD" rahanimi="Dollar">
Line 415: Line 500:
       </linn>
       </linn>
     </riik>
     </riik>
   </manner>
   </kontinent>
   <manner id="AS">
   <kontinent rahvaarv="4164252000" id="AS">
     <nimi>Aasia</nimi>
     <nimi>Aasia</nimi>
     <riik id="TR" raha="TRY" rahanimi="Lira">
     <riik id="TR" raha="TRY" rahanimi="Lira">
Line 526: Line 611:
       </linn>
       </linn>
     </riik>
     </riik>
   </manner>
   </kontinent>
   <manner id="SA">
   <kontinent rahvaarv="385742554" id="SA">
     <nimi>Lõuna Ameerika</nimi>
     <nimi>Lõuna Ameerika</nimi>
     <riik id="BR" raha="BRL" rahanimi="Real">
     <riik id="BR" raha="BRL" rahanimi="Real">
Line 541: Line 626:
       </linn>
       </linn>
     </riik>
     </riik>
   </manner>
   </kontinent>
</Maa>
</Maa>
</pre>
</source>
 


=== Sisemiseks kasutamiseks ===
=== Sisemiseks kasutamiseks ===
Line 643: Line 727:
==== Source code for xml generator ====
==== Source code for xml generator ====
<pre>
<pre>
<?php
<?php


$CONT_POPULATION=array(){
$CONT_POPULATION=array(
"EU"=>738199000,
"EU"=>738199000,
"AS"=>4164252000,
"AS"=>4164252000,
Line 654: Line 737:
"SA"=>385742554,
"SA"=>385742554,
"OC"=>36593000
"OC"=>36593000
}
);




Line 742: Line 825:
$WORLD[$continent]['id'] = $continent;
$WORLD[$continent]['id'] = $continent;
$WORLD[$continent]['nimi'] = $CONT_NAME[$continent];
$WORLD[$continent]['nimi'] = $CONT_NAME[$continent];
$WORLD[$continent]['rahvaarv'] = $CONT_POPULATION[$continent];
$WORLD[$continent]['children'][$country]['id'] = $country;
$WORLD[$continent]['children'][$country]['id'] = $country;
$WORLD[$continent]['children'][$country]['nimi'] = $CCA[$country]['Country'];
$WORLD[$continent]['children'][$country]['nimi'] = $CCA[$country]['Country'];
Line 758: Line 842:
$id = $continent['id'];
$id = $continent['id'];
$nimi = $continent['nimi'];
$nimi = $continent['nimi'];
$rahvaarv = $continent['rahvaarv'];
echo str_pad("",2);
echo str_pad("",2);
echo "<manner id=\"$id\">\n";
echo "<kontinent rahvaarv=\"$rahvaarv\" id=\"$id\">\n";
echo str_pad("",4);
echo str_pad("",4);
echo "<nimi>$nimi</nimi>\n";
echo "<nimi>$nimi</nimi>\n";
Line 798: Line 883:
}
}
echo str_pad("",2);
echo str_pad("",2);
echo "</manner>\n";
echo "</kontinent>\n";
}
}
echo "</Maa>\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
ˇ


</pre>


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


==== countryInfo.txt (tab delim file) ====
PHP rakendus:
Source http://www.geonames.org/ (Creative Commons Attribution 3.0)
http://enos.itcollege.ee/~hmaeorg/V%f5rgurakendused2/airports.zip
<pre>
ISO ISO3 ISO-Numeric fips Country Capital Area(in sq km) Population Continent tld CurrencyCode CurrencyName Phone Postal Code Format Postal Code Regex Languages geonameid neighbours EquivalentFipsCode
AD AND 020 AN Andorra Andorra la Vella 468 84000 EU .ad EUR Euro 376 AD### ^(?:AD)*(\d{3})$ ca 3041565 ES,FR
AE ARE 784 AE United Arab Emirates Abu Dhabi 82880 4975593 AS .ae AED Dirham 971 ar-AE,fa,en,hi,ur 290557 SA,OM
AF AFG 004 AF Afghanistan Kabul 647500 29121286 AS .af AFN Afghani 93 fa-AF,ps,uz-AF,tk 1149361 TM,CN,IR,TJ,PK,UZ
AG ATG 028 AC Antigua and Barbuda St. John's 443 86754 NA .ag XCD Dollar +1-268 en-AG 3576396
AI AIA 660 AV Anguilla The Valley 102 13254 NA .ai XCD Dollar +1-264 en-AI 3573511
AL ALB 008 AL Albania Tirana 28748 2986952 EU .al ALL Lek 355 sq,el 783754 MK,GR,CS,ME,RS,XK
AM ARM 051 AM Armenia Yerevan 29800 2968000 AS .am AMD Dram 374 ###### ^(\d{6})$ hy 174982 GE,IR,AZ,TR
AO AGO 024 AO Angola Luanda 1246700 13068161 AF .ao AOA Kwanza 244 pt-AO 3351879 CD,NA,ZM,CG
AQ ATA 010 AY Antarctica 1.40E+007 0 AN .aq 6697173
AR ARG 032 AR Argentina Buenos Aires 2766890 41343201 SA .ar ARS Peso 54 @####@@@ ^([A-Z]\d{4}[A-Z]{3})$ es-AR,en,it,de,fr,gn 3865483 CL,BO,UY,PY,BR
AS ASM 016 AQ American Samoa Pago Pago 199 57881 OC .as USD Dollar +1-684 en-AS,sm,to 5880801
AT AUT 040 AU Austria Vienna 83858 8205000 EU .at EUR Euro 43 #### ^(\d{4})$ de-AT,hr,hu,sl 2782113 CH,DE,HU,SK,CZ,IT,SI,LI
AU AUS 036 AS Australia Canberra 7686850 21515754 OC .au AUD Dollar 61 #### ^(\d{4})$ en-AU 2077456
AW ABW 533 AA Aruba Oranjestad 193 71566 NA .aw AWG Guilder 297 nl-AW,es,en 3577279
AX ALA 248 Aland Islands Mariehamn 26711 EU .ax EUR Euro +358-18 sv-AX 661882 FI
AZ AZE 031 AJ Azerbaijan Baku 86600 8303512 AS .az AZN Manat 994 AZ #### ^(?:AZ)*(\d{4})$ az,ru,hy 587116 GE,IR,AM,TR,RU
BA BIH 070 BK Bosnia and Herzegovina Sarajevo 51129 4590000 EU .ba BAM Marka 387 ##### ^(\d{5})$ bs,hr-BA,sr-BA 3277605 CS,HR,ME,RS
BB BRB 052 BB Barbados Bridgetown 431 285653 NA .bb BBD Dollar +1-246 BB##### ^(?:BB)*(\d{5})$ en-BB 3374084
BD BGD 050 BG Bangladesh Dhaka 144000 156118464 AS .bd BDT Taka 880 #### ^(\d{4})$ bn-BD,en 1210997 MM,IN
BE BEL 056 BE Belgium Brussels 30510 10403000 EU .be EUR Euro 32 #### ^(\d{4})$ nl-BE,fr-BE,de-BE 2802361 DE,NL,LU,FR
BF BFA 854 UV Burkina Faso Ouagadougou 274200 16241811 AF .bf XOF Franc 226 fr-BF 2361809 NE,BJ,GH,CI,TG,ML
BG BGR 100 BU Bulgaria Sofia 110910 7148785 EU .bg BGN Lev 359 #### ^(\d{4})$ bg,tr-BG 732800 MK,GR,RO,CS,TR,RS
BH BHR 048 BA Bahrain Manama 665 738004 AS .bh BHD Dinar 973 ####|### ^(\d{3}\d?)$ ar-BH,en,fa,ur 290291
BI BDI 108 BY Burundi Bujumbura 27830 9863117 AF .bi BIF Franc 257 fr-BI,rn 433561 TZ,CD,RW
BJ BEN 204 BN Benin Porto-Novo 112620 9056010 AF .bj XOF Franc 229 fr-BJ 2395170 NE,TG,BF,NG
BL BLM 652 TB Saint Barthélemy Gustavia 21 8450 NA .gp EUR Euro 590 ### ### fr 3578476
BM BMU 060 BD Bermuda Hamilton 53 65365 NA .bm BMD Dollar +1-441 @@ ## ^([A-Z]{2}\d{2})$ en-BM,pt 3573345
BN BRN 096 BX Brunei Bandar Seri Begawan 5770 395027 AS .bn BND Dollar 673 @@#### ^([A-Z]{2}\d{4})$ ms-BN,en-BN 1820814 MY
BO BOL 068 BL Bolivia La Paz 1098580 9947418 SA .bo BOB Boliviano 591 es-BO,qu,ay 3923057 PE,CL,PY,BR,AR
BQ BES 535 Bonaire, Saint Eustatius and Saba 18012 NA .bq USD Dollar 599 nl,pap,en 7626844
BR BRA 076 BR Brazil Brasília 8511965 201103330 SA .br BRL Real 55 #####-### ^(\d{8})$ pt-BR,es,en,fr 3469034 SR,PE,BO,UY,GY,PY,GF,VE,CO,AR
BS BHS 044 BF Bahamas Nassau 13940 301790 NA .bs BSD Dollar +1-242 en-BS 3572887
BT BTN 064 BT Bhutan Thimphu 47000 699847 AS .bt BTN Ngultrum 975 dz 1252634 CN,IN
BV BVT 074 BV Bouvet Island 0 AN .bv NOK Krone 3371123
BW BWA 072 BC Botswana Gaborone 600370 2029307 AF .bw BWP Pula 267 en-BW,tn-BW 933860 ZW,ZA,NA
BY BLR 112 BO Belarus Minsk 207600 9685000 EU .by BYR Ruble 375 ###### ^(\d{6})$ be,ru 630336 PL,LT,UA,RU,LV
BZ BLZ 084 BH Belize Belmopan 22966 314522 NA .bz BZD Dollar 501 en-BZ,es 3582678 GT,MX
CA CAN 124 CA Canada Ottawa 9984670 33679000 NA .ca CAD Dollar 1 @#@ #@# ^([a-zA-Z]\d[a-zA-Z]\d[a-zA-Z]\d)$ en-CA,fr-CA,iu 6251999 US
CC CCK 166 CK Cocos Islands West Island 14 628 AS .cc AUD Dollar 61 ms-CC,en 1547376
CD COD 180 CG Democratic Republic of the Congo Kinshasa 2345410 70916439 AF .cd CDF Franc 243 fr-CD,ln,kg 203312 TZ,CF,SS,RW,ZM,BI,UG,CG,AO
CF CAF 140 CT Central African Republic Bangui 622984 4844927 AF .cf XAF Franc 236 fr-CF,sg,ln,kg 239880 TD,SD,CD,SS,CM,CG
CG COG 178 CF Republic of the Congo Brazzaville 342000 3039126 AF .cg XAF Franc 242 fr-CG,kg,ln-CG 2260494 CF,GA,CD,CM,AO
CH CHE 756 SZ Switzerland Berne 41290 7581000 EU .ch CHF Franc 41 #### ^(\d{4})$ de-CH,fr-CH,it-CH,rm 2658434 DE,IT,LI,FR,AT
CI CIV 384 IV Ivory Coast Yamoussoukro 322460 21058798 AF .ci XOF Franc 225 fr-CI 2287781 LR,GH,GN,BF,ML
CK COK 184 CW Cook Islands Avarua 240 21388 OC .ck NZD Dollar 682 en-CK,mi 1899402
CL CHL 152 CI Chile Santiago 756950 16746491 SA .cl CLP Peso 56 ####### ^(\d{7})$ es-CL 3895114 PE,BO,AR
CM CMR 120 CM Cameroon Yaoundé 475440 19294149 AF .cm XAF Franc 237 en-CM,fr-CM 2233387 TD,CF,GA,GQ,CG,NG
CN CHN 156 CH China Beijing 9596960 1330044000 AS .cn CNY Yuan Renminbi 86 ###### ^(\d{6})$ zh-CN,yue,wuu,dta,ug,za 1814991 LA,BT,TJ,KZ,MN,AF,NP,MM,KG,PK,KP,RU,VN,IN
CO COL 170 CO Colombia Bogotá 1138910 44205293 SA .co COP Peso 57 es-CO 3686110 EC,PE,PA,BR,VE
CR CRI 188 CS Costa Rica San José 51100 4516220 NA .cr CRC Colon 506 #### ^(\d{4})$ es-CR,en 3624060 PA,NI
CU CUB 192 CU Cuba Havana 110860 11423000 NA .cu CUP Peso 53 CP ##### ^(?:CP)*(\d{5})$ es-CU 3562981 US
CV CPV 132 CV Cape Verde Praia 4033 508659 AF .cv CVE Escudo 238 #### ^(\d{4})$ pt-CV 3374766
CW CUW 531 UC Curaçao Willemstad 141766 NA .cw ANG Guilder 599 nl,pap 7626836
CX CXR 162 KT Christmas Island Flying Fish Cove 135 1500 AS .cx AUD Dollar 61 #### ^(\d{4})$ en,zh,ms-CC 2078138
CY CYP 196 CY Cyprus Nicosia 9250 1102677 EU .cy EUR Euro 357 #### ^(\d{4})$ el-CY,tr-CY,en 146669
CZ CZE 203 EZ Czech Republic Prague 78866 10476000 EU .cz CZK Koruna 420 ### ## ^(\d{5})$ cs,sk 3077311 PL,DE,SK,AT
DE DEU 276 GM Germany Berlin 357021 81802257 EU .de EUR Euro 49 ##### ^(\d{5})$ de 2921044 CH,PL,NL,DK,BE,CZ,LU,FR,AT
DJ DJI 262 DJ Djibouti Djibouti 23000 740528 AF .dj DJF Franc 253 fr-DJ,ar,so-DJ,aa 223816 ER,ET,SO
DK DNK 208 DA Denmark Copenhagen 43094 5484000 EU .dk DKK Krone 45 #### ^(\d{4})$ da-DK,en,fo,de-DK 2623032 DE
DM DMA 212 DO Dominica Roseau 754 72813 NA .dm XCD Dollar +1-767 en-DM 3575830
DO DOM 214 DR Dominican Republic Santo Domingo 48730 9823821 NA .do DOP Peso +1-809 and 1-829 ##### ^(\d{5})$ es-DO 3508796 HT
DZ DZA 012 AG Algeria Algiers 2381740 34586184 AF .dz DZD Dinar 213 ##### ^(\d{5})$ ar-DZ 2589581 NE,EH,LY,MR,TN,MA,ML
EC ECU 218 EC Ecuador Quito 283560 14790608 SA .ec USD Dollar 593 @####@ ^([a-zA-Z]\d{4}[a-zA-Z])$ es-EC 3658394 PE,CO
EE EST 233 EN Estonia Tallinn 45226 1291170 EU .ee EUR Euro 372 ##### ^(\d{5})$ et,ru 453733 RU,LV
EG EGY 818 EG Egypt Cairo 1001450 80471869 AF .eg EGP Pound 20 ##### ^(\d{5})$ ar-EG,en,fr 357994 LY,SD,IL
EH ESH 732 WI Western Sahara El-Aaiun 266000 273008 AF .eh MAD Dirham 212 ar,mey 2461445 DZ,MR,MA
ER ERI 232 ER Eritrea Asmara 121320 5792984 AF .er ERN Nakfa 291 aa-ER,ar,tig,kun,ti-ER 338010 ET,SD,DJ
ES ESP 724 SP Spain Madrid 504782 46505963 EU .es EUR Euro 34 ##### ^(\d{5})$ es-ES,ca,gl,eu,oc 2510769 AD,PT,GI,FR,MA
ET ETH 231 ET Ethiopia Addis Ababa 1127127 88013491 AF .et ETB Birr 251 #### ^(\d{4})$ am,en-ET,om-ET,ti-ET,so-ET,sid 337996 ER,KE,SD,SS,SO,DJ
FI FIN 246 FI Finland Helsinki 337030 5244000 EU .fi EUR Euro 358 ##### ^(?:FI)*(\d{5})$ fi-FI,sv-FI,smn 660013 NO,RU,SE
FJ FJI 242 FJ Fiji Suva 18270 875983 OC .fj FJD Dollar 679 en-FJ,fj 2205218
FK FLK 238 FK Falkland Islands Stanley 12173 2638 SA .fk FKP Pound 500 en-FK 3474414
FM FSM 583 FM Micronesia Palikir 702 107708 OC .fm USD Dollar 691 ##### ^(\d{5})$ en-FM,chk,pon,yap,kos,uli,woe,nkr,kpg 2081918
FO FRO 234 FO Faroe Islands Tórshavn 1399 48228 EU .fo DKK Krone 298 FO-### ^(?:FO)*(\d{3})$ fo,da-FO 2622320
FR FRA 250 FR France Paris 547030 64768389 EU .fr EUR Euro 33 ##### ^(\d{5})$ fr-FR,frp,br,co,ca,eu,oc 3017382 CH,DE,BE,LU,IT,AD,MC,ES
GA GAB 266 GB Gabon Libreville 267667 1545255 AF .ga XAF Franc 241 fr-GA 2400553 CM,GQ,CG
GB GBR 826 UK United Kingdom London 244820 62348447 EU .uk GBP Pound 44 @# #@@|@## #@@|@@# #@@|@@## #@@|@#@ #@@|@@#@ #@@|GIR0AA ^(([A-Z]\d{2}[A-Z]{2})|([A-Z]\d{3}[A-Z]{2})|([A-Z]{2}\d{2}[A-Z]{2})|([A-Z]{2}\d{3}[A-Z]{2})|([A-Z]\d[A-Z]\d[A-Z]{2})|([A-Z]{2}\d[A-Z]\d[A-Z]{2})|(GIR0AA))$ en-GB,cy-GB,gd 2635167 IE
GD GRD 308 GJ Grenada St. George's 344 107818 NA .gd XCD Dollar +1-473 en-GD 3580239
GE GEO 268 GG Georgia Tbilisi 69700 4630000 AS .ge GEL Lari 995 #### ^(\d{4})$ ka,ru,hy,az 614540 AM,AZ,TR,RU
GF GUF 254 FG French Guiana Cayenne 91000 195506 SA .gf EUR Euro 594 ##### ^((97)|(98)3\d{2})$ fr-GF 3381670 SR,BR
GG GGY 831 GK Guernsey St Peter Port 78 65228 EU .gg GBP Pound +44-1481 @# #@@|@## #@@|@@# #@@|@@## #@@|@#@ #@@|@@#@ #@@|GIR0AA ^(([A-Z]\d{2}[A-Z]{2})|([A-Z]\d{3}[A-Z]{2})|([A-Z]{2}\d{2}[A-Z]{2})|([A-Z]{2}\d{3}[A-Z]{2})|([A-Z]\d[A-Z]\d[A-Z]{2})|([A-Z]{2}\d[A-Z]\d[A-Z]{2})|(GIR0AA))$ en,fr 3042362
GH GHA 288 GH Ghana Accra 239460 24339838 AF .gh GHS Cedi 233 en-GH,ak,ee,tw 2300660 CI,TG,BF
GI GIB 292 GI Gibraltar Gibraltar 6.5 27884 EU .gi GIP Pound 350 en-GI,es,it,pt 2411586 ES
GL GRL 304 GL Greenland Nuuk 2166086 56375 NA .gl DKK Krone 299 #### ^(\d{4})$ kl,da-GL,en 3425505
GM GMB 270 GA Gambia Banjul 11300 1593256 AF .gm GMD Dalasi 220 en-GM,mnk,wof,wo,ff 2413451 SN
GN GIN 324 GV Guinea Conakry 245857 10324025 AF .gn GNF Franc 224 fr-GN 2420477 LR,SN,SL,CI,GW,ML
GP GLP 312 GP Guadeloupe Basse-Terre 1780 443000 NA .gp EUR Euro 590 ##### ^((97)|(98)\d{3})$ fr-GP 3579143 AN
GQ GNQ 226 EK Equatorial Guinea Malabo 28051 1014999 AF .gq XAF Franc 240 es-GQ,fr 2309096 GA,CM
GR GRC 300 GR Greece Athens 131940 11000000 EU .gr EUR Euro 30 ### ## ^(\d{5})$ el-GR,en,fr 390903 AL,MK,TR,BG
GS SGS 239 SX South Georgia and the South Sandwich Islands Grytviken 3903 30 AN .gs GBP Pound en 3474415
GT GTM 320 GT Guatemala Guatemala City 108890 13550440 NA .gt GTQ Quetzal 502 ##### ^(\d{5})$ es-GT 3595528 MX,HN,BZ,SV
GU GUM 316 GQ Guam Hagåtña 549 168564 OC .gu USD Dollar +1-671 969## ^(969\d{2})$ en-GU,ch-GU 4043988
GW GNB 624 PU Guinea-Bissau Bissau 36120 1565126 AF .gw XOF Franc 245 #### ^(\d{4})$ pt-GW,pov 2372248 SN,GN
GY GUY 328 GY Guyana Georgetown 214970 748486 SA .gy GYD Dollar 592 en-GY 3378535 SR,BR,VE
HK HKG 344 HK Hong Kong Hong Kong 1092 6898686 AS .hk HKD Dollar 852 zh-HK,yue,zh,en 1819730
HM HMD 334 HM Heard Island and McDonald Islands 412 0 AN .hm AUD Dollar 1547314
HN HND 340 HO Honduras Tegucigalpa 112090 7989415 NA .hn HNL Lempira 504 @@#### ^([A-Z]{2}\d{4})$ es-HN 3608932 GT,NI,SV
HR HRV 191 HR Croatia Zagreb 56542 4491000 EU .hr HRK Kuna 385 HR-##### ^(?:HR)*(\d{5})$ hr-HR,sr 3202326 HU,SI,CS,BA,ME,RS
HT HTI 332 HA Haiti Port-au-Prince 27750 9648924 NA .ht HTG Gourde 509 HT#### ^(?:HT)*(\d{4})$ ht,fr-HT 3723988 DO
HU HUN 348 HU Hungary Budapest 93030 9930000 EU .hu HUF Forint 36 #### ^(\d{4})$ hu-HU 719819 SK,SI,RO,UA,CS,HR,AT,RS
ID IDN 360 ID Indonesia Jakarta 1919440 242968342 AS .id IDR Rupiah 62 ##### ^(\d{5})$ id,en,nl,jv 1643084 PG,TL,MY
IE IRL 372 EI Ireland Dublin 70280 4622917 EU .ie EUR Euro 353 en-IE,ga-IE 2963597 GB
IL ISR 376 IS Israel Jerusalem 20770 7353985 AS .il ILS Shekel 972 ##### ^(\d{5})$ he,ar-IL,en-IL, 294640 SY,JO,LB,EG,PS
IM IMN 833 IM Isle of Man Douglas, Isle of Man 572 75049 EU .im GBP Pound +44-1624 @# #@@|@## #@@|@@# #@@|@@## #@@|@#@ #@@|@@#@ #@@|GIR0AA ^(([A-Z]\d{2}[A-Z]{2})|([A-Z]\d{3}[A-Z]{2})|([A-Z]{2}\d{2}[A-Z]{2})|([A-Z]{2}\d{3}[A-Z]{2})|([A-Z]\d[A-Z]\d[A-Z]{2})|([A-Z]{2}\d[A-Z]\d[A-Z]{2})|(GIR0AA))$ en,gv 3042225
IN IND 356 IN India New Delhi 3287590 1173108018 AS .in INR Rupee 91 ###### ^(\d{6})$ en-IN,hi,bn,te,mr,ta,ur,gu,kn,ml,or,pa,as,bh,sat,ks,ne,sd,kok,doi,mni,sit,sa,fr,lus,inc 1269750 CN,NP,MM,BT,PK,BD
IO IOT 086 IO British Indian Ocean Territory Diego Garcia 60 4000 AS .io USD Dollar 246 en-IO 1282588
IQ IRQ 368 IZ Iraq Baghdad 437072 29671605 AS .iq IQD Dinar 964 ##### ^(\d{5})$ ar-IQ,ku,hy 99237 SY,SA,IR,JO,TR,KW
IR IRN 364 IR Iran Tehran 1648000 76923300 AS .ir IRR Rial 98 ########## ^(\d{10})$ fa-IR,ku 130758 TM,AF,IQ,AM,PK,AZ,TR
IS ISL 352 IC Iceland Reykjavík 103000 308910 EU .is ISK Krona 354 ### ^(\d{3})$ is,en,de,da,sv,no 2629691
IT ITA 380 IT Italy Rome 301230 60340328 EU .it EUR Euro 39 ##### ^(\d{5})$ it-IT,de-IT,fr-IT,sc,ca,co,sl 3175395 CH,VA,SI,SM,FR,AT
JE JEY 832 JE Jersey Saint Helier 116 90812 EU .je GBP Pound +44-1534 @# #@@|@## #@@|@@# #@@|@@## #@@|@#@ #@@|@@#@ #@@|GIR0AA ^(([A-Z]\d{2}[A-Z]{2})|([A-Z]\d{3}[A-Z]{2})|([A-Z]{2}\d{2}[A-Z]{2})|([A-Z]{2}\d{3}[A-Z]{2})|([A-Z]\d[A-Z]\d[A-Z]{2})|([A-Z]{2}\d[A-Z]\d[A-Z]{2})|(GIR0AA))$ en,pt 3042142
JM JAM 388 JM Jamaica Kingston 10991 2847232 NA .jm JMD Dollar +1-876 en-JM 3489940
JO JOR 400 JO Jordan Amman 92300 6407085 AS .jo JOD Dinar 962 ##### ^(\d{5})$ ar-JO,en 248816 SY,SA,IQ,IL,PS
JP JPN 392 JA Japan Tokyo 377835 127288000 AS .jp JPY Yen 81 ###-#### ^(\d{7})$ ja 1861060
KE KEN 404 KE Kenya Nairobi 582650 40046566 AF .ke KES Shilling 254 ##### ^(\d{5})$ en-KE,sw-KE 192950 ET,TZ,SS,SO,UG
KG KGZ 417 KG Kyrgyzstan Bishkek 198500 5508626 AS .kg KGS Som 996 ###### ^(\d{6})$ ky,uz,ru 1527747 CN,TJ,UZ,KZ
KH KHM 116 CB Cambodia Phnom Penh 181040 14453680 AS .kh KHR Riels 855 ##### ^(\d{5})$ km,fr,en 1831722 LA,TH,VN
KI KIR 296 KR Kiribati Tarawa 811 92533 OC .ki AUD Dollar 686 en-KI,gil 4030945
KM COM 174 CN Comoros Moroni 2170 773407 AF .km KMF Franc 269 ar,fr-KM 921929
KN KNA 659 SC Saint Kitts and Nevis Basseterre 261 49898 NA .kn XCD Dollar +1-869 en-KN 3575174
KP PRK 408 KN North Korea Pyongyang 120540 22912177 AS .kp KPW Won 850 ###-### ^(\d{6})$ ko-KP 1873107 CN,KR,RU
KR KOR 410 KS South Korea Seoul 98480 48422644 AS .kr KRW Won 82 SEOUL ###-### ^(?:SEOUL)*(\d{6})$ ko-KR,en 1835841 KP
XK XKX 0 KV Kosovo Pristina 1800000 EU EUR Euro sq,sr 831053 RS,AL,MK,ME
KW KWT 414 KU Kuwait Kuwait City 17820 2789132 AS .kw KWD Dinar 965 ##### ^(\d{5})$ ar-KW,en 285570 SA,IQ
KY CYM 136 CJ Cayman Islands George Town 262 44270 NA .ky KYD Dollar +1-345 en-KY 3580718
KZ KAZ 398 KZ Kazakhstan Astana 2717300 15340000 AS .kz KZT Tenge 7 ###### ^(\d{6})$ kk,ru 1522867 TM,CN,KG,UZ,RU
LA LAO 418 LA Laos Vientiane 236800 6368162 AS .la LAK Kip 856 ##### ^(\d{5})$ lo,fr,en 1655842 CN,MM,KH,TH,VN
LB LBN 422 LE Lebanon Beirut 10400 4125247 AS .lb LBP Pound 961 #### ####|#### ^(\d{4}(\d{4})?)$ ar-LB,fr-LB,en,hy 272103 SY,IL
LC LCA 662 ST Saint Lucia Castries 616 160922 NA .lc XCD Dollar +1-758 en-LC 3576468
LI LIE 438 LS Liechtenstein Vaduz 160 35000 EU .li CHF Franc 423 #### ^(\d{4})$ de-LI 3042058 CH,AT
LK LKA 144 CE Sri Lanka Colombo 65610 21513990 AS .lk LKR Rupee 94 ##### ^(\d{5})$ si,ta,en 1227603
LR LBR 430 LI Liberia Monrovia 111370 3685076 AF .lr LRD Dollar 231 #### ^(\d{4})$ en-LR 2275384 SL,CI,GN
LS LSO 426 LT Lesotho Maseru 30355 1919552 AF .ls LSL Loti 266 ### ^(\d{3})$ en-LS,st,zu,xh 932692 ZA
LT LTU 440 LH Lithuania Vilnius 65200 3565000 EU .lt LTL Litas 370 LT-##### ^(?:LT)*(\d{5})$ lt,ru,pl 597427 PL,BY,RU,LV
LU LUX 442 LU Luxembourg Luxembourg 2586 497538 EU .lu EUR Euro 352 #### ^(\d{4})$ lb,de-LU,fr-LU 2960313 DE,BE,FR
LV LVA 428 LG Latvia Riga 64589 2217969 EU .lv LVL Lat 371 LV-#### ^(?:LV)*(\d{4})$ lv,ru,lt 458258 LT,EE,BY,RU
LY LBY 434 LY Libya Tripolis 1759540 6461454 AF .ly LYD Dinar 218 ar-LY,it,en 2215636 TD,NE,DZ,SD,TN,EG
MA MAR 504 MO Morocco Rabat 446550 31627428 AF .ma MAD Dirham 212 ##### ^(\d{5})$ ar-MA,fr 2542007 DZ,EH,ES
MC MCO 492 MN Monaco Monaco 1.95 32965 EU .mc EUR Euro 377 ##### ^(\d{5})$ fr-MC,en,it 2993457 FR
MD MDA 498 MD Moldova Chişinău 33843 4324000 EU .md MDL Leu 373 MD-#### ^(?:MD)*(\d{4})$ ro,ru,gag,tr 617790 RO,UA
ME MNE 499 MJ Montenegro Podgorica 14026 666730 EU .me EUR Euro 382 ##### ^(\d{5})$ sr,hu,bs,sq,hr,rom 3194884 AL,HR,BA,RS,XK
MF MAF 663 RN Saint Martin Marigot 53 35925 NA .gp EUR Euro 590 ### ### fr 3578421 SX
MG MDG 450 MA Madagascar Antananarivo 587040 21281844 AF .mg MGA Ariary 261 ### ^(\d{3})$ fr-MG,mg 1062947
MH MHL 584 RM Marshall Islands Majuro 181.3 65859 OC .mh USD Dollar 692 mh,en-MH 2080185
MK MKD 807 MK Macedonia Skopje 25333 2061000 EU .mk MKD Denar 389 #### ^(\d{4})$ mk,sq,tr,rmm,sr 718075 AL,GR,CS,BG,RS,XK
ML MLI 466 ML Mali Bamako 1240000 13796354 AF .ml XOF Franc 223 fr-ML,bm 2453866 SN,NE,DZ,CI,GN,MR,BF
MM MMR 104 BM Myanmar Nay Pyi Taw 678500 53414374 AS .mm MMK Kyat 95 ##### ^(\d{5})$ my 1327865 CN,LA,TH,BD,IN
MN MNG 496 MG Mongolia Ulan Bator 1565000 3086918 AS .mn MNT Tugrik 976 ###### ^(\d{6})$ mn,ru 2029969 CN,RU
MO MAC 446 MC Macao Macao 254 449198 AS .mo MOP Pataca 853 zh,zh-MO,pt 1821275
MP MNP 580 CQ Northern Mariana Islands Saipan 477 86000 OC .mp USD Dollar +1-670 fil,tl,zh,ch-MP,en-MP 4041468
MQ MTQ 474 MB Martinique Fort-de-France 1100 432900 NA .mq EUR Euro 596 ##### ^(\d{5})$ fr-MQ 3570311
MR MRT 478 MR Mauritania Nouakchott 1030700 3205060 AF .mr MRO Ouguiya 222 ar-MR,fuc,snk,fr,mey,wo 2378080 SN,DZ,EH,ML
MS MSR 500 MH Montserrat Plymouth 102 9341 NA .ms XCD Dollar +1-664 en-MS 3578097
MT MLT 470 MT Malta Valletta 316 403000 EU .mt EUR Euro 356 @@@ ###|@@@ ## ^([A-Z]{3}\d{2}\d?)$ mt,en-MT 2562770
MU MUS 480 MP Mauritius Port Louis 2040 1294104 AF .mu MUR Rupee 230 en-MU,bho,fr 934292
MV MDV 462 MV Maldives Malé 300 395650 AS .mv MVR Rufiyaa 960 ##### ^(\d{5})$ dv,en 1282028
MW MWI 454 MI Malawi Lilongwe 118480 15447500 AF .mw MWK Kwacha 265 ny,yao,tum,swk 927384 TZ,MZ,ZM
MX MEX 484 MX Mexico Mexico City 1972550 112468855 NA .mx MXN Peso 52 ##### ^(\d{5})$ es-MX 3996063 GT,US,BZ
MY MYS 458 MY Malaysia Kuala Lumpur 329750 28274729 AS .my MYR Ringgit 60 ##### ^(\d{5})$ ms-MY,en,zh,ta,te,ml,pa,th 1733045 BN,TH,ID
MZ MOZ 508 MZ Mozambique Maputo 801590 22061451 AF .mz MZN Meticail 258 #### ^(\d{4})$ pt-MZ,vmw 1036973 ZW,TZ,SZ,ZA,ZM,MW
NA NAM 516 WA Namibia Windhoek 825418 2128471 AF .na NAD Dollar 264 en-NA,af,de,hz,naq 3355338 ZA,BW,ZM,AO
NC NCL 540 NC New Caledonia Nouméa 19060 216494 OC .nc XPF Franc 687 ##### ^(\d{5})$ fr-NC 2139685
NE NER 562 NG Niger Niamey 1267000 15878271 AF .ne XOF Franc 227 #### ^(\d{4})$ fr-NE,ha,kr,dje 2440476 TD,BJ,DZ,LY,BF,NG,ML
NF NFK 574 NF Norfolk Island Kingston 34.6 1828 OC .nf AUD Dollar 672 en-NF 2155115
NG NGA 566 NI Nigeria Abuja 923768 154000000 AF .ng NGN Naira 234 ###### ^(\d{6})$ en-NG,ha,yo,ig,ff 2328926 TD,NE,BJ,CM
NI NIC 558 NU Nicaragua Managua 129494 5995928 NA .ni NIO Cordoba 505 ###-###-# ^(\d{7})$ es-NI,en 3617476 CR,HN
NL NLD 528 NL Netherlands Amsterdam 41526 16645000 EU .nl EUR Euro 31 #### @@ ^(\d{4}[A-Z]{2})$ nl-NL,fy-NL 2750405 DE,BE
NO NOR 578 NO Norway Oslo 324220 4907000 EU .no NOK Krone 47 #### ^(\d{4})$ no,nb,nn,se,fi 3144096 FI,RU,SE
NP NPL 524 NP Nepal Kathmandu 140800 28951852 AS .np NPR Rupee 977 ##### ^(\d{5})$ ne,en 1282988 CN,IN
NR NRU 520 NR Nauru Yaren 21 10065 OC .nr AUD Dollar 674 na,en-NR 2110425
NU NIU 570 NE Niue Alofi 260 2166 OC .nu NZD Dollar 683 niu,en-NU 4036232
NZ NZL 554 NZ New Zealand Wellington 268680 4252277 OC .nz NZD Dollar 64 #### ^(\d{4})$ en-NZ,mi 2186224
OM OMN 512 MU Oman Muscat 212460 2967717 AS .om OMR Rial 968 ### ^(\d{3})$ ar-OM,en,bal,ur 286963 SA,YE,AE
PA PAN 591 PM Panama Panama City 78200 3410676 NA .pa PAB Balboa 507 es-PA,en 3703430 CR,CO
PE PER 604 PE Peru Lima 1285220 29907003 SA .pe PEN Sol 51 es-PE,qu,ay 3932488 EC,CL,BO,BR,CO
PF PYF 258 FP French Polynesia Papeete 4167 270485 OC .pf XPF Franc 689 ##### ^((97)|(98)7\d{2})$ fr-PF,ty 4030656
PG PNG 598 PP Papua New Guinea Port Moresby 462840 6064515 OC .pg PGK Kina 675 ### ^(\d{3})$ en-PG,ho,meu,tpi 2088628 ID
PH PHL 608 RP Philippines Manila 300000 99900177 AS .ph PHP Peso 63 #### ^(\d{4})$ tl,en-PH,fil 1694008
PK PAK 586 PK Pakistan Islamabad 803940 184404791 AS .pk PKR Rupee 92 ##### ^(\d{5})$ ur-PK,en-PK,pa,sd,ps,brh 1168579 CN,AF,IR,IN
PL POL 616 PL Poland Warsaw 312685 38500000 EU .pl PLN Zloty 48 ##-### ^(\d{5})$ pl 798544 DE,LT,SK,CZ,BY,UA,RU
PM SPM 666 SB Saint Pierre and Miquelon Saint-Pierre 242 7012 NA .pm EUR Euro 508 ##### ^(97500)$ fr-PM 3424932
PN PCN 612 PC Pitcairn Adamstown 47 46 OC .pn NZD Dollar 870 en-PN 4030699
PR PRI 630 RQ Puerto Rico San Juan 9104 3916632 NA .pr USD Dollar +1-787 and 1-939 #####-#### ^(\d{9})$ en-PR,es-PR 4566966
PS PSE 275 WE Palestinian Territory East Jerusalem 5970 3800000 AS .ps ILS Shekel 970 ar-PS 6254930 JO,IL
PT PRT 620 PO Portugal Lisbon 92391 10676000 EU .pt EUR Euro 351 ####-### ^(\d{7})$ pt-PT,mwl 2264397 ES
PW PLW 585 PS Palau Melekeok 458 19907 OC .pw USD Dollar 680 96940 ^(96940)$ pau,sov,en-PW,tox,ja,fil,zh 1559582
PY PRY 600 PA Paraguay Asunción 406750 6375830 SA .py PYG Guarani 595 #### ^(\d{4})$ es-PY,gn 3437598 BO,BR,AR
QA QAT 634 QA Qatar Doha 11437 840926 AS .qa QAR Rial 974 ar-QA,es 289688 SA
RE REU 638 RE Reunion Saint-Denis 2517 776948 AF .re EUR Euro 262 ##### ^((97)|(98)(4|7|8)\d{2})$ fr-RE 935317
RO ROU 642 RO Romania Bucharest 237500 21959278 EU .ro RON Leu 40 ###### ^(\d{6})$ ro,hu,rom 798549 MD,HU,UA,CS,BG,RS
RS SRB 688 RI Serbia Belgrade 88361 7344847 EU .rs RSD Dinar 381 ###### ^(\d{6})$ sr,hu,bs,rom 6290252 AL,HU,MK,RO,HR,BA,BG,ME,XK
RU RUS 643 RS Russia Moscow 1.71E+007 140702000 EU .ru RUB Ruble 7 ###### ^(\d{6})$ ru,tt,xal,cau,ady,kv,ce,tyv,cv,udm,tut,mns,bua,myv,mdf,chm,ba,inh,tut,kbd,krc,ava,sah,nog 2017370 GE,CN,BY,UA,KZ,LV,PL,EE,LT,FI,MN,NO,AZ,KP
RW RWA 646 RW Rwanda Kigali 26338 11055976 AF .rw RWF Franc 250 rw,en-RW,fr-RW,sw 49518 TZ,CD,BI,UG
SA SAU 682 SA Saudi Arabia Riyadh 1960582 25731776 AS .sa SAR Rial 966 ##### ^(\d{5})$ ar-SA 102358 QA,OM,IQ,YE,JO,AE,KW
SB SLB 090 BP Solomon Islands Honiara 28450 559198 OC .sb SBD Dollar 677 en-SB,tpi 2103350
SC SYC 690 SE Seychelles Victoria 455 88340 AF .sc SCR Rupee 248 en-SC,fr-SC 241170
SD SDN 729 SU Sudan Khartoum 1861484 35000000 AF .sd SDG Pound 249 ##### ^(\d{5})$ ar-SD,en,fia 366755 SS,TD,EG,ET,ER,LY,CF
SS SSD 728 OD South Sudan Juba 644329 8260490 AF SSP Pound 211 en 7909807 CD,CF,ET,KE,SD,UG,
SE SWE 752 SW Sweden Stockholm 449964 9045000 EU .se SEK Krona 46 SE-### ## ^(?:SE)*(\d{5})$ sv-SE,se,sma,fi-SE 2661886 NO,FI
SG SGP 702 SN Singapore Singapur 692.7 4701069 AS .sg SGD Dollar 65 ###### ^(\d{6})$ cmn,en-SG,ms-SG,ta-SG,zh-SG 1880251
SH SHN 654 SH Saint Helena Jamestown 410 7460 AF .sh SHP Pound 290 STHL 1ZZ ^(STHL1ZZ)$ en-SH 3370751
SI SVN 705 SI Slovenia Ljubljana 20273 2007000 EU .si EUR Euro 386 SI- #### ^(?:SI)*(\d{4})$ sl,sh 3190538 HU,IT,HR,AT
SJ SJM 744 SV Svalbard and Jan Mayen Longyearbyen 62049 2550 EU .sj NOK Krone 47 no,ru 607072
SK SVK 703 LO Slovakia Bratislava 48845 5455000 EU .sk EUR Euro 421 ###  ## ^(\d{5})$ sk,hu 3057568 PL,HU,CZ,UA,AT
SL SLE 694 SL Sierra Leone Freetown 71740 5245695 AF .sl SLL Leone 232 en-SL,men,tem 2403846 LR,GN
SM SMR 674 SM San Marino San Marino 61.2 31477 EU .sm EUR Euro 378 4789# ^(4789\d)$ it-SM 3168068 IT
SN SEN 686 SG Senegal Dakar 196190 12323252 AF .sn XOF Franc 221 ##### ^(\d{5})$ fr-SN,wo,fuc,mnk 2245662 GN,MR,GW,GM,ML
SO SOM 706 SO Somalia Mogadishu 637657 10112453 AF .so SOS Shilling 252 @@  ##### ^([A-Z]{2}\d{5})$ so-SO,ar-SO,it,en-SO 51537 ET,KE,DJ
SR SUR 740 NS Suriname Paramaribo 163270 492829 SA .sr SRD Dollar 597 nl-SR,en,srn,hns,jv 3382998 GY,BR,GF
ST STP 678 TP Sao Tome and Principe São Tomé 1001 175808 AF .st STD Dobra 239 pt-ST 2410758
SV SLV 222 ES El Salvador San Salvador 21040 6052064 NA .sv USD Dollar 503 CP #### ^(?:CP)*(\d{4})$ es-SV 3585968 GT,HN
SX SXM 534 NN Sint Maarten Philipsburg 37429 NA .sx ANG Guilder 599 nl,en 7609695 MF
SY SYR 760 SY Syria Damascus 185180 22198110 AS .sy SYP Pound 963 ar-SY,ku,hy,arc,fr,en 163843 IQ,JO,IL,TR,LB
SZ SWZ 748 WZ Swaziland Mbabane 17363 1354051 AF .sz SZL Lilangeni 268 @### ^([A-Z]\d{3})$ en-SZ,ss-SZ 934841 ZA,MZ
TC TCA 796 TK Turks and Caicos Islands Cockburn Town 430 20556 NA .tc USD Dollar +1-649 TKCA 1ZZ ^(TKCA 1ZZ)$ en-TC 3576916
TD TCD 148 CD Chad N'Djamena 1284000 10543464 AF .td XAF Franc 235 fr-TD,ar-TD,sre 2434508 NE,LY,CF,SD,CM,NG
TF ATF 260 FS French Southern Territories Port-aux-Français 7829 140 AN .tf EUR Euro  fr 1546748
TG TGO 768 TO Togo Lomé 56785 6587239 AF .tg XOF Franc 228 fr-TG,ee,hna,kbp,dag,ha 2363686 BJ,GH,BF
TH THA 764 TH Thailand Bangkok 514000 67089500 AS .th THB Baht 66 ##### ^(\d{5})$ th,en 1605651 LA,MM,KH,MY
TJ TJK 762 TI Tajikistan Dushanbe 143100 7487489 AS .tj TJS Somoni 992 ###### ^(\d{6})$ tg,ru 1220409 CN,AF,KG,UZ
TK TKL 772 TL Tokelau 10 1466 OC .tk NZD Dollar 690 tkl,en-TK 4031074
TL TLS 626 TT East Timor Dili 15007 1154625 OC .tp USD Dollar 670 tet,pt-TL,id,en 1966436 ID
TM TKM 795 TX Turkmenistan Ashgabat 488100 4940916 AS .tm TMT Manat 993 ###### ^(\d{6})$ tk,ru,uz 1218197 AF,IR,UZ,KZ
TN TUN 788 TS Tunisia Tunis 163610 10589025 AF .tn TND Dinar 216 #### ^(\d{4})$ ar-TN,fr 2464461 DZ,LY
TO TON 776 TN Tonga Nuku'alofa 748 122580 OC .to TOP Pa'anga 676 to,en-TO 4032283
TR TUR 792 TU Turkey Ankara 780580 77804122 AS .tr TRY Lira 90 ##### ^(\d{5})$ tr-TR,ku,diq,az,av 298795 SY,GE,IQ,IR,GR,AM,AZ,BG
TT TTO 780 TD Trinidad and Tobago Port of Spain 5128 1228691 NA .tt TTD Dollar +1-868 en-TT,hns,fr,es,zh 3573591
TV TUV 798 TV Tuvalu Funafuti 26 10472 OC .tv AUD Dollar 688 tvl,en,sm,gil 2110297
TW TWN 158 TW Taiwan Taipei 35980 22894384 AS .tw TWD Dollar 886 ##### ^(\d{5})$ zh-TW,zh,nan,hak 1668284
TZ TZA 834 TZ Tanzania Dodoma 945087 41892895 AF .tz TZS Shilling 255 sw-TZ,en,ar 149590 MZ,KE,CD,RW,ZM,BI,UG,MW
UA UKR 804 UP Ukraine Kiev 603700 45415596 EU .ua UAH Hryvnia 380 ##### ^(\d{5})$ uk,ru-UA,rom,pl,hu 690791 PL,MD,HU,SK,BY,RO,RU
UG UGA 800 UG Uganda Kampala 236040 33398682 AF .ug UGX Shilling 256 en-UG,lg,sw,ar 226074 TZ,KE,SS,CD,RW
UM UMI 581 United States Minor Outlying Islands 0 0 OC .um USD Dollar 1 en-UM 5854968
US USA 840 US United States Washington 9629091 310232863 NA .us USD Dollar 1 #####-#### ^(\d{9})$ en-US,es-US,haw,fr 6252001 CA,MX,CU
UY URY 858 UY Uruguay Montevideo 176220 3477000 SA .uy UYU Peso 598 ##### ^(\d{5})$ es-UY 3439705 BR,AR
UZ UZB 860 UZ Uzbekistan Tashkent 447400 27865738 AS .uz UZS Som 998 ###### ^(\d{6})$ uz,ru,tg 1512440 TM,AF,KG,TJ,KZ
VA VAT 336 VT Vatican Vatican City 0.44 921 EU .va EUR Euro 379 la,it,fr 3164670 IT
VC VCT 670 VC Saint Vincent and the Grenadines Kingstown 389 104217 NA .vc XCD Dollar +1-784 en-VC,fr 3577815
VE VEN 862 VE Venezuela Caracas 912050 27223228 SA .ve VEF Bolivar 58 #### ^(\d{4})$ es-VE 3625428 GY,BR,CO
VG VGB 092 VI British Virgin Islands Road Town 153 21730 NA .vg USD Dollar +1-284 en-VG 3577718
VI VIR 850 VQ U.S. Virgin Islands Charlotte Amalie 352 108708 NA .vi USD Dollar +1-340 en-VI 4796775
VN VNM 704 VM Vietnam Hanoi 329560 89571130 AS .vn VND Dong 84 ###### ^(\d{6})$ vi,en,fr,zh,km 1562822 CN,LA,KH
VU VUT 548 NH Vanuatu Port Vila 12200 221552 OC .vu VUV Vatu 678 bi,en-VU,fr-VU 2134431
WF WLF 876 WF Wallis and Futuna Matâ'Utu 274 16025 OC .wf XPF Franc 681 ##### ^(986\d{2})$ wls,fud,fr-WF 4034749
WS WSM 882 WS Samoa Apia 2944 192001 OC .ws WST Tala 685 sm,en-WS 4034894
YE YEM 887 YM Yemen San‘a’ 527970 23495361 AS .ye YER Rial 967 ar-YE 69543 SA,OM
YT MYT 175 MF Mayotte Mamoudzou 374 159042 AF .yt EUR Euro 262 ##### ^(\d{5})$ fr-YT 1024031
ZA ZAF 710 SF South Africa Pretoria 1219912 49000000 AF .za ZAR Rand 27 #### ^(\d{4})$ zu,xh,af,nso,en-ZA,tn,st,ts,ss,ve,nr 953987 ZW,SZ,MZ,BW,NA,LS
ZM ZMB 894 ZA Zambia Lusaka 752614 13460305 AF .zm ZMK Kwacha 260 ##### ^(\d{5})$ en-ZM,bem,loz,lun,lue,ny,toi 895949 ZW,TZ,MZ,CD,NA,MW,AO
ZW ZWE 716 ZI Zimbabwe Harare 390580 11651858 AF .zw ZWL Dollar 263 en-ZW,sn,nr,nd 878675 ZA,MZ,BW,ZM
CS SCG 891 YI Serbia and Montenegro Belgrade 102350 10829175 EU .cs RSD Dinar 381 ##### ^(\d{5})$ cu,hu,sq,sr AL,HU,MK,RO,HR,BA,BG
AN ANT 530 NT Netherlands Antilles Willemstad 960 136197 NA .an ANG Guilder 599 nl-AN,en,es GP
</pre>

Latest revision as of 11: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