Meeskond:Error405

From EIK wiki

Liikmed

  • Priidik Soon
  • Mihkel Kivisild
  • Andre Kaur

VR2 Projekt

Etapp 1(XML failid)

XML fail

<?xml version="1.0" encoding="UTF-8"?>
<raamatukogud>
	<raamatukogu ID="1" nimi="TTÜ" linn="Tallinn" aadress="Akadeemia tee 1">
		<sektsioon ID="1" nimi="Matemaatika">
			<autor eesnimi="Peeter" perenimi="Puusemp">
				<teos>
					<pealkiri>Lineaaralgebra õpik</pealkiri>
					<aasta>2008</aasta>
				</teos>
				<teos>
					<pealkiri>Üldalgebra alused : õpik kõrgkoolidele</pealkiri>
					<aasta>2012</aasta>
				</teos>
			</autor>
			<autor eesnimi="Paolo" perenimi="Aluffi">
				<teos>
					<pealkiri>Algebra</pealkiri>
					<aasta>2009</aasta>
				</teos>
			</autor>
		</sektsioon>
		<sektsioon ID="2" nimi="Informaatika">
			<autor eesnimi="Peeter" perenimi="Lorents">
				<teos>
					<pealkiri>Informaatika teoreetilised alused: struktuurne aspekt</pealkiri>
					<aasta>2001</aasta>
				</teos>
				<teos>
					<pealkiri>Süsteemide maailm</pealkiri>
					<aasta>2006</aasta>
				</teos>
			</autor>
			<autor eesnimi="Jüri" perenimi="Kiho">
				<teos>
					<pealkiri>Algoritmid ja andmestruktuurid</pealkiri>
					<aasta>1997</aasta>
				</teos>
			</autor>
		</sektsioon>
	</raamatukogu>
	<raamatukogu ID="2" nimi="Keskraamatukogu" linn="Tallinn" aadress="Estonia pst 8">
		<sektsioon ID="1" nimi="Filosoofia">
			<autor eesnimi="Immanuel" perenimi="Kant">
				<teos>
					<pealkiri>Puhta mõistuse kriitika</pealkiri>
					<aasta>1781</aasta>
				</teos>
			</autor>
			<autor eesnimi="Werner" perenimi="Heisenberg">
				<teos>
					<pealkiri>Füüsika ja filosoofia</pealkiri>
					<aasta>2013</aasta>
				</teos>
			</autor>
		</sektsioon>
		<sektsioon ID="2" nimi="Ilukirjandus">
			<autor eesnimi="Friedebert" perenimi="Tuglas">
				<teos>
					<pealkiri>Väike Illimar</pealkiri>
					<aasta>1937</aasta>
				</teos>
				<teos>
					<pealkiri>Felix Ormusson</pealkiri>
					<aasta>1915</aasta>
				</teos>
			</autor>
			<autor eesnimi="Anton Hansen" perenimi="Tammsaare">
				<teos>
					<pealkiri>Kõrboja Peremees</pealkiri>
					<aasta>1922</aasta>
				</teos>
			</autor>
		</sektsioon>
	</raamatukogu>
</raamatukogud>

XSD fail

<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="raamatukogud">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="unbounded" name="raamatukogu">
          <xs:complexType>
            <xs:sequence>
              <xs:element maxOccurs="unbounded" name="sektsioon">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element maxOccurs="unbounded" name="autor">
                      <xs:complexType>
                        <xs:sequence>
                          <xs:element maxOccurs="unbounded" name="teos">
                            <xs:complexType>
                              <xs:sequence>
                                <xs:element name="pealkiri" type="xs:string" />
                                <xs:element name="aasta" type="xs:unsignedShort" />
                              </xs:sequence>
                            </xs:complexType>
                          </xs:element>
                        </xs:sequence>
                        <xs:attribute name="eesnimi" type="xs:string" use="required" />
                        <xs:attribute name="perenimi" type="xs:string" use="required" />
                      </xs:complexType>
                    </xs:element>
                  </xs:sequence>
                  <xs:attribute name="ID" type="xs:unsignedInt" use="required" />
                  <xs:attribute name="nimi" type="xs:string" use="required" />
                </xs:complexType>
              </xs:element>
            </xs:sequence>
            <xs:attribute name="ID" type="xs:unsignedInt" use="required" />
            <xs:attribute name="nimi" type="xs:string" use="required" />
            <xs:attribute name="linn" type="xs:string" use="required" />
            <xs:attribute name="aadress" type="xs:string" use="required" />
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

XSLT fail HTML-i transformeerimiseks

<?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>
      <head>
        <title>Raamatukogud</title>
      </head>
      <body>
        <!--pealkiri millel on css stiili lisatud-->
        <div id="Pealkiri" style="background-color:DarkGray; padding:10px;">
          <h1>Raamatukogud</h1>
        </div>
        <!--xml failist loetud elemendid ja attribuudid koos css stiiliga-->
        <div id="RaamatukoguElementLehel" style="background-color:whitesmoke; padding:10px;">
          <xsl:for-each select="raamatukogud/raamatukogu">
            <h1>
              <!--väljastab raamatukogu nime väärtuse-->
              <xsl:value-of select="@nimi"/>
            </h1>
            <ol>
              <xsl:for-each select="sektsioon">
                <li>
                  <!--väljastab sektsiooni nime-->
                  <xsl:value-of select="@nimi"/>
                </li>
                <ol>
                  <xsl:for-each select="autor">
                    <li>
                      <!--Väljastame autori eesnime ja perekonnanime-->
                      <xsl:value-of select="@eesnimi"/>&#160;<!--tühik-->
                      <xsl:value-of select="@perenimi"/>
                    </li>
                    <ul>
                      <xsl:for-each select="teos">
                        <li>
                          <!--Väljastab teose pealkirja ja väljalaske aasta-->
                          <xsl:value-of select="pealkiri"/>&#160;(<xsl:value-of select="aasta"/>)
                        </li>
                      </xsl:for-each>
                    </ul>
                  </xsl:for-each>
                </ol>
              </xsl:for-each>
            </ol>
          </xsl:for-each>
        </div>
      </body>
    </html>
  </xsl:template>
</xsl:stylesheet>

XSLT fail XML-i formaadi muutmiseks

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  
    <xsl:output method="xml" indent="yes"/>

    <xsl:template match="@* | node()">
        <xsl:copy>
            <xsl:apply-templates select="@* | node()"/>
        </xsl:copy>
    </xsl:template>

  <xsl:template match="raamatukogud/raamatukogu/@*">
    <xsl:element name="{name()}">
      <xsl:value-of select="."/>
    </xsl:element>
  </xsl:template>

</xsl:stylesheet>

Veebiteenuse analüüs

Kirjeldus

Loodav veebiteenus on andmebaas, millest on erinevate funktsioonide abil võimalik kätte saada toiduretsepte (sisuliselt kokaraamat). Veebiteenuse kõige tõenäolisemateks kasutajateks on igasugused kokanduslikud veebilehed, kuid näiteks ka online toidupoed. Ühesõnaga kõik rakendused, mis vajavad söögiretsepte. Teenus peaks olema väga paindlik ning võimaldama retseptide otsimist igal võimalikul moel, alustades täiesti suvalise retseptiga ning lõpetades väga spetsiifilisi toiduaineid sisaldavate retseptidega.

Kasutaja

Kasutaja on veebiteenuse kasutaja, kes saab endale registreerida konto. Kasutaja jaoks on veebiteenuses loodud funktsioonid, mida ta saab oma klientrakenduses välja kutsuda. Veebirakendus peab logi selle kohta kui palju mingi kasutaja on veebirakendust kasutanud. Et üks kasutaja ei saaks veebirakendust liialt koormata, piirame päringute arvu kasutaja kohta.

Funktsioonid

1) RandomRecipe - tagastatakse suvaline söögiretsept
2) RandomRecipeCat - tagastatakse suvaline söögiretsept etteantud kategooriast
3) LimitedRandomRecipe - tagastatakse suvaline söögiretsept, millele tuleb kaasa anda massiiv nendest toiduainetest, mida retsept sisaldada ei tohi
4) LimitedRandomRecipeCat - nagu eelmine, kuid ka kategooria tuleb ette anda
5) SpecificRecipe - tagastatakse retsept, milles kasutatakse etteantud toiduaineid
6) SpecificRecipeCat - nagu eelmine, kuid ka kategooria tuleb ette anda
7) Eelnevad funktsioonid mitmuses(tagastatakse etteantud arv retsepte)

Administraator

Administraator on veebiteenuse administraator. Tema saab lisada andmebaasi retsepte ja neid muuta ja ka kasutajaid kustutada vajadusel.

Must Have

  • Eelpool kirjeldatud funktsioonid
  • Võimalus kasutajaid luua
  • Administraatori võimalus kasutajaid hallata, sealjuures määrata veebiteenuse kasutuslimiite
  • Administraatoril võimalik retsepte lisada
  • Retseptid on kategooriatesse jaotatud

Nice to Have

  • Ülisuur andmebaas toiduretseptidest

Veebiteenus

arendamisel

Etapp 3(Klientrakendused)

Work in Progress