Meeskond:VariableMoods2
From ICO wiki
Liikmed
- Mihkel Künnapas
- Krister Kamla - projektijuht
- Berit Veidemann
Veebiteenuse analüüs
Kirjeldus
Plaanime luua universaalse veebipoe, mis on mõeldud müüjale oma teenuse pakkumiseks.
Must Have
Klient
- Uue kliendi lisamine
- Olemasoleva kliendi andmete muutmine
- Kliendi kontaktandmete lisamine/muutmine
- Kliendile kasutajakonto registreerimine/muutmine
- Klient saab sirvida poes olevaid tooteid
- Klient saab tooteid pärida kriteeriumide järgi (nt hind, populaarsus, kaubatüüp jne)
- Klient saab lisada/eemaldada tooteid ostukorvi, muuta toodete kogust ostukorvis
- Klient saab oma ostukorvi sisu kinnitada
- Kliendile saab esitada kinnitatud ostukorvi eest arve
- Klient saab vaadata talle esitatud arveid
Kaupmees
- Kaupmees saab sisestada/muuta/kustutada tooteid
- Kaupmees saab lisada/muuta tootekategooriaid
- Kaupmees saab vaadata laoseisude- ja müügistatistikat
- Kaupmees saab hallata kasutajaid, näha kasutajate statistikat
- Kaupmees saab vaadata arveid
- Kaupmees saab omal vastutusel kasutada administraatorliidest
Tooted
- Toodetele saab määrata nime, kirjelduse, tootekoodi
- Toodetele saab määrata koguse, ühiku, hinna
- Toodetele saab määrata suuruse
- Toodetele saab määrata tootja, garantiiaja
- Toodetele saab määrata "nähtavust"
Nice to Have
- Klient saab lisada tooteid oma lemmikute nimekirja
- Klient saab kopeerida oma juba kinnitatud ostukorvi
- Klient saab saata teenusepakkujale tagasisidet
- Klient saab kaupadele anda hinnanguid ja kommentaare/ näha teistepoolt antud hinnanguid ja kommentaare
- Kaupmees saab lisada toodetele märksõnu
- Kaupmees saab moodustada kliendigruppe
- Kaupmees saab saata klientidele teavitusi/ spämmi
- Süsteem saadab klientidele automaatseid teateid
- Kaupmees saab tekitada sooduskampaaniaid
- Kaupmees saab määrata toodete kuvamisjärjekorda (toodete prioriteetsust)
XML
Veebipoe tootekataloog
<?xml version="1.0" encoding="utf-8" ?>
<Catalog currency="eur">
<Category id="1" visible="true">
<Name><![CDATA[Riided]]></Name>
<Description><![CDATA[Asjad, mida saab selga panna]]></Description>
<Image><![CDATA[riided.JPG]]></Image>
<SubCategory id="2" visible="true">
<Name><![CDATA[Sokid]]></Name>
<Description><![CDATA[Vähemalt paari kaupa müügil olev energiasõltumatu jalasoojendusvahend]]></Description>
<Image><![CDATA[sokid.JPG]]></Image>
<Product id="1" serialCode="AB4756478sd" priority="1" visible="true">
<Name><![CDATA[Selvä sokki]]></Name>
<Description><![CDATA[Väga head soojad sokid meestele]]></Description>
<Image><![CDATA[selva.JPG]]></Image>
<Price>2.00</Price>
<DiscountPrice >1.80</DiscountPrice>
<Size unit=""><![CDATA[M-XXL]]></Size>
<Quantity unit="tk">40</Quantity>
<Guarantee unit="aastat">3</Guarantee>
<Tags>
<Tag id="1"><![CDATA[Meestele]]></Tag>
</Tags>
</Product>
<Product id="2" serialCode="AB4756478se" priority="1" visible="true">
<Name><![CDATA[Hüva sokki]]></Name>
<Description><![CDATA[Väga head soojad sokid naistele, roosa]]></Description>
<Image><![CDATA[hyvaSokk.JPG]]></Image>
<Price>1.40</Price>
<DiscountPrice>0</DiscountPrice>
<Size unit=""><![CDATA[S-L]]></Size>
<Quantity unit="tk">12</Quantity>
<Guarantee unit="aastat">3</Guarantee>
<Tags>
<Tag id="2"><![CDATA[70-ndad]]></Tag>
<Tag id="3"><![CDATA[Naistele]]></Tag>
<Tag id="4"><![CDATA[Kingitused]]></Tag>
</Tags>
</Product>
</SubCategory>
</Category>
<Category id="3" visible="true">
<Name><![CDATA[Toidukaubad]]></Name>
<Description><![CDATA[Asjad, mida saab suhu panna]]></Description>
<Image><![CDATA[toidud.JPG]]></Image>
<SubCategory id="4" visible="true">
<Name><![CDATA[Maiustused]]></Name>
<Description><![CDATA[Hammastele kahjulikud kaubad]]></Description>
<Image><![CDATA[komm.JPG]]></Image>
<Product id="3" serialCode="Aa756478sd" priority="2" visible="true">
<Name><![CDATA[Selga küpsised]]></Name>
<Description><![CDATA[MMM selga]]></Description>
<Image><![CDATA[selga.JPG]]></Image>
<Price>0.64</Price>
<DiscountPrice>0.62</DiscountPrice>
<Size unit="g"><![CDATA[400]]></Size>
<Quantity unit="tk">600</Quantity>
<Guarantee unit="">0</Guarantee>
<Tags>
<Tag id="3"><![CDATA[Naistele]]></Tag>
</Tags>
</Product>
<Product id="4" serialCode="Ax4776478se" priority="1" visible="false">
<Name><![CDATA[Martsipan]]></Name>
<Description><![CDATA[MMM martsipan]]></Description>
<Image><![CDATA[martsipan.JPG]]></Image>
<Price>2.60</Price>
<DiscountPrice>0</DiscountPrice>
<Size unit="g"><![CDATA[170]]></Size>
<Quantity unit="tk">37</Quantity>
<Guarantee unit="">0</Guarantee>
<Tags>
<Tag id="5"><![CDATA[Ostjate lemmik]]></Tag>
<Tag id="6"><![CDATA[Nädala diil]]></Tag>
</Tags>
</Product>
</SubCategory>
<SubCategory id="5" visible="false">
<Name><![CDATA[Hommikueined]]></Name>
<Description><![CDATA[Hommikusöök on kõige tähtsam!]]></Description>
<Image><![CDATA[puder.JPG]]></Image>
<Product id="5" serialCode="Ax4776asdf8se" priority="1" visible="true">
<Name><![CDATA[Neljaviljapuder]]></Name>
<Description><![CDATA[Väkk puder]]></Description>
<Image><![CDATA[4puder.JPG]]></Image>
<Price>1.00</Price>
<DiscountPrice>0</DiscountPrice>
<Size unit="g"><![CDATA[500]]></Size>
<Quantity unit="tk">8</Quantity>
<Guarantee unit="">0</Guarantee>
<Tags>
<Tag id="7"><![CDATA[Keegi ei osta]]></Tag>
<Tag id="8"><![CDATA[Parim enne möödunud]]></Tag>
</Tags>
</Product>
</SubCategory>
</Category>
</Catalog>
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="Catalog">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="Category">
<xs:complexType>
<xs:sequence>
<xs:element name="Name" type="xs:string" />
<xs:element name="Description" type="xs:string" />
<xs:element name="Image" type="xs:string" />
<xs:element maxOccurs="unbounded" name="SubCategory">
<xs:complexType>
<xs:sequence>
<xs:element name="Name" type="xs:string" />
<xs:element name="Description" type="xs:string" />
<xs:element name="Image" type="xs:string" />
<xs:element maxOccurs="unbounded" name="Product">
<xs:complexType>
<xs:sequence>
<xs:element name="Name" type="xs:string" />
<xs:element name="Description" type="xs:string" />
<xs:element name="Image" type="xs:string" />
<xs:element name="Price" type="xs:decimal" />
<xs:element name="DiscountPrice" type="xs:decimal" />
<xs:element name="Size">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="unit" type="xs:string" use="required" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="Quantity">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:unsignedInt">
<xs:attribute name="unit" type="xs:string" use="required" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="Guarantee">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:unsignedByte">
<xs:attribute name="unit" type="xs:string" use="required" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="Tags">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="Tag">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="id" type="xs:int" use="required" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="id" type="xs:int" use="required" />
<xs:attribute name="serialCode" type="xs:string" use="required" />
<xs:attribute name="priority" type="xs:unsignedByte" use="required" />
<xs:attribute name="visible" type="xs:boolean" use="required" />
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="id" type="xs:int" use="required" />
<xs:attribute name="visible" type="xs:boolean" use="required" />
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="id" type="xs:int" use="required" />
<xs:attribute name="visible" type="xs:boolean" use="required" />
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="currency" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
</xs:schema>
XML Transformatsioonid
Html, mis kuvab toidukaupasid, mis ei ole varjatud ("hidden")
<?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" />
<xsl:template match="/">
<html>
<head>
<title>Allahinnatud toidukaubad</title>
</head>
<body>
<xsl:for-each select="Catalog/Category">
<xsl:if test="@id=3">
<h2><xsl:value-of select="Name"/> </h2>
<xsl:for-each select="SubCategory">
<xsl:for-each select="Product">
<xsl:if test="@visible='true'">
<div>
<h3>
<xsl:value-of select="Name"/>
</h3>
<p>Hind: <xsl:value-of select="Price"/> <xsl:value-of select="/Catalog/@currency"/></p>
<p>Kogus: <xsl:value-of select="Size"/> <xsl:value-of select="Size/@unit"/></p>
</div>
</xsl:if>
</xsl:for-each>
</xsl:for-each>
</xsl:if>
</xsl:for-each>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Kuvame kõik veebipoe tooted, järjestatuna soodsaimast hinnast alates
<?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>Head kaubad</title>
<style type="text/css">
table {border:1px solid black;}
td {padding: 5px;}
.headRow {background-color: skyblue; font-weight: bold;}
</style>
</head>
<body>
<table>
<tr class="headRow">
<td>Nimi</td>
<td>Hind</td>
<td>Kogus</td>
</tr>
<xsl:for-each select="Catalog/Category/SubCategory/Product">
<xsl:sort select="Price"/>
<tr>
<td>
<xsl:value-of select="Name"/>
</td>
<td>
<xsl:value-of select="Price"/>
</td>
<td>
<xsl:value-of select="Quantity"/>
</td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Eemaldame XML-ist elemendid, mis on peiedtud (visibility=false)
<?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="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="//Product[@visible='false']">
</xsl:template>
</xsl:stylesheet>