XYZ
From ICO wiki
Meeskond XYZ
Meeskonna liikmed:
- Sulev Pert
Kodutöö XML osa
Projekti failid asuvad siin (esitatud 15.02.2015)
Reisiportaali XML andmefail
<?xml version="1.0" encoding="utf-8" ?> <reisipakkumised xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="Reisipakkumised_skeem.xsd" kehtib_kuni="2015-12-31" keel="ee"> <kontinendid> <kontinent kontinentID="1"> <nimi>Euroopa</nimi> <kirjeldus><![CDATA[Euroopa katab 2% maakera pindalast.]]></kirjeldus> <url><![CDATA[http://en.wikipedia.org/wiki/Europe"]]></url> <reisid> <reis soodus_hind="true" vabu_kohti_reisil="20" reisID="1"> <sihtkoht>Pariis</sihtkoht> <algus_kuupäev>2015-05-01</algus_kuupäev> <lõpp_kuupäev>2015-05-15</lõpp_kuupäev> <hind>500</hind> <lühikirjeldus><![CDATA[Külasta Pariisi kevadel]]></lühikirjeldus> <kirjeldus> <![CDATA[Tänapäeval on Pariis üks maailma juhtivatest äri- ja kultuurikeskustest.]]> </kirjeldus> <url><![CDATA[http://en.wikipedia.org/wiki/Paris]]></url> </reis> <reis soodus_hind="false" vabu_kohti_reisil="4" reisID="2"> <sihtkoht>Amsterdam</sihtkoht> <algus_kuupäev>2015-09-17</algus_kuupäev> <lõpp_kuupäev>2015-09-20</lõpp_kuupäev> <hind>700</hind> <lühikirjeldus><![CDATA[Amsterdami punased laternad]]></lühikirjeldus> <kirjeldus><![CDATA[Amsterdam pulbitseb elust ja on ka üllatavalt vaikne, on suurejooneline ja koduvillane, revolutsiooniline ja endale kindlaks jääv, eksootiline ja tolerantne. Pidevate muutuste eest hoolitsevad vaid aastaajad, mis näivad seal eriliselt silma paistvat.]]></kirjeldus> <url><![CDATA[http://en.wikipedia.org/wiki/Amsterdam]]></url> </reis> </reisid> </kontinent> <kontinent kontinentID="2"> <nimi>Aasia</nimi> <kirjeldus><![CDATA[Aasia on maailma kõige suurem ja rahvarikkam kontinent, mis katab 8,7% maakera pindalast.]]></kirjeldus> <url><![CDATA[http://en.wikipedia.org/wiki/Asia]]></url> <reisid> <reis soodus_hind="false" vabu_kohti_reisil="25" reisID="3"> <sihtkoht>Tokyo</sihtkoht> <algus_kuupäev>2015-07-25</algus_kuupäev> <lõpp_kuupäev>2015-08-17</lõpp_kuupäev> <hind>1000</hind> <lühikirjeldus><![CDATA[Tokyo ringreis]]></lühikirjeldus> <kirjeldus><![CDATA[Tokyo südameks on keisririigile kohaselt 19. sajandist pärinev imperaatoriloss. Lossile pääseb ligi vaid kahel päeval aastas: 2. jaanuaril ning 23. detsembril (viimane on keisri sünnipäev). Lossist edelas asub valitsusasutuste ja luksuslike restoranide poolest huvi pakkuv Akasaka piirkond, sealt ida suunas Ginza- paik, mis on maailmakuulus eksklusiivsete kaupluste ning ohtra meelelahutuse poolest. Akasakast lõuna suunda jääv Roppongi on aga linna kosmopoliitsem piirkond, kus keeb tormiline ööelu ja mis meelitab kohale väga kirju seltskonna (sealhulgas küll ka kriminaalse).]]></kirjeldus> <url><![CDATA[http://en.wikipedia.org/wiki/Tokyo]]></url> </reis> </reisid> </kontinent> <kontinent kontinentID="3"> <nimi>Lõuna-Ameerika</nimi> <kirjeldus><![CDATA[Lõuna-Ameerika moodustab 3.5% maakera pinnast.]]></kirjeldus> <url><![CDATA[http://en.wikipedia.org/wiki/South_America]]></url> </kontinent> </kontinendid> <valuutad> <valuuta nimi="USD">1.3871</valuuta> <valuuta nimi="SEK">1.8867</valuuta> <valuuta nimi="DKK">7.4647</valuuta> </valuutad> </reisipakkumised>
XML skeemifailid jaotatud nimeruumidesse
Reisipakkumised_skeem.xsd
<?xml version="1.0" encoding="utf-8"?> <xs:schema xmlns:reis="reis_nimeruum" xmlns:ty="ühised_tüübid_nimeruum" xmlns:v="valuuta_kursid_nimeruum" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:import schemaLocation="Ühised_tüübid_skeem.xsd" namespace="ühised_tüübid_nimeruum"/> <xs:import schemaLocation="Reisi_skeem.xsd" namespace="reis_nimeruum"/> <xs:import schemaLocation="Valuutad_skeem.xsd" namespace="valuuta_kursid_nimeruum"/> <xs:element name="reisipakkumised"> <xs:complexType> <xs:sequence> <xs:element name="kontinendid"> <xs:complexType> <xs:sequence> <xs:element minOccurs="1" maxOccurs="unbounded" name="kontinent"> <xs:complexType> <xs:sequence> <xs:element name="nimi" type="ty:ainult_üks_sõna_tüüp" /> <xs:element name="kirjeldus" type="ty:üks_kuni_viisteist_sõna_tüüp"/> <xs:element name="url" type="ty:wiki_url_tüüp" /> <xs:element minOccurs="0" name="reisid"> <xs:complexType> <xs:sequence> <xs:element maxOccurs="unbounded" name="reis" type="reis:reisi_andmed_tüüp"/> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> <xs:attribute name="kontinentID" type="xs:unsignedInt" use="required"/> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="valuutad"> <xs:complexType> <xs:sequence> <xs:element name="valuuta" maxOccurs="unbounded" type="v:valuuta"/> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> <xs:attribute name="kehtib_kuni" type="xs:date" use="required" /> <xs:attribute name="keel" use="required"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="[a-z]{2}"/> </xs:restriction> </xs:simpleType> </xs:attribute> </xs:complexType> </xs:element> </xs:schema>
Reisi_skeem.xsd
<?xml version="1.0" encoding="utf-8"?> <xs:schema targetNamespace="reis_nimeruum" xmlns:ty="ühised_tüübid_nimeruum" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:import schemaLocation="Ühised_tüübid_skeem.xsd" namespace="ühised_tüübid_nimeruum"/> <xs:complexType name="reisi_andmed_tüüp"> <xs:sequence> <xs:element name="sihtkoht" type="ty:ainult_üks_sõna_tüüp"/> <xs:element name="algus_kuupäev" type="ty:kuupäev_tüüp"/> <xs:element name="lõpp_kuupäev" type="ty:kuupäev_tüüp" /> <xs:element name="hind" type="ty:positiivne_reaalarv_tüüp" /> <xs:element name="lühikirjeldus" type="ty:üks_kuni_viisteist_sõna_tüüp" /> <xs:element name="kirjeldus" type="xs:string" /> <xs:element name="url" type="ty:wiki_url_tüüp"/> </xs:sequence> <xs:attribute name="vabu_kohti_reisil" use="required"> <xs:simpleType> <xs:restriction base="xs:integer"> <xs:pattern value="[0-9]{1,2}"/> </xs:restriction> </xs:simpleType> </xs:attribute> <xs:attribute name="soodus_hind" type="xs:boolean" use="optional"/> <xs:attribute name="reisID" type="xs:unsignedInt" use="required"/> </xs:complexType> </xs:schema>
Valuutad.xsd
<?xml version="1.0" encoding="utf-8"?> <xs:schema targetNamespace="valuuta_kursid_nimeruum" xmlns:ty="ühised_tüübid_nimeruum" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:import schemaLocation="Ühised_tüübid_skeem.xsd" namespace="ühised_tüübid_nimeruum"/> <xs:complexType name="valuuta"> <xs:simpleContent> <xs:extension base="ty:positiivne_reaalarv_tüüp"> <xs:attribute name="nimi"> <xs:simpleType> <xs:restriction base="xs:token"> <xs:enumeration value="USD"/> <xs:enumeration value="SEK"/> <xs:enumeration value="GBP"/> <xs:enumeration value="DKK"/> </xs:restriction> </xs:simpleType> </xs:attribute> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:schema>
Ühised_tüübid.xsd
<?xml version="1.0" encoding="utf-8"?> <xs:schema targetNamespace="ühised_tüübid_nimeruum" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> <xs:simpleType name="positiivne_reaalarv_tüüp"> <xs:restriction base="xs:decimal"> <xs:minExclusive value="0"/> <xs:fractionDigits value="4"/> </xs:restriction> </xs:simpleType> <xs:simpleType name="positiivne_täisarv_tüüp"> <xs:restriction base="xs:unsignedByte"> </xs:restriction> </xs:simpleType> <xs:simpleType name="wiki_url_tüüp"> <xs:restriction base="xs:anyURI"> <xs:pattern value="http://en.wikipedia.org/.*"/> </xs:restriction> </xs:simpleType> <xs:simpleType name="kolmetäheline_valuutakurss_tüüp"> <xs:restriction base="xs:string"> <xs:pattern value="[A-Z]{3}"/> </xs:restriction> </xs:simpleType> <xs:simpleType name="kuupäev_tüüp"> <xs:restriction base="xs:date"> <xs:minInclusive value="2014-01-01"/> <xs:maxInclusive value="2020-01-01"/> </xs:restriction> </xs:simpleType> <xs:simpleType name="ainult_üks_sõna_tüüp"> <xs:restriction base="xs:string"> <xs:pattern value="\W*(\w+\W+){0,1}\w+\W*"/> <xs:maxLength value="30"/> </xs:restriction> </xs:simpleType> <xs:simpleType name="üks_kuni_viisteist_sõna_tüüp"> <xs:restriction base="xs:string"> <xs:pattern value="\W*(\w+\W+){0,15}\w+\W*"/> <xs:maxLength value="150"/> </xs:restriction> </xs:simpleType> </xs:schema>
XSLT töötlused
Reisipakkumiste info näidatakse tabelitena (Reisipakkumised_töötlus.xslt)
<?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet version="2.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>Reiside andmed html kujul</title> </head> </html> <body> <h1> Reisipakkumiste info seisuga: <xsl:value-of select ="reisipakkumised/@kehtib_kuni"/> </h1> <br/> <ul> <xsl:for-each select ="reisipakkumised/kontinendid/kontinent"> <li> <xsl:value-of select="nimi"/> <xsl:if test="count(reisid/reis) > 0"> <table border ="1"> <tr> <th>Jrk</th> <th>Reis</th> <th>Alguse kuupäev</th> <th>Lõpp kuupäev</th> <th>Reisi hind EUR</th> </tr> <xsl:for-each select="reisid/reis"> <xsl:variable name="hind_eur" select="hind"></xsl:variable> <tr> <td> <xsl:value-of select="position()"/>. </td> <td> <xsl:value-of select="sihtkoht"/> </td> <td> <xsl:value-of select="algus_kuupäev"/> </td> <td> <xsl:value-of select="lõpp_kuupäev"/> </td> <td> <xsl:value-of select="hind"/> </td> </tr> </xsl:for-each> </table> <br/> </xsl:if> <xsl:if test="count(reisid/reis)=0"> <br/> Reisid puuduvad. <br/> </xsl:if> </li> </xsl:for-each> </ul> <br/> Kõikide reiside arv kokku: <xsl:value-of select ="count(reisipakkumised/kontinendid/kontinent/reisid/reis)"/> </body> </xsl:template> </xsl:stylesheet>
Reside hinnad arvutatakse valuutakursside lõikes (Reiside_hinnad_valuutakursside_lõikes.xslt)
<?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>Reiside hinnad teisendatuna erinevatesse valuutadesse</title> </head> </html> <body> <h1>Reiside hinnakiri valuutade lõikes:</h1> <table border ="1"> <tr bgcolor="#9acd32"> <th>Reis</th> <th>EUR</th> <xsl:for-each select="reisipakkumised/valuutad/valuuta"> <th> <xsl:value-of select="@nimi"/> </th> </xsl:for-each> </tr> <xsl:for-each select="reisipakkumised/kontinendid/kontinent/reisid/reis"> <xsl:variable name="hind_eur" select="hind"></xsl:variable> <tr> <td> <xsl:value-of select="sihtkoht"/> </td> <td> <xsl:value-of select="hind"/> </td> <xsl:for-each select="/reisipakkumised/valuutad/valuuta"> <xsl:variable name="valuuta_kurss" select="."></xsl:variable> <td> <xsl:value-of select="number($hind_eur) * number($valuuta_kurss)"/> </td> </xsl:for-each> </tr> </xsl:for-each> </table> </body> </xsl:template> </xsl:stylesheet>