Meeskond "Vennaskond"
Meeskond
- Kairi Jaano
- Mart Mägi
- Riho Kukk
XML
Luua XML fail andmete edastamiseks, selle XML faili skeemifail ning paar kolm sobivat XSL faili loodud XML failis olevate andmete transformeerimiseks HTML formaati ja XML faili formaadi muutmiseks. XML-il peab olema vähemalt 4 loogilist dimensiooni. Lisaks tuleb kasutada 3-el dimensioonil attribuute, mis on enamat, kui lihtsalt ID.
XML
XML fail sisaldab andmeid Eesti haldus- ja asustusüksuste (EHAK) kohta. Andmed saadi
<?xml version="1.0" encoding="utf-8"?>
<Autoralli>
<Võistlussari id="2012wrc" aasta="2012">
<kood>WRC</kood>
<sarjaNimi>Autoralli MM-võistlused</sarjaNimi>
<etappideArv>13</etappideArv>
<etapp id="2012wrc01">
<etapiNr>1.</etapiNr>
<etapiNimi>Rallye Monte Carlo</etapiNimi>
<etapiRiik>Prantsusmaa</etapiRiik>
<algKuupaev>18.01.2012</algKuupaev>
<loppKuupaev>22.01.2012</loppKuupaev>
<tulemusRida koht="1.">
<juht>
<perenimi>Loeb</perenimi>
<eesnimi>Sebastien</eesnimi>
<riigikood>FRA</riigikood>
</juht>
<auto>Citroen</auto>
<punktid>28</punktid>
</tulemusRida>
<tulemusRida koht="2.">
<juht>
<perenimi>Sordo</perenimi>
<eesnimi>Daniel</eesnimi>
<riigikood>ESP</riigikood>
</juht>
<auto>Mini</auto>
<punktid>18</punktid>
</tulemusRida>
<tulemusRida koht="3.">
<juht>
<perenimi>Solberg</perenimi>
<eesnimi>Petter</eesnimi>
<riigikood>NOR</riigikood>
</juht>
<auto>Ford</auto>
<punktid>15</punktid>
</tulemusRida>
<tulemusRida koht="4.">
<juht>
<perenimi>Hirvonen</perenimi>
<eesnimi>Mikko</eesnimi>
<riigikood>FIN</riigikood>
</juht>
<auto>Citroen</auto>
<punktid>14</punktid>
</tulemusRida>
<tulemusRida koht="5.">
<juht>
<perenimi>Novikov</perenimi>
<eesnimi>Evgeny</eesnimi>
<riigikood>RUS</riigikood>
</juht>
<auto>Ford</auto>
<punktid>11</punktid>
</tulemusRida>
<tulemusRida koht="6.">
<juht>
<perenimi>Delecour</perenimi>
<eesnimi>Francois</eesnimi>
<riigikood>FRA</riigikood>
</juht>
<auto>Ford</auto>
<punktid>8</punktid>
</tulemusRida>
<tulemusRida koht="7.">
<juht>
<perenimi>Campana</perenimi>
<eesnimi>Pierre</eesnimi>
<riigikood>FRA</riigikood>
</juht>
<auto>Mini</auto>
<punktid>6</punktid>
</tulemusRida>
<tulemusRida koht="8.">
<juht>
<perenimi>Tänak</perenimi>
<eesnimi>Ott</eesnimi>
<riigikood>EST</riigikood>
</juht>
<auto>Ford</auto>
<punktid>4</punktid>
</tulemusRida>
<tulemusRida koht="9.">
<juht>
<perenimi>Prokop</perenimi>
<eesnimi>Martin</eesnimi>
<riigikood>CZE</riigikood>
</juht>
<auto>Ford</auto>
<punktid>2</punktid>
</tulemusRida>
<tulemusRida koht="10.">
<juht>
<perenimi>Araujo</perenimi>
<eesnimi>Armindo</eesnimi>
<riigikood>PRT</riigikood>
</juht>
<auto>Mini</auto>
<punktid>1</punktid>
</tulemusRida>
</etapp>
<etapp id="2012wrc02">
<etapiNr>2.</etapiNr>
<etapiNimi>Rally Sweden</etapiNimi>
<etapiRiik>Rootsi</etapiRiik>
<algKuupaev>9.02.2012</algKuupaev>
<loppKuupaev>12.02.2012</loppKuupaev>
<tulemusRida koht="1.">
<juht>
<perenimi>Latvala</perenimi>
<eesnimi>Jari-Matti</eesnimi>
<riigikood>FIN</riigikood>
</juht>
<auto>Ford</auto>
<punktid>26</punktid>
</tulemusRida>
<tulemusRida koht="2.">
<juht>
<perenimi>Hirvonen</perenimi>
<eesnimi>Mikko</eesnimi>
<riigikood>FIN</riigikood>
</juht>
<auto>Citroen</auto>
<punktid>18</punktid>
</tulemusRida>
<tulemusRida koht="3.">
<juht>
<perenimi>Ostberg</perenimi>
<eesnimi>Mads</eesnimi>
<riigikood>NOR</riigikood>
</juht>
<auto>Ford</auto>
<punktid>15</punktid>
</tulemusRida>
<tulemusRida koht="4.">
<juht>
<perenimi>Solberg</perenimi>
<eesnimi>Petter</eesnimi>
<riigikood>NOR</riigikood>
</juht>
<auto>Ford</auto>
<punktid>14</punktid>
</tulemusRida>
<tulemusRida koht="5.">
<juht>
<perenimi>Loeb</perenimi>
<eesnimi>Sebastien</eesnimi>
<riigikood>FRA</riigikood>
</juht>
<auto>Citroen</auto>
<punktid>11</punktid>
</tulemusRida>
<tulemusRida koht="6.">
<juht>
<perenimi>Novikov</perenimi>
<eesnimi>Evgeny</eesnimi>
<riigikood>RUS</riigikood>
</juht>
<auto>Ford</auto>
<punktid>10</punktid>
</tulemusRida>
<tulemusRida koht="7.">
<juht>
<perenimi>Solberg</perenimi>
<eesnimi>Henning</eesnimi>
<riigikood>NOR</riigikood>
</juht>
<auto>Ford</auto>
<punktid>6</punktid>
</tulemusRida>
<tulemusRida koht="8.">
<juht>
<perenimi>Sandell</perenimi>
<eesnimi>Patrik</eesnimi>
<riigikood>SWE</riigikood>
</juht>
<auto>Mini</auto>
<punktid>4</punktid>
</tulemusRida>
<tulemusRida koht="9.">
<juht>
<perenimi>Prokop</perenimi>
<eesnimi>Martin</eesnimi>
<riigikood>CZE</riigikood>
</juht>
<auto>Ford</auto>
<punktid>2</punktid>
</tulemusRida>
<tulemusRida koht="10.">
<juht>
<perenimi>Brynildsen</perenimi>
<eesnimi>Eyvind</eesnimi>
<riigikood>NOR</riigikood>
</juht>
<auto>Ford</auto>
<punktid>1</punktid>
</tulemusRida>
</etapp>
<etapp id="2012wrc03">
<etapiNr>3.</etapiNr>
<etapiNimi>Rally Guanajuato Mexico</etapiNimi>
<etapiRiik>Mehhiko</etapiRiik>
<algKuupaev>8.03.2012</algKuupaev>
<loppKuupaev>11.03.2012</loppKuupaev>
<tulemusRida koht="1.">
<juht>
<perenimi>Loeb</perenimi>
<eesnimi>Sebastien</eesnimi>
<riigikood>FRA</riigikood>
</juht>
<auto>Citroen</auto>
<punktid>27</punktid>
</tulemusRida>
<tulemusRida koht="2.">
<juht>
<perenimi>Hirvonen</perenimi>
<eesnimi>Mikko</eesnimi>
<riigikood>FIN</riigikood>
</juht>
<auto>Citroen</auto>
<punktid>18</punktid>
</tulemusRida>
<tulemusRida koht="3.">
<juht>
<perenimi>Solberg</perenimi>
<eesnimi>Petter</eesnimi>
<riigikood>NOR</riigikood>
</juht>
<auto>Ford</auto>
<punktid>18</punktid>
</tulemusRida>
<tulemusRida koht="4.">
<juht>
<perenimi>Ostberg</perenimi>
<eesnimi>Mads</eesnimi>
<riigikood>NOR</riigikood>
</juht>
<auto>Ford</auto>
<punktid>13</punktid>
</tulemusRida>
<tulemusRida koht="5.">
<juht>
<perenimi>Tänak</perenimi>
<eesnimi>Ott</eesnimi>
<riigikood>EST</riigikood>
</juht>
<auto>Ford</auto>
<punktid>10</punktid>
</tulemusRida>
<tulemusRida koht="6.">
<juht>
<perenimi>Al-Attiyah</perenimi>
<eesnimi>Nasser</eesnimi>
<riigikood>QAT</riigikood>
</juht>
<auto>Citroen</auto>
<punktid>8</punktid>
</tulemusRida>
<tulemusRida koht="7.">
<juht>
<perenimi>Araujo</perenimi>
<eesnimi>Armindo</eesnimi>
<riigikood>PRT</riigikood>
</juht>
<auto>Mini</auto>
<punktid>6</punktid>
</tulemusRida>
<tulemusRida koht="8.">
<juht>
<perenimi>Ogier</perenimi>
<eesnimi>Sebastien</eesnimi>
<riigikood>FRA</riigikood>
</juht>
<auto>Skoda</auto>
<punktid>4</punktid>
</tulemusRida>
<tulemusRida koht="9.">
<juht>
<perenimi>Block</perenimi>
<eesnimi>Ken</eesnimi>
<riigikood>USA</riigikood>
</juht>
<auto>Ford</auto>
<punktid>2</punktid>
</tulemusRida>
<tulemusRida koht="10.">
<juht>
<perenimi>Trivino</perenimi>
<eesnimi>Ricardo</eesnimi>
<riigikood>MEX</riigikood>
</juht>
<auto>Ford</auto>
<punktid>1</punktid>
</tulemusRida>
</etapp>
<etapp id="2012wrc04">
<etapiNr>4.</etapiNr>
<etapiNimi>Vodafone Rally de Portugal</etapiNimi>
<etapiRiik>Portugal</etapiRiik>
<algKuupaev>29.03.2012</algKuupaev>
<loppKuupaev>01.04.2012</loppKuupaev>
<tulemusRida koht="1.">
<juht>
<perenimi>Ostberg</perenimi>
<eesnimi>Mads</eesnimi>
<riigikood>NOR</riigikood>
</juht>
<auto>Ford</auto>
<punktid>25</punktid>
</tulemusRida>
<tulemusRida koht="2.">
<juht>
<perenimi>Novikov</perenimi>
<eesnimi>Evgeniy</eesnimi>
<riigikood>RUS</riigikood>
</juht>
<auto>Ford</auto>
<punktid>18</punktid>
</tulemusRida>
<tulemusRida koht="3.">
<juht>
<perenimi>Solberg</perenimi>
<eesnimi>Petter</eesnimi>
<riigikood>NOR</riigikood>
</juht>
<auto>Ford</auto>
<punktid>15</punktid>
</tulemusRida>
<tulemusRida koht="4.">
<juht>
<perenimi>al-Attiyah</perenimi>
<eesnimi>Nasser</eesnimi>
<riigikood>QA</riigikood>
</juht>
<auto>Citroen</auto>
<punktid>12</punktid>
</tulemusRida>
<tulemusRida koht="5.">
<juht>
<perenimi>Prokop</perenimi>
<eesnimi>Martin</eesnimi>
<riigikood>CZ</riigikood>
</juht>
<auto>Ford</auto>
<punktid>10</punktid>
</tulemusRida>
<tulemusRida koht="6.">
<juht>
<perenimi>Kuipers</perenimi>
<eesnimi>Dennis</eesnimi>
<riigikood>NL</riigikood>
</juht>
<auto>Ford</auto>
<punktid>8</punktid>
</tulemusRida>
<tulemusRida koht="7.">
<juht>
<perenimi>Ogier</perenimi>
<eesnimi>Sebastien</eesnimi>
<riigikood>FRA</riigikood>
</juht>
<auto>Skoda</auto>
<punktid>6</punktid>
</tulemusRida>
<tulemusRida koht="8.">
<juht>
<perenimi>Neuville</perenimi>
<eesnimi>Thierry</eesnimi>
<riigikood>BEL</riigikood>
</juht>
<auto>Citroen</auto>
<punktid>4</punktid>
</tulemusRida>
<tulemusRida koht="9.">
<juht>
<perenimi>Ketomaa</perenimi>
<eesnimi>Jari</eesnimi>
<riigikood>FIN</riigikood>
</juht>
<auto>Ford</auto>
<punktid>2</punktid>
</tulemusRida>
<tulemusRida koht="10.">
<juht>
<perenimi>van Merksteijn jr</perenimi>
<eesnimi>Peter</eesnimi>
<riigikood>NL</riigikood>
</juht>
<auto>Citroen</auto>
<punktid>1</punktid>
</tulemusRida>
</etapp>
</Võistlussari>
<Võistlussari id="2012irc" aasta="2012">
<kood>IRC</kood>
<sarjaNimi>Intercontinental Rally Challenge</sarjaNimi>
<etappideArv>13</etappideArv>
<etapp id="2012wrc01">
<etapiNr>1.</etapiNr>
<etapiNimi></etapiNimi>
<etapiRiik></etapiRiik>
<algKuupaev></algKuupaev>
<loppKuupaev></loppKuupaev>
<tulemusRida koht="1.">
<juht>
<perenimi></perenimi>
<eesnimi></eesnimi>
<riigikood></riigikood>
</juht>
<auto></auto>
<punktid></punktid>
</tulemusRida>
</etapp>
</Võistlussari>
</Autoralli>
XML schema (XSD)
<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Autoralli">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="Võistlussari">
<xs:complexType>
<xs:sequence>
<xs:element name="kood" type="xs:string" />
<xs:element name="sarjaNimi" type="xs:string" />
<xs:element name="etappideArv" type="xs:unsignedByte" />
<xs:element maxOccurs="unbounded" name="etapp">
<xs:complexType>
<xs:sequence>
<xs:element name="etapiNr" type="xs:decimal" />
<xs:element name="etapiNimi" type="xs:string" />
<xs:element maxOccurs="unbounded" name="etapiRiik" type="xs:string" />
<xs:element name="algKuupaev" type="xs:string" />
<xs:element name="loppKuupaev" type="xs:string" />
<xs:element minOccurs="0" maxOccurs="unbounded" name="tulemusRida">
<xs:complexType>
<xs:sequence>
<xs:element name="juht">
<xs:complexType>
<xs:sequence>
<xs:element name="perenimi" type="xs:string" />
<xs:element name="eesnimi" type="xs:string" />
<xs:element name="riigikood" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="auto" type="xs:string" />
<xs:element name="punktid" type="xs:string" />
</xs:sequence>
<xs:attribute name="koht" type="xs:decimal" 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="aasta" type="xs:unsignedShort" use="required" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
XSLT (esimene)
Esimene xslt fail kuvab xml sisu html-is. Iga maakonna all kuvatakse omavalitsused eraldi valdade ja linnade kaupa. Valdade all kuvatakse asustusüksused sorteerituna külade, alevike ja alevite kaupa. Kui külal leidub rööpnimi, kuvatakse ka see. XSLT output on siin ja source on siin:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl"
>
<xsl:output method="html" indent="yes"/>
<xsl:template match="/">
<html>
<head>
<title>Autoralli tulemused</title>
</head>
<body>
<h1>
Autoralli etappide tulemused
</h1>
<ul>
<xsl:for-each select="Autoralli/Võistlussari">
<h2>
<xsl:value-of select="sarjaNimi"/>
<xsl:text>, </xsl:text>
<xsl:value-of select="@aasta"/>
</h2>
<xsl:for-each select="etapp">
<h2>
<xsl:value-of select="etapiNr"/>
<xsl:text> etapp, </xsl:text>
<xsl:value-of select="etapiNimi"/>
</h2>
<h3>
<xsl:value-of select="loppKuupaev"/>
<xsl:text>, </xsl:text>
<xsl:value-of select="etapiRiik"/>
</h3>
<xsl:for-each select="tulemusRida">
<li>
<xsl:value-of select="@koht"/>
<xsl:text> </xsl:text>
<xsl:value-of select="juht/eesnimi"/>
<xsl:text> </xsl:text>
<xsl:value-of select="juht/perenimi"/>
<xsl:text> (</xsl:text>
<xsl:value-of select="juht/riigikood"/>
<xsl:text>) </xsl:text>
<xsl:value-of select="auto"/>
<xsl:text>, </xsl:text>
<xsl:value-of select="punktid"/>
<xsl:text> p.</xsl:text>
</li>
</xsl:for-each>
</xsl:for-each>
</xsl:for-each>
</ul>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
XSLT (teine)
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl"
>
<xsl:output method="html" indent="yes"/>
<xsl:template match="/">
<html>
<head>
<title>Autoralli tulemused</title>
</head>
<body>
<h1>
Soome rallisõitjate kohad esikümnes
</h1>
<ul>
<xsl:for-each select="Autoralli/Võistlussari/etapp">
<h2>
<xsl:value-of select="etapiNr"/>
<xsl:text> etapp, </xsl:text>
<xsl:value-of select="etapiNimi"/>
</h2>
<h3>
<xsl:value-of select="loppKuupaev"/>
<xsl:text>, </xsl:text>
<xsl:value-of select="etapiRiik"/>
</h3>
<xsl:for-each select="tulemusRida">
<xsl:if test="juht/riigikood='FIN'">
<li>
<xsl:value-of select="@koht"/>
<xsl:text> </xsl:text>
<xsl:value-of select="juht/eesnimi"/>
<xsl:text> </xsl:text>
<xsl:value-of select="juht/perenimi"/>
<xsl:text>, </xsl:text>
<xsl:value-of select="auto"/>
<xsl:text>, </xsl:text>
<xsl:value-of select="punktid"/>
<xsl:text> p.</xsl:text>
</li>
</xsl:if>
</xsl:for-each>
</xsl:for-each>
</ul>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
XSLT (kolmas)
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl"
>
<xsl:output method="html" indent="yes"/>
<xsl:template match="/">
<html>
<head>
<title>Autoralli tulemused</title>
</head>
<body>
<h1>
Fordil võistelnud rallisõitjate kohad esikümnes
</h1>
<ul>
<xsl:for-each select="Autoralli/Võistlussari/etapp">
<h2>
<xsl:value-of select="etapiNr"/>
<xsl:text> etapp, </xsl:text>
<xsl:value-of select="etapiNimi"/>
</h2>
<h3>
<xsl:value-of select="loppKuupaev"/>
<xsl:text>, </xsl:text>
<xsl:value-of select="etapiRiik"/>
</h3>
<xsl:for-each select="tulemusRida">
<xsl:if test="auto='Ford'">
<li>
<xsl:value-of select="@koht"/>
<xsl:text> </xsl:text>
<xsl:value-of select="juht/eesnimi"/>
<xsl:text> </xsl:text>
<xsl:value-of select="juht/perenimi"/>
<xsl:text> (</xsl:text>
<xsl:value-of select="juht/riigikood"/>
<xsl:text>), </xsl:text>
<xsl:value-of select="punktid"/>
<xsl:text> p.</xsl:text>
</li>
</xsl:if>
</xsl:for-each>
</xsl:for-each>
</ul>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Veebiteenus
Klientrakendus
Log
3. mai 2012 - neljapäev
Kristjan ja Holger arutasid skypes XML teemal, Kristjan pakkus õppejõule välja variandi teha XML EHAKist, tegi codeplexi konto ja lisas sinna ka Holgeri kasutaja ja tegi xml faili.
4. mai 2012 - reede
Kristjan tegi xsd faili ja ühe xslt faili ning lisas Ragnari kasutaja codeplexi. Lepiti kokku, et ülejäänud kaks xslt-d ja retsensioonid teise grupi xml faili kohta teevad Ragnar ja Holger.
5. mai 2012 - laupäev
Kristjan lõi meeskonna wiki lehe ja tõstis sinna seni tehtud materjalid
6. mai 2012 - pühapäev
Holger lisas enda XSLT koodi wikisse - järjenumbriga 3.