Meeskond Raavo V2™: Difference between revisions
From ICO wiki
Jump to navigationJump to search
No edit summary |
No edit summary |
||
Line 46: | Line 46: | ||
NB! VAATA JUHISEID KUIDAS SEDA KORRALIKULT KÄIVITADA! PROGRAMMI SEES ON README FILE! | NB! VAATA JUHISEID KUIDAS SEDA KORRALIKULT KÄIVITADA! PROGRAMMI SEES ON README FILE! | ||
==XML== | ==XML Projekt== | ||
===XML file=== | |||
<source lang="xml"> | |||
<?xml version="1.0" encoding="utf-8" ?> | |||
<Bookings> | |||
<Booking id="1" confirmed="false"> | |||
<BookinggDate>2018-04-28</BookinggDate> | |||
<BookingTime>12:00:00</BookingTime> | |||
<ApplicationUser id="1" active="true"> | |||
<UserName><![CDATA[Maret Püüa]]></UserName> | |||
<UserEmail><![CDATA[maretpuua@gmail.com]]></UserEmail> | |||
<Phone><![CDATA[+3724375873]]></Phone> | |||
<Car id="1"> | |||
<Make><![CDATA[BMW]]></Make> | |||
<Model><![CDATA[E36]]></Model> | |||
<ReleaseYear>2001-02-15</ReleaseYear> | |||
<CarType id="1"> | |||
<TypeName><![CDATA[Kupee]]></TypeName> | |||
</CarType> | |||
</Car> | |||
</ApplicationUser> | |||
<Garage id="1"> | |||
<GarageName><![CDATA[Mihkel Repairs]]></GarageName> | |||
<GarageAddress><![CDATA[Lehola 5]]></GarageAddress> | |||
<GaragePhone><![CDATA[+3729002007]]></GaragePhone> | |||
<Service id="1"> | |||
<ServiceName><![CDATA[Õlivahetus]]></ServiceName> | |||
<ServicePrice currency="€">30</ServicePrice> | |||
<Unit><![CDATA[Tund]]></Unit> | |||
<ExtraInfo><![CDATA[Lehola parim õlivahetus]]></ExtraInfo> | |||
<ServiceType id="1"> | |||
<ServiceTypeName><![CDATA[Hooldustööd]]></ServiceTypeName> | |||
</ServiceType> | |||
</Service> | |||
</Garage> | |||
</Booking> | |||
<Booking id="2" confirmed="true"> | |||
<BookinggDate>2018-06-14</BookinggDate> | |||
<BookingTime>15:15:00</BookingTime> | |||
<ApplicationUser id="4" active="true"> | |||
<UserName><![CDATA[Ahto Leemet]]></UserName> | |||
<UserEmail><![CDATA[Leemet@gmail.com]]></UserEmail> | |||
<Phone><![CDATA[+3728463846]]></Phone> | |||
<Car id="7"> | |||
<Make><![CDATA[Opel]]></Make> | |||
<Model><![CDATA[Omega]]></Model> | |||
<ReleaseYear>1998-05-11</ReleaseYear> | |||
<CarType id="3"> | |||
<TypeName><![CDATA[Universaal]]></TypeName> | |||
</CarType> | |||
</Car> | |||
</ApplicationUser> | |||
<Garage id="3"> | |||
<GarageName><![CDATA[Garagefy Pärnu]]></GarageName> | |||
<GarageAddress><![CDATA[Luha 5]]></GarageAddress> | |||
<GaragePhone><![CDATA[+3729002009]]></GaragePhone> | |||
<Service id="4"> | |||
<ServiceName><![CDATA[Rehvivahetus]]></ServiceName> | |||
<ServicePrice currency="€">90</ServicePrice> | |||
<Unit><![CDATA[Üks Rehv]]></Unit> | |||
<ExtraInfo><![CDATA[Õnneliku lõpuga rehvivahetus]]></ExtraInfo> | |||
<ServiceType id="2"> | |||
<ServiceTypeName><![CDATA[Rehvitööd]]></ServiceTypeName> | |||
</ServiceType> | |||
</Service> | |||
</Garage> | |||
</Booking> | |||
<Booking id="9" confirmed="false"> | |||
<BookinggDate>2018-08-12</BookinggDate> | |||
<BookingTime>10:00:00</BookingTime> | |||
<ApplicationUser id="3" active="true"> | |||
<UserName><![CDATA[Rondo Ronnot]]></UserName> | |||
<UserEmail><![CDATA[Ronnot@gmail.com]]></UserEmail> | |||
<Phone><![CDATA[+372523933]]></Phone> | |||
<Car id="3"> | |||
<Make><![CDATA[Toyota]]></Make> | |||
<Model><![CDATA[Camry]]></Model> | |||
<ReleaseYear>1990-02-15</ReleaseYear> | |||
<CarType id="5"> | |||
<TypeName><![CDATA[Coupe]]></TypeName> | |||
</CarType> | |||
</Car> | |||
</ApplicationUser> | |||
<Garage id="4"> | |||
<GarageName><![CDATA[Kiirete poiste parandus]]></GarageName> | |||
<GarageAddress><![CDATA[Lehola 12]]></GarageAddress> | |||
<GaragePhone><![CDATA[+3726923123]]></GaragePhone> | |||
<Service id="3"> | |||
<ServiceName><![CDATA[Keemiline salongipuhastus]]></ServiceName> | |||
<ServicePrice currency="€">100</ServicePrice> | |||
<Unit><![CDATA[Tund]]></Unit> | |||
<ExtraInfo><![CDATA[Istmed läigivad nagu alles ostetud]]></ExtraInfo> | |||
<ServiceType id="3"> | |||
<ServiceTypeName><![CDATA[Salongitööd]]></ServiceTypeName> | |||
</ServiceType> | |||
</Service> | |||
</Garage> | |||
</Booking> | |||
</Bookings> | |||
</source> | |||
===XML Schema=== | |||
<source lang="xml"> | |||
<?xml version="1.0" encoding="utf-8" ?> | |||
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"> | |||
<xs:element name="Bookings"> | |||
<xs:complexType> | |||
<xs:sequence> | |||
<xs:element name="Booking" maxOccurs="unbounded" minOccurs="0"> | |||
<xs:complexType> | |||
<xs:sequence> | |||
<xs:element type="xs:date" name="BookinggDate"/> | |||
<xs:element type="xs:time" name="BookingTime"/> | |||
<xs:element name="ApplicationUser"> | |||
<xs:complexType> | |||
<xs:sequence> | |||
<xs:element type="xs:string" name="UserName"/> | |||
<xs:element type="xs:string" name="UserEmail"/> | |||
<xs:element type="xs:long" name="Phone"/> | |||
<xs:element name="Car"> | |||
<xs:complexType> | |||
<xs:sequence> | |||
<xs:element type="xs:string" name="Make"/> | |||
<xs:element type="xs:string" name="Model"/> | |||
<xs:element type="xs:date" name="ReleaseYear"/> | |||
<xs:element name="CarType"> | |||
<xs:complexType> | |||
<xs:sequence> | |||
<xs:element type="xs:string" name="TypeName"/> | |||
</xs:sequence> | |||
<xs:attribute type="xs:integer" name="id" use="required"/> | |||
</xs:complexType> | |||
</xs:element> | |||
</xs:sequence> | |||
<xs:attribute type="xs:integer" name="id" use="required"/> | |||
</xs:complexType> | |||
</xs:element> | |||
</xs:sequence> | |||
<xs:attribute type="xs:integer" name="id" use="required"/> | |||
<xs:attribute type="xs:boolean" name="active" use="required"/> | |||
</xs:complexType> | |||
</xs:element> | |||
<xs:element name="Garage"> | |||
<xs:complexType> | |||
<xs:sequence> | |||
<xs:element type="xs:string" name="GarageName"/> | |||
<xs:element type="xs:string" name="GarageAddress"/> | |||
<xs:element type="xs:long" name="GaragePhone"/> | |||
<xs:element name="Service"> | |||
<xs:complexType> | |||
<xs:sequence> | |||
<xs:element type="xs:string" name="ServiceName"/> | |||
<xs:element name="ServicePrice"> | |||
<xs:complexType> | |||
<xs:simpleContent> | |||
<xs:extension base="xs:decimal"> | |||
<xs:attribute type="xs:string" name="currency" use="required"/> | |||
</xs:extension> | |||
</xs:simpleContent> | |||
</xs:complexType> | |||
</xs:element> | |||
<xs:element type="xs:string" name="Unit"/> | |||
<xs:element type="xs:string" name="ExtraInfo"/> | |||
<xs:element name="ServiceType"> | |||
<xs:complexType> | |||
<xs:sequence> | |||
<xs:element type="xs:string" name="ServiceTypeName"/> | |||
</xs:sequence> | |||
<xs:attribute type="xs:integer" name="id" use="required"/> | |||
</xs:complexType> | |||
</xs:element> | |||
</xs:sequence> | |||
<xs:attribute type="xs:integer" name="id" use="required"/> | |||
</xs:complexType> | |||
</xs:element> | |||
</xs:sequence> | |||
<xs:attribute type="xs:integer" name="id" use="required"/> | |||
</xs:complexType> | |||
</xs:element> | |||
</xs:sequence> | |||
<xs:attribute type="xs:integer" name="id" use="required"/> | |||
<xs:attribute type="xs:boolean" name="confirmed" use="required"/> | |||
</xs:complexType> | |||
</xs:element> | |||
</xs:sequence> | |||
</xs:complexType> | |||
</xs:element> | |||
</xs:schema> | |||
</source> | |||
===XSLT HTML transformation=== | |||
<source lang="xml"> | |||
<?xml version="1.0" encoding="utf-8"?> | |||
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> | |||
<xsl:output method="html" indent="yes"/> | |||
<xsl:template match="/"> | |||
<html> | |||
<head> | |||
<title>Broneeringud</title> | |||
</head> | |||
<body> | |||
<h2>Broneeringud</h2> | |||
<ol> | |||
<xsl:variable name="confirmed">true</xsl:variable> | |||
<xsl:for-each select="Bookings/Booking"> | |||
<li> | |||
<b>Status: </b> | |||
<xsl:choose> | |||
<xsl:when test="@confirmed = $confirmed"> | |||
<b style="color:green;">CONFIRMED</b> | |||
</xsl:when> | |||
<xsl:otherwise> | |||
<b style="color:red;">PENDING</b> | |||
</xsl:otherwise> | |||
</xsl:choose> | |||
<br/> | |||
<b>Klient: </b> | |||
<ul> | |||
<b>Nimi: </b> | |||
<xsl:value-of select="ApplicationUser/UserName"/> | |||
<br/> | |||
<b>Mail: </b> | |||
<xsl:value-of select="ApplicationUser/UserEmail"/> | |||
</ul> | |||
<b>Auto: </b> | |||
<br/> | |||
<ul> | |||
<xsl:for-each select="ApplicationUser/Car"> | |||
<xsl:sort select="@id" /> | |||
<b>Tüüp: </b> | |||
<xsl:value-of select="CarType/TypeName"/> | |||
<br/> | |||
<b>Mark: </b> | |||
<xsl:value-of select="Make" /> | |||
<br/> | |||
<b>Mudel: </b> | |||
<xsl:value-of select="Model"/> | |||
<br/> | |||
<b>Väljalastud: </b> | |||
<xsl:value-of select="ReleaseYear"/> | |||
<br/> | |||
</xsl:for-each> | |||
</ul> | |||
<b>Broneeringu aeg:</b> | |||
<br/> | |||
<ul> | |||
<b>Aeg: </b> | |||
<xsl:value-of select="BookinggDate" /> - <xsl:value-of select="BookingTime"/><br/> | |||
</ul> | |||
<b>Töökoda:</b> | |||
<br/> | |||
<ul> | |||
<xsl:for-each select="Garage"> | |||
<xsl:sort select="@id" /> | |||
<b>Töökoja nimi: </b> | |||
<xsl:value-of select="GarageName"/> | |||
<br/> | |||
<b>Aadress: </b> | |||
<xsl:value-of select="GarageAddress"/> | |||
<br/> | |||
<b>Telefon: </b> | |||
<xsl:value-of select="GaragePhone"/> | |||
<br/> | |||
</xsl:for-each> | |||
</ul> | |||
<b>Teenus:</b> | |||
<br/> | |||
<ul> | |||
<xsl:for-each select="Garage/Service"> | |||
<xsl:sort select="@id"/> | |||
<b>Teenuse nimi: </b> | |||
<xsl:value-of select="ServiceName"/><br/> | |||
<b>Teenuse tüüp: </b> | |||
<xsl:value-of select="ServiceType/ServiceTypeName"/><br/> | |||
<b>Teenuse hind: </b> | |||
<xsl:value-of select="ServicePrice"/>€ - <xsl:value-of select="Unit"/><br/> | |||
<b>Lisainfo: </b> | |||
<xsl:value-of select="ExtraInfo"/><br/> | |||
</xsl:for-each> | |||
</ul> | |||
</li> | |||
<br/> | |||
</xsl:for-each> | |||
</ol> | |||
</body> | |||
</html> | |||
</xsl:template> | |||
</xsl:stylesheet> | |||
</source> | |||
===XSLT XML transformation=== | |||
<source lang="xml"> | |||
<?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="xml" indent="yes"/> | |||
<xsl:template match="/Bookings"> | |||
<Bookings> | |||
<xsl:variable name="confirmed">true</xsl:variable> | |||
<xsl:for-each select="Booking"> | |||
<Boooking> | |||
<Status> | |||
<xsl:choose> | |||
<xsl:when test="@confirmed = $confirmed"> | |||
Confirmed | |||
</xsl:when> | |||
<xsl:otherwise> | |||
Pending | |||
</xsl:otherwise> | |||
</xsl:choose> | |||
</Status> | |||
<Client> | |||
<Name> | |||
<xsl:value-of select="ApplicationUser/UserName"/> | |||
</Name> | |||
<Email> | |||
<xsl:value-of select="ApplicationUser/UserEmail"/> | |||
</Email> | |||
</Client> | |||
<Car> | |||
<xsl:for-each select="ApplicationUser/Car"> | |||
<Type> | |||
<xsl:value-of select="CarType/TypeName"/> | |||
</Type> | |||
<Make> | |||
<xsl:value-of select="Make"/> | |||
</Make> | |||
<Model> | |||
<xsl:value-of select="Model"/> | |||
</Model> | |||
<ReleaseDate> | |||
<xsl:value-of select="ReleaseYear"/> | |||
</ReleaseDate> | |||
</xsl:for-each> | |||
</Car> | |||
<BookingDate> | |||
<Date> | |||
<xsl:value-of select="BookinggDate"/> | |||
</Date> | |||
<Time> | |||
<xsl:value-of select="BookingTime"/> | |||
</Time> | |||
</BookingDate> | |||
<Garage> | |||
<xsl:for-each select="Garage"> | |||
<Name> | |||
<xsl:value-of select="GarageName"/> | |||
</Name> | |||
<Address> | |||
<xsl:value-of select="GarageAddress" /> | |||
</Address> | |||
<Phone> | |||
<xsl:value-of select="GaragePhone"/> | |||
</Phone> | |||
</xsl:for-each> | |||
</Garage> | |||
<Service> | |||
<xsl:for-each select="Garage/Service"> | |||
<Name> | |||
<xsl:value-of select="ServiceName"/> | |||
</Name> | |||
<Type> | |||
<xsl:value-of select="ServiceType/ServiceTypeName"/> | |||
</Type> | |||
<Price> | |||
<xsl:value-of select="ServicePrice"/> | |||
</Price> | |||
<Unit> | |||
<xsl:value-of select="Unit"/> | |||
</Unit> | |||
<ExtraInfo> | |||
<xsl:value-of select="ExtraInfo"/> | |||
</ExtraInfo> | |||
</xsl:for-each> | |||
</Service> | |||
</Boooking> | |||
</xsl:for-each> | |||
</Bookings> | |||
</xsl:template> | |||
</xsl:stylesheet> | |||
</source> | |||
==Blogi== | ==Blogi== | ||
'''30.03.2018''' Meeskonna moodustamine ja analüüsi koostamine<br> | '''30.03.2018''' Meeskonna moodustamine ja analüüsi koostamine<br> | ||
'''20.04.2018 - 27.05.2018''' Projekti koostamine<br> | '''20.04.2018 - 27.05.2018''' Projekti koostamine<br> | ||
'''31.05.2018''' XML koostamine<br> |
Revision as of 18:18, 31 May 2018
Liikmed
- Peeter Fridolin
- Kristo Leesmann
- Rando Rommot
Idee
Projekti nimi: Garagefy
Projekti eesmärk on luua autoremonditöökodadele broneerimissüsteemi veebiteenus, mida oleks hiljem lihtne klientrakenduses ära kasutada. Veebiteenus peab olema universaalne, et see sobiks erinevatele autoremonditöökodadele kasutamiseks.
Analüüs
Must have
Klient
- Süsteemi registreerimine ja sisse logimine
- Remonditeenuse broneerimine
- Broneeringute ülevaade
- Enda kasutaja andmete muutmine
Töötaja
- Sisse logimine
- Kõikide broneeringute ülevaade
Administraator
- Sisse logimine
- Kasutajate haldamine
- Broneeringute haldamine
Nice to have
- Ühe broneeringuga saab valida mitu remonditeenust korraga
- Broneeringu kinnituse saatmine töötaja meilile
- Broneeringu meeldetuletus kliendi meilile
- Broneeringute põhjal töötajate töögraafiku koostamine
Raskused
- Puuduv eelnev kogemus veebiteenuste loomisel
- Effektiivne ajaplaneerimine ja tööjaotus
- Meeskonnaliikmete vähene aeg, muude kohustuste kõrval
TFS
Link TFS lehele: TFS
Projekt
Link projektile: Projekt
NB! VAATA JUHISEID KUIDAS SEDA KORRALIKULT KÄIVITADA! PROGRAMMI SEES ON README FILE!
XML Projekt
XML file
<?xml version="1.0" encoding="utf-8" ?>
<Bookings>
<Booking id="1" confirmed="false">
<BookinggDate>2018-04-28</BookinggDate>
<BookingTime>12:00:00</BookingTime>
<ApplicationUser id="1" active="true">
<UserName><![CDATA[Maret Püüa]]></UserName>
<UserEmail><![CDATA[maretpuua@gmail.com]]></UserEmail>
<Phone><![CDATA[+3724375873]]></Phone>
<Car id="1">
<Make><![CDATA[BMW]]></Make>
<Model><![CDATA[E36]]></Model>
<ReleaseYear>2001-02-15</ReleaseYear>
<CarType id="1">
<TypeName><![CDATA[Kupee]]></TypeName>
</CarType>
</Car>
</ApplicationUser>
<Garage id="1">
<GarageName><![CDATA[Mihkel Repairs]]></GarageName>
<GarageAddress><![CDATA[Lehola 5]]></GarageAddress>
<GaragePhone><![CDATA[+3729002007]]></GaragePhone>
<Service id="1">
<ServiceName><![CDATA[Õlivahetus]]></ServiceName>
<ServicePrice currency="€">30</ServicePrice>
<Unit><![CDATA[Tund]]></Unit>
<ExtraInfo><![CDATA[Lehola parim õlivahetus]]></ExtraInfo>
<ServiceType id="1">
<ServiceTypeName><![CDATA[Hooldustööd]]></ServiceTypeName>
</ServiceType>
</Service>
</Garage>
</Booking>
<Booking id="2" confirmed="true">
<BookinggDate>2018-06-14</BookinggDate>
<BookingTime>15:15:00</BookingTime>
<ApplicationUser id="4" active="true">
<UserName><![CDATA[Ahto Leemet]]></UserName>
<UserEmail><![CDATA[Leemet@gmail.com]]></UserEmail>
<Phone><![CDATA[+3728463846]]></Phone>
<Car id="7">
<Make><![CDATA[Opel]]></Make>
<Model><![CDATA[Omega]]></Model>
<ReleaseYear>1998-05-11</ReleaseYear>
<CarType id="3">
<TypeName><![CDATA[Universaal]]></TypeName>
</CarType>
</Car>
</ApplicationUser>
<Garage id="3">
<GarageName><![CDATA[Garagefy Pärnu]]></GarageName>
<GarageAddress><![CDATA[Luha 5]]></GarageAddress>
<GaragePhone><![CDATA[+3729002009]]></GaragePhone>
<Service id="4">
<ServiceName><![CDATA[Rehvivahetus]]></ServiceName>
<ServicePrice currency="€">90</ServicePrice>
<Unit><![CDATA[Üks Rehv]]></Unit>
<ExtraInfo><![CDATA[Õnneliku lõpuga rehvivahetus]]></ExtraInfo>
<ServiceType id="2">
<ServiceTypeName><![CDATA[Rehvitööd]]></ServiceTypeName>
</ServiceType>
</Service>
</Garage>
</Booking>
<Booking id="9" confirmed="false">
<BookinggDate>2018-08-12</BookinggDate>
<BookingTime>10:00:00</BookingTime>
<ApplicationUser id="3" active="true">
<UserName><![CDATA[Rondo Ronnot]]></UserName>
<UserEmail><![CDATA[Ronnot@gmail.com]]></UserEmail>
<Phone><![CDATA[+372523933]]></Phone>
<Car id="3">
<Make><![CDATA[Toyota]]></Make>
<Model><![CDATA[Camry]]></Model>
<ReleaseYear>1990-02-15</ReleaseYear>
<CarType id="5">
<TypeName><![CDATA[Coupe]]></TypeName>
</CarType>
</Car>
</ApplicationUser>
<Garage id="4">
<GarageName><![CDATA[Kiirete poiste parandus]]></GarageName>
<GarageAddress><![CDATA[Lehola 12]]></GarageAddress>
<GaragePhone><![CDATA[+3726923123]]></GaragePhone>
<Service id="3">
<ServiceName><![CDATA[Keemiline salongipuhastus]]></ServiceName>
<ServicePrice currency="€">100</ServicePrice>
<Unit><![CDATA[Tund]]></Unit>
<ExtraInfo><![CDATA[Istmed läigivad nagu alles ostetud]]></ExtraInfo>
<ServiceType id="3">
<ServiceTypeName><![CDATA[Salongitööd]]></ServiceTypeName>
</ServiceType>
</Service>
</Garage>
</Booking>
</Bookings>
XML Schema
<?xml version="1.0" encoding="utf-8" ?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Bookings">
<xs:complexType>
<xs:sequence>
<xs:element name="Booking" maxOccurs="unbounded" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element type="xs:date" name="BookinggDate"/>
<xs:element type="xs:time" name="BookingTime"/>
<xs:element name="ApplicationUser">
<xs:complexType>
<xs:sequence>
<xs:element type="xs:string" name="UserName"/>
<xs:element type="xs:string" name="UserEmail"/>
<xs:element type="xs:long" name="Phone"/>
<xs:element name="Car">
<xs:complexType>
<xs:sequence>
<xs:element type="xs:string" name="Make"/>
<xs:element type="xs:string" name="Model"/>
<xs:element type="xs:date" name="ReleaseYear"/>
<xs:element name="CarType">
<xs:complexType>
<xs:sequence>
<xs:element type="xs:string" name="TypeName"/>
</xs:sequence>
<xs:attribute type="xs:integer" name="id" use="required"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute type="xs:integer" name="id" use="required"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute type="xs:integer" name="id" use="required"/>
<xs:attribute type="xs:boolean" name="active" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="Garage">
<xs:complexType>
<xs:sequence>
<xs:element type="xs:string" name="GarageName"/>
<xs:element type="xs:string" name="GarageAddress"/>
<xs:element type="xs:long" name="GaragePhone"/>
<xs:element name="Service">
<xs:complexType>
<xs:sequence>
<xs:element type="xs:string" name="ServiceName"/>
<xs:element name="ServicePrice">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:decimal">
<xs:attribute type="xs:string" name="currency" use="required"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element type="xs:string" name="Unit"/>
<xs:element type="xs:string" name="ExtraInfo"/>
<xs:element name="ServiceType">
<xs:complexType>
<xs:sequence>
<xs:element type="xs:string" name="ServiceTypeName"/>
</xs:sequence>
<xs:attribute type="xs:integer" name="id" use="required"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute type="xs:integer" name="id" use="required"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute type="xs:integer" name="id" use="required"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute type="xs:integer" name="id" use="required"/>
<xs:attribute type="xs:boolean" name="confirmed" use="required"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
XSLT HTML transformation
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" indent="yes"/>
<xsl:template match="/">
<html>
<head>
<title>Broneeringud</title>
</head>
<body>
<h2>Broneeringud</h2>
<ol>
<xsl:variable name="confirmed">true</xsl:variable>
<xsl:for-each select="Bookings/Booking">
<li>
<b>Status: </b>
<xsl:choose>
<xsl:when test="@confirmed = $confirmed">
<b style="color:green;">CONFIRMED</b>
</xsl:when>
<xsl:otherwise>
<b style="color:red;">PENDING</b>
</xsl:otherwise>
</xsl:choose>
<br/>
<b>Klient: </b>
<ul>
<b>Nimi: </b>
<xsl:value-of select="ApplicationUser/UserName"/>
<br/>
<b>Mail: </b>
<xsl:value-of select="ApplicationUser/UserEmail"/>
</ul>
<b>Auto: </b>
<br/>
<ul>
<xsl:for-each select="ApplicationUser/Car">
<xsl:sort select="@id" />
<b>Tüüp: </b>
<xsl:value-of select="CarType/TypeName"/>
<br/>
<b>Mark: </b>
<xsl:value-of select="Make" />
<br/>
<b>Mudel: </b>
<xsl:value-of select="Model"/>
<br/>
<b>Väljalastud: </b>
<xsl:value-of select="ReleaseYear"/>
<br/>
</xsl:for-each>
</ul>
<b>Broneeringu aeg:</b>
<br/>
<ul>
<b>Aeg: </b>
<xsl:value-of select="BookinggDate" /> - <xsl:value-of select="BookingTime"/><br/>
</ul>
<b>Töökoda:</b>
<br/>
<ul>
<xsl:for-each select="Garage">
<xsl:sort select="@id" />
<b>Töökoja nimi: </b>
<xsl:value-of select="GarageName"/>
<br/>
<b>Aadress: </b>
<xsl:value-of select="GarageAddress"/>
<br/>
<b>Telefon: </b>
<xsl:value-of select="GaragePhone"/>
<br/>
</xsl:for-each>
</ul>
<b>Teenus:</b>
<br/>
<ul>
<xsl:for-each select="Garage/Service">
<xsl:sort select="@id"/>
<b>Teenuse nimi: </b>
<xsl:value-of select="ServiceName"/><br/>
<b>Teenuse tüüp: </b>
<xsl:value-of select="ServiceType/ServiceTypeName"/><br/>
<b>Teenuse hind: </b>
<xsl:value-of select="ServicePrice"/>€ - <xsl:value-of select="Unit"/><br/>
<b>Lisainfo: </b>
<xsl:value-of select="ExtraInfo"/><br/>
</xsl:for-each>
</ul>
</li>
<br/>
</xsl:for-each>
</ol>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
XSLT XML transformation
<?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="xml" indent="yes"/>
<xsl:template match="/Bookings">
<Bookings>
<xsl:variable name="confirmed">true</xsl:variable>
<xsl:for-each select="Booking">
<Boooking>
<Status>
<xsl:choose>
<xsl:when test="@confirmed = $confirmed">
Confirmed
</xsl:when>
<xsl:otherwise>
Pending
</xsl:otherwise>
</xsl:choose>
</Status>
<Client>
<Name>
<xsl:value-of select="ApplicationUser/UserName"/>
</Name>
<Email>
<xsl:value-of select="ApplicationUser/UserEmail"/>
</Email>
</Client>
<Car>
<xsl:for-each select="ApplicationUser/Car">
<Type>
<xsl:value-of select="CarType/TypeName"/>
</Type>
<Make>
<xsl:value-of select="Make"/>
</Make>
<Model>
<xsl:value-of select="Model"/>
</Model>
<ReleaseDate>
<xsl:value-of select="ReleaseYear"/>
</ReleaseDate>
</xsl:for-each>
</Car>
<BookingDate>
<Date>
<xsl:value-of select="BookinggDate"/>
</Date>
<Time>
<xsl:value-of select="BookingTime"/>
</Time>
</BookingDate>
<Garage>
<xsl:for-each select="Garage">
<Name>
<xsl:value-of select="GarageName"/>
</Name>
<Address>
<xsl:value-of select="GarageAddress" />
</Address>
<Phone>
<xsl:value-of select="GaragePhone"/>
</Phone>
</xsl:for-each>
</Garage>
<Service>
<xsl:for-each select="Garage/Service">
<Name>
<xsl:value-of select="ServiceName"/>
</Name>
<Type>
<xsl:value-of select="ServiceType/ServiceTypeName"/>
</Type>
<Price>
<xsl:value-of select="ServicePrice"/>
</Price>
<Unit>
<xsl:value-of select="Unit"/>
</Unit>
<ExtraInfo>
<xsl:value-of select="ExtraInfo"/>
</ExtraInfo>
</xsl:for-each>
</Service>
</Boooking>
</xsl:for-each>
</Bookings>
</xsl:template>
</xsl:stylesheet>
Blogi
30.03.2018 Meeskonna moodustamine ja analüüsi koostamine
20.04.2018 - 27.05.2018 Projekti koostamine
31.05.2018 XML koostamine