Sense Of Direction
From ICO wiki
Kodutöö aines "Võrgurakendused II: hajussüsteemide ehitamine"
Meeskond
- Ilja Andrejev
- Aleksandr Babokin
- Vladislav Lahtarin
- Vladislav Kovaltsuk
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>