Meeskond "Kujuneb": Difference between revisions
From ICO wiki
Jump to navigationJump to search
(47 intermediate revisions by 3 users not shown) | |||
Line 1: | Line 1: | ||
===XML=== | == Teema == | ||
Muusikapoe tootekataloogi osaline realisatsioon klient-server põhimõttel. | |||
== Liikmed == | |||
* Rauno Väli | |||
* Andreas Lea | |||
* Erik Peinar | |||
== Lähtekood == | |||
* Versioonihalduseks kasutatud GitHub-i võimalusi: | |||
https://github.com/R3ality/tootekataloog | |||
== XML == | |||
=== Andmefail (XML) === | |||
<source lang="xml"> | <source lang="xml"> | ||
<?xml version="1.0" encoding="utf-8"?> | <?xml version="1.0" encoding="utf-8" standalone="yes"?> | ||
< | <!-- <?xml-stylesheet type="text/xsl" href="style.xslt"?> --> | ||
< | <tootekataloog> | ||
<artist>Queen</artist> | |||
< | <!-- zanride loetelu--> | ||
< | <zanrid> | ||
< | <zanr id="1"> | ||
<nimi>Pop</nimi> | |||
</zanr> | |||
<zanr id="2"> | |||
<nimi>Rap</nimi> | |||
</zanr> | |||
</zanrid> | |||
<!-- artistide loetelu--> | |||
<artistid> | |||
<artist id="1"> | |||
<nimi>Queen</nimi> | |||
</albumid> | </artist> | ||
<artist id="2"> | |||
<nimi>Madonna</nimi> | |||
</artist> | |||
</artistid> | |||
<!-- albumite loetelu--> | |||
<albumid> | |||
<album id="1"> | |||
<zanr>1</zanr> | |||
<artist>1</artist> | |||
<nimi>Greatest Hits</nimi> | |||
<aasta>2005</aasta> | |||
<lugusi>15</lugusi> | |||
<pilt>http://bit.ly/jreygb</pilt> | |||
<hind>12</hind> | |||
</album> | |||
<album id="2"> | |||
<zanr>2</zanr> | |||
<artist>2</artist> | |||
<nimi>American Life</nimi> | |||
<aasta>2002</aasta> | |||
<lugusi>19</lugusi> | |||
<pilt>http://bit.ly/jwEHdl</pilt> | |||
<hind>8.3</hind> | |||
</album> | |||
</albumid> | |||
</tootekataloog> | |||
</source> | </source> | ||
===XSD=== | |||
=== Skeemifail (XSD) === | |||
<source lang="xml"> | <source lang="xml"> | ||
<?xml version="1.0" encoding="utf-8"?> | <?xml version="1.0" encoding="utf-8"?> | ||
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"> | <xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"> | ||
<xs:element name=" | <xs:element name="tootekataloog"> | ||
<xs:complexType> | <xs:complexType> | ||
<xs:sequence> | <xs:sequence> | ||
<xs:element | <xs:element name="zanrid"> | ||
<xs:complexType> | <xs:complexType> | ||
<xs:sequence> | <xs:sequence> | ||
<xs:element name=" | <xs:element maxOccurs="unbounded" name="zanr"> | ||
<xs:element name=" | <xs:complexType> | ||
<xs:element name=" | <xs:sequence> | ||
<xs:element name="nimi" type="xs:string" /> | |||
</xs:sequence> | |||
<xs:attribute name="id" type="xs:unsignedByte" use="required" /> | |||
</xs:complexType> | |||
</xs:element> | |||
</xs:sequence> | |||
</xs:complexType> | |||
</xs:element> | |||
<xs:element name="artistid"> | |||
<xs:complexType> | |||
<xs:sequence> | |||
<xs:element maxOccurs="unbounded" name="artist"> | |||
<xs:complexType> | |||
<xs:sequence> | |||
<xs:element name="nimi" type="xs:string" /> | |||
</xs:sequence> | |||
<xs:attribute name="id" type="xs:unsignedByte" use="required" /> | |||
</xs:complexType> | |||
</xs:element> | |||
</xs:sequence> | |||
</xs:complexType> | |||
</xs:element> | |||
<xs:element name="albumid"> | |||
<xs:complexType> | |||
<xs:sequence> | |||
<xs:element maxOccurs="unbounded" name="album"> | |||
<xs:complexType> | |||
<xs:sequence> | |||
<xs:element name="zanr" type="xs:unsignedByte" /> | |||
<xs:element name="artist" type="xs:unsignedByte" /> | |||
<xs:element name="nimi" type="xs:string" /> | |||
<xs:element name="aasta" type="xs:unsignedShort" /> | |||
<xs:element name="lugusi" type="xs:unsignedByte" /> | |||
<xs:element name="pilt" type="xs:string" /> | |||
<xs:element name="hind" type="xs:decimal" /> | |||
</xs:sequence> | |||
<xs:attribute name="id" type="xs:unsignedByte" use="required" /> | |||
</xs:complexType> | |||
</xs:element> | |||
</xs:sequence> | </xs:sequence> | ||
</xs:complexType> | </xs:complexType> | ||
</xs:element> | </xs:element> | ||
Line 48: | Line 127: | ||
</source> | </source> | ||
===XSLT=== | |||
=== Stiilifail (XSLT) === | |||
<source lang="xml"> | <source lang="xml"> | ||
<?xml version="1.0"?> | <?xml version="1.0" encoding="utf-8"?> | ||
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> | <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> | ||
<xsl:template match="/"> | <xsl:template match="/"> | ||
<html> | <html> | ||
<head> | <head> | ||
<title> | <title>Tootekataloog</title> | ||
<style type="text/css"> | <style type="text/css"> | ||
body{ | body { | ||
font-family: Arial, Verdana; | font-family: Arial, Verdana; | ||
} | } | ||
table { | |||
table{ | |||
font-size: 12px; | font-size: 12px; | ||
border-collapse: collapse; | border-collapse: collapse; | ||
} | } | ||
. | table.main { | ||
border: 1px solid #98bf21; | border: 1px solid #98bf21; | ||
} | } | ||
. | table.main th { | ||
padding:3px 10px 3px 10px; | padding: 3px 10px 3px 10px; | ||
border: 1px solid #98bf21; | border: 1px solid #98bf21; | ||
background: #A7C942; | background-color: #A7C942; | ||
color: #FFFFFF; | color: #FFFFFF; | ||
} | } | ||
. | |||
background: #FFFFFF | table.main tr { | ||
background-color: #FFFFFF; | |||
} | } | ||
. | table.main td { | ||
text-align: center; | text-align: center; | ||
padding: 3px; | padding: 3px; | ||
border:1px solid #98bf21; | border: 1px solid #98bf21; | ||
} | } | ||
a, a:hover, a:active, a:visited { | |||
a, a:hover,a:active,a:visited { | |||
color: #000000; | color: #000000; | ||
} | } | ||
a img { | a img { | ||
border: none; | |||
} | |||
</style> | </style> | ||
</head> | </head> | ||
<body> | <body> | ||
< | |||
<table class=" | <h3>Albumid</h3> | ||
<tr> | |||
<table class="main"> | |||
<tr> | |||
<th>Artist</th> | <th>Artist</th> | ||
<th> | <th>Album</th> | ||
<th>Žanr</th> | |||
<th>Aasta</th> | <th>Aasta</th> | ||
<th> | <th>Lugusi</th> | ||
<th>Pilt</th> | <th>Pilt</th> | ||
<th>YouTube</th> | <th>YouTube</th> | ||
<th>Hind</th> | |||
</tr> | </tr> | ||
<xsl:for-each select="albumid/album"> | <xsl:for-each select="tootekataloog/albumid/album"> | ||
<xsl:variable name="artistID" select="artist"/> | |||
<xsl:variable name="zanrID" select="zanr"/> | |||
<tr> | <tr> | ||
<xsl:if test="position() mod 2 =0"> | <xsl:if test="position() mod 2 =0"> | ||
<xsl:attribute name="style"> | <xsl:attribute name="style"> | ||
background-color:#EAF2D3; | background-color: #EAF2D3; | ||
</xsl:attribute> | </xsl:attribute> | ||
</xsl:if> | </xsl:if> | ||
<td> | <td> | ||
<xsl:value-of select="artist"/> | <xsl:value-of select="/tootekataloog/artistid/artist[@id=$artistID]/nimi"/> | ||
</td> | </td> | ||
<td> | <td> | ||
<xsl:value-of select=" | <xsl:value-of select="nimi"/> | ||
</td> | </td> | ||
<td> | <td> | ||
<xsl:value-of select=" | <xsl:value-of select="/tootekataloog/zanrid/zanr[@id=$zanrID]/nimi"/> | ||
</td> | </td> | ||
<td> | <td> | ||
<xsl:value-of select=" | <xsl:value-of select="aasta"/> | ||
</td> | </td> | ||
<td> | <td> | ||
<xsl:value-of select=" | <xsl:value-of select="lugusi"/> | ||
</td> | </td> | ||
<td> | <td> | ||
<img width="100" height="100"> | <img width="100" height="100"> | ||
Line 148: | Line 225: | ||
<a> | <a> | ||
<xsl:attribute name="href"> | <xsl:attribute name="href"> | ||
<xsl:text>http://www.youtube.com/results?search_query=</xsl:text><xsl:value-of select="artist"/>+<xsl:value-of select=" | <xsl:text>http://www.youtube.com/results?search_query=</xsl:text><xsl:value-of select="/tootekataloog/artistid/artist[@id=$artistID]/nimi"/>+<xsl:value-of select="nimi"/> | ||
</xsl:attribute> | </xsl:attribute> | ||
<img | <img src="http://www.upload.ee/image/1288041/youtube-badge-64x64.png"> | ||
</img> | </img> | ||
</a> | </a> | ||
</td> | </td> | ||
<td> | |||
<xsl:value-of select="hind"/> € | |||
</td> | |||
</tr> | |||
</xsl:for-each> | |||
</table> | |||
<br/><br/> | |||
<h3>Toored andmed</h3> | |||
<table> | |||
<tr> | |||
<td style="padding-right: 50px; vertical-align: top;"> | |||
<h4>Žanrid</h4> | |||
<table class="main"> | |||
<tr> | |||
<th>id</th> | |||
<th>nimi</th> | |||
</tr> | |||
<xsl:for-each select="tootekataloog/zanrid/zanr"> | |||
<tr> | |||
<xsl:if test="position() mod 2 =0"> | |||
<xsl:attribute name="style"> | |||
background-color: #EAF2D3; | |||
</xsl:attribute> | |||
</xsl:if> | |||
<td> | |||
<xsl:value-of select="@id"/> | |||
</td> | |||
<td> | |||
<xsl:value-of select="nimi"/> | |||
</td> | |||
</tr> | |||
</xsl:for-each> | |||
</table> | |||
</td> | |||
<td style="padding-right: 50px; vertical-align: top;"> | |||
<h4>Artistid</h4> | |||
<table class="main"> | |||
<tr> | |||
<th>id</th> | |||
<th>nimi</th> | |||
</tr> | |||
<xsl:for-each select="tootekataloog/artistid/artist"> | |||
<tr> | |||
<xsl:if test="position() mod 2 =0"> | |||
<xsl:attribute name="style"> | |||
background-color: #EAF2D3; | |||
</xsl:attribute> | |||
</xsl:if> | |||
<td> | |||
<xsl:value-of select="@id"/> | |||
</td> | |||
<td> | |||
<xsl:value-of select="nimi"/> | |||
</td> | |||
</tr> | |||
</xsl:for-each> | |||
</table> | |||
</td> | |||
<td style="vertical-align: top;"> | |||
<h4>Albumid</h4> | |||
<table class="main"> | |||
<tr> | |||
<th>id</th> | |||
<th>zanr</th> | |||
<th>artist</th> | |||
<th>nimi</th> | |||
<th>aasta</th> | |||
<th>lugusi</th> | |||
<th>pilt</th> | |||
<th>hind</th> | |||
</tr> | |||
<xsl:for-each select="tootekataloog/albumid/album"> | |||
<tr> | |||
<xsl:if test="position() mod 2 =0"> | |||
<xsl:attribute name="style"> | |||
background-color: #EAF2D3; | |||
</xsl:attribute> | |||
</xsl:if> | |||
<td> | |||
<xsl:value-of select="@id"/> | |||
</td> | |||
<td> | |||
<xsl:value-of select="zanr"/> | |||
</td> | |||
<td> | |||
<xsl:value-of select="artist"/> | |||
</td> | |||
<td> | |||
<xsl:value-of select="nimi"/> | |||
</td> | |||
<td> | |||
<xsl:value-of select="aasta"/> | |||
</td> | |||
<td> | |||
<xsl:value-of select="lugusi"/> | |||
</td> | |||
<td> | |||
<xsl:value-of select="pilt"/> | |||
</td> | |||
<td> | |||
<xsl:value-of select="hind"/> | |||
</td> | |||
</tr> | |||
</xsl:for-each> | |||
</table> | |||
</td> | |||
</tr> | |||
</table> | </table> | ||
</body> | </body> | ||
</html> | </html> | ||
</xsl:template> | </xsl:template> | ||
</xsl:stylesheet> | </xsl:stylesheet> | ||
</source> | </source> | ||
=== Andmefaili vaade stiilifailiga === | |||
[[File:Muusikakogu_naidis.png]] | |||
== Teenus == | |||
* Online jooksev teenus: | |||
http://kujuneb.somee.com/Teenus.asmx | |||
=== Teenuse signatuur === | |||
Hetkeseisuga on teenusel järgnevad avalikud veebimeetodid (tärniga tähistatud meetodid nõuavad autentimist): | |||
<br>AnnaAlbum(int Id) | |||
<br>AnnaAlbumLaos() | |||
<br>AnnaAlbumiLood() | |||
<br>AnnaAlbumid() | |||
<br>AnnaAlbumidByZanr() | |||
<br>AnnaAlbumidByArtist() | |||
<br>AnnaArtist() | |||
<br>AnnaArtistid() | |||
<br>AnnaKasutajaNimi() | |||
<br>AnnaLadu() | |||
<br>AnnaLaod() | |||
<br>AnnaLogi()* | |||
<br>AnnaLood() | |||
<br>AnnaLooAlbum() | |||
<br>AnnaLugu() | |||
<br>AnnaRiigid() | |||
<br>AnnaRiik() | |||
<br>AnnaZanr() | |||
<br>AnnaZanrid() | |||
<br>KasOnAutenditud() | |||
<br>KustutaAlbum()* | |||
<br>KustutaArtist()* | |||
<br>KustutaLugu()* | |||
<br>LisaAlbum()* | |||
<br>LisaArtist()* | |||
<br>LisaLugu()* | |||
<br>LoendaMeetodiParingud()* | |||
<br>LogiValja() | |||
<br>MuudaAlbum()* | |||
<br>Otsi() | |||
<br>MuudaArtist()* | |||
<br>MuudaLugu()* | |||
=== Andmetabelid === | |||
[[File:Andmebaas.png]] | |||
=== Statistika === | |||
[[File:Statistika.png]] | |||
== Klientrakendus == | |||
Klientrakendus on teostatud C# Windows Forms rakendusena | |||
=== Demoprogramm === | |||
* '''TootekatKlient-local.exe''' | |||
http://www.upload.ee/files/1372294/TootekatKlient-local.exe.html (versioon 1) | |||
http://www.upload.ee/files/1389696/TootekatKlient-v2-local.exe.html (versioon 2) | |||
Eeldab et teenus jookseb lokaalses masinas (näiteks Visual Studiost debugima panduna) | |||
* '''TootekatKlient-remote.exe''' | |||
http://www.upload.ee/files/1372297/TootekatKlient-remote.exe.html (versioon 1) | |||
http://www.upload.ee/files/1389698/TootekatKlient-v2-remote.exe.html (versioon 2) | |||
Online teenuse pihta käiv klient. Administreerimisfunktsioonid sihipäraselt eemaldatud. Autentimine ei toimi. | |||
=== Ekraanipildid === | |||
[[File:TootekatKlientv2-1.png]] | |||
[[File:KujunebKlient1.jpg]] | |||
[[File:KujunebKlient2.jpg]] | |||
[[File:KujunebKlient3.jpg]] | |||
[[File:KujunebKlient4.jpg]] |
Latest revision as of 17:22, 3 June 2011
Teema
Muusikapoe tootekataloogi osaline realisatsioon klient-server põhimõttel.
Liikmed
- Rauno Väli
- Andreas Lea
- Erik Peinar
Lähtekood
- Versioonihalduseks kasutatud GitHub-i võimalusi:
https://github.com/R3ality/tootekataloog
XML
Andmefail (XML)
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<!-- <?xml-stylesheet type="text/xsl" href="style.xslt"?> -->
<tootekataloog>
<!-- zanride loetelu-->
<zanrid>
<zanr id="1">
<nimi>Pop</nimi>
</zanr>
<zanr id="2">
<nimi>Rap</nimi>
</zanr>
</zanrid>
<!-- artistide loetelu-->
<artistid>
<artist id="1">
<nimi>Queen</nimi>
</artist>
<artist id="2">
<nimi>Madonna</nimi>
</artist>
</artistid>
<!-- albumite loetelu-->
<albumid>
<album id="1">
<zanr>1</zanr>
<artist>1</artist>
<nimi>Greatest Hits</nimi>
<aasta>2005</aasta>
<lugusi>15</lugusi>
<pilt>http://bit.ly/jreygb</pilt>
<hind>12</hind>
</album>
<album id="2">
<zanr>2</zanr>
<artist>2</artist>
<nimi>American Life</nimi>
<aasta>2002</aasta>
<lugusi>19</lugusi>
<pilt>http://bit.ly/jwEHdl</pilt>
<hind>8.3</hind>
</album>
</albumid>
</tootekataloog>
Skeemifail (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="tootekataloog">
<xs:complexType>
<xs:sequence>
<xs:element name="zanrid">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="zanr">
<xs:complexType>
<xs:sequence>
<xs:element name="nimi" type="xs:string" />
</xs:sequence>
<xs:attribute name="id" type="xs:unsignedByte" use="required" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="artistid">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="artist">
<xs:complexType>
<xs:sequence>
<xs:element name="nimi" type="xs:string" />
</xs:sequence>
<xs:attribute name="id" type="xs:unsignedByte" use="required" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="albumid">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="album">
<xs:complexType>
<xs:sequence>
<xs:element name="zanr" type="xs:unsignedByte" />
<xs:element name="artist" type="xs:unsignedByte" />
<xs:element name="nimi" type="xs:string" />
<xs:element name="aasta" type="xs:unsignedShort" />
<xs:element name="lugusi" type="xs:unsignedByte" />
<xs:element name="pilt" type="xs:string" />
<xs:element name="hind" type="xs:decimal" />
</xs:sequence>
<xs:attribute name="id" type="xs:unsignedByte" use="required" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Stiilifail (XSLT)
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<head>
<title>Tootekataloog</title>
<style type="text/css">
body {
font-family: Arial, Verdana;
}
table {
font-size: 12px;
border-collapse: collapse;
}
table.main {
border: 1px solid #98bf21;
}
table.main th {
padding: 3px 10px 3px 10px;
border: 1px solid #98bf21;
background-color: #A7C942;
color: #FFFFFF;
}
table.main tr {
background-color: #FFFFFF;
}
table.main td {
text-align: center;
padding: 3px;
border: 1px solid #98bf21;
}
a, a:hover, a:active, a:visited {
color: #000000;
}
a img {
border: none;
}
</style>
</head>
<body>
<h3>Albumid</h3>
<table class="main">
<tr>
<th>Artist</th>
<th>Album</th>
<th>Žanr</th>
<th>Aasta</th>
<th>Lugusi</th>
<th>Pilt</th>
<th>YouTube</th>
<th>Hind</th>
</tr>
<xsl:for-each select="tootekataloog/albumid/album">
<xsl:variable name="artistID" select="artist"/>
<xsl:variable name="zanrID" select="zanr"/>
<tr>
<xsl:if test="position() mod 2 =0">
<xsl:attribute name="style">
background-color: #EAF2D3;
</xsl:attribute>
</xsl:if>
<td>
<xsl:value-of select="/tootekataloog/artistid/artist[@id=$artistID]/nimi"/>
</td>
<td>
<xsl:value-of select="nimi"/>
</td>
<td>
<xsl:value-of select="/tootekataloog/zanrid/zanr[@id=$zanrID]/nimi"/>
</td>
<td>
<xsl:value-of select="aasta"/>
</td>
<td>
<xsl:value-of select="lugusi"/>
</td>
<td>
<img width="100" height="100">
<xsl:attribute name="src">
<xsl:value-of select="pilt"/>
</xsl:attribute>
</img>
</td>
<td>
<a>
<xsl:attribute name="href">
<xsl:text>http://www.youtube.com/results?search_query=</xsl:text><xsl:value-of select="/tootekataloog/artistid/artist[@id=$artistID]/nimi"/>+<xsl:value-of select="nimi"/>
</xsl:attribute>
<img src="http://www.upload.ee/image/1288041/youtube-badge-64x64.png">
</img>
</a>
</td>
<td>
<xsl:value-of select="hind"/> €
</td>
</tr>
</xsl:for-each>
</table>
<br/><br/>
<h3>Toored andmed</h3>
<table>
<tr>
<td style="padding-right: 50px; vertical-align: top;">
<h4>Žanrid</h4>
<table class="main">
<tr>
<th>id</th>
<th>nimi</th>
</tr>
<xsl:for-each select="tootekataloog/zanrid/zanr">
<tr>
<xsl:if test="position() mod 2 =0">
<xsl:attribute name="style">
background-color: #EAF2D3;
</xsl:attribute>
</xsl:if>
<td>
<xsl:value-of select="@id"/>
</td>
<td>
<xsl:value-of select="nimi"/>
</td>
</tr>
</xsl:for-each>
</table>
</td>
<td style="padding-right: 50px; vertical-align: top;">
<h4>Artistid</h4>
<table class="main">
<tr>
<th>id</th>
<th>nimi</th>
</tr>
<xsl:for-each select="tootekataloog/artistid/artist">
<tr>
<xsl:if test="position() mod 2 =0">
<xsl:attribute name="style">
background-color: #EAF2D3;
</xsl:attribute>
</xsl:if>
<td>
<xsl:value-of select="@id"/>
</td>
<td>
<xsl:value-of select="nimi"/>
</td>
</tr>
</xsl:for-each>
</table>
</td>
<td style="vertical-align: top;">
<h4>Albumid</h4>
<table class="main">
<tr>
<th>id</th>
<th>zanr</th>
<th>artist</th>
<th>nimi</th>
<th>aasta</th>
<th>lugusi</th>
<th>pilt</th>
<th>hind</th>
</tr>
<xsl:for-each select="tootekataloog/albumid/album">
<tr>
<xsl:if test="position() mod 2 =0">
<xsl:attribute name="style">
background-color: #EAF2D3;
</xsl:attribute>
</xsl:if>
<td>
<xsl:value-of select="@id"/>
</td>
<td>
<xsl:value-of select="zanr"/>
</td>
<td>
<xsl:value-of select="artist"/>
</td>
<td>
<xsl:value-of select="nimi"/>
</td>
<td>
<xsl:value-of select="aasta"/>
</td>
<td>
<xsl:value-of select="lugusi"/>
</td>
<td>
<xsl:value-of select="pilt"/>
</td>
<td>
<xsl:value-of select="hind"/>
</td>
</tr>
</xsl:for-each>
</table>
</td>
</tr>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Andmefaili vaade stiilifailiga
Teenus
- Online jooksev teenus:
http://kujuneb.somee.com/Teenus.asmx
Teenuse signatuur
Hetkeseisuga on teenusel järgnevad avalikud veebimeetodid (tärniga tähistatud meetodid nõuavad autentimist):
AnnaAlbum(int Id)
AnnaAlbumLaos()
AnnaAlbumiLood()
AnnaAlbumid()
AnnaAlbumidByZanr()
AnnaAlbumidByArtist()
AnnaArtist()
AnnaArtistid()
AnnaKasutajaNimi()
AnnaLadu()
AnnaLaod()
AnnaLogi()*
AnnaLood()
AnnaLooAlbum()
AnnaLugu()
AnnaRiigid()
AnnaRiik()
AnnaZanr()
AnnaZanrid()
KasOnAutenditud()
KustutaAlbum()*
KustutaArtist()*
KustutaLugu()*
LisaAlbum()*
LisaArtist()*
LisaLugu()*
LoendaMeetodiParingud()*
LogiValja()
MuudaAlbum()*
Otsi()
MuudaArtist()*
MuudaLugu()*
Andmetabelid
Statistika
Klientrakendus
Klientrakendus on teostatud C# Windows Forms rakendusena
Demoprogramm
- TootekatKlient-local.exe
http://www.upload.ee/files/1372294/TootekatKlient-local.exe.html (versioon 1) http://www.upload.ee/files/1389696/TootekatKlient-v2-local.exe.html (versioon 2) Eeldab et teenus jookseb lokaalses masinas (näiteks Visual Studiost debugima panduna)
- TootekatKlient-remote.exe
http://www.upload.ee/files/1372297/TootekatKlient-remote.exe.html (versioon 1) http://www.upload.ee/files/1389698/TootekatKlient-v2-remote.exe.html (versioon 2) Online teenuse pihta käiv klient. Administreerimisfunktsioonid sihipäraselt eemaldatud. Autentimine ei toimi.