XYZ: Difference between revisions

From ICO wiki
Jump to navigationJump to search
No edit summary
Line 10: Line 10:




XML projekti failid asuvad [https://drive.google.com/file/d/0B1SZnPnN5D7AYW5zeEpyT01MUEk/edit?usp=sharing siin] (esitatud 15.03.2014)
XML projekti failid asuvad [https://drive.google.com/file/d/0B1SZnPnN5D7AYW5zeEpyT01MUEk/edit?usp=sharing siin] (esitatud 15.02.2015)




Line 17: Line 17:
<pre>
<pre>


<?xml version="1.0" encoding="utf-8" ?>  
<?xml version="1.0" encoding="utf-8" ?>
<reisipakkumised xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
<reisipakkumised xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                 xsi:noNamespaceSchemaLocation="Reisipakkumised_skeem.xsd"
                 xsi:noNamespaceSchemaLocation="Reisipakkumised_skeem.xsd"
                 kehtib_kuni="2014-12-31" keel="ee">
                 kehtib_kuni="2015-12-31" keel="ee">


   <kontinendid>
   <kontinendid>
Line 30: Line 30:
         <reis soodus_hind="true" vabu_kohti_reisil="20" reisID="1">
         <reis soodus_hind="true" vabu_kohti_reisil="20" reisID="1">
           <sihtkoht>Pariis</sihtkoht>
           <sihtkoht>Pariis</sihtkoht>
           <algus_kuupäev>2014-05-01</algus_kuupäev>
           <algus_kuupäev>2015-05-01</algus_kuupäev>
           <lõpp_kuupäev>2014-05-15</lõpp_kuupäev>
           <lõpp_kuupäev>2015-05-15</lõpp_kuupäev>
           <hind>500</hind>
           <hind>500</hind>
           <lühikirjeldus><![CDATA[Külasta Pariisi kevadel]]></lühikirjeldus>
           <lühikirjeldus><![CDATA[Külasta Pariisi kevadel]]></lühikirjeldus>
Line 42: Line 42:
         <reis soodus_hind="false" vabu_kohti_reisil="4" reisID="2">
         <reis soodus_hind="false" vabu_kohti_reisil="4" reisID="2">
           <sihtkoht>Amsterdam</sihtkoht>
           <sihtkoht>Amsterdam</sihtkoht>
           <algus_kuupäev>2014-09-17</algus_kuupäev>
           <algus_kuupäev>2015-09-17</algus_kuupäev>
           <lõpp_kuupäev>2014-09-20</lõpp_kuupäev>
           <lõpp_kuupäev>2015-09-20</lõpp_kuupäev>
           <hind>700</hind>
           <hind>700</hind>
           <lühikirjeldus><![CDATA[Amsterdami punased laternad]]></lühikirjeldus>
           <lühikirjeldus><![CDATA[Amsterdami punased laternad]]></lühikirjeldus>
Line 51: Line 51:
       </reisid>
       </reisid>
     </kontinent>
     </kontinent>
   
 
     <kontinent kontinentID="2">
     <kontinent kontinentID="2">
       <nimi>Aasia</nimi>
       <nimi>Aasia</nimi>
Line 70: Line 70:
     <kontinent kontinentID="3">
     <kontinent kontinentID="3">
       <nimi>Lõuna-Ameerika</nimi>
       <nimi>Lõuna-Ameerika</nimi>
       <kirjeldus><![CDATA[Lõuna-Ameerika moodustab 3.5% maakera pinnast.]]></kirjeldus>    
       <kirjeldus><![CDATA[Lõuna-Ameerika moodustab 3.5% maakera pinnast.]]></kirjeldus>
       <url><![CDATA[http://en.wikipedia.org/wiki/South_America]]></url>
       <url><![CDATA[http://en.wikipedia.org/wiki/South_America]]></url>
     </kontinent>
     </kontinent>


   </kontinendid>
   </kontinendid>
 
 
   <valuutad>
   <valuutad>
     <valuuta nimi="USD">1.3871</valuuta>
     <valuuta nimi="USD">1.3871</valuuta>
Line 89: Line 89:
===XML skeemifailid jaotatud nimeruumidesse ===
===XML skeemifailid jaotatud nimeruumidesse ===


'''Reisipakkumised.xsd'''
'''Reisipakkumised_skeem.xsd'''
<pre>
<pre>
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<xs:schema      
<xs:schema
             xmlns:reis="reis_nimeruum"
             xmlns:reis="reis_nimeruum"
             xmlns:ty="ühised_tüübid_nimeruum"
             xmlns:ty="ühised_tüübid_nimeruum"
Line 98: Line 98:
             xmlns:xs="http://www.w3.org/2001/XMLSchema">
             xmlns:xs="http://www.w3.org/2001/XMLSchema">


<xs:import schemaLocation="Ühised_tüübid_skeem.xsd" namespace="ühised_tüübid_nimeruum"/>
  <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="Reisi_skeem.xsd" namespace="reis_nimeruum"/>
<xs:import schemaLocation="Valuutad_skeem.xsd" namespace="valuuta_kursid_nimeruum"/>
  <xs:import schemaLocation="Valuutad_skeem.xsd" namespace="valuuta_kursid_nimeruum"/>


   <xs:element name="reisipakkumised">  
   <xs:element name="reisipakkumised">
     <xs:complexType>
     <xs:complexType>
       <xs:sequence>
       <xs:sequence>
Line 111: Line 111:
                 <xs:complexType>
                 <xs:complexType>
                   <xs:sequence>
                   <xs:sequence>
                   
 
                     <xs:element name="nimi" type="ty:ainult_üks_sõna_tüüp" />
                     <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="kirjeldus" type="ty:üks_kuni_viisteist_sõna_tüüp"/>
                     <xs:element name="url" type="ty:wiki_url_tüüp" />
                     <xs:element name="url" type="ty:wiki_url_tüüp" />
                   
 
                     <xs:element minOccurs="0" name="reisid">
                     <xs:element minOccurs="0" name="reisid">
                       <xs:complexType>
                       <xs:complexType>
                         <xs:sequence>
                         <xs:sequence>
                           <xs:element maxOccurs="unbounded" name="reis" type="reis:reisi_andmed_tüüp"/>
                           <xs:element maxOccurs="unbounded" name="reis" type="reis:reisi_andmed_tüüp"/>
                         </xs:sequence>                    
                         </xs:sequence>
                       </xs:complexType>
                       </xs:complexType>
                     </xs:element>
                     </xs:element>
Line 130: Line 130:
           </xs:complexType>
           </xs:complexType>
         </xs:element>
         </xs:element>
       
 
         <xs:element name="valuutad">
         <xs:element name="valuutad">
           <xs:complexType>
           <xs:complexType>
Line 138: Line 138:
           </xs:complexType>
           </xs:complexType>
         </xs:element>
         </xs:element>
       
 
       </xs:sequence>
       </xs:sequence>
       <xs:attribute name="kehtib_kuni" type="xs:date" use="required" />
       <xs:attribute name="kehtib_kuni" type="xs:date" use="required" />
Line 148: Line 148:
         </xs:simpleType>
         </xs:simpleType>
       </xs:attribute>
       </xs:attribute>
     </xs:complexType>  
     </xs:complexType>
   </xs:element>
   </xs:element>
</xs:schema>
</xs:schema>
Line 192: Line 192:
<pre>
<pre>
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<xs:schema  targetNamespace="valuuta_kursid_nimeruum"
<xs:schema  targetNamespace="valuuta_kursid_nimeruum"
             xmlns:ty="ühised_tüübid_nimeruum"  
             xmlns:ty="ühised_tüübid_nimeruum"
             xmlns:xs="http://www.w3.org/2001/XMLSchema">
             xmlns:xs="http://www.w3.org/2001/XMLSchema">


   <xs:import schemaLocation="Ühised_tüübid_skeem.xsd" namespace="ühised_tüübid_nimeruum"/>
   <xs:import schemaLocation="Ühised_tüübid_skeem.xsd" namespace="ühised_tüübid_nimeruum"/>
 
 
   <xs:complexType name="valuuta">
   <xs:complexType name="valuuta">
     <xs:simpleContent>
     <xs:simpleContent>
Line 228: Line 228:
     <xs:restriction base="xs:decimal">
     <xs:restriction base="xs:decimal">
       <xs:minExclusive value="0"/>
       <xs:minExclusive value="0"/>
       <xs:fractionDigits value="4"/>    
       <xs:fractionDigits value="4"/>
     </xs:restriction>
     </xs:restriction>
   </xs:simpleType>
   </xs:simpleType>
    
 
    <xs:simpleType name="positiivne_täisarv_tüüp">
   <xs:simpleType name="positiivne_täisarv_tüüp">
     <xs:restriction base="xs:unsignedByte">
     <xs:restriction base="xs:unsignedByte">
     </xs:restriction>
     </xs:restriction>
   </xs:simpleType>
   </xs:simpleType>


   <xs:simpleType name="wiki_url_tüüp">
   <xs:simpleType name="wiki_url_tüüp">
Line 262: Line 262:
     </xs:restriction>
     </xs:restriction>
   </xs:simpleType>
   </xs:simpleType>
 
 
   <xs:simpleType name="üks_kuni_viisteist_sõna_tüüp">
   <xs:simpleType name="üks_kuni_viisteist_sõna_tüüp">
     <xs:restriction base="xs:string">
     <xs:restriction base="xs:string">
Line 269: Line 269:
     </xs:restriction>
     </xs:restriction>
   </xs:simpleType>
   </xs:simpleType>
 
 
</xs:schema>
</xs:schema>
</pre>
</pre>
Line 276: Line 276:
===XSLT töötlused ===
===XSLT töötlused ===


'''Reisipakkumiste info näidatakse tabelitena'''
'''Reisipakkumiste info näidatakse tabelitena (Reisipakkumised_töötlus.xslt)'''
 
<pre>
<pre>
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="2.0"  
<xsl:stylesheet version="2.0"
     xmlns:xsl="http://www.w3.org/1999/XSL/Transform"  
     xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
     xmlns:msxsl="urn:schemas-microsoft-com:xslt"  
     xmlns:msxsl="urn:schemas-microsoft-com:xslt"
     exclude-result-prefixes="msxsl">
     exclude-result-prefixes="msxsl">
    
 
    <xsl:output method="html" indent="yes"/>
   <xsl:output method="html" indent="yes"/>
    
 
    <xsl:template match="/">
   <xsl:template match="/">
      <html>
    <html>
        <head>
      <head>
          <title>Reiside andmed html kujul</title>
        <title>Reiside andmed html kujul</title>
        </head>
      </head>
      </html>
    </html>
      <body>
    <body>
        <h1>Reisipakkumiste info seisuga:
      <h1>
          <xsl:value-of select ="reisipakkumised/@kehtib_kuni"/>
        Reisipakkumiste info seisuga:
        </h1>
        <xsl:value-of select ="reisipakkumised/@kehtib_kuni"/>
        <br/>
      </h1>
        <ul>         
      <br/>
          <xsl:for-each select ="reisipakkumised/kontinendid/kontinent">
      <ul>
            <li>
         <xsl:for-each select ="reisipakkumised/kontinendid/kontinent">
          <li>
             <xsl:value-of select="nimi"/>
             <xsl:value-of select="nimi"/>
             
 
              <xsl:if test="count(reisid/reis) &gt; 0">
            <xsl:if test="count(reisid/reis) > 0">
             
 
               <table border ="1">
               <table border ="1">
                 <tr>
                 <tr>
Line 312: Line 314:
                   <th>Reisi hind EUR</th>
                   <th>Reisi hind EUR</th>
                 </tr>
                 </tr>
                 
                  <xsl:for-each select="reisid/reis">


                    <xsl:variable name="hind_eur" select="hind"></xsl:variable>
                <xsl:for-each select="reisid/reis">
 
                  <xsl:variable name="hind_eur" select="hind"></xsl:variable>
                   <tr>
                   <tr>
                     <td>
                     <td>
Line 331: Line 333:
                     <td>
                     <td>
                       <xsl:value-of select="hind"/>
                       <xsl:value-of select="hind"/>
                     </td>                  
                     </td>
                   </tr>
                   </tr>
                 </xsl:for-each>  
                 </xsl:for-each>
               
 
               </table>
               </table>
               <br/>
               <br/>


              </xsl:if>
            </xsl:if>
             
 
              <xsl:if test="count(reisid/reis)=0">
            <xsl:if test="count(reisid/reis)=0">
                <br/>
              <br/>
                Reisid puuduvad.
              Reisid puuduvad.
                <br/>
              <br/>
              </xsl:if>
            </xsl:if>
               
 
            </li>
          </li>
              </xsl:for-each>        
        </xsl:for-each>
        </ul>  
      </ul>
         
 
        <br/>
      <br/>
        Kõikide reiside arv kokku: <xsl:value-of select ="count(reisipakkumised/kontinendid/kontinent/reisid/reis)"/>
      Kõikide reiside arv kokku: <xsl:value-of select ="count(reisipakkumised/kontinendid/kontinent/reisid/reis)"/>
               
 
      </body>  
    </body>
    </xsl:template>
  </xsl:template>
</xsl:stylesheet>
</xsl:stylesheet>


Line 360: Line 362:




'''Reside hinnad arvutatakse valuutakursside lõikes '''
'''Reside hinnad arvutatakse valuutakursside lõikes (Reiside_hinnad_valuutakursside_lõikes.xslt) '''
<pre>
<pre>
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
<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">
     xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl">
    <xsl:output method="html" indent="yes"/>
  <xsl:output method="html" indent="yes"/>
    
 
    <xsl:template match="/">
   <xsl:template match="/">
      <html>
    <html>
        <head>
      <head>
          <title>Reiside hinnad teisendatuna erinevatesse valuutadesse</title>
        <title>Reiside hinnad teisendatuna erinevatesse valuutadesse</title>
        </head>
      </head>
      </html>
    </html>
      <body>
    <body>
        <h1>Reiside hinnakiri valuutade lõikes:</h1>
      <h1>Reiside hinnakiri valuutade lõikes:</h1>
        <table border ="1">
      <table border ="1">
          <tr bgcolor="#9acd32">
        <tr bgcolor="#9acd32">
            <th>Reis</th>
          <th>Reis</th>
             <th>EUR</th>
          <th>EUR</th>
             <xsl:for-each select="reisipakkumised/valuutad/valuuta">
          <xsl:for-each select="reisipakkumised/valuutad/valuuta">
               <th>
             <th>
                 <xsl:value-of select="@nimi"/>                
              <xsl:value-of select="@nimi"/>
               </th>
            </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>
             </xsl:for-each>
           </tr>
           </tr>
          <xsl:for-each select="reisipakkumised/kontinendid/kontinent/reisid/reis">
        </xsl:for-each>
            <xsl:variable name="hind_eur" select="hind"></xsl:variable> 
      </table>
            <tr>
    </body>
              <td>
  </xsl:template>
                <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>
</xsl:stylesheet>



Revision as of 11:40, 15 February 2015

Meeskond XYZ

Meeskonna liikmed:

  • Sulev Pert


Kodutöö XML osa

XML 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[Mitte ühtegi teist Euroopa linna pole nii palju armastatud kui Pariisi. See linn jagab avasüli oma mõnusid – suurejoonelised etendused ooperiteatris kuni piknikuteni Seine-i jõe ääres. Rohkem kui miljoni elanikuga Pariis oli Prantsuse revolutsiooni võitlusväljaks. Tänu kunstile ja kultuurile on see Seine-i metropol tänapäeval üks maailma igatsetumaid reisisihte. 
Pariis äratab igatsusi – ka siis, kui parajasti seal ollakse.]]>
          </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>

TODO: Kodutöö osa: Veebiteenus (25.05.2014)

TODO: Kodutöö osa: Klientrakendus (25.05.2014)