Meeskond "HM"
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 siin - 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)