Difference between revisions of "Sense Of Direction"

From ICO wiki
(XML/XSD/XSLT)
(Meeskond)
Line 3: Line 3:
 
==Meeskond==
 
==Meeskond==
 
*Ilja Andrejev
 
*Ilja Andrejev
*Aleksandr Babokin
+
*Aleksandr Babõkin
 
*Vladislav Lahtarin
 
*Vladislav Lahtarin
*Vladislav Kovaltsuk
+
*Vladislav Kovaltšuk
  
 
=XML/XSD/XSLT=
 
=XML/XSD/XSLT=

Revision as of 21:36, 15 March 2017

Kodutöö aines "Võrgurakendused II: hajussüsteemide ehitamine"

Meeskond

  • Ilja Andrejev
  • Aleksandr Babõkin
  • Vladislav Lahtarin
  • Vladislav Kovaltšuk

XML/XSD/XSLT

XML

<?xml version="1.0" encoding="utf-8"?>
<bussiLiinid>
    <bussiLiin liik="Ekspress" number="456TN">
        <buss bussiLiik="tavaline">
            <regMark>567TFL</regMark>
            <mark>Scania</mark>
            <mudel>68l</mudel>
            <maht yhik="kohta">45</maht>
            <varustus>Kohviautomaat, 220 V, A/C, internet, multimeedia, WC</varustus>
        </buss>
        <bussiJuht>
            <nimi><![CDATA[Jaan]]></nimi>
            <perekonnaNimi><![CDATA[Puu]]></perekonnaNimi>
        </bussiJuht>
        <marsruut>
            <lahteKoht valjumine="15:00"><![CDATA[Tallinn]]></lahteKoht>
            <sihtKoht saabumine="18:30"><![CDATA[Narva]]></sihtKoht>
            <soiduKestusTund yhik="h">3</soiduKestusTund>
            <soiduKestusMinut yhik="m">30</soiduKestusMinut>
        </marsruut>
        <suund><![CDATA[Tallinn - Narva]]></suund>
        <peatused>
            <peatus saabumine="17:30"><![CDATA[Kohtla-Jarve]]></peatus>
            <peatus saabumine="17:45"><![CDATA[Johvi]]></peatus>
            <peatus saabumine="18:05"><![CDATA[Sillamae]]></peatus>
        </peatused>
        <valjumisPaevad>
            <valjumisPaev soidab="true">E</valjumisPaev>
            <valjumisPaev soidab="true">T</valjumisPaev>
            <valjumisPaev soidab="true">K</valjumisPaev>
            <valjumisPaev soidab="true">N</valjumisPaev>
            <valjumisPaev soidab="true">R</valjumisPaev>
            <valjumisPaev soidab="false">L</valjumisPaev>
            <valjumisPaev soidab="false">P</valjumisPaev>
        </valjumisPaevad>
    </bussiLiin>
    <bussiLiin liik="Ekspress" number="456NT">
        <buss bussiLiik="tavaline">
            <regMark>567TFL</regMark>
            <mark>Scania</mark>
            <mudel>68l</mudel>
            <maht yhik="kohta">45</maht>
            <varustus>Kohviautomaat, 220 V, A/C, internet, multimeedia, WC</varustus>
        </buss>
        <bussiJuht>
            <nimi><![CDATA[Jaan]]></nimi>
            <perekonnaNimi><![CDATA[Puu]]></perekonnaNimi>
        </bussiJuht>
        <marsruut>
            <lahteKoht valjumine="19:00"><![CDATA[Narva]]></lahteKoht>
            <sihtKoht saabumine="22:30"><![CDATA[Tallinn]]></sihtKoht>
            <soiduKestusTund yhik="h">3</soiduKestusTund>
            <soiduKestusMinut yhik="m">30</soiduKestusMinut>
        </marsruut>
        <suund><![CDATA[Narva - Tallinn]]></suund>
        <peatused>
            <peatus saabumine="19:25"><![CDATA[Sillamae]]></peatus>
            <peatus saabumine="19:45"><![CDATA[Johvi]]></peatus>
            <peatus saabumine="20:00"><![CDATA[Kohtla-Jarve]]></peatus>
        </peatused>
        <valjumisPaevad>
            <valjumisPaev soidab="true">E</valjumisPaev>
            <valjumisPaev soidab="true">T</valjumisPaev>
            <valjumisPaev soidab="true">K</valjumisPaev>
            <valjumisPaev soidab="true">N</valjumisPaev>
            <valjumisPaev soidab="true">R</valjumisPaev>
            <valjumisPaev soidab="false">L</valjumisPaev>
            <valjumisPaev soidab="false">P</valjumisPaev>
        </valjumisPaevad>
    </bussiLiin>
    <bussiLiin liik="Ekspress" number="189TP">
        <buss bussiLiik="tavaline">
            <regMark>496DLY</regMark>
            <mark>Scania</mark>
            <mudel>40l</mudel>
            <maht yhik="kohta">40</maht>
            <varustus>Kohviautomaat, 220 V, A/C, internet, multimeedia, WC</varustus>
        </buss>
        <bussiJuht>
            <nimi><![CDATA[Jaak]]></nimi>
            <perekonnaNimi><![CDATA[Mand]]></perekonnaNimi>
        </bussiJuht>
        <marsruut>
            <lahteKoht valjumine="14:00"><![CDATA[Tallinn]]></lahteKoht>
            <sihtKoht saabumine="15:50"><![CDATA[Parnu]]></sihtKoht>
            <soiduKestusTund yhik="h">1</soiduKestusTund>
            <soiduKestusMinut yhik="m">50</soiduKestusMinut>
        </marsruut>
        <suund><![CDATA[Tallinn - Parnu]]></suund>
        <peatused>
            <peatus saabumine="14:20"><![CDATA[Vana-Paaskula]]></peatus>
        </peatused>
        <valjumisPaevad>
            <valjumisPaev soidab="false">E</valjumisPaev>
            <valjumisPaev soidab="false">T</valjumisPaev>
            <valjumisPaev soidab="false">K</valjumisPaev>
            <valjumisPaev soidab="false">N</valjumisPaev>
            <valjumisPaev soidab="true">R</valjumisPaev>
            <valjumisPaev soidab="true">L</valjumisPaev>
            <valjumisPaev soidab="true">P</valjumisPaev>
        </valjumisPaevad>
    </bussiLiin>
    <bussiLiin liik="Ekspress" number="189PT">
        <buss bussiLiik="tavaline">
            <regMark>496DLY</regMark>
            <mark>Scania</mark>
            <mudel>40l</mudel>
            <maht yhik="kohta">40</maht>
            <varustus>Kohviautomaat, 220 V, A/C, internet, multimeedia, WC</varustus>
        </buss>
        <bussiJuht>
            <nimi><![CDATA[Jaak]]></nimi>
            <perekonnaNimi><![CDATA[Mand]]></perekonnaNimi>
        </bussiJuht>
        <marsruut>
            <lahteKoht valjumine="16:30"><![CDATA[Parnu]]></lahteKoht>
            <sihtKoht saabumine="18:20"><![CDATA[Tallinn]]></sihtKoht>
            <soiduKestusTund yhik="h">1</soiduKestusTund>
            <soiduKestusMinut yhik="m">50</soiduKestusMinut>
        </marsruut>
        <suund><![CDATA[Parnu - Tallinn]]></suund>
        <peatused>
            <peatus saabumine="18:00"><![CDATA[Vana-Paaskula]]></peatus>
        </peatused>
        <valjumisPaevad>
            <valjumisPaev soidab="false">E</valjumisPaev>
            <valjumisPaev soidab="false">T</valjumisPaev>
            <valjumisPaev soidab="false">K</valjumisPaev>
            <valjumisPaev soidab="false">N</valjumisPaev>
            <valjumisPaev soidab="true">R</valjumisPaev>
            <valjumisPaev soidab="true">L</valjumisPaev>
            <valjumisPaev soidab="true">P</valjumisPaev>
        </valjumisPaevad>
    </bussiLiin>
    <bussiLiin liik="Ekspress" number="738TT">
        <buss bussiLiik="tavaline">
            <regMark>209BDI</regMark>
            <mark>Scania</mark>
            <mudel>55l</mudel>
            <maht yhik="kohta">50</maht>
            <varustus>Kohviautomaat, 220 V, A/C, internet, multimeedia, WC</varustus>
        </buss>
        <bussiJuht>
            <nimi><![CDATA[Raul]]></nimi>
            <perekonnaNimi><![CDATA[Kala]]></perekonnaNimi>
        </bussiJuht>
        <marsruut>
            <lahteKoht valjumine="17:00"><![CDATA[Tallinn]]></lahteKoht>
            <sihtKoht saabumine="19:30"><![CDATA[Tartu]]></sihtKoht>
            <soiduKestusTund yhik="h">2</soiduKestusTund>
            <soiduKestusMinut yhik="m">30</soiduKestusMinut>
        </marsruut>
        <suund><![CDATA[Tallinn - Tartu]]></suund>
        <peatused>
            <peatus saabumine="17:15"><![CDATA[Tallinna Lennujaam]]></peatus>
        </peatused>
        <valjumisPaevad>
            <valjumisPaev soidab="true">E</valjumisPaev>
            <valjumisPaev soidab="true">T</valjumisPaev>
            <valjumisPaev soidab="true">K</valjumisPaev>
            <valjumisPaev soidab="true">N</valjumisPaev>
            <valjumisPaev soidab="true">R</valjumisPaev>
            <valjumisPaev soidab="true">L</valjumisPaev>
            <valjumisPaev soidab="true">P</valjumisPaev>
        </valjumisPaevad>
    </bussiLiin>
    <bussiLiin liik="Ekspress" number="738TT">
        <buss bussiLiik="tavaline">
            <regMark>209BDI</regMark>
            <mark>Scania</mark>
            <mudel>55l</mudel>
            <maht yhik="kohta">50</maht>
            <varustus>Kohviautomaat, 220 V, A/C, internet, multimeedia, WC</varustus>
        </buss>
        <bussiJuht>
            <nimi><![CDATA[Raul]]></nimi>
            <perekonnaNimi><![CDATA[Kala]]></perekonnaNimi>
        </bussiJuht>
        <marsruut>
            <lahteKoht valjumine="20:00"><![CDATA[Tartu]]></lahteKoht>
            <sihtKoht saabumine="22:30"><![CDATA[Tallinn]]></sihtKoht>
            <soiduKestusTund yhik="h">2</soiduKestusTund>
            <soiduKestusMinut yhik="m">30</soiduKestusMinut>
        </marsruut>
        <suund><![CDATA[Tartu - Tallinn]]></suund>
        <peatused>
            <peatus saabumine="22:15"><![CDATA[Tallinna Lennujaam]]></peatus>
        </peatused>
        <valjumisPaevad>
            <valjumisPaev soidab="true">E</valjumisPaev>
            <valjumisPaev soidab="true">T</valjumisPaev>
            <valjumisPaev soidab="true">K</valjumisPaev>
            <valjumisPaev soidab="true">N</valjumisPaev>
            <valjumisPaev soidab="true">R</valjumisPaev>
            <valjumisPaev soidab="true">L</valjumisPaev>
            <valjumisPaev soidab="true">P</valjumisPaev>
        </valjumisPaevad>
    </bussiLiin>
</bussiLiinid>

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="bussiLiinid">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="unbounded" name="bussiLiin">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="buss">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="regMark" type="xs:string" />
                    <xs:element name="mark" type="xs:string" />
                    <xs:element name="mudel" type="xs:string" />
                    <xs:element name="maht">
                      <xs:complexType>
                        <xs:simpleContent>
                          <xs:extension base="xs:unsignedByte">
                            <xs:attribute name="yhik" type="xs:string" use="required" />
                          </xs:extension>
                        </xs:simpleContent>
                      </xs:complexType>
                    </xs:element>
                    <xs:element minOccurs="0" name="varustus" type="xs:string" />
                  </xs:sequence>
                  <xs:attribute name="bussiLiik" type="xs:string" use="optional" />
                </xs:complexType>
              </xs:element>
              <xs:element name="bussiJuht">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="nimi" type="xs:string" />
                    <xs:element name="perekonnaNimi" type="xs:string" />
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
              <xs:element name="marsruut">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="lahteKoht">
                      <xs:complexType>
                        <xs:simpleContent>
                          <xs:extension base="xs:string">
                            <xs:attribute name="valjumine" type="xs:string" use="required" />
                          </xs:extension>
                        </xs:simpleContent>
                      </xs:complexType>
                    </xs:element>
                    <xs:element name="sihtKoht">
                      <xs:complexType>
                        <xs:simpleContent>
                          <xs:extension base="xs:string">
                            <xs:attribute name="saabumine" type="xs:string" use="required" />
                          </xs:extension>
                        </xs:simpleContent>
                      </xs:complexType>
                    </xs:element>
                    <xs:element name="soiduKestusTund">
                      <xs:complexType>
                        <xs:simpleContent>
                          <xs:extension base="xs:unsignedByte">
                            <xs:attribute name="yhik" type="xs:string" use="required" />
                          </xs:extension>
                        </xs:simpleContent>
                      </xs:complexType>
                    </xs:element>
                    <xs:element name="soiduKestusMinut">
                      <xs:complexType>
                        <xs:simpleContent>
                          <xs:extension base="xs:unsignedByte">
                            <xs:attribute name="yhik" type="xs:string" use="required" />
                          </xs:extension>
                        </xs:simpleContent>
                      </xs:complexType>
                    </xs:element>
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
              <xs:element name="suund" type="xs:string" />
              <xs:element name="peatused">
                <xs:complexType mixed="true">
                  <xs:sequence minOccurs="0">
                    <xs:element maxOccurs="unbounded" name="peatus">
                      <xs:complexType>
                        <xs:simpleContent>
                          <xs:extension base="xs:string">
                            <xs:attribute name="saabumine" type="xs:string" use="required" />
                          </xs:extension>
                        </xs:simpleContent>
                      </xs:complexType>
                    </xs:element>
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
              <xs:element name="valjumisPaevad">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element minOccurs="1" maxOccurs="7" name="valjumisPaev">
                      <xs:complexType>
                        <xs:simpleContent>
                          <xs:extension base="xs:string">
                            <xs:attribute name="soidab" type="xs:boolean" use="required" />
                          </xs:extension>
                        </xs:simpleContent>
                      </xs:complexType>
                    </xs:element>
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
            </xs:sequence>
            <xs:attribute name="liik" type="xs:string" use="optional" />
            <xs:attribute name="number" type="xs:string" use="required" />
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

XSLT(html)

<?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>Bussiliini info</title>
        <style>
          body {background-color:FFFFCC;}
          table {width:700px; text-align: left; margin: auto; border: 3px solid black; font-size: large;}
          #bussiNo {text-align: center;}
        </style>
      </head>
      <body>
        <xsl:for-each select="bussiLiinid/bussiLiin">
          <table>
            <tr>
              <th id="bussiNo" colspan="4">
                <xsl:text>Bussiliini no. </xsl:text>
                <xsl:value-of select="@number"></xsl:value-of>
                <xsl:text> </xsl:text>
                <xsl:value-of select="@liik"></xsl:value-of>
              </th>
            </tr>
            <tr>
              <td>
                <xsl:text>Suund</xsl:text>
              </td>
              <td>
                <xsl:value-of select="suund"></xsl:value-of>
              </td>
              <td>
                <xsl:text>Kestus</xsl:text>
              </td>
              <td>
                <xsl:value-of select="marsruut/soiduKestusTund" />
                <xsl:value-of select="marsruut/soiduKestusTund/@yhik" />
                <xsl:text> </xsl:text>
                <xsl:value-of select="marsruut/soiduKestusMinut" />
                <xsl:value-of select="marsruut/soiduKestusMinut/@yhik" />
              </td>
            </tr>
            <tr>
              <td>
                <xsl:text>Valjumine</xsl:text>
              </td>
              <td>
                <xsl:value-of select="marsruut/lahteKoht/@valjumine" />
              </td>
              <td>
                <xsl:text>Saabumine</xsl:text>
              </td>
              <td>
                <xsl:value-of select="marsruut/sihtKoht/@saabumine" />
              </td>
            </tr>
            <tr>
              <td>
                <xsl:text>Valjumispaevad</xsl:text>
              </td>
              <td colspan="3">
                <xsl:for-each select="valjumisPaevad/valjumisPaev">
                  <xsl:if test="@soidab = 'true'">
                    <xsl:value-of select="." />
                    <xsl:text> </xsl:text>
                  </xsl:if>
                </xsl:for-each>
              </td>
            </tr>
            <tr>
              <td>
                <xsl:text>Bussi mahutuvus</xsl:text>
              </td>
              <td colspan="3">
                <xsl:value-of select="buss/maht" />
                <xsl:text> </xsl:text>
                <xsl:value-of select="buss/maht/@yhik" />
              </td>
            </tr>
            <xsl:if test="buss/varustus">
              <tr>
                <td>
                  <xsl:text>Varustus</xsl:text>
                </td>
                <td colspan="3">
                  <xsl:value-of select="buss/varustus" />
                </td>
              </tr>
            </xsl:if>
            <xsl:if test="peatused/peatus">
              <th colspan="2">
                <xsl:text>Peatused</xsl:text>
              </th>
              <th>
                <xsl:text>Saabumine</xsl:text>
              </th>
            </xsl:if>
            <xsl:for-each select="peatused/peatus">
              <tr>
                <td colspan="2">
                  <xsl:value-of select="." />
                </td>
                <td>
                  <xsl:value-of select="@saabumine" />
                </td>
              </tr>
            </xsl:for-each>
          </table>
          <br />
        </xsl:for-each>
      </body>
    </html>
  </xsl:template>
</xsl:stylesheet>

XSLT(txt)

<?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="text" indent="yes" />
    <xsl:template match="/">
        <xsl:text>Bussijuhide tunniplaan</xsl:text>
        <xsl:for-each select="bussiLiinid/bussiLiin">
            <xsl:text></xsl:text>
            <xsl:text></xsl:text>
            <xsl:value-of select="bussiJuht/nimi" />
            <xsl:text></xsl:text>
            <xsl:value-of select="bussiJuht/perekonnaNimi" />
            <xsl:text></xsl:text>
            <xsl:value-of select="suund" />
            <xsl:text></xsl:text>
            <xsl:for-each select="valjumisPaevad/valjumisPaev">
                <xsl:if test="@soidab = 'true'">
                    <xsl:value-of select="." />
                    <xsl:text></xsl:text>
                </xsl:if>
            </xsl:for-each>
            <xsl:text></xsl:text>
            <xsl:value-of select="marsruut/lahteKoht" />
            <xsl:text></xsl:text>
            <xsl:value-of select="marsruut/lahteKoht/@valjumine" />
            <xsl:text> -> </xsl:text>
            <xsl:for-each select="peatused/peatus">
                <xsl:value-of select="." />
                <xsl:text></xsl:text>
                <xsl:value-of select="@saabumine" />
                <xsl:text> -> </xsl:text>
            </xsl:for-each>
            <xsl:value-of select="marsruut/sihtKoht" />
            <xsl:text></xsl:text>
            <xsl:value-of select="marsruut/sihtKoht/@saabumine" />
        </xsl:for-each>
    </xsl:template>
</xsl:stylesheet>