Meeskond: QView: Difference between revisions
(11 intermediate revisions by the same user not shown) | |||
Line 5: | Line 5: | ||
* Semjon Greef | * Semjon Greef | ||
* Lisandra Noor | * Lisandra Noor | ||
== Projekt == | |||
Projekti solution: http://enos.itcollege.ee/~mmuru/QView.zip | |||
Demo jaoks numbri genereetor: https://bitbucket.org/Sgreef/numbersenderwpf | |||
== Veebiteenuse analüüs == | == Veebiteenuse analüüs == | ||
Line 11: | Line 17: | ||
QView rakendus sisaldab endas järjekorranumbri kuvamise rakendust. Kliendid saavad valida teeninduse, kus nad on võtnud omale järjekorranumbri ning rakendusest saavad hoida silma peal, mis järjekorranumbrit hetkel teenindatakse. Tipptunni ajal on võimalik kliendil teenindusest lahkuda ning tagasi tulla õigeaegselt. Rakenduses on võimalik vaadata minutiliselt kui kaua järjekorras on vaja oodata. | QView rakendus sisaldab endas järjekorranumbri kuvamise rakendust. Kliendid saavad valida teeninduse, kus nad on võtnud omale järjekorranumbri ning rakendusest saavad hoida silma peal, mis järjekorranumbrit hetkel teenindatakse. Tipptunni ajal on võimalik kliendil teenindusest lahkuda ning tagasi tulla õigeaegselt. Rakenduses on võimalik vaadata minutiliselt kui kaua järjekorras on vaja oodata. | ||
'''Firma teenuspunktide haldaja''' | |||
Firma poolt on isik, kellel on eriõigused, et lisada rakendusse teenuspunktid. Lisaks on tal võimalik teenuspunktid deaktiveerida ning taasaktiveerida kui süsteemis on mõni rike või teenuspunkt on ajutiselt töökorrast väljas. | |||
'''Kasutaja''' | '''Kasutaja''' | ||
Line 32: | Line 42: | ||
*teenusepakkujate valimine | *teenusepakkujate valimine | ||
*ooteaja kuvamine | *ooteaja kuvamine | ||
*teeninduspunkti haldaja kasutaja | |||
*teeninduspunkti aktiveerimine ja deaktiveerimine | |||
*teeninduspunkti lisamine | |||
*pärast oma järjekorra numbri võtmist on võimalik rakenduses märkida oma number, mille järgi kuvatakse korrektne ooteaeg | |||
*järjekorra numbri kustutamine/tühistamine (kui kliendil ei ole aega oodata ning peab lahkuma) | |||
*võimalik valida, millise klienditüübi järjekorra numbrit kuvada | |||
===Nice to have=== | ===Nice to have=== | ||
numbri võtmine | *numbri võtmine | ||
GPS (on võimalik mapi pealt valida lähim teenindus ja vaadata ooteaega) | *GPS (on võimalik mapi pealt valida lähim teenindus ja vaadata ooteaega) | ||
hoiatus mis annab teada kui kontor pannakse umbes tunni aja pärast kinni. | *hoiatus mis annab teada kui kontor pannakse umbes tunni aja pärast kinni. | ||
*saab valida vaikimisi kas oled äri- või eraklient | |||
===ERD=== | ===ERD=== | ||
[[File: | [[File:NEWQVIEWERD.PNG]] | ||
== XML fail == | == XML fail == |
Latest revision as of 16:47, 9 June 2017
Meeskond
- Margus Muru
- Martin Nigul
- Martin Nõukas
- Semjon Greef
- Lisandra Noor
Projekt
Projekti solution: http://enos.itcollege.ee/~mmuru/QView.zip
Demo jaoks numbri genereetor: https://bitbucket.org/Sgreef/numbersenderwpf
Veebiteenuse analüüs
Kirjeldus
QView rakendus sisaldab endas järjekorranumbri kuvamise rakendust. Kliendid saavad valida teeninduse, kus nad on võtnud omale järjekorranumbri ning rakendusest saavad hoida silma peal, mis järjekorranumbrit hetkel teenindatakse. Tipptunni ajal on võimalik kliendil teenindusest lahkuda ning tagasi tulla õigeaegselt. Rakenduses on võimalik vaadata minutiliselt kui kaua järjekorras on vaja oodata.
Firma teenuspunktide haldaja
Firma poolt on isik, kellel on eriõigused, et lisada rakendusse teenuspunktid. Lisaks on tal võimalik teenuspunktid deaktiveerida ning taasaktiveerida kui süsteemis on mõni rike või teenuspunkt on ajutiselt töökorrast väljas.
Kasutaja
Kasutajal oleks võimalik luua oma kasutaja, mille alt on võimalik vaadata, mis järjekorranumber hetkel mõnes teeninduses on. Lisaks on võimalik lisada ‘’favourites’’ nimekirja enim külastatud teenindused.
Admin
Admin haldab tervet rakendust. Adminil on õigus muuta rakendust ning lisada uuendusi.
Firmad
Firmadel on võimalik rakenduse teenuse eest maksa, et nende teenindus oleks rakenduses kuvatud. Firmade kaudu saab rakendus teeninduste järjekorranumbrid.
Must have
- kasutaja loomine
- ‘’favourites’’ listi kontorite lisamine
- ‘’favourites’’ listist kustutamine
- järjekorranumbri kuvamine
- teenusepakkujate valimine
- ooteaja kuvamine
- teeninduspunkti haldaja kasutaja
- teeninduspunkti aktiveerimine ja deaktiveerimine
- teeninduspunkti lisamine
- pärast oma järjekorra numbri võtmist on võimalik rakenduses märkida oma number, mille järgi kuvatakse korrektne ooteaeg
- järjekorra numbri kustutamine/tühistamine (kui kliendil ei ole aega oodata ning peab lahkuma)
- võimalik valida, millise klienditüübi järjekorra numbrit kuvada
Nice to have
- numbri võtmine
- GPS (on võimalik mapi pealt valida lähim teenindus ja vaadata ooteaega)
- hoiatus mis annab teada kui kontor pannakse umbes tunni aja pärast kinni.
- saab valida vaikimisi kas oled äri- või eraklient
ERD
XML fail
<?xml version="1.0" encoding="utf-8"?>
<Cars>
<Bodies>
<Body Body-Id="1">
<Name>Sedan</Name>
</Body>
<Body Body-Id="2">
<Name>Coupe</Name>
</Body>
<Body Body-Id="3">
<Name>Hatchback</Name>
</Body>
<Body Body-Id="4">
<Name>Wagon</Name>
</Body>
<Body Body-Id="5">
<Name>Cabriolet</Name>
</Body>
<Body Body-Id="6">
<Name>SUV</Name>
</Body>
</Bodies>
<Fueltypes>
<Fueltype Fueltype-Id="1">
<Name>Petrol</Name>
</Fueltype>
<Fueltype Fueltype-Id="2">
<Name>Diesel</Name>
</Fueltype>
<Fueltype Fueltype-Id="3">
<Name>Electric</Name>
</Fueltype>
<Fueltype Fueltype-Id="4">
<Name>Hybrid</Name>
</Fueltype>
</Fueltypes>
<Brands>
<Make Make-Id="1">
<Name>Audi</Name>
<Country>Germany</Country>
</Make>
<Make Make-Id="2">
<Name>VolksWagen</Name>
<Country>Germany</Country>
</Make>
<Make Make-Id="3">
<Name>Volvo</Name>
<Country>Sweden</Country>
</Make>
<Make Make-Id="4">
<Name>BMW</Name>
<Country>Germany</Country>
</Make>
<Make Make-Id="5">
<Name>Mercedes-Benz</Name>
<Country>Germany</Country>
</Make>
<Make Make-Id="6">
<Name>Opel</Name>
<Country>Germany</Country>
</Make>
<Make Make-Id="7">
<Name>Lada</Name>
<Country>Russia</Country>
</Make>
<Make Make-Id="8">
<Name>Honda</Name>
<Country>Japan</Country>
</Make>
<Make Make-Id="9">
<Name>Toyota</Name>
<Country>Japan</Country>
</Make>
<Make Make-Id="10">
<Name>Nissan</Name>
<Country>Japan</Country>
</Make>
<Make Make-Id="11">
<Name>Skoda</Name>
<Country>Czech Republic</Country>
</Make>
<Make Make-Id="12">
<Name>Renault</Name>
<Country>France</Country>
</Make>
<Make Make-Id="13">
<Name>Caterham</Name>
<Country>United Kingdom</Country>
</Make>
<Make Make-Id="14">
<Name>Citroen</Name>
<Country>France</Country>
</Make>
<Make Make-Id="15">
<Name>Ariel</Name>
<Country>United States of America</Country>
</Make>
<Make Make-Id="16">
<Name>Seat</Name>
<Country>Spain</Country>
</Make>
<Make Make-Id="17">
<Name>Mazda</Name>
<Country>Japan</Country>
</Make>
<Make Make-Id="18">
<Name>Ford</Name>
<Country>Germany</Country>
</Make>
<Make Make-Id="19">
<Name>Suzuki</Name>
<Country>Japan</Country>
</Make>
<Make Make-Id="20">
<Name>Kia</Name>
<Country>South Korea</Country>
</Make>
<Make Make-Id="21">
<Name>Hyundai</Name>
<Country>South Korea</Country>
</Make>
<Make Make-Id="22">
<Name>Mini</Name>
<Country>United Kingdom</Country>
</Make>
</Brands>
<Transmissions>
<Transmission Trans-Id="1">
<Name>Automatic</Name>
</Transmission>
<Transmission Trans-Id="2">
<Name>Manual</Name>
</Transmission>
</Transmissions>
<Drivetrains>
<Drivetrain Drivetrain-Id="1">
<Name>Front-Wheel Drive</Name>
</Drivetrain>
<Drivetrain Drivetrain-Id="2">
<Name>Rear-Wheel Drive</Name>
</Drivetrain>
<Drivetrain Drivetrain-Id="3">
<Name>All-Wheel Drive</Name>
</Drivetrain>
</Drivetrains>
<Car Make-Id="1" Model="A6" Year="2010" RegPlate="123ABC" VIN="jasdfjasbdjf34234" Power="220kW" Milage="140000" Color="White" Price="25000">
<Comments>
Jumala katkine veermik
</Comments>
<Body Body-Id="1">
<Info> Suur ja pikk sedaan </Info>
</Body>
<Fueltypes Preferred="98" Fueltype-Id="1">
<FuelConsumption>8</FuelConsumption>
</Fueltypes>
<Drivetrain Drivetrain-Id="3"/>
<Transmissions Trans-Id="1">
<Gears>7</Gears>
</Transmissions>
<ImageUrl>
http://o.aolcdn.com/dims-shared/dims3/GLOB/legacy_thumbnail/800x450/format/jpg/quality/85/http://o.aolcdn.com/hss/storage/midas/a899c65e2622bb49bc9c7d83c35fd097/201042411/2016-audi-a6-fd.jpg
</ImageUrl>
</Car>
<Car Make-Id="7" Model="Samara" Year="2000" RegPlate="315APV" VIN="jasjjhjdsfsbdjf34234" Power="82kW" Milage="250000" Color="Metallic-Green" Price="1800">
<Comments>
Kere roostetab
</Comments>
<Body Body-Id="3">
<Info>Kolme uksega</Info>
</Body>
<Fueltypes Preferred="95" Fueltype-Id="1">
<FuelConsumption>7</FuelConsumption>
</Fueltypes>
<Drivetrain Drivetrain-Id="1" />
<Transmissions Trans-Id="2">
<Gears>5</Gears>
</Transmissions>
<ImageUrl>
http://img5.auto24.ee/auto24/320/032/44227032.jpg
</ImageUrl>
</Car>
<Car Make-Id="18" Model="Escort" Year="1998" RegPlate="125KJH" VIN="ja7878fsbdjf34234" Power="63kW" Milage="27000" Color="Red" Price="1100">
<Comments>
Ossipill
</Comments>
<Body Body-Id="1">
<Info>Natuke roostes, paar lohku keres.</Info>
</Body>
<Fueltypes Preferred="95" Fueltype-Id="1">
<FuelConsumption>11</FuelConsumption>
</Fueltypes>
<Drivetrain Drivetrain-Id="1"/>
<Transmissions Trans-Id="2">
<Gears>5</Gears>
</Transmissions>
<ImageUrl>
https://i.ebayimg.com/00/s/NzY4WDEwMjQ=/z/vC0AAOSwTM5YxbNs/$_86.JPG
</ImageUrl>
</Car>
<Car Make-Id="4" Model="5-series" Year="2017" RegPlate="766BCH" VIN="wswa1238asd87123" Power="195kW" Milage="50" Color="Black" Price="77500">
<Comments>
Sõiduki asukoht: Saksamaa
Hind sisaldab transporti ja registreerimist Eestis.
</Comments>
<Body Body-Id="1">
<Info>Piklik sedaan.</Info>
</Body>
<Fueltypes Preferred="D" Fueltype-Id="2">
<FuelConsumption>6</FuelConsumption>
</Fueltypes>
<Drivetrain Drivetrain-Id="3"/>"
<Transmissions Trans-Id="1">
<Gears>7</Gears>
</Transmissions>
<ImageUrl>
http://blog.caranddriver.com/wp-content/uploads/2016/10/2017-BMW-5-Series-101-876x535.jpg
</ImageUrl>
</Car>
<Car Make-Id="4" Model="3-series" Year="2002" RegPlate="172BCH" VIN="wswa1238hwhrd81233" Power="110kW" Milage="275000" Color="Silver" Price="3500">
<Comments>
Roostevaba
</Comments>
<Body Body-Id="1">
<Info>Kompaktne sedaan.</Info>
</Body>
<Fueltypes Preferred="D" Fueltype-Id="2">
<FuelConsumption>7</FuelConsumption>
</Fueltypes>
<Drivetrain Drivetrain-Id="2"/>
<Transmissions Trans-Id="2">
<Gears>6</Gears>
</Transmissions>
<ImageUrl>
https://i.ytimg.com/vi/n5GAiugBWC8/maxresdefault.jpg
</ImageUrl>
</Car>
<Car Make-Id="5" Model="B-class" Year="2012" RegPlate="175JUS" VIN="wssd121338aswegrd855" Power="80kW" Milage="76000" Color="Grey" Price="19200">
<Comments>
Läbisõidugarantii
</Comments>
<Body Body-Id="3">
<Info>Hea pereauto</Info>
</Body>
<Fueltypes Preferred="D" Fueltype-Id="2">
<FuelConsumption>5</FuelConsumption>
</Fueltypes>
<Drivetrain Drivetrain-Id="1"/>
<Transmissions Trans-Id="1">
<Gears>7</Gears>
</Transmissions>
<ImageUrl>
http://p.ocdn.ee/17/i/000259/x-855c414a-f493-451a-ba7a-4ed27f95bc77.jpg
</ImageUrl>
</Car>
<Car Make-Id="10" Model="Skyline R34 GTT" Year="1999" RegPlate="SNR442" VIN="wsbd9514753jvseiga751" Power="212kW" Milage="76500" Color="Blue" Price="29500">
<Comments>
UK rooliga auto.
</Comments>
<Body Body-Id="2">
<Info>Megakiire masin.</Info>
</Body>
<Fueltypes Preferred="98" Fueltype-Id="1">
<FuelConsumption>15</FuelConsumption>
</Fueltypes>
<Drivetrain Drivetrain-Id="2"/>
<Transmissions Trans-Id="2">
<Gears>6</Gears>
</Transmissions>
<ImageUrl>
https://s-media-cache-ak0.pinimg.com/originals/8d/e6/b2/8de6b2a55873b2044480921b83ba928f.jpg
</ImageUrl>
</Car>
<Car Make-Id="22" Model="Cooper" Year="2003" RegPlate="SN34PE" VIN="WMWRC31010TH01840" Power="85kW" Milage="233788" Color="Red" Price="3400">
<Comments>
Esiklaasis on mõrad.
</Comments>
<Body Body-Id="3">
<Info>Armas autoke.</Info>
</Body>
<Fueltypes Preferred="95" Fueltype-Id="1">
<FuelConsumption>9</FuelConsumption>
</Fueltypes>
<Drivetrain Drivetrain-Id="1"/>
<Transmissions Trans-Id="1">
<Gears>6</Gears>
</Transmissions>
<ImageUrl>
http://global.fncstatic.com/static/managed/img/Leisure/2009/mini-cooper-2014.jpg
</ImageUrl>
</Car>
<Car Make-Id="2" Model="Beetle" Year="1998" RegPlate="4AUW407" VIN="WVWZZZ16ZEM635903" Power="72kW" Milage="278000" Color="Red" Price="1700">
<Comments>
Auto regulaarselt hooldatud.
</Comments>
<Body Body-Id="3">
<Info>Kolme uksega</Info>
</Body>
<Fueltypes Preferred="D" Fueltype-Id="2">
<FuelConsumption>6</FuelConsumption>
</Fueltypes>
<Drivetrain Drivetrain-Id="1"/>
<Transmissions Trans-Id="2">
<Gears>5</Gears>
</Transmissions>
<ImageUrl>
http://i.imgur.com/iS6OjqD.jpg
</ImageUrl>
</Car>
<Car Make-Id="9" Model="Supra" Year="1998" RegPlate="69SUPRA" VIN="WW23283WJDZUIE238" Power="300kW" Milage="68000" Color="Silver" Price="62000">
<Comments>
Haruludane, vähe sõitnud eksemplar.
</Comments>
<Body Body-Id="2">
<Info>Kolme uksega</Info>
</Body>
<Fueltypes Preferred="98" Fueltype-Id="1">
<FuelConsumption>10</FuelConsumption>
</Fueltypes>
<Drivetrain Drivetrain-Id="2" />
<Transmissions Trans-Id="2">
<Gears>6</Gears>
</Transmissions>
<ImageUrl>
https://static.cargurus.com/images/site/2012/02/27/06/02/1998_toyota_supra-pic-5576793256549915341-1600x1200.jpeg
</ImageUrl>
</Car>
</Cars>
XSLT 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="/Cars">
<Cars>
<xsl:for-each select="/Cars/Car">
<xsl:choose>
<xsl:when test="@Year > 2000">
<xsl:variable name="model" select="@Model"/>
<Car>
<xsl:variable name="M-Id" select="@Make-Id" />
<Brand>
<xsl:value-of select="/Cars/Brands/Make[@Make-Id=$M-Id]/Name"/>
</Brand>
<Model>
<xsl:value-of select="@Model"/>
</Model>
<Year>
<xsl:value-of select="@Year"/>
</Year>
<VIN>
<xsl:value-of select="@VIN"/>
</VIN>
<Power>
<xsl:value-of select="@Power"/>
</Power>
<Milage>
<xsl:value-of select="@Milage"/>
</Milage>
<Color>
<xsl:value-of select="@Color"/>
</Color>
<Comments>
<xsl:value-of select="Comments"/>
</Comments>
<RegPlate>
<xsl:value-of select="@RegPlate"/>
</RegPlate>
<Body>
<xsl:variable name="B-Id" select="Body/@Body-Id" />
<xsl:value-of select="/Cars/Bodies/Body[@Body-Id=$B-Id]/Name"/>
</Body>
<Fueltype>
<xsl:variable name="F-Id" select="Fueltypes/@Fueltype-Id" />
<xsl:value-of select="/Cars/Fueltypes/Fueltype[@Fueltype-Id=$F-Id]/Name"/>
</Fueltype>
<Drivetrain>
<xsl:variable name="D-Id" select="Drivetrain/@Drivetrain-Id" />
<xsl:value-of select="/Cars/Drivetrains/Drivetrain[@Drivetrain-Id=$D-Id]/Name"/>
</Drivetrain>
<Transmissions>
<xsl:variable name="T-Id" select="Transmissions/@Trans-Id" />
<xsl:value-of select="/Cars/Transmissions/Transmission[@Trans-Id=$T-Id]/Name"/>
</Transmissions>
<Price>
<xsl:value-of select="@Price"/>
</Price>
<ImageUrl>
<xsl:value-of select="ImageUrl"/>
</ImageUrl>
</Car>
</xsl:when>
</xsl:choose>
</xsl:for-each>
</Cars>
</xsl:template>
</xsl:stylesheet>
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>
<body>
<h1>Car Database</h1>
<xsl:for-each select="/Cars/Car">
<xsl:variable name="M-Id" select="@Make-Id" />
<h2>
<xsl:value-of select="/Cars/Brands/Make[@Make-Id=$M-Id]/Name"/>
</h2>
<br>
Model:
<xsl:value-of select="@Model"/>
</br>
<br>
Country:
<xsl:value-of select="/Cars/Brands/Make[@Make-Id=$M-Id]/Country"/>
</br>
<br>
Year:
<xsl:value-of select="@Year"/>
</br>
<br>
RegPlate:
<xsl:value-of select="@RegPlate"/>
</br>
<br>
VIN:
<xsl:value-of select="@VIN"/>
</br>
<br>
Power:
<xsl:value-of select="@Power"/>
</br>
<br>
Milage:
<xsl:value-of select="@Milage"/>
</br>
<br>
Color:
<xsl:value-of select="@Color"/>
</br>
<br>
Price:
<xsl:value-of select="@Price"/>
</br>
<br>
<xsl:for-each select="Comments">
Comment:
<xsl:value-of select="."/>
</xsl:for-each>
</br>
<br>
Body:
<xsl:variable name="B-Id" select="Body/@Body-Id" />
<xsl:value-of select="/Cars/Bodies/Body[@Body-Id=$B-Id]/Name"/>
, Comments:
<xsl:for-each select="Body/Info">
<xsl:value-of select="."/>
</xsl:for-each>
</br>
<br>
Fuel type:
<xsl:variable name="F-Id" select="Fueltypes/@Fueltype-Id" />
<xsl:value-of select="/Cars/Fueltypes/Fueltype[@Fueltype-Id=$F-Id]/Name"/>
</br>
<br>
Fuel consumption:
<xsl:for-each select="Fueltypes/FuelConsumption">
<xsl:value-of select="."/>
</xsl:for-each>
l/100km
</br>
<br>
Drivetrain:
<xsl:variable name="D-Id" select="Drivetrain/@Drivetrain-Id" />
<xsl:value-of select="/Cars/Drivetrains/Drivetrain[@Drivetrain-Id=$D-Id]/Name"/>
</br>
<br>
Gearbox:
<xsl:variable name="T-Id" select="Transmissions/@Trans-Id" />
<xsl:value-of select="/Cars/Transmissions/Transmission[@Trans-Id=$T-Id]/Name"/>
, number of gears:
<xsl:for-each select="Transmissions/Gears">
<xsl:value-of select="."/>
</xsl:for-each>
</br>
<br>
<xsl:for-each select="ImageUrl">
<xsl:variable name="ImageUrl" select="."/>
<img style="width: 30em" src="{$ImageUrl}"/>
</xsl:for-each>
</br>
</xsl:for-each>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
<?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>
<body>
<h1>Old cars</h1>
<xsl:for-each select="/Cars/Car">
<xsl:choose>
<xsl:when test="2000 > @Year">
<xsl:variable name="M-Id" select="@Make-Id" />
<h2>
<xsl:value-of select="/Cars/Brands/Make[@Make-Id=$M-Id]/Name"/>
</h2>
<br>
Model:
<xsl:value-of select="@Model"/>
</br>
<br>
Country:
<xsl:value-of select="/Cars/Brands/Make[@Make-Id=$M-Id]/Country"/>
</br>
<br>
Year:
<xsl:value-of select="@Year"/>
</br>
<br>
RegPlate:
<xsl:value-of select="@RegPlate"/>
</br>
<br>
VIN:
<xsl:value-of select="@VIN"/>
</br>
<br>
Power:
<xsl:value-of select="@Power"/>
</br>
<br>
Milage:
<xsl:value-of select="@Milage"/>
</br>
<br>
Color:
<xsl:value-of select="@Color"/>
</br>
<br>
Price:
<xsl:value-of select="@Price"/>
</br>
<br>
<xsl:for-each select="Comments">
Comment:
<xsl:value-of select="."/>
</xsl:for-each>
</br>
<br>
Body:
<xsl:variable name="B-Id" select="Body/@Body-Id" />
<xsl:value-of select="/Cars/Bodies/Body[@Body-Id=$B-Id]/Name"/>
, Comments:
<xsl:for-each select="Body/Info">
<xsl:value-of select="."/>
</xsl:for-each>
</br>
<br>
Fuel type:
<xsl:variable name="F-Id" select="Fueltypes/@Fueltype-Id" />
<xsl:value-of select="/Cars/Fueltypes/Fueltype[@Fueltype-Id=$F-Id]/Name"/>
</br>
<br>
Fuel consumption:
<xsl:for-each select="Fueltypes/FuelConsumption">
<xsl:value-of select="."/>
</xsl:for-each>
l/100km
</br>
<br>
Drivetrain:
<xsl:variable name="D-Id" select="Drivetrain/@Drivetrain-Id" />
<xsl:value-of select="/Cars/Drivetrains/Drivetrain[@Drivetrain-Id=$D-Id]/Name"/>
</br>
<br>
Gearbox:
<xsl:variable name="T-Id" select="Transmissions/@Trans-Id" />
<xsl:value-of select="/Cars/Transmissions/Transmission[@Trans-Id=$T-Id]/Name"/>
, number of gears:
<xsl:for-each select="Transmissions/Gears">
<xsl:value-of select="."/>
</xsl:for-each>
</br>
<br>
<xsl:for-each select="ImageUrl">
<xsl:variable name="ImageUrl" select="."/>
<img style="width: 30em" src="{$ImageUrl}"/>
</xsl:for-each>
</br>
</xsl:when>
</xsl:choose>
</xsl:for-each>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
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="Cars">
<xs:complexType>
<xs:sequence>
<xs:element name="Bodies">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="Body">
<xs:complexType>
<xs:sequence>
<xs:element name="Name" type="xs:string" />
</xs:sequence>
<xs:attribute name="Body-Id" type="xs:unsignedByte" use="required" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Fueltypes">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="Fueltype">
<xs:complexType>
<xs:sequence>
<xs:element name="Name" type="xs:string" />
</xs:sequence>
<xs:attribute name="Fueltype-Id" type="xs:unsignedInt" use="required" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Brands">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="Make">
<xs:complexType>
<xs:sequence>
<xs:element name="Name" type="xs:string" />
<xs:element name="Country" type="xs:string" />
</xs:sequence>
<xs:attribute name="Make-Id" type="xs:unsignedInt" use="required" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Transmissions">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="Transmission">
<xs:complexType>
<xs:sequence>
<xs:element name="Name" type="xs:string" />
</xs:sequence>
<xs:attribute name="Trans-Id" type="xs:unsignedInt" use="required" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Drivetrains">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="Drivetrain">
<xs:complexType>
<xs:sequence>
<xs:element name="Name" type="xs:string" />
</xs:sequence>
<xs:attribute name="Drivetrain-Id" type="xs:unsignedInt" use="required" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element maxOccurs="unbounded" name="Car">
<xs:complexType mixed="true">
<xs:sequence>
<xs:element name="Comments" type="xs:string" />
<xs:element name="Body">
<xs:complexType>
<xs:sequence>
<xs:element name="Info" type="xs:string" />
</xs:sequence>
<xs:attribute name="Body-Id" type="xs:unsignedInt" use="required" />
</xs:complexType>
</xs:element>
<xs:element name="Fueltypes">
<xs:complexType>
<xs:sequence>
<xs:element name="FuelConsumption" type="xs:unsignedByte" />
</xs:sequence>
<xs:attribute name="Preferred" type="xs:string" use="optional" />
<xs:attribute name="Fueltype-Id" type="xs:unsignedInt" use="required" />
</xs:complexType>
</xs:element>
<xs:element name="Drivetrain">
<xs:complexType>
<xs:attribute name="Drivetrain-Id" type="xs:unsignedInt" use="required" />
</xs:complexType>
</xs:element>
<xs:element name="Transmissions">
<xs:complexType>
<xs:sequence>
<xs:element name="Gears" type="xs:unsignedByte" />
</xs:sequence>
<xs:attribute name="Trans-Id" type="xs:unsignedInt" use="required" />
</xs:complexType>
</xs:element>
<xs:element name="ImageUrl" type="xs:string" />
</xs:sequence>
<xs:attribute name="Make-Id" type="xs:unsignedInt" use="required" />
<xs:attribute name="Model" type="xs:string" use="required" />
<xs:attribute name="Year" type="xs:unsignedInt" use="required" />
<xs:attribute name="RegPlate" type="xs:string" use="optional" />
<xs:attribute name="VIN" type="xs:string" use="optional" />
<xs:attribute name="Power" type="xs:string" use="optional" />
<xs:attribute name="Milage" type="xs:unsignedInt" use="required" />
<xs:attribute name="Color" type="xs:string" use="optional" />
<xs:attribute name="Price" type="xs:unsignedInt" use="required" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>