Meeskond Raavo V2™: Difference between revisions

From ICO wiki
Jump to navigationJump to search
Pfridoli (talk | contribs)
No edit summary
Pfridoli (talk | contribs)
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==
TODO
===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