MealPlannerSolo: Difference between revisions

From ICO wiki
Jump to navigationJump to search
 
(15 intermediate revisions by the same user not shown)
Line 3: Line 3:
==Varasem projektileht==
==Varasem projektileht==
[https://wiki.itcollege.ee/index.php/Meeskond:_MealPlanner Meeskond: MealPlanner]
[https://wiki.itcollege.ee/index.php/Meeskond:_MealPlanner Meeskond: MealPlanner]
==Veebiteenus ja klientrakendus==
Lõpptoode:'''[http://enos.itcollege.ee/~troja/VRII2018/ Veebiteenus ja klientrakendus]'''


=Analüüs=
=Analüüs=
Line 51: Line 54:
<source lang="xml">
<source lang="xml">
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<menüü id="1" date="01.08.2018">
<menüü id="1" date="2018-08-24">
   <toidukord id="1" name="hommikusöök">
   <toidukord id="1" name="hommikusöök">
     <recipe id="2" category="vegan">
     <recipe id="2" category="vegan">
      <recipecategory>Vegan</recipecategory>
       <recipetitle>Hommikupuder</recipetitle>
       <recipetitle>Hommikupuder</recipetitle>
       <recipesource>https://nami-nami.ee/retsept/10129/kaerahelbepuder_maapahklivoiga</recipesource>
       <recipesource>https://nami-nami.ee/retsept/10129/kaerahelbepuder_maapahklivoiga</recipesource>
       <preptime unitoftime="minutes">5</preptime>
       <preptime unitoftime="minutit">5</preptime>
       <instructions>
       <instructions>
         <step><![CDATA[Sega potis kaerahelbed, sool ja vesi. Kuumuta tasasel tulel aeg-ajalt segades, kuni puder on paraja konsistentsiga.]]> </step>
         <step><![CDATA[Sega potis kaerahelbed, sool ja vesi. Kuumuta tasasel tulel aeg-ajalt segades, kuni puder on paraja konsistentsiga.]]> </step>
Line 64: Line 68:
       <ingredients>
       <ingredients>
       <ingredient id="18" unit="dl" quantity="1">Kaerahelbed</ingredient>
       <ingredient id="18" unit="dl" quantity="1">Kaerahelbed</ingredient>
       <ingredient id="21" unit="tbsp" quantity="1">Maapähklivõid</ingredient>
       <ingredient id="21" unit="supilusikas" quantity="1">Maapähklivõid</ingredient>
       <ingredient id="3" unit="dl" quantity="2">Vett</ingredient>
       <ingredient id="3" unit="dl" quantity="2">Vett</ingredient>
       <ingredient id="41" unit="gram" quantity="50">Banaani</ingredient>
       <ingredient id="41" unit="grammi" quantity="50">Banaani</ingredient>
       <ingredient id="1" unit="pinch" quantity="1">Soola</ingredient>
       <ingredient id="1" unit="näpuotsatäis" quantity="1">Soola</ingredient>
       </ingredients>
       </ingredients>
     </recipe>
     </recipe>
Line 73: Line 77:
   <toidukord id="2" name="lõuna">
   <toidukord id="2" name="lõuna">
     <recipe id="4" category="normal">
     <recipe id="4" category="normal">
      <recipecategory>Tavaline</recipecategory>
       <recipetitle>Kilupirukad fetajuustuga</recipetitle>
       <recipetitle>Kilupirukad fetajuustuga</recipetitle>
       <recipesource>https://nami-nami.ee/retsept/9104/kilupirukad_fetajuustuga</recipesource>
       <recipesource>https://nami-nami.ee/retsept/9104/kilupirukad_fetajuustuga</recipesource>
       <preptime unitoftime="minutes">35</preptime>
       <preptime unitoftime="minutit">35</preptime>
       <instructions>
       <instructions>
         <step><![CDATA[Sulata pärmi-lehttainas. Rulli tainas 5 mm paksuseks ja lõika umbes 8x8 cm ruutudeks. Suru ruudud muffinipanni aukudesse.]]></step>
         <step><![CDATA[Sulata pärmi-lehttainas. Rulli tainas 5 mm paksuseks ja lõika umbes 8x8 cm ruutudeks. Suru ruudud muffinipanni aukudesse.]]></step>
Line 82: Line 87:
       </instructions>
       </instructions>
       <ingredients>
       <ingredients>
       <ingredient id="51" unit="gram" quantity="500">Pärmi-lehttainast</ingredient>
       <ingredient id="51" unit="grammi" quantity="500">Pärmi-lehttainast</ingredient>
       <ingredient id="31" unit="pc" quantity="4">Keedetud muna</ingredient>
       <ingredient id="31" unit="tk" quantity="4">Keedetud muna</ingredient>
       <ingredient id="68" unit="gram" quantity="130">Vürtsikilufileed</ingredient>
       <ingredient id="68" unit="grammi" quantity="130">Vürtsikilufileed</ingredient>
       <ingredient id="44" unit="pc" quantity="12">Kirsstomatit</ingredient>
       <ingredient id="44" unit="tk" quantity="12">Kirsstomatit</ingredient>
       <ingredient id="76" unit="gram" quantity="100">Fetajuustu</ingredient>
       <ingredient id="76" unit="grammi" quantity="100">Fetajuustu</ingredient>
       <ingredient id="1" unit="tsp" quantity="0.5">Soola</ingredient>
       <ingredient id="1" unit="teelusikas" quantity="0.5">Soola</ingredient>
       </ingredients>
       </ingredients>
   </recipe>
   </recipe>
Line 93: Line 98:
   <toidukord id="3" name="õhtusöök">
   <toidukord id="3" name="õhtusöök">
     <recipe id="6"  category="normal">
     <recipe id="6"  category="normal">
      <recipecategory>Tavaline</recipecategory>
       <recipetitle>Kõrvitsasupp suitsukanaga</recipetitle>
       <recipetitle>Kõrvitsasupp suitsukanaga</recipetitle>
       <recipesource>http://www.linnuliha.ee/retseptid/korvitsasupp-suitsukanaga/</recipesource>
       <recipesource>http://www.linnuliha.ee/retseptid/korvitsasupp-suitsukanaga/</recipesource>
       <preptime unitoftime="minutes">30</preptime>
       <preptime unitoftime="minutit">30</preptime>
       <instructions>
       <instructions>
         <step><![CDATA[Pane retsepti 5 esimest komponenti potti ning keeda seni kuni köögiviljad on pehmed.]]></step>
         <step><![CDATA[Pane retsepti 5 esimest komponenti potti ning keeda seni kuni köögiviljad on pehmed.]]></step>
Line 103: Line 109:
       </instructions>
       </instructions>
       <ingredients>
       <ingredients>
       <ingredient id="47" unit="gram" quantity="450">Kõrvitsat</ingredient>
       <ingredient id="47" unit="grammi" quantity="450">Kõrvitsat</ingredient>
       <ingredient id="42" unit="gram" quantity="150">Porgandit</ingredient>
       <ingredient id="42" unit="grammi" quantity="150">Porgandit</ingredient>
       <ingredient id="48" unit="pc" quantity="4">Tillivart</ingredient>
       <ingredient id="48" unit="tk" quantity="4">Tillivart</ingredient>
       <ingredient id="3" unit="dl" quantity="6">Vett</ingredient>
       <ingredient id="3" unit="dl" quantity="6">Vett</ingredient>
       <ingredient id="33" unit="gram" quantity="100">Suitsutatud kanakintsuliha</ingredient>
       <ingredient id="33" unit="grammi" quantity="100">Suitsutatud kanakintsuliha</ingredient>
       <ingredient id="1" unit="pinch" quantity="1">Soola</ingredient>
       <ingredient id="1" unit="näpuotsatäis" quantity="1">Soola</ingredient>
       <ingredient id="77" unit="gram" quantity="100">Toorjuustu</ingredient>
       <ingredient id="77" unit="grammi" quantity="100">Toorjuustu</ingredient>
       </ingredients>
       </ingredients>
   </recipe>
   </recipe>
Line 129: Line 135:
                 <xs:complexType>
                 <xs:complexType>
                   <xs:sequence>
                   <xs:sequence>
                    <xs:element name="recipecategory" type="xs:string" />
                     <xs:element name="recipetitle" type="xs:string" />
                     <xs:element name="recipetitle" type="xs:string" />
                     <xs:element name="recipesource" type="xs:string" />
                     <xs:element name="recipesource" type="xs:string" />
Line 134: Line 141:
                       <xs:complexType>
                       <xs:complexType>
                         <xs:simpleContent>
                         <xs:simpleContent>
                           <xs:extension base="xs:unsignedByte">
                           <xs:extension base="xs:positiveInteger">
                             <xs:attribute name="unitoftime" type="xs:string" use="required" />
                             <xs:attribute name="unitoftime" type="xs:string" use="required" />
                           </xs:extension>
                           </xs:extension>
Line 154: Line 161:
                               <xs:simpleContent>
                               <xs:simpleContent>
                                 <xs:extension base="xs:string">
                                 <xs:extension base="xs:string">
                                   <xs:attribute name="id" type="xs:unsignedByte" use="required" />
                                   <xs:attribute name="id" type="xs:nonNegativeInteger" use="required" />
                                   <xs:attribute name="unit" type="xs:string" use="required" />
                                   <xs:attribute name="unit" type="xs:string" use="required" />
                                   <xs:attribute name="quantity" type="xs:decimal" use="required" />
                                   <xs:attribute name="quantity" type="xs:decimal" use="required" />
Line 165: Line 172:
                     </xs:element>
                     </xs:element>
                   </xs:sequence>
                   </xs:sequence>
                   <xs:attribute name="id" type="xs:unsignedByte" use="required" />
                   <xs:attribute name="id" type="xs:nonNegativeInteger" use="required" />
                   <xs:attribute name="category" type="xs:string" use="required" />
                   <xs:attribute name="category" type="xs:string" use="required" />
                 </xs:complexType>
                 </xs:complexType>
               </xs:element>
               </xs:element>
             </xs:sequence>
             </xs:sequence>
             <xs:attribute name="id" type="xs:unsignedByte" use="required" />
             <xs:attribute name="id" type="xs:nonNegativeInteger" use="required" />
             <xs:attribute name="name" type="xs:string" use="required" />
             <xs:attribute name="name" type="xs:string" use="required" />
           </xs:complexType>
           </xs:complexType>
         </xs:element>
         </xs:element>
       </xs:sequence>
       </xs:sequence>
       <xs:attribute name="id" type="xs:unsignedByte" use="required" />
       <xs:attribute name="id" type="xs:nonNegativeInteger" use="required" />
       <xs:attribute name="date" type="xs:string" use="required" />
       <xs:attribute name="date" type="xs:date" use="required" />
     </xs:complexType>
     </xs:complexType>
   </xs:element>
   </xs:element>
</xs:schema>
</xs:schema></source>
 
==XSLT->HTML==
<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="html" indent="yes"/>
  <xsl:template match="/menüü">
    <html>
      <head>
        <title>Päevamenüü</title>
      </head>
      <body>
        <h1>Menüü</h1>
        <xsl:for-each select="toidukord">
          <table>
            <tr>
              <td>
                <h2>
                <xsl:value-of select ="recipe/recipetitle"/>
                </h2>
              </td>
              <tr>
                <td>
                  <xsl:text>Valmistamisaeg: </xsl:text>
                  <xsl:value-of select ="recipe/preptime"/>
                  <xsl:text> minutit</xsl:text>
                </td>
                <tr>
                <td>
                  <xsl:choose>
                    <xsl:when test="recipe/@category='vegan'">
                      <xsl:text>Vegan option!</xsl:text>
                    </xsl:when>
                    <xsl:otherwise>
                      <xsl:text>Kõigile!</xsl:text>
                    </xsl:otherwise>
                  </xsl:choose>
                </td>
                </tr>
              </tr>
              <td>
                <xsl:text>Allikas:</xsl:text>
                <a href=" ">
                  <xsl:value-of select="recipe/recipesource"/>
                </a>
              </td>
              <tr>
                <td>
                  <ul style="list-style-type:square">
                    <xsl:for-each select="recipe/ingredients/ingredient">
                      <li>
                        <xsl:value-of select="@quantity"/>
                        <xsl:text> </xsl:text>
                        <xsl:value-of select="@unit"/>
                        <xsl:text> </xsl:text>
                        <xsl:value-of select="."/>
                      </li>
                    </xsl:for-each>
                  </ul>
                  <ul>
                    <xsl:for-each select="recipe/instructions/step">
                      <li>
                       
                        <xsl:value-of select="."/>
                      </li>
                    </xsl:for-each>
                  </ul>
                </td>
              </tr>
            </tr>
           
 
          </table>
        </xsl:for-each>
  </body>
    </html>
  </xsl:template>
</xsl:stylesheet>
 
</source>
</source>


==XSLT->XML==
<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="/menüü">
    <retseptid>
      <xsl:for-each select ="toidukord">
        <retsept>
          <retseptinimi>
            <xsl:value-of select="recipe/recipetitle"/>
          </retseptinimi>
          <xsl:choose>
            <xsl:when test="recipe/ingredients/ingredient='Maapähklivõid'">
              <allergeen>
                <xsl:text>Sisaldab allergeeni: maapähkel</xsl:text>
              </allergeen>
          </xsl:when>
            <xsl:when test="recipe/ingredients/ingredient='Keedetud muna'">
              <allergeen>
                <xsl:text>Sisaldab allergeeni: muna</xsl:text>
              </allergeen>
            </xsl:when>
            <xsl:otherwise>
              <allergeen>
                <xsl:text>Ei sisalda allergeene </xsl:text>
              </allergeen>
            </xsl:otherwise>
          </xsl:choose>
          <xsl:for-each select="recipe/ingredients/ingredient">
          <koostisosad>
            <xsl:value-of select="."/>
          </koostisosad>
          </xsl:for-each>
        </retsept>
      </xsl:for-each>
    </retseptid>
  </xsl:template>
</xsl:stylesheet>
</source>
==Retsensioonid==
==Retsensioonid==

Latest revision as of 19:22, 6 June 2018

Liikmed

  • Triin Oja

Varasem projektileht

Meeskond: MealPlanner

Veebiteenus ja klientrakendus

Lõpptoode:Veebiteenus ja klientrakendus

Analüüs

Kirjeldus

MealPlanner on rakendus, mis aitab planeerida nädala menüüd ja poeskäike. Kasutajale pakutakse valitud päevade arvuks retseptid ja genereerib nende põhjal ostunimekirja. Retseptid jagunevad toidukorra tüüpi(breakfast, snack, main course, desert) ja retseptitüübi järgi(vegan, paleo, keto, regular). Retseptitüübi järgi jagunemine aitab näiteks ka uue dieeti katsetamise lihtsamaks - saad näiteks terve nädala jagu sobivaid retsepte kätte ja ei teki kiusatust midagi ebasobivat süüa/osta. Ostunimekirja saab kasutaja ka jagada - näiteks e-maili teel.

Infosüsteemi funktsionaalsus

Kasutaja

  • Saab lisada retsepte
  • Saab muuta/kustutada enda lisatud retsepte
  • Saab salvestada ostunimekirja
  • Saab lisada ostunimekirja asju
  • Saab jagada ostunimekirja (näiteks e-mailis)

Admin

  • Saab lisada retsepte
  • Saab muuta kõiki retsepte
  • Saab kustutada kõiki retsepte
  • Haldab kasutajaid
  • Haldab piiranguid ja pöördumiste arvu piiramist

Retseptid

  • Koostisosad
  • Valmimisaeg
  • Valmistamisõpetus

Koostisosad

  • Nimi
  • Ühik(kas gramm, dl vms)
  • Kas on levinud allergeen (selle kohta oleks allergeenihoiatus)

Nice to Have

  • Random retsepti nupp - uute retseptide avastamiseks
  • Retseptide hindamine - näiteks viie palli süsteemis või lemmikuks lisamiste arv
  • Toiteväärtus

Kasutatavad tehnoloogiad

  • REST veebiteenus
    • .NET Core 2.0
  • Klientrakendus, mis suhtleb veebiteenusega
    • WPF

Andmemudel

XML andmefail

<?xml version="1.0" encoding="utf-8"?>
<menüü id="1" date="2018-08-24">
  <toidukord id="1" name="hommikusöök">
    <recipe id="2" category="vegan">
      <recipecategory>Vegan</recipecategory>
      <recipetitle>Hommikupuder</recipetitle>
      <recipesource>https://nami-nami.ee/retsept/10129/kaerahelbepuder_maapahklivoiga</recipesource>
      <preptime unitoftime="minutit">5</preptime>
      <instructions>
        <step><![CDATA[Sega potis kaerahelbed, sool ja vesi. Kuumuta tasasel tulel aeg-ajalt segades, kuni puder on paraja konsistentsiga.]]> </step>
        <step><![CDATA[Sega juurde maapähklivõi ja serveeri.]]> </step>
        <step><![CDATA[Pane maitsejärgi soola. Maitseks võid lisada ka banaaniviile.]]></step>
      </instructions>
      <ingredients>
      <ingredient id="18" unit="dl" quantity="1">Kaerahelbed</ingredient>
      <ingredient id="21" unit="supilusikas" quantity="1">Maapähklivõid</ingredient>
      <ingredient id="3" unit="dl" quantity="2">Vett</ingredient>
      <ingredient id="41" unit="grammi" quantity="50">Banaani</ingredient>
      <ingredient id="1" unit="näpuotsatäis" quantity="1">Soola</ingredient>
      </ingredients>
    </recipe>
  </toidukord>
  <toidukord id="2" name="lõuna">
    <recipe id="4" category="normal">
      <recipecategory>Tavaline</recipecategory>
      <recipetitle>Kilupirukad fetajuustuga</recipetitle>
      <recipesource>https://nami-nami.ee/retsept/9104/kilupirukad_fetajuustuga</recipesource>
      <preptime unitoftime="minutit">35</preptime>
      <instructions>
        <step><![CDATA[Sulata pärmi-lehttainas. Rulli tainas 5 mm paksuseks ja lõika umbes 8x8 cm ruutudeks. Suru ruudud muffinipanni aukudesse.]]></step>
        <step><![CDATA[Haki keedumunad, puista tainale, aseta peale kilufilee. Lõika kirsstomatid neljaks ja jaota samuti pirukatele. Puista peale fetajuust. Pintselda pirukaid pealt munaga.]]> </step>
        <step><![CDATA[Küpseta 225-kraadises ahjus 12-15 minutit. Puista peale hakitud murulauku, serveeri soojalt.]]></step>
      </instructions>
      <ingredients>
      <ingredient id="51" unit="grammi" quantity="500">Pärmi-lehttainast</ingredient>
      <ingredient id="31" unit="tk" quantity="4">Keedetud muna</ingredient>
      <ingredient id="68" unit="grammi" quantity="130">Vürtsikilufileed</ingredient>
      <ingredient id="44" unit="tk" quantity="12">Kirsstomatit</ingredient>
      <ingredient id="76" unit="grammi" quantity="100">Fetajuustu</ingredient>
      <ingredient id="1" unit="teelusikas" quantity="0.5">Soola</ingredient>
      </ingredients>
  </recipe>
  </toidukord>
  <toidukord id="3" name="õhtusöök">
    <recipe id="6"  category="normal">
      <recipecategory>Tavaline</recipecategory>
      <recipetitle>Kõrvitsasupp suitsukanaga</recipetitle>
      <recipesource>http://www.linnuliha.ee/retseptid/korvitsasupp-suitsukanaga/</recipesource>
      <preptime unitoftime="minutit">30</preptime>
      <instructions>
        <step><![CDATA[Pane retsepti 5 esimest komponenti potti ning keeda seni kuni köögiviljad on pehmed.]]></step>
        <step><![CDATA[Püreesta supp korralikult! Lisa väiksemaks lõigatud suitsukanatükid ning toorjuust.]]></step>
        <step><![CDATA[Kuumuta suppi seni, kuni juust on sulanud. Sobiva tekstuuri saamiseks võid lisada täiendavalt vett või piima!]]></step>
        <step><![CDATA[Vajadusel maitsesta ning seejärel serveeri.]]></step>
      </instructions>
      <ingredients>
      <ingredient id="47" unit="grammi" quantity="450">Kõrvitsat</ingredient>
      <ingredient id="42" unit="grammi" quantity="150">Porgandit</ingredient>
      <ingredient id="48" unit="tk" quantity="4">Tillivart</ingredient>
      <ingredient id="3" unit="dl" quantity="6">Vett</ingredient>
      <ingredient id="33" unit="grammi" quantity="100">Suitsutatud kanakintsuliha</ingredient>
      <ingredient id="1" unit="näpuotsatäis" quantity="1">Soola</ingredient>
      <ingredient id="77" unit="grammi" quantity="100">Toorjuustu</ingredient>
      </ingredients>
  </recipe>
  </toidukord>
</menüü>

XML skeemifail

<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="menüü">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="1" maxOccurs="4" name="toidukord">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="recipe">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="recipecategory" type="xs:string" />
                    <xs:element name="recipetitle" type="xs:string" />
                    <xs:element name="recipesource" type="xs:string" />
                    <xs:element name="preptime">
                      <xs:complexType>
                        <xs:simpleContent>
                          <xs:extension base="xs:positiveInteger">
                            <xs:attribute name="unitoftime" type="xs:string" use="required" />
                          </xs:extension>
                        </xs:simpleContent>
                      </xs:complexType>
                    </xs:element>
                    <xs:element name="instructions">
                      <xs:complexType>
                        <xs:sequence>
                          <xs:element minOccurs="1" maxOccurs="unbounded" name="step" type="xs:string" />
                        </xs:sequence>
                      </xs:complexType>
                    </xs:element>
                    <xs:element name="ingredients">
                      <xs:complexType>
                        <xs:sequence>
                          <xs:element minOccurs="1" maxOccurs="unbounded" name="ingredient">
                            <xs:complexType>
                              <xs:simpleContent>
                                <xs:extension base="xs:string">
                                  <xs:attribute name="id" type="xs:nonNegativeInteger" use="required" />
                                  <xs:attribute name="unit" type="xs:string" use="required" />
                                  <xs:attribute name="quantity" type="xs:decimal" use="required" />
                                </xs:extension>
                              </xs:simpleContent>
                            </xs:complexType>
                          </xs:element>
                        </xs:sequence>
                      </xs:complexType>
                    </xs:element>
                  </xs:sequence>
                  <xs:attribute name="id" type="xs:nonNegativeInteger" use="required" />
                  <xs:attribute name="category" type="xs:string" use="required" />
                </xs:complexType>
              </xs:element>
            </xs:sequence>
            <xs:attribute name="id" type="xs:nonNegativeInteger" use="required" />
            <xs:attribute name="name" type="xs:string" use="required" />
          </xs:complexType>
        </xs:element>
      </xs:sequence>
      <xs:attribute name="id" type="xs:nonNegativeInteger" use="required" />
      <xs:attribute name="date" type="xs:date" use="required" />
    </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="/menüü">
    <html>
      <head>
        <title>Päevamenüü</title>
      </head>
      <body>
        <h1>Menüü</h1>
        <xsl:for-each select="toidukord">
          <table>
            <tr>
              <td>
                <h2>
                <xsl:value-of select ="recipe/recipetitle"/>
                </h2>
              </td>
              <tr>
                <td>
                  <xsl:text>Valmistamisaeg: </xsl:text>
                  <xsl:value-of select ="recipe/preptime"/>
                  <xsl:text> minutit</xsl:text>
                </td>
                <tr>
                <td>
                  <xsl:choose>
                    <xsl:when test="recipe/@category='vegan'">
                      <xsl:text>Vegan option!</xsl:text>
                    </xsl:when>
                    <xsl:otherwise>
                      <xsl:text>Kõigile!</xsl:text>
                    </xsl:otherwise>
                  </xsl:choose>
                </td>
                </tr>
              </tr>
              <td>
                <xsl:text>Allikas:</xsl:text>
                <a href=" ">
                  <xsl:value-of select="recipe/recipesource"/>
                </a>
              </td>
              <tr>
                <td>
                  <ul style="list-style-type:square">
                    <xsl:for-each select="recipe/ingredients/ingredient">
                      <li>
                        <xsl:value-of select="@quantity"/>
                        <xsl:text> </xsl:text>
                        <xsl:value-of select="@unit"/>
                        <xsl:text> </xsl:text>
                        <xsl:value-of select="."/>
                      </li>
                    </xsl:for-each>
                  </ul>
                  <ul>
                    <xsl:for-each select="recipe/instructions/step">
                      <li>
                        
                        <xsl:value-of select="."/>
                      </li>
                    </xsl:for-each>
                  </ul>
                </td>
              </tr>
            </tr>
            

          </table>
        </xsl:for-each>
  </body>
    </html>
  </xsl:template>
</xsl:stylesheet>

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="/menüü">
    <retseptid>
      <xsl:for-each select ="toidukord">
        <retsept>
          <retseptinimi>
            <xsl:value-of select="recipe/recipetitle"/>
          </retseptinimi>

          <xsl:choose>
            <xsl:when test="recipe/ingredients/ingredient='Maapähklivõid'">
              <allergeen>
                <xsl:text>Sisaldab allergeeni: maapähkel</xsl:text>
              </allergeen>
          </xsl:when>
            <xsl:when test="recipe/ingredients/ingredient='Keedetud muna'">
              <allergeen>
                <xsl:text>Sisaldab allergeeni: muna</xsl:text>
              </allergeen>
            </xsl:when>
            <xsl:otherwise>
              <allergeen>
                <xsl:text>Ei sisalda allergeene </xsl:text>

              </allergeen>
            </xsl:otherwise>
          </xsl:choose>
          <xsl:for-each select="recipe/ingredients/ingredient">
          <koostisosad>
            <xsl:value-of select="."/>
          </koostisosad>
          </xsl:for-each>
        </retsept>
      </xsl:for-each>

    </retseptid>

  </xsl:template>
</xsl:stylesheet>

Retsensioonid