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>