Kirde sai
Team "Kirde sai"
- Taavi Teearu
XML/XSD/XSLT
XML
Plants with names, needed light conditions etc.
<?xml version="1.0" encoding="utf-8"?>
<!-- Edited with XML Spy v2006 (http://www.altova.com) -->
<CATALOG Id="1" Name="Herbarium">
<DIM2 Id="1" Name="DIM 2.1" >
<PLANT SpiritAnimal="Fox">
<COMMON>Bloodroot</COMMON>
<BOTANICAL>Sanguinaria canadensis</BOTANICAL>
<ZONE>4</ZONE>
<LIGHT>Mostly Shady</LIGHT>
<PRICE>$2.44</PRICE>
<AVAILABILITY>031599</AVAILABILITY>
</PLANT>
<PLANT SpiritAnimal="Squirrel">
<COMMON>Columbine</COMMON>
<BOTANICAL>Aquilegia canadensis</BOTANICAL>
<ZONE>3</ZONE>
<LIGHT>Mostly Shady</LIGHT>
<PRICE>$9.37</PRICE>
<AVAILABILITY>030699</AVAILABILITY>
</PLANT>
<PLANT SpiritAnimal="Rabbit">
<COMMON>Marsh Marigold</COMMON>
<BOTANICAL>Caltha palustris</BOTANICAL>
<ZONE>4</ZONE>
<LIGHT>Mostly Sunny</LIGHT>
<PRICE>$6.81</PRICE>
<AVAILABILITY>051799</AVAILABILITY>
</PLANT>
<PLANT SpiritAnimal="Ant">
<COMMON>Cowslip</COMMON>
<BOTANICAL>Caltha palustris</BOTANICAL>
<ZONE>4</ZONE>
<LIGHT>Mostly Shady</LIGHT>
<PRICE>$9.90</PRICE>
<AVAILABILITY>030699</AVAILABILITY>
</PLANT>
<PLANT SpiritAnimal="Elephant">
<COMMON>Dutchman's-Breeches</COMMON>
<BOTANICAL>Dicentra cucullaria</BOTANICAL>
<ZONE>3</ZONE>
<LIGHT>Mostly Shady</LIGHT>
<PRICE>$6.44</PRICE>
<AVAILABILITY>012099</AVAILABILITY>
</PLANT>
</DIM2>
<DIM2 Id="2" Name="DIM 2.2">
<PLANT SpiritAnimal="Fox">
<COMMON>Ginger, Wild</COMMON>
<BOTANICAL>Asarum canadense</BOTANICAL>
<ZONE>3</ZONE>
<LIGHT>Mostly Shady</LIGHT>
<PRICE>$9.03</PRICE>
<AVAILABILITY>041899</AVAILABILITY>
</PLANT>
<PLANT SpiritAnimal="Rat">
<COMMON>Hepatica</COMMON>
<BOTANICAL>Hepatica americana</BOTANICAL>
<ZONE>4</ZONE>
<LIGHT>Mostly Shady</LIGHT>
<PRICE>$4.45</PRICE>
<AVAILABILITY>012699</AVAILABILITY>
</PLANT>
<PLANT SpiritAnimal="Hippo">
<COMMON>Liverleaf</COMMON>
<BOTANICAL>Hepatica americana</BOTANICAL>
<ZONE>4</ZONE>
<LIGHT>Mostly Shady</LIGHT>
<PRICE>$3.99</PRICE>
<AVAILABILITY>010299</AVAILABILITY>
</PLANT>
<PLANT SpiritAnimal="Lion">
<COMMON>Jack-In-The-Pulpit</COMMON>
<BOTANICAL>Arisaema triphyllum</BOTANICAL>
<ZONE>4</ZONE>
<LIGHT>Mostly Shady</LIGHT>
<PRICE>$3.23</PRICE>
<AVAILABILITY>020199</AVAILABILITY>
</PLANT>
<PLANT SpiritAnimal="Zebra">
<COMMON>Mayapple</COMMON>
<BOTANICAL>Podophyllum peltatum</BOTANICAL>
<ZONE>3</ZONE>
<LIGHT>Mostly Shady</LIGHT>
<PRICE>$2.98</PRICE>
<AVAILABILITY>060599</AVAILABILITY>
</PLANT>
<PLANT SpiritAnimal="Alien">
<COMMON>Phlox, Woodland</COMMON>
<BOTANICAL>Phlox divaricata</BOTANICAL>
<ZONE>3</ZONE>
<LIGHT>Sun or Shade</LIGHT>
<PRICE>$2.80</PRICE>
<AVAILABILITY>012299</AVAILABILITY>
</PLANT>
<PLANT SpiritAnimal="Beaver">
<COMMON>Phlox, Blue</COMMON>
<BOTANICAL>Phlox divaricata</BOTANICAL>
<ZONE>3</ZONE>
<LIGHT>Sun or Shade</LIGHT>
<PRICE>$5.59</PRICE>
<AVAILABILITY>021699</AVAILABILITY>
</PLANT>
<PLANT SpiritAnimal="Moose">
<COMMON>Spring-Beauty</COMMON>
<BOTANICAL>Claytonia Virginica</BOTANICAL>
<ZONE>7</ZONE>
<LIGHT>Mostly Shady</LIGHT>
<PRICE>$6.59</PRICE>
<AVAILABILITY>020199</AVAILABILITY>
</PLANT>
<PLANT SpiritAnimal="Monkey">
<COMMON>Trillium</COMMON>
<BOTANICAL>Trillium grandiflorum</BOTANICAL>
<ZONE>5</ZONE>
<LIGHT>Sun or Shade</LIGHT>
<PRICE>$3.90</PRICE>
<AVAILABILITY>042999</AVAILABILITY>
</PLANT>
<PLANT SpiritAnimal="Snake">
<COMMON>Wake Robin</COMMON>
<BOTANICAL>Trillium grandiflorum</BOTANICAL>
<ZONE>5</ZONE>
<LIGHT>Sun or Shade</LIGHT>
<PRICE>$3.20</PRICE>
<AVAILABILITY>022199</AVAILABILITY>
</PLANT>
<PLANT SpiritAnimal="Frog">
<COMMON>Violet, Dog-Tooth</COMMON>
<BOTANICAL>Erythronium americanum</BOTANICAL>
<ZONE>4</ZONE>
<LIGHT>Shade</LIGHT>
<PRICE>$9.04</PRICE>
<AVAILABILITY>020199</AVAILABILITY>
</PLANT>
<PLANT SpiritAnimal="Dragon">
<COMMON>Trout Lily</COMMON>
<BOTANICAL>Erythronium americanum</BOTANICAL>
<ZONE>4</ZONE>
<LIGHT>Shade</LIGHT>
<PRICE>$6.94</PRICE>
<AVAILABILITY>032499</AVAILABILITY>
</PLANT>
<PLANT SpiritAnimal="Shrek">
<COMMON>Adder's-Tongue</COMMON>
<BOTANICAL>Erythronium americanum</BOTANICAL>
<ZONE>4</ZONE>
<LIGHT>Shade</LIGHT>
<PRICE>$9.58</PRICE>
<AVAILABILITY>041399</AVAILABILITY>
</PLANT>
<PLANT SpiritAnimal="Cyclope">
<COMMON>Anemone</COMMON>
<BOTANICAL>Anemone blanda</BOTANICAL>
<ZONE>6</ZONE>
<LIGHT>Mostly Shady</LIGHT>
<PRICE>$8.86</PRICE>
<AVAILABILITY>122698</AVAILABILITY>
</PLANT>
<PLANT SpiritAnimal="Tiger">
<COMMON>Grecian Windflower</COMMON>
<BOTANICAL>Anemone blanda</BOTANICAL>
<ZONE>6</ZONE>
<LIGHT>Mostly Shady</LIGHT>
<PRICE>$9.16</PRICE>
<AVAILABILITY>071099</AVAILABILITY>
</PLANT>
</DIM2>
<DIM2 Id="3" Name="DIM 2.3">
<PLANT SpiritAnimal="Cat">
<COMMON>Bee Balm</COMMON>
<BOTANICAL>Monarda didyma</BOTANICAL>
<ZONE>4</ZONE>
<LIGHT>Shade</LIGHT>
<PRICE>$4.59</PRICE>
<AVAILABILITY>050399</AVAILABILITY>
</PLANT>
<PLANT SpiritAnimal="Dog">
<COMMON>Bergamot</COMMON>
<BOTANICAL>Monarda didyma</BOTANICAL>
<ZONE>4</ZONE>
<LIGHT>Shade</LIGHT>
<PRICE>$7.16</PRICE>
<AVAILABILITY>042799</AVAILABILITY>
</PLANT>
<PLANT SpiritAnimal="Cow">
<COMMON>Black-Eyed Susan</COMMON>
<BOTANICAL>Rudbeckia hirta</BOTANICAL>
<ZONE>Annual</ZONE>
<LIGHT>Sunny</LIGHT>
<PRICE>$9.80</PRICE>
<AVAILABILITY>061899</AVAILABILITY>
</PLANT>
<PLANT SpiritAnimal="Pig">
<COMMON>Buttercup</COMMON>
<BOTANICAL>Ranunculus</BOTANICAL>
<ZONE>4</ZONE>
<LIGHT>Shade</LIGHT>
<PRICE>$2.57</PRICE>
<AVAILABILITY>061099</AVAILABILITY>
</PLANT>
<PLANT SpiritAnimal="Dolphin">
<COMMON>Crowfoot</COMMON>
<BOTANICAL>Ranunculus</BOTANICAL>
<ZONE>4</ZONE>
<LIGHT>Shade</LIGHT>
<PRICE>$9.34</PRICE>
<AVAILABILITY>040399</AVAILABILITY>
</PLANT>
<PLANT SpiritAnimal="Blue whale">
<COMMON>Butterfly Weed</COMMON>
<BOTANICAL>Asclepias tuberosa</BOTANICAL>
<ZONE>Annual</ZONE>
<LIGHT>Sunny</LIGHT>
<PRICE>$2.78</PRICE>
<AVAILABILITY>063099</AVAILABILITY>
</PLANT>
<PLANT SpiritAnimal="Donkey">
<COMMON>Cinquefoil</COMMON>
<BOTANICAL>Potentilla</BOTANICAL>
<ZONE>Annual</ZONE>
<LIGHT>Shade</LIGHT>
<PRICE>$7.06</PRICE>
<AVAILABILITY>052599</AVAILABILITY>
</PLANT>
</DIM2>
<DIM2 Id="4" Name="DIM 2.4">
<PLANT SpiritAnimal="Mouse">
<COMMON>Primrose</COMMON>
<BOTANICAL>Oenothera</BOTANICAL>
<ZONE>3 - 5</ZONE>
<LIGHT>Sunny</LIGHT>
<PRICE>$6.56</PRICE>
<AVAILABILITY>013099</AVAILABILITY>
</PLANT>
<PLANT SpiritAnimal="Horse">
<COMMON>Gentian</COMMON>
<BOTANICAL>Gentiana</BOTANICAL>
<ZONE>4</ZONE>
<LIGHT>Sun or Shade</LIGHT>
<PRICE>$7.81</PRICE>
<AVAILABILITY>051899</AVAILABILITY>
</PLANT>
<PLANT SpiritAnimal="Wolf">
<COMMON>Blue Gentian</COMMON>
<BOTANICAL>Gentiana</BOTANICAL>
<ZONE>4</ZONE>
<LIGHT>Sun or Shade</LIGHT>
<PRICE>$8.56</PRICE>
<AVAILABILITY>050299</AVAILABILITY>
</PLANT>
<PLANT SpiritAnimal="Bear">
<COMMON>Jacob's Ladder</COMMON>
<BOTANICAL>Polemonium caeruleum</BOTANICAL>
<ZONE>Annual</ZONE>
<LIGHT>Shade</LIGHT>
<PRICE>$9.26</PRICE>
<AVAILABILITY>022199</AVAILABILITY>
</PLANT>
<PLANT SpiritAnimal="Lynx">
<COMMON>Greek Valerian</COMMON>
<BOTANICAL>Polemonium caeruleum</BOTANICAL>
<ZONE>Annual</ZONE>
<LIGHT>Shade</LIGHT>
<PRICE>$4.36</PRICE>
<AVAILABILITY>071499</AVAILABILITY>
</PLANT>
<PLANT SpiritAnimal="Deer">
<COMMON>California Poppy</COMMON>
<BOTANICAL>Eschscholzia californica</BOTANICAL>
<ZONE>Annual</ZONE>
<LIGHT>Sun</LIGHT>
<PRICE>$7.89</PRICE>
<AVAILABILITY>032799</AVAILABILITY>
</PLANT>
<PLANT SpiritAnimal="Kangaroo">
<COMMON>Shooting Star</COMMON>
<BOTANICAL>Dodecatheon</BOTANICAL>
<ZONE>Annual</ZONE>
<LIGHT>Mostly Shady</LIGHT>
<PRICE>$8.60</PRICE>
<AVAILABILITY>051399</AVAILABILITY>
</PLANT>
</DIM2>
<DIM2 Id="5" Name="DIM 2.5">
<PLANT SpiritAnimal="Lamb">
<COMMON>Snakeroot</COMMON>
<BOTANICAL>Cimicifuga</BOTANICAL>
<ZONE>Annual</ZONE>
<LIGHT>Shade</LIGHT>
<PRICE>$5.63</PRICE>
<AVAILABILITY>071199</AVAILABILITY>
</PLANT>
<PLANT SpiritAnimal="Leopard">
<COMMON>Cardinal Flower</COMMON>
<BOTANICAL>Lobelia cardinalis</BOTANICAL>
<ZONE>2</ZONE>
<LIGHT>Shade</LIGHT>
<PRICE>$3.02</PRICE>
<AVAILABILITY>022299</AVAILABILITY>
</PLANT>
</DIM2>
</CATALOG>
XSD
Assigned minOccurs to PLANT and DIM2, changed attribute SpiritAnimal's use to optional and Plants attribute Id to unsignedInt
<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="CATALOG">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="1" maxOccurs="unbounded" name="DIM2">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="1" maxOccurs="unbounded" name="PLANT">
<xs:complexType>
<xs:sequence>
<xs:element name="COMMON" type="xs:string" />
<xs:element name="BOTANICAL" type="xs:string" />
<xs:element name="ZONE" type="xs:string" />
<xs:element name="LIGHT" type="xs:string" />
<xs:element name="PRICE" type="xs:string" />
<xs:element name="AVAILABILITY" type="xs:unsignedInt" />
</xs:sequence>
<xs:attribute name="SpiritAnimal" type="xs:string" use="optional" />
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="Id" type="xs:unsignedInt" use="required" />
<xs:attribute name="Name" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="Id" type="xs:unsignedInt" use="required" />
<xs:attribute name="Name" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
</xs:schema>
XSLT HTML
XSLT that returns HTML as output. It creates a table that consists of plants common name, necessary light condition and price. Assigned light conditon necessity is color coded by availability value fulfilling certaing condition.
<?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>My plants</h1>
<h4>Color coded by value of availability fitting in range</h4>
<table>
<tr>
<td width="300px">
<b>Common name</b>
</td>
<td width="100px" bgcolor="yellow">
<b>Light contitions</b>
</td>
<td width="70px">
<b>Dollar tokens</b>
</td>
</tr>
<xsl:for-each select="/CATALOG/DIM2/PLANT">
<tr>
<td width="300px">
<xsl:value-of select="COMMON"/>
</td>
<xsl:choose>
<xsl:when test="./AVAILABILITY < 020000">
<td width="150px" bgcolor="orange">
<xsl:value-of select="LIGHT"/>
</td>
</xsl:when>
<xsl:when test="./AVAILABILITY < 030000">
<td width="150px" bgcolor="green">
<xsl:value-of select="LIGHT"/>
</td>
</xsl:when>
<xsl:when test="./AVAILABILITY < 050000">
<td width="150px" bgcolor="blue">
<xsl:value-of select="LIGHT"/>
</td>
</xsl:when>
<xsl:otherwise>
<td width="150px">
<xsl:value-of select="LIGHT"/>
</td>
</xsl:otherwise>
</xsl:choose>
<td width="70px">
<xsl:value-of select="PRICE"/>
</td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
XSLT XML
XSLT that returns XML as output. It sorts plants inside each DIM2 separately and lists only the ones with availability value below 050000.
<?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="/">
<html>
<body>
<h1>Plants sorted by availability in separate XML dimensions. Only entries with availability below 050000 are shown.</h1>
<xsl:for-each select="/CATALOG/DIM2">
<h3>
<xsl:value-of select="@Name"/>
</h3>
<ol>
<xsl:for-each select="PLANT">
<xsl:sort select="AVAILABILITY"/>
<xsl:for-each select=".">
<xsl:variable name="av" select="050000"/>
<xsl:if test="./AVAILABILITY < $av">
<li>
<b>
<xsl:value-of select="BOTANICAL"/>
</b><br/>
Availability: <xsl:value-of select="AVAILABILITY"/><br/>
Zone: <xsl:value-of select="ZONE"/>
</li>
</xsl:if>
</xsl:for-each>
</xsl:for-each>
</ol>
</xsl:for-each>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Output
Pictures of outputs created by XSLT-s listed above.
Veebiteenus
Analüüs
Rakenduse eesmärgiks on tekitada võimalus õppur-sõidukijuhtidele saada sõidutunde litsentseeritud sõiduõpetajatelt ning lisaks sellele on võimalik oma parasjagu kasutuseta seisev sõiduk rentida välja õppesõiduks
Rakenduse loomisel kasutan andmebaasi, kuhu lisatakse veebiliidese kaudu kasutajaid, sõidukeid, kasutajate rolle ja muud. Iga kasutaja saab muuta ja lisada enda kohta käivat informatsiooni. Projekt põhineb ASP.NET Core baasil.
Tööjaotus
- Taavi - Jack of all trades, a master of none..
Kuna tegemist on ka ASP.NET õppeaine raames loodava projektiga, siis teen seda üksi.
Must have
- Tavakasutaja view
Tavakasutaja peab saama luua omale konto
Peab saama registreerida ennast õpilaseks, õpetajaks sõiduki omanikuks
- Valik erinevate rollide vahel
Kasutaja saab valida, millises õppesessioonis on ta õpilane, millises õpetaja ning millistese soovib oma sõidukit rentida.
- Arved
Kasutaja näeb oma sessioonide ajalugu ja vastavalt nendele koostatud arveid
- Kõik andmed pärinevad andmebaasist
Nice to have
- Admin view
Kasutaja, kes saab muuta ja lisada kirjeid kõigi teiste kasutajate kohta.
- Calendar view
Igal registreerumisel kuvatakse kalender, kuhu on võimalik märkida oma võimalikud sessioonide ajad
Raskused
Antud projekti raames võivad osutuda problemaatiliseks:
- Giti kasutamine Visual Studios - Läks oodatust paremini
- Ajaplaneerimine
- Projekti mahukus ja selle üksi tegemine võib osutuda keeruliseks.