<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.itcollege.ee/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Mtoompuu</id>
	<title>ICO wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.itcollege.ee/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Mtoompuu"/>
	<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php/Special:Contributions/Mtoompuu"/>
	<updated>2026-06-22T10:02:06Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Meeskond_%22H2%22&amp;diff=33995</id>
		<title>Meeskond &quot;H2&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Meeskond_%22H2%22&amp;diff=33995"/>
		<updated>2011-06-06T12:27:50Z</updated>

		<summary type="html">&lt;p&gt;Mtoompuu: /* PUNKTID */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Kohviku menüüsüsteem==&lt;br /&gt;
===Projekt===&lt;br /&gt;
Kohvikute (esialgu ainult IT-Kohviku) menüüsüsteem, mis on jälgitav mobiilseadmetelt. Lisaväärtusena võimaldab anda pakutavale hinnanguid, otsuse langetamise hõlbustamiseks kommentaar:(see viimane funktsioon kipub vist &amp;quot;veebirakenduseks&amp;quot; muutuma)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Sihtplatvormid:&lt;br /&gt;
Windows Mobile, iOS, Android(kui leiame vabatahtlikud testijad)&lt;br /&gt;
&lt;br /&gt;
===Taustinfo===&lt;br /&gt;
Praegune IT-Kohviku menüü on käsitsi täidetav valge tahvel. Projekti eesmärgiks on parendada IT-Kohviku menüüsüsteemi ja teha see veebi kaudu kättesaadavaks, nii, et menüüsse saab lisada ka karniiri valiku. Standardmenüü puhul saab menüüs olla ka illustreeriv foto. Hetkemenüü ning hinnad ja lahtioleku ajad on samuti jälgitavad võrguühendust eviva mobiilseadme ekraanilt, hõlbustades sellega valikute tegemist.&lt;br /&gt;
&lt;br /&gt;
===Liikmed===&lt;br /&gt;
* Mailis Toompuu&lt;br /&gt;
* Henri Kroosmann&lt;br /&gt;
* Heiki Tamm&lt;br /&gt;
&lt;br /&gt;
==Sisu==&lt;br /&gt;
&lt;br /&gt;
===XML Data===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;menu&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name1&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;0&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name1&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item1&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item2&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item3&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;0&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;0&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount1&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;0&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;0&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot1&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name2&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;255&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name2&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item4&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item5&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item6&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;255&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;255&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount2&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;255&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;255&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot2&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name3&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;1&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name3&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item7&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item8&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item9&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;1&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;1&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount3&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;1&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;1&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot3&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
&amp;lt;/menu&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===XML Schema===&lt;br /&gt;
&lt;br /&gt;
Ülevaade Schema&#039;st. &amp;lt;br /&amp;gt;&lt;br /&gt;
[[File:XMLSchema_Capture_(optimized).png]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Ning sellele vastav kood.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xs:schema attributeFormDefault=&amp;quot;unqualified&amp;quot; elementFormDefault=&amp;quot;qualified&amp;quot; xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xs:element name=&amp;quot;menu&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;product&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;type&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;id&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;extras&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence minOccurs=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;item&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;price&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence minOccurs=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;int&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;frac&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element minOccurs=&amp;quot;0&amp;quot; name=&amp;quot;discount&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;vote&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;pos&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;neg&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;screenshot&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===XML Style===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;html&amp;gt;&lt;br /&gt;
      &amp;lt;head&amp;gt;&lt;br /&gt;
        &amp;lt;style type=&amp;quot;text/css&amp;quot;&amp;gt;&lt;br /&gt;
          html,body{margin:0;padding:0;font-family:Helvetica,Arial,sans-serif;font-size:14px;line-height:19px;color:#2c2c2c;}&lt;br /&gt;
          h1{margin:0;padding:25px 0 0;font-size:22px;line-height:25px;text-align:center;}&lt;br /&gt;
          h2{margin:0;padding:5px;font-size:16px;line-height:21px}&lt;br /&gt;
          span.discount{padding:0 0 0 5px;color:red;}&lt;br /&gt;
          table{margin:20px auto;padding:0;}&lt;br /&gt;
          th,td{padding:5px;border:1px solid #2c2c2c;vertical-align:top;text-align:left}&lt;br /&gt;
          th{font-weight:bold;background-color:#eee;}&lt;br /&gt;
          ul{margin:0;padding:0;list-style-type:none;}&lt;br /&gt;
        &amp;lt;/style&amp;gt;&lt;br /&gt;
      &amp;lt;/head&amp;gt;&lt;br /&gt;
      &amp;lt;body&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;Menüü&amp;lt;/h1&amp;gt;&lt;br /&gt;
        &amp;lt;table width=&amp;quot;800&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;200&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;100&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col witdh=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;150&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;tr&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Nimetus&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Lisandid&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Tüüp&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Hind&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Hinne / Hindajaid&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Pilt&amp;lt;/th&amp;gt;&lt;br /&gt;
          &amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
          &amp;lt;xsl:for-each select=&amp;quot;menu/product&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:sort select=&amp;quot;type/id&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:sort select=&amp;quot;name&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;th&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;name&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/th&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;extras/node()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;ul&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:for-each select=&amp;quot;extras/item&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;li&amp;gt;&lt;br /&gt;
                          &amp;lt;xsl:value-of select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;/li&amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
                    &amp;lt;/ul&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;td&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;type/name&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;price/node()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    €&amp;lt;xsl:value-of select=&amp;quot;price/int&amp;quot;/&amp;gt;.&amp;lt;xsl:value-of select=&amp;quot;price/frac&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:if test=&amp;quot;price/discount/text()&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;span class=&amp;quot;discount&amp;quot;&amp;gt;&lt;br /&gt;
                        (-&amp;lt;xsl:value-of select=&amp;quot;price/discount&amp;quot;/&amp;gt;%)&lt;br /&gt;
                      &amp;lt;/span&amp;gt;&lt;br /&gt;
                    &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:variable name=&amp;quot;p&amp;quot; select=&amp;quot;vote/pos&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:variable name=&amp;quot;n&amp;quot; select=&amp;quot;vote/neg&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;td&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$p - $n&amp;quot;/&amp;gt; / &amp;lt;xsl:value-of select=&amp;quot;$p + $n&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;screenshot/text()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;img src=&amp;quot;{screenshot}&amp;quot; alt=&amp;quot;&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;img src=&amp;quot;screenshots/default.png&amp;quot; alt=&amp;quot;No image&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
      &amp;lt;/body&amp;gt;&lt;br /&gt;
    &amp;lt;/html&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
Sisu ja stiilifaili koostöö http://henri.kroosmann.ee/kool/xml/index.xml &amp;lt;!--[http://henri.kroosmann.ee/kool/xml/index.xml]--&amp;gt;&lt;br /&gt;
==VEEBITEENUSED==&lt;br /&gt;
&lt;br /&gt;
===8. aprill===&lt;br /&gt;
Otsustame teha teenused kõikide kohvikute menüüde kohta.&lt;br /&gt;
&lt;br /&gt;
===11.-12. aprill===&lt;br /&gt;
Henri koostab tabelite loogika&lt;br /&gt;
&lt;br /&gt;
===13. aprill===&lt;br /&gt;
Mailis otsustab veebiteenused teha asmx-is [webmethod]-itega&lt;br /&gt;
===14. aprill===&lt;br /&gt;
Mailis hakkab veebiteenuseid tegema&lt;br /&gt;
===17. aprill===&lt;br /&gt;
Veebiteenused on valmis:&lt;br /&gt;
&lt;br /&gt;
*AnnaJoogiliikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaJoogitabelirida_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*AnnaJookideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaK6igiKohvikuteAndmeteNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyyIDed_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyyRida_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyydeNimekiri_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaMenyyLiikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaMenyydeNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaPromillideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToiduliikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToitudeNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToitutabelirida_toiduIDjargi &lt;br /&gt;
&lt;br /&gt;
*AnnaYheKohvikuAndmed_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*KustutaJookMenyyst &lt;br /&gt;
&lt;br /&gt;
*KustutaMenyy &lt;br /&gt;
&lt;br /&gt;
*KustutaKohvik &lt;br /&gt;
&lt;br /&gt;
*KustutaToitMenyyst &lt;br /&gt;
&lt;br /&gt;
*KysiYheKohvikuYheMenyyToitudeIDeed_menyyIDjargi &lt;br /&gt;
&lt;br /&gt;
*LisaJoogiLiik &lt;br /&gt;
&lt;br /&gt;
*LisaMenyyLiik &lt;br /&gt;
&lt;br /&gt;
*LisaPromill &lt;br /&gt;
&lt;br /&gt;
*LisaToiduLiik &lt;br /&gt;
&lt;br /&gt;
*SecurityAuthenticateUser &lt;br /&gt;
&lt;br /&gt;
*TOITJOOKmenyysRida_menyyIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedJoogileMenyys &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedKohvikule &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedToiduleMenyys &lt;br /&gt;
&lt;br /&gt;
*annaJoogiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiKIRJELDUS_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiKOMM_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiID_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiNIMI_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKasOnTaimeT_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKasutajaNIMI_Guidjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuLahtiolekuAjad_kohvikuIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuTeated &lt;br /&gt;
&lt;br /&gt;
*annaLinnaID_LinnaNimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaLinnaNIMI_LinnaIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaLinnad_maakonnaNIMEjargi &lt;br /&gt;
&lt;br /&gt;
*annaMaakonnaID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaMenyyLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaMenyyLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaPromill_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaPromilliID_promilliNrJargi &lt;br /&gt;
&lt;br /&gt;
*annaPromilliNR_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduKIRJELDUS_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduKOMMENTAAR_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiNIMETUS_toiduIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaYheKohvikuMenyyd_kohvikuNIMEjargi &lt;br /&gt;
&lt;br /&gt;
*autendiKasutajaParooliJargi &lt;br /&gt;
&lt;br /&gt;
*k6igiKohvikuteMenyyd &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusJoogiKohta &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusKohvikuKohta &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusToiduKohta &lt;br /&gt;
&lt;br /&gt;
*lisaJookMenyysse &lt;br /&gt;
&lt;br /&gt;
*lisaToitMenyysse &lt;br /&gt;
&lt;br /&gt;
*lisaUusJook &lt;br /&gt;
&lt;br /&gt;
*lisaUusKohvik &lt;br /&gt;
&lt;br /&gt;
*lisaUusLahtiolekuAeg &lt;br /&gt;
&lt;br /&gt;
*lisaUusMenyy &lt;br /&gt;
&lt;br /&gt;
*lisaUusTeadaanne &lt;br /&gt;
&lt;br /&gt;
*lisaUusToit &lt;br /&gt;
&lt;br /&gt;
*nadalapaevaID_paevaNimetuseJargi &lt;br /&gt;
&lt;br /&gt;
*nadalapaevaNIMETUS_paevaIDjargi&lt;br /&gt;
&lt;br /&gt;
*Registreeru&lt;br /&gt;
&lt;br /&gt;
*LogiSisseTavakasutajana&lt;br /&gt;
&lt;br /&gt;
*LogiSisseKohvikuna&lt;br /&gt;
&lt;br /&gt;
===22.aprill===&lt;br /&gt;
Toimus koosolek&lt;br /&gt;
*Henri lubas meetodite turvamise teha.&lt;br /&gt;
*Heiki lubas statistika teha meetodite kohta.&lt;br /&gt;
&lt;br /&gt;
===Allikfail===&lt;br /&gt;
Allikfail: http://www.p2ike.com/CSharp/KohvikudVeebiteenus.rar&lt;br /&gt;
&lt;br /&gt;
Meetod &#039;k6igiKohvikuteMenyyd&#039; kuvab sellise xml struktuuri: http://www.p2ike.com/CSharp/k6igiKohvikuteMenyyd.xml&lt;br /&gt;
&lt;br /&gt;
Toidud ja joogid sorteeritakse liikide kaupa.&lt;br /&gt;
&lt;br /&gt;
===Andmetabelid===&lt;br /&gt;
[[File:andmetabelid.jpg|777px|thumb|left|andmemudel]]&lt;br /&gt;
===Statistika===&lt;br /&gt;
 using System;&lt;br /&gt;
using System.Web.Services;&lt;br /&gt;
using System.Web.Services.Protocols;&lt;br /&gt;
using System.IO;&lt;br /&gt;
using System.Net;&lt;br /&gt;
 &lt;br /&gt;
// Define a SOAP Extension that traces the SOAP request and SOAP&lt;br /&gt;
// response for the XML Web service method the SOAP extension is&lt;br /&gt;
// applied to. &lt;br /&gt;
 &lt;br /&gt;
namespace WebASPKohvikud&lt;br /&gt;
{&lt;br /&gt;
    public class TraceExtension : SoapExtension&lt;br /&gt;
    {&lt;br /&gt;
        Stream oldStream;&lt;br /&gt;
        Stream newStream;&lt;br /&gt;
        string filename;&lt;br /&gt;
 &lt;br /&gt;
        // Save the Stream representing the SOAP request or SOAP response into&lt;br /&gt;
        // a local memory buffer.&lt;br /&gt;
        public override Stream ChainStream(Stream stream)&lt;br /&gt;
        {&lt;br /&gt;
            oldStream = stream;&lt;br /&gt;
            newStream = new MemoryStream();&lt;br /&gt;
            return newStream;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        // When the SOAP extension is accessed for the first time, the XML Web&lt;br /&gt;
        // service method it is applied to is accessed to store the file&lt;br /&gt;
        // name passed in, using the corresponding SoapExtensionAttribute.	&lt;br /&gt;
        public override object GetInitializer(LogicalMethodInfo methodInfo, SoapExtensionAttribute attribute)&lt;br /&gt;
        {&lt;br /&gt;
            return ((TraceExtensionAttribute)attribute).Filename;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        // The SOAP extension was configured to run using a configuration file&lt;br /&gt;
        // instead of an attribute applied to a specific XML Web service&lt;br /&gt;
        // method.&lt;br /&gt;
        public override object GetInitializer(Type WebServiceType)&lt;br /&gt;
        {&lt;br /&gt;
            // Return a file name to log the trace information to, based on the&lt;br /&gt;
            // type.&lt;br /&gt;
            return &amp;quot;C:\\&amp;quot; + WebServiceType.FullName + &amp;quot;.log&amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        // Receive the file name stored by GetInitializer and store it in a&lt;br /&gt;
        // member variable for this specific instance.&lt;br /&gt;
        public override void Initialize(object initializer)&lt;br /&gt;
        {&lt;br /&gt;
            filename = (string)initializer;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        //  If the SoapMessageStage is such that the SoapRequest or&lt;br /&gt;
        //  SoapResponse is still in the SOAP format to be sent or received,&lt;br /&gt;
        //  save it out to a file.&lt;br /&gt;
        public override void ProcessMessage(SoapMessage message)&lt;br /&gt;
        {&lt;br /&gt;
            switch (message.Stage)&lt;br /&gt;
            {&lt;br /&gt;
                case SoapMessageStage.BeforeSerialize:&lt;br /&gt;
                    break;&lt;br /&gt;
                case SoapMessageStage.AfterSerialize:&lt;br /&gt;
                    WriteOutput(message);&lt;br /&gt;
                    break;&lt;br /&gt;
                case SoapMessageStage.BeforeDeserialize:&lt;br /&gt;
                    WriteInput(message);&lt;br /&gt;
                    break;&lt;br /&gt;
                case SoapMessageStage.AfterDeserialize:&lt;br /&gt;
                    break;&lt;br /&gt;
                default:&lt;br /&gt;
                    throw new Exception(&amp;quot;invalid stage&amp;quot;);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        public void WriteOutput(SoapMessage message)&lt;br /&gt;
        {&lt;br /&gt;
            newStream.Position = 0;&lt;br /&gt;
            FileStream fs = new FileStream(filename, FileMode.Append,&lt;br /&gt;
                FileAccess.Write);&lt;br /&gt;
            StreamWriter w = new StreamWriter(fs);&lt;br /&gt;
 &lt;br /&gt;
            string soapString = (message is SoapServerMessage) ? &amp;quot;SoapResponse&amp;quot; : &amp;quot;SoapRequest&amp;quot;;&lt;br /&gt;
            w.WriteLine(&amp;quot;-----&amp;quot; + soapString + &amp;quot; at &amp;quot; + DateTime.Now);&lt;br /&gt;
            w.Flush();&lt;br /&gt;
            Copy(newStream, fs);&lt;br /&gt;
            w.Close();&lt;br /&gt;
            newStream.Position = 0;&lt;br /&gt;
            Copy(newStream, oldStream);&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        public void WriteInput(SoapMessage message)&lt;br /&gt;
        {&lt;br /&gt;
            Copy(oldStream, newStream);&lt;br /&gt;
            FileStream fs = new FileStream(filename, FileMode.Append,&lt;br /&gt;
                FileAccess.Write);&lt;br /&gt;
            StreamWriter w = new StreamWriter(fs);&lt;br /&gt;
 &lt;br /&gt;
            string soapString = (message is SoapServerMessage) ?&lt;br /&gt;
                &amp;quot;SoapRequest&amp;quot; : &amp;quot;SoapResponse&amp;quot;;&lt;br /&gt;
            w.WriteLine(&amp;quot;-----&amp;quot; + soapString +&lt;br /&gt;
                &amp;quot; at &amp;quot; + DateTime.Now);&lt;br /&gt;
            w.Flush();&lt;br /&gt;
            newStream.Position = 0;&lt;br /&gt;
            Copy(newStream, fs);&lt;br /&gt;
            w.Close();&lt;br /&gt;
            newStream.Position = 0;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        void Copy(Stream from, Stream to)&lt;br /&gt;
        {&lt;br /&gt;
            TextReader reader = new StreamReader(from);&lt;br /&gt;
            TextWriter writer = new StreamWriter(to);&lt;br /&gt;
            writer.WriteLine(reader.ReadToEnd());&lt;br /&gt;
            writer.Flush();&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    // Create a SoapExtensionAttribute for the SOAP Extension that can be&lt;br /&gt;
    // applied to an XML Web service method.&lt;br /&gt;
    [AttributeUsage(AttributeTargets.Method)]&lt;br /&gt;
    public class TraceExtensionAttribute : SoapExtensionAttribute&lt;br /&gt;
    {&lt;br /&gt;
 &lt;br /&gt;
        private string filename = @&amp;quot;C:\Users\Heiki Tamm\Documents\Õppematerjalid_2011\WebASPKohvikud\WebASPKohvikud\SoapLog.txt&amp;quot;;&lt;br /&gt;
        private int priority;&lt;br /&gt;
 &lt;br /&gt;
        public override Type ExtensionType&lt;br /&gt;
        {&lt;br /&gt;
            get { return typeof(TraceExtension); }&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        public override int Priority&lt;br /&gt;
        {&lt;br /&gt;
            get { return priority; }&lt;br /&gt;
            set { priority = value; }&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        public string Filename&lt;br /&gt;
        {&lt;br /&gt;
            get&lt;br /&gt;
            {&lt;br /&gt;
                return filename;&lt;br /&gt;
            }&lt;br /&gt;
            set&lt;br /&gt;
            {&lt;br /&gt;
                filename = value;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
// todo: &lt;br /&gt;
// from each soap header record query content &lt;br /&gt;
// (containing client, date, time, query ) into a DB&lt;br /&gt;
// for later reference for conducting any kind of &lt;br /&gt;
// applicable statistics and then generate stats :D !&lt;br /&gt;
// Proovin selliselt, et on lihtne statistika tabel:&lt;br /&gt;
// 1) meetod // välja kutsutava meetodi nimi&lt;br /&gt;
// 2) kuupäev // timestamp&lt;br /&gt;
// 3) callide arv // meetodi väljakutsimiste hulk&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==KLIENTRAKENDUS==&lt;br /&gt;
&lt;br /&gt;
===23. mai===&lt;br /&gt;
Mailis tegi kohvikute kuvamise ASP.NET rakenduse.&lt;br /&gt;
Kohvikud kuvatakse TreeView&#039;s &lt;br /&gt;
menüüde ja andmetega ning arvamustega kohvikute ja toitude ja jookide kohta.&lt;br /&gt;
&lt;br /&gt;
Samal lehel on kohvikuhuvilistele registreerimisvõimalus&lt;br /&gt;
ja sisselogimine.&lt;br /&gt;
&lt;br /&gt;
Kui on sisselogitud, saab lisada arvamusi.&lt;br /&gt;
Arvamuste lisamine on Ajax Extended Toolkiti controli&#039;ga &#039;Allways Visible ...&#039; tehtud, &lt;br /&gt;
&lt;br /&gt;
nii et mööda pikka TreeViewd alla kerides saab &lt;br /&gt;
lisada arvamust ilma ülesserva tagasi minemata.&lt;br /&gt;
&lt;br /&gt;
Arvamused ilmuvad kohe peale lisamist TreeView&#039;sse.&lt;br /&gt;
&lt;br /&gt;
TreeView&#039;sse tulevad andmed xml-failist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pooleli on veel kohvikute-poolne rakendus, kus omanik saab lisada ja kustutada kohvikuid, menüüsid ja toite-jooke, lisada teadaandeid.&lt;br /&gt;
&lt;br /&gt;
Pooleli on veel admini-rakendus, kus admin saab kasutajale määrata rolli, mis annab õigused kohviku-rakendusse sisse logida.&lt;br /&gt;
===4. juuni===&lt;br /&gt;
Valmis sai Kohvikute omanikele mõeldud klientrakendus.&lt;br /&gt;
Tehtud ASP.NET&#039;i veebirakendusena.&lt;br /&gt;
Seal on sisselogimine, registreerumine ja adminile kirja saatmine kohvikuomaniku õiguste saamiseks.&lt;br /&gt;
Peale sisselogimist saab &lt;br /&gt;
*lisada ja kustutada kohvikut&lt;br /&gt;
*lisada kohvikule lahtiolekuaegu nädalapäevade kaupa ja neid kustutada&lt;br /&gt;
*lisada kohvikule teadaandeid ja neid kustutada&lt;br /&gt;
*lisada kohvikule menüüsid ja neid kustutada: menüül on nimetus, liik, nädalapäev,  lisamiskuupäev, pildi veebiaadress jne. &lt;br /&gt;
*lisada menüüsse toite ja neid kustutada. Toitudel on nimetus, liik, hind, kas-sobib-taimetoitlasele, kogus grammides, suurus, lisamise kuupäev, pildi veebiaadress. Eraldi listides on kõikide kohvikute lisatud toidud ja selle kohviku lisatud toidud. Toitu valides rippmenüüst ilmuvad selle toidu andmed, et näha täpsemalt, mis toiduga on tegu. Ka on näha parajasti toitu lisatavasse menüüsse varem lisatud toidud.&lt;br /&gt;
*jookidele on sama, va. taimetoidu asemel on alkohoolse joogi korral promillide suurus.&lt;br /&gt;
&lt;br /&gt;
Lisada saab textbokside kaudu, nimekirjadest valimine on tehtud dropdown-listidena.&lt;br /&gt;
Kuvamised on tehtud GridViewdena, mis saavad andmeid meetoditest, mitte otse andmebaasitabelist.&lt;br /&gt;
&lt;br /&gt;
===5. juuni===&lt;br /&gt;
Valmis sai Kohvikute administraatori  ASP.NET-veebirakendus.&lt;br /&gt;
Admin saab registreeruda ja sisse logida.&lt;br /&gt;
Kui admin on sisse loginud, saab ta vaadata statistikat. Statistika-tabeleid on eraldi selle kohta, kui palju on mingit meetodit kasutatud ja selle kohta,kes millal mingit meetodit kasutas.&lt;br /&gt;
Sisseloginuna saab vaadata saabunud taotlusi ja nende järgi kasutajatele rolle määrata.&lt;br /&gt;
&lt;br /&gt;
Tabelid saavad andmeid otse andmebaasist, GridView&#039;dena, neid saab sorteerida tulpade&lt;br /&gt;
pealkirjadel klikkides.&lt;br /&gt;
&lt;br /&gt;
===ALLIKFAILID===&lt;br /&gt;
http://www.p2ike.com/CSharp/Kohvik.rar&lt;br /&gt;
&lt;br /&gt;
http://www.p2ike.com/CSharp/KohvikuKliendid.rar&lt;br /&gt;
&lt;br /&gt;
http://www.p2ike.com/CSharp/KohvikuAdministraator.rar&lt;br /&gt;
&lt;br /&gt;
==KOKKUVÕTE==&lt;br /&gt;
Oli soov teha ideaalset teenust ja rakendusi, millega on mugav lisada ja näha kohvikute menüüsid.&lt;br /&gt;
Veebiteenuseid sai veel pidevalt täiendatud rakenduste tegemise käigus, neid tuli kokku 100 ringis.&lt;br /&gt;
&lt;br /&gt;
Kõik kolm rakendust sai tehtud ASP.NET&#039;i veebirakendustena, et midagi juurde õppida.&lt;br /&gt;
Ka on veeb kõigile kättesaadav, ei pea eraldi programmi hakkama alla laadima.&lt;br /&gt;
&lt;br /&gt;
Asp.NET&#039;i tundmaõppimine oli arvatust aeganõudvam ja kõik ei saanud ideaalne: kohvikutel on laius-ja pikkuskraadid, edaspidi võiks kohvikülastajale mõeldud rakenduses kaardil näha olla, kus mõni kohvik asub. Ka ei osutunud treeview kõigi kohvikute andmete korraga kuvamisel, eriti kui on palju kohvikuid, kõige paremaks valikuks.&lt;br /&gt;
&lt;br /&gt;
Kõige paremini õnnestus kohvikute omanikele mõeldud rakendus.&lt;br /&gt;
&lt;br /&gt;
===probleemid===&lt;br /&gt;
*eri piltide programne lisamine gridview eri ridadele&lt;br /&gt;
*rakendused peaksid kasutama samas kohas asuvat andmebaasi&lt;br /&gt;
*kohvikülastaja vaates võiks olla kaardilt piirkonna järgi kohviku valimine&lt;br /&gt;
*kujundus jäi vähese aja tõttu tegemata&lt;br /&gt;
*töö jaotus meeskonnas ebavõrdselt&lt;br /&gt;
&lt;br /&gt;
==PUNKTID== &lt;br /&gt;
*Henri: 10 -  xml-osa ja veebiteenuste tabelite loogika, veebiteenuste turvamine.&lt;br /&gt;
*Heiki: 3 - wiki sissejuhatus.&lt;br /&gt;
*Mailis: 47 - veebiteenuste programmeerimine ja klientrakendused.&lt;/div&gt;</summary>
		<author><name>Mtoompuu</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=V%C3%B5rgurakendused_II:_2011_kevadel_valminud_kodut%C3%B6%C3%B6d&amp;diff=33966</id>
		<title>Võrgurakendused II: 2011 kevadel valminud kodutööd</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=V%C3%B5rgurakendused_II:_2011_kevadel_valminud_kodut%C3%B6%C3%B6d&amp;diff=33966"/>
		<updated>2011-06-06T11:54:57Z</updated>

		<summary type="html">&lt;p&gt;Mtoompuu: /* Mailis Toompuu */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Jaan Igamees=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;FoodWars&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;Tyhik&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Kert Suvi=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Tyhik&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond Tool]]&lt;br /&gt;
** Arvustus veebiteenusele [[Talk:Meeskond &amp;quot;Tact&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Helen Muidik=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Tyhik&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;GAP&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele [[Talk:Meeskond &amp;quot;C terav&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenuse klientidele [[Talk:Meeskond &amp;quot;Tact&amp;quot;]]&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt [[Talk:Meeskond Tool]]&lt;br /&gt;
&lt;br /&gt;
=Mihkel Sokk=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Tact&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;Sepad&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele [[Talk:Meeskond Tool]]&lt;br /&gt;
** Arvustus veebiteenuse klientidele [[Talk:Meeskond &amp;quot;Sepad&amp;quot;]]&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt [[Talk:Meeskond_&amp;quot;FoodWars&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
=Seda Sahradyan=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Tyhik&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;Tact&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele [[Talk:Meeskond &amp;quot;GAP&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenuse klientidele [[Talk:Meeskond &amp;quot;Sepad&amp;quot;]]&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt [[Talk:Meeskond &amp;quot;Nämm-nämm&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
=Priit Siimo=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;GAP&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond Tool]]&lt;br /&gt;
** Arvustus veebiteenusele [[Talk:Meeskond_%22Tyhik%22]]&lt;br /&gt;
** Arvustus veebiteenuse klientidele [[Talk:Meeskond_%22Tyhik%22]]&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt [[Talk:Meeskond_%22Hungry_Student_Food_Board%22]]&lt;br /&gt;
&lt;br /&gt;
=Siim Sarv=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;C terav&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;FoodWars&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele [[Talk:Meeskond &amp;quot;FoodWars&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenuse klientidele [[Talk:Meeskond &amp;quot;Hungry Student Food Board&amp;quot;]]&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Reigo Männiste=&lt;br /&gt;
* Meeskond [[Meeskond Tool]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;Tyhik&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele [[Talk:Meeskond &amp;quot;Tyhik&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenuse klientidele [[Talk:Meeskond &amp;quot;Tyhik&amp;quot;]]&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Karl Männil=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Sepad&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;H2&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Ilmar Telga=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;FoodWars&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;GAP&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele [[Talk:Meeskond Tool]]&lt;br /&gt;
** Arvustus veebiteenuse klientidele [[Talk:Meeskond &amp;quot;Hungry Student Food Board&amp;quot;]]&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Siim Aaver=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Nämm-nämm&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;H2&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele [[Talk:Meeskond &amp;quot;Tyhik&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Taavi Ilves=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Hungry_Student_Food_Board&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;ASP-tastic&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele [[Talk:Meeskond_&amp;quot;Tyhik&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenuse klientidele [[Talk:Meeskond_&amp;quot;Tact&amp;quot;]]&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt [[Talk:Meeskond_Tool]]&lt;br /&gt;
&lt;br /&gt;
=Jaan Kruusma=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Hungry_Student_Food_Board&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;C terav&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele [[Talk:Meeskond &amp;quot;Nämm-nämm&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenuse klientidele [[Talk:Meeskond &amp;quot;Nämm-nämm&amp;quot;]]&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Andrus Reedla=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;GAP&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;Nämm-nämm&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele [[Talk:Meeskond &amp;quot;Nämm-nämm&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenuse klientidele [[Talk:Meeskond &amp;quot;Nämm-nämm&amp;quot;]]&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt [[Talk:Meeskond &amp;quot;Nämm-nämm&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
=Jaak Lehtsalu=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Tact&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;Tyhik&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele [[Talk:Meeskond Tool]]&lt;br /&gt;
** Arvustus veebiteenuse klientidele [[Talk:Meeskond &amp;quot;H2&amp;quot;]]&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt  [[Talk:Meeskond &amp;quot;FoodWars&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
=Jana Mrots=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Tyhik&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;Tact&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele [[Talk:Meeskond  &amp;quot;Hungry Student Food Board&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenuse klientidele [[Talk:Meeskond &amp;quot;H2&amp;quot;]]&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt [[Talk:Meeskond Tool]]&lt;br /&gt;
&lt;br /&gt;
=Heiki Tamm=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;H2&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;Meeskond&amp;quot;]]&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond  &amp;quot;Hungry Student Food Board&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Toomas Soha=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Sepad&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;Nämm-nämm&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele [[Talk:Meeskond_%22Tyhik%22]]&lt;br /&gt;
** Arvustus veebiteenuse klientidele [[Talk:Meeskond_%22C_terav%22]]&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt [[Talk:Meeskond_%22Tact%22]]&lt;br /&gt;
&lt;br /&gt;
=Miina Sikk=&lt;br /&gt;
* Meeskond [[Meeskond Tool]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;Tact&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Rauno Rüga=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;FoodWars&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;C terav&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele [[Talk:Meeskond &amp;quot;C terav&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenuse klientidele [[Talk:Meeskond Tool]]&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt [[Talk:Meeskond &amp;quot;Tyhik&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
=Tanel Liiv=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Hungry Student Food Board&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;C terav&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele [[Talk:Meeskond &amp;quot;Tyhik&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenuse klientidele [[Talk:Meeskond &amp;quot;Tyhik&amp;quot;]]&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt [[Talk:Meeskond &amp;quot;Tyhik&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
=Gaspar Karm=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;GAP&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;FoodWars&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele [[Talk:Meeskond &amp;quot;FoodWars&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenuse klientidele [[Talk:Meeskond &amp;quot;FoodWars&amp;quot;]]&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Joosep Ilves=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Nämm-nämm&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;C terav&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele [[Talk:Meeskond &amp;quot;H2&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenuse klientidele [[Talk:Meeskond_&amp;quot;FoodWars&amp;quot;]]&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Taivo Türnpu=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;ASP-tastic&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond Tool]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Sander Baikov=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Sepad&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;ASP-tastic&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Allar Anijago=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Tyhik&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;Tool&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele [[Talk:Meeskond &amp;quot;Nämm-nämm&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenuse klientidele [[Talk:Meeskond_%22H2%22]]&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt [[Talk:Meeskond &amp;quot;FoodWars&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
=Madis Sarv=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;C terav&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;Nämm-nämm&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele [[Talk:Meeskond &amp;quot;Nämm-nämm&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenuse klientidele [[Talk:Meeskond_Tool]]&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt [[Talk:Meeskond &amp;quot;Tyhik&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
=Kaspar Kallasmaa=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Nämm-nämm&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;C terav&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele [[Talk:Meeskond &amp;quot;C terav&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Jarko Kaskmaa=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;ASP-tastic&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;Tyhik&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele [[Talk:Meeskond_%22H2%22]]&lt;br /&gt;
** Arvustus veebiteenuse klientidele [[Talk:Meeskond_%22H2%22]]&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Lauri Kermas=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;FoodWars&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;C terav&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele [[Talk:Meeskond &amp;quot;C terav&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenuse klientidele [[Talk:Meeskond &amp;quot;C terav&amp;quot;]]&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt [[Talk:Meeskond &amp;quot;C terav&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
=Indrek Kõue=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;ASP-tastic&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;GAP&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Erik Kaju=&lt;br /&gt;
* Meeskond [[Meeskond Tool]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;FoodWars&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele [[Talk:Meeskond &amp;quot;FoodWars&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenuse klientidele [[Talk:Meeskond &amp;quot;FoodWars&amp;quot;]]&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt [[Talk:Meeskond &amp;quot;FoodWars&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Mailis Toompuu=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;H2&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;Sepad&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele [[Talk:Meeskond Tool]]&lt;br /&gt;
** Arvustus veebiteenuse klientidele [[Talk:Meeskond Tool]]&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt [[Talk:Meeskond &amp;quot;Hungry Student Food Board&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
=Madis Kõosaar=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Tyhik&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;C terav&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele [[Talk:Meeskond &amp;quot;C terav&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenuse klientidele [[Talk:Meeskond &amp;quot;Sepad&amp;quot;]]&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Gert Glükmann=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Nämm-nämm&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;ASP-tastic&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Martin Lensment=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Tact&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond_&amp;quot;FoodWars&amp;quot;]] ja [[Talk:Meeskond_Tool]]&lt;br /&gt;
** Arvustus veebiteenusele [[Talk:Meeskond_Tool]]&lt;br /&gt;
** Arvustus veebiteenuse klientidele [[Talk:Meeskond_&amp;quot;H2&amp;quot;]]&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt [[Talk:Meeskond_&amp;quot;Tyhik&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
=Madis Sildaru=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Sepad&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;C terav&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele [[Talk:Meeskond_Tool]]&lt;br /&gt;
** Arvustus veebiteenuse klientidele [[Talk:Meeskond &amp;quot;Tyhik&amp;quot;]]&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Indrek Kruuser=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Hungry Student Food Board&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;Tyhik&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele [[Talk:Meeskond &amp;quot;Tyhik&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenuse klientidele [[Talk:Meeskond &amp;quot;Tyhik&amp;quot;]]&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt [[Talk:Meeskond &amp;quot;Tyhik&amp;quot;]]&lt;/div&gt;</summary>
		<author><name>Mtoompuu</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Talk:Meeskond_%22Hungry_Student_Food_Board%22&amp;diff=33965</id>
		<title>Talk:Meeskond &quot;Hungry Student Food Board&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Talk:Meeskond_%22Hungry_Student_Food_Board%22&amp;diff=33965"/>
		<updated>2011-06-06T11:53:37Z</updated>

		<summary type="html">&lt;p&gt;Mtoompuu: /* Arvustus kogu projektile */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Arvustus XML-ile ==&lt;br /&gt;
XML on koostatud korrektselt. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;Natuke &amp;quot;tähenärimist&amp;quot;: &amp;lt;!-- kuigi tähenärimine rikub hambaid, nagu juhtivad hambaarstid kinnidavad :P --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;kehtib&amp;quot; tagide asemel võiks olla &amp;quot;viimati ajakohastatud&amp;quot; ehk &amp;quot;updated&amp;quot; ja kui on plaanis tulevikus mitte eestikeelseid tegijaid ligi lasta, võiks kõik tag-id olla inglisekeelsed. Näiteks kui &amp;quot;konkureeriv firma&amp;quot; tahab ka neid andmeid mingil viisil oma klientidele kuvada. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
XML&#039;i ennast on raske hinnata. Tuleks vaadata, kas XML vastab schemale ja kui vastab, siis hinnata schema faili, sest see on ülevaatlikum. Eraldi schema faili ei suutnud ma leida. Tegin siis ise ühe. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Schema visuaalselt &amp;lt;br /&amp;gt;&lt;br /&gt;
[[File:HSFB schema.png]] &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* ning sellele vastav kood&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xs:schema xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; attributeFormDefault=&amp;quot;unqualified&amp;quot; elementFormDefault=&amp;quot;qualified&amp;quot; xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xs:element name=&amp;quot;kohvikud&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;kohvik&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;toit&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;pilt&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element name=&amp;quot;url&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:attribute name=&amp;quot;width&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:attribute name=&amp;quot;height&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;pealkiri&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;kirjeldus&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;poolhind&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:extension base=&amp;quot;xs:unsignedByte&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:attribute name=&amp;quot;valuuta&amp;quot; type=&amp;quot;xs:string&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:attribute name=&amp;quot;rate&amp;quot; type=&amp;quot;xs:decimal&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;tervehind&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:extension base=&amp;quot;xs:unsignedShort&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:attribute name=&amp;quot;valuuta&amp;quot; type=&amp;quot;xs:string&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:attribute name=&amp;quot;rate&amp;quot; type=&amp;quot;xs:decimal&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;allahindlus&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;kehtib&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;liked&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:attribute name=&amp;quot;tyyp&amp;quot; type=&amp;quot;xs:string&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
            &amp;lt;xs:attribute name=&amp;quot;name&amp;quot; type=&amp;quot;xs:string&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xs:attribute name=&amp;quot;staatus&amp;quot; type=&amp;quot;xs:string&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
XML on kasutatav mitmete erinevate kohvikute puhul. Pisut arusaamatu on staatus tagide olemasolu, kas mõeldud on ka mittetegutsevate kohvikute andmete kuvamist?  XML-i loojad on ette näinud erinevate suurustega portsjonite pakkumise võimaluse. Samuti on olemas otse XML-is viide pakutava toote fotole. Olemas on ka võimalus kasutaja poolse tagasiside, hinnete kujul, edastamiseks. Kehtib silt oletan, et on mõeldud näitamaks millal infot viimati uuendati. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[User:Htamm|Htamm]] 23:13, 20 March 2011 (EET) &lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Heiki&lt;br /&gt;
 &lt;br /&gt;
Tänud sulle korraliku tagasiside eest. Staatus on mõeldud kohvikule &amp;quot;tweetimiseks&amp;quot; nt päevapakkumine või miski muu random info kuvamiseks. Süsteem on tõepoolest mõeldud mitmele kohvikule, mitte ühe tarkvara asendamine ühele kohvikule. Esialgne programm on tõepoolest mõeldud Eesti turule, Internatsionaliseerimist peaks tõepoolest algusest saadik programmi sisse planeerima, kuid esialgu ei näe, et meie kohvikute toode müüki läheks, kuid rakendame seda põhimõtet meie firmas.&lt;br /&gt;
&lt;br /&gt;
Jaan Kruusma&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= &#039;&#039;Arvustus veebitenusele&#039;&#039; =&lt;br /&gt;
----------------------&lt;br /&gt;
Teenus on põhjalikult ja korralikult tehtud. Olulist rolli mängib ka disain, mis on ilusti tehtud ja mis mulle meeldis.  Meetodid on kirjeldatud ja andmediagrammis on hästi nähtud, mis millest sõltub. Wikis veebiteenus on lisatud mitte ainult kirjeldamisega, kui ka piltidega, mis annab täeliku ülevaate.&lt;br /&gt;
&lt;br /&gt;
Jana Mrots&lt;br /&gt;
&lt;br /&gt;
== Rakenduse arvustus ==&lt;br /&gt;
&lt;br /&gt;
Esimese positiivse asjana võib kohe välja tuua selle, et on kasutatud MVC3 raamistikku. Kuid wiki lehel polnud olemas juhiseid, kuidas rakendus tööle saada. Otsisin siis MVC3 allalaadimise koha ülesse ja paigaldasin selle ka enda arvutisse.&lt;br /&gt;
&lt;br /&gt;
Kui rääkida sellest, mis puudu siis koodis ei märganud ma kuskil kommentaare. Ilma dokumentatsioonita on raske koodist kiire ülevaade saada. Kuna varem ei ole MVC3-ga kokku puutunud, siis ei saanud koodist suurt midagi aru.&lt;br /&gt;
&lt;br /&gt;
Panin siis rakenduse käima. Tuli ette &amp;quot;häda ja viletsuse mula-tekst&amp;quot; (&#039;&#039;Lorem Ipsum dolor sit amet ...&#039;&#039;). Registreerisin ennast lehel ära, mille järel olin kohe lehele sisse logitud (üleval paremal oli kiri &amp;quot;&#039;&#039;Welcome, Ilmar!&#039;&#039;&amp;quot;). Siis vajutasin menüüribal &amp;quot;Cafes&amp;quot;, mille peale tuli &#039;&#039;Compilation Error&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 Source File: c:\Users\iLmar\Documents\Visual Studio 2010\Projects\HSFB\HSFB\Views\Cafe\Index.cshtml Line: 91 &lt;br /&gt;
&lt;br /&gt;
[[File:HSFB error.JPG|800px|Vajutasin menüüribal &amp;quot;Cafes&amp;quot;, mille peale tuli Compilation Error.]]&lt;br /&gt;
&lt;br /&gt;
Küsisin skype-i VR2 grupis, kuidas menüüsid näha saaks. Tänaseks ei saanudki abi.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Vastus: Compilation error probleem on elimineeritud. Lorem Ipsum on väga tore :)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[User:Itelga|Ilmar Telga]] 17:05, 21 May 2011 (EEST)&lt;br /&gt;
&lt;br /&gt;
== Rakenduse arvustus ==&lt;br /&gt;
&lt;br /&gt;
Eriti meeldis see toodetekuvamise rakendus. Seal võiks veel juures olla see, et kui seda kuvada suuremale ekraanile siis on toidud kahes tulbas.&lt;br /&gt;
Desktopi rakendususe puhul võika aint õelda, et võibolla on kassapidaja jaoks seal ka mitte tarviliku infot nagu ID&#039;d mis teda ilmselt tegelt ei huvita. Kuid oma eesmärgi milleks oli kirjete kustutamine ja hindade muutmine ta täidab.&lt;br /&gt;
Facebooki api&#039;s võiks veel olla kohviku enda asukoha kohta midagi näidatud ja millal lahti. Muidu oli hea et midagi üleliigset seal ei olnud.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Siim Sarv&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Kokkuvõttev arvustus ===&lt;br /&gt;
&lt;br /&gt;
Väga positiivne hinnang kogu meeskonnale. Hea näha, et ilmselt kõik meeskonnaliikmeid panustasid korralikult lõpptulemusele. &lt;br /&gt;
Tööd olid alati esitatud õigeaegselt, esitlus selge ja korralik. Teema oli küll laialt levinud ja paljude poolt valitud, kuid teostus arvatavasti parim.&lt;br /&gt;
&lt;br /&gt;
MVC 3 kasutamine on hea mõte, eriti just suuremate ja mahukamate projektide puhul.&lt;br /&gt;
Rakenduse puhul meeldis profesionaalne välimus (eriti admin liidesel) ja erinevad lisad nagu facebooki kasutamine.&lt;br /&gt;
&lt;br /&gt;
Hea töö!&lt;br /&gt;
&lt;br /&gt;
Arvustas,&lt;br /&gt;
Priit Siimo&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Arvustus kogu projektile ==&lt;br /&gt;
Päris vinge projekt, erinevates keeltes tehtud ja sotsiaalvõrgustikku üles pandud ja jutu järgi organiseeritud paar reaalset kohvikut, kes teenust kasutama hakkavad.&lt;br /&gt;
Eri rakenduste kujundused võiksid olla ühtlaslet samas stiilis, kuna jutt käib samast asjast.&lt;br /&gt;
Tundub ka, et meeskonnatöö klappis hästi.&lt;br /&gt;
&#039;&#039;&#039;Mailis Toompuu&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Mtoompuu</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Talk:Meeskond_%22Hungry_Student_Food_Board%22&amp;diff=33964</id>
		<title>Talk:Meeskond &quot;Hungry Student Food Board&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Talk:Meeskond_%22Hungry_Student_Food_Board%22&amp;diff=33964"/>
		<updated>2011-06-06T11:53:17Z</updated>

		<summary type="html">&lt;p&gt;Mtoompuu: /* Kokkuvõttev arvustus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Arvustus XML-ile ==&lt;br /&gt;
XML on koostatud korrektselt. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;Natuke &amp;quot;tähenärimist&amp;quot;: &amp;lt;!-- kuigi tähenärimine rikub hambaid, nagu juhtivad hambaarstid kinnidavad :P --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;kehtib&amp;quot; tagide asemel võiks olla &amp;quot;viimati ajakohastatud&amp;quot; ehk &amp;quot;updated&amp;quot; ja kui on plaanis tulevikus mitte eestikeelseid tegijaid ligi lasta, võiks kõik tag-id olla inglisekeelsed. Näiteks kui &amp;quot;konkureeriv firma&amp;quot; tahab ka neid andmeid mingil viisil oma klientidele kuvada. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
XML&#039;i ennast on raske hinnata. Tuleks vaadata, kas XML vastab schemale ja kui vastab, siis hinnata schema faili, sest see on ülevaatlikum. Eraldi schema faili ei suutnud ma leida. Tegin siis ise ühe. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Schema visuaalselt &amp;lt;br /&amp;gt;&lt;br /&gt;
[[File:HSFB schema.png]] &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* ning sellele vastav kood&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xs:schema xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; attributeFormDefault=&amp;quot;unqualified&amp;quot; elementFormDefault=&amp;quot;qualified&amp;quot; xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xs:element name=&amp;quot;kohvikud&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;kohvik&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;toit&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;pilt&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element name=&amp;quot;url&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:extension base=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:attribute name=&amp;quot;width&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:attribute name=&amp;quot;height&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;pealkiri&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;kirjeldus&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;poolhind&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:extension base=&amp;quot;xs:unsignedByte&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:attribute name=&amp;quot;valuuta&amp;quot; type=&amp;quot;xs:string&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:attribute name=&amp;quot;rate&amp;quot; type=&amp;quot;xs:decimal&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;tervehind&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:simpleContent&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:extension base=&amp;quot;xs:unsignedShort&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:attribute name=&amp;quot;valuuta&amp;quot; type=&amp;quot;xs:string&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:attribute name=&amp;quot;rate&amp;quot; type=&amp;quot;xs:decimal&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:extension&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:simpleContent&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;allahindlus&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;kehtib&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;liked&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:attribute name=&amp;quot;tyyp&amp;quot; type=&amp;quot;xs:string&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
            &amp;lt;xs:attribute name=&amp;quot;name&amp;quot; type=&amp;quot;xs:string&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xs:attribute name=&amp;quot;staatus&amp;quot; type=&amp;quot;xs:string&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
XML on kasutatav mitmete erinevate kohvikute puhul. Pisut arusaamatu on staatus tagide olemasolu, kas mõeldud on ka mittetegutsevate kohvikute andmete kuvamist?  XML-i loojad on ette näinud erinevate suurustega portsjonite pakkumise võimaluse. Samuti on olemas otse XML-is viide pakutava toote fotole. Olemas on ka võimalus kasutaja poolse tagasiside, hinnete kujul, edastamiseks. Kehtib silt oletan, et on mõeldud näitamaks millal infot viimati uuendati. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[User:Htamm|Htamm]] 23:13, 20 March 2011 (EET) &lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Heiki&lt;br /&gt;
 &lt;br /&gt;
Tänud sulle korraliku tagasiside eest. Staatus on mõeldud kohvikule &amp;quot;tweetimiseks&amp;quot; nt päevapakkumine või miski muu random info kuvamiseks. Süsteem on tõepoolest mõeldud mitmele kohvikule, mitte ühe tarkvara asendamine ühele kohvikule. Esialgne programm on tõepoolest mõeldud Eesti turule, Internatsionaliseerimist peaks tõepoolest algusest saadik programmi sisse planeerima, kuid esialgu ei näe, et meie kohvikute toode müüki läheks, kuid rakendame seda põhimõtet meie firmas.&lt;br /&gt;
&lt;br /&gt;
Jaan Kruusma&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= &#039;&#039;Arvustus veebitenusele&#039;&#039; =&lt;br /&gt;
----------------------&lt;br /&gt;
Teenus on põhjalikult ja korralikult tehtud. Olulist rolli mängib ka disain, mis on ilusti tehtud ja mis mulle meeldis.  Meetodid on kirjeldatud ja andmediagrammis on hästi nähtud, mis millest sõltub. Wikis veebiteenus on lisatud mitte ainult kirjeldamisega, kui ka piltidega, mis annab täeliku ülevaate.&lt;br /&gt;
&lt;br /&gt;
Jana Mrots&lt;br /&gt;
&lt;br /&gt;
== Rakenduse arvustus ==&lt;br /&gt;
&lt;br /&gt;
Esimese positiivse asjana võib kohe välja tuua selle, et on kasutatud MVC3 raamistikku. Kuid wiki lehel polnud olemas juhiseid, kuidas rakendus tööle saada. Otsisin siis MVC3 allalaadimise koha ülesse ja paigaldasin selle ka enda arvutisse.&lt;br /&gt;
&lt;br /&gt;
Kui rääkida sellest, mis puudu siis koodis ei märganud ma kuskil kommentaare. Ilma dokumentatsioonita on raske koodist kiire ülevaade saada. Kuna varem ei ole MVC3-ga kokku puutunud, siis ei saanud koodist suurt midagi aru.&lt;br /&gt;
&lt;br /&gt;
Panin siis rakenduse käima. Tuli ette &amp;quot;häda ja viletsuse mula-tekst&amp;quot; (&#039;&#039;Lorem Ipsum dolor sit amet ...&#039;&#039;). Registreerisin ennast lehel ära, mille järel olin kohe lehele sisse logitud (üleval paremal oli kiri &amp;quot;&#039;&#039;Welcome, Ilmar!&#039;&#039;&amp;quot;). Siis vajutasin menüüribal &amp;quot;Cafes&amp;quot;, mille peale tuli &#039;&#039;Compilation Error&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 Source File: c:\Users\iLmar\Documents\Visual Studio 2010\Projects\HSFB\HSFB\Views\Cafe\Index.cshtml Line: 91 &lt;br /&gt;
&lt;br /&gt;
[[File:HSFB error.JPG|800px|Vajutasin menüüribal &amp;quot;Cafes&amp;quot;, mille peale tuli Compilation Error.]]&lt;br /&gt;
&lt;br /&gt;
Küsisin skype-i VR2 grupis, kuidas menüüsid näha saaks. Tänaseks ei saanudki abi.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Vastus: Compilation error probleem on elimineeritud. Lorem Ipsum on väga tore :)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[User:Itelga|Ilmar Telga]] 17:05, 21 May 2011 (EEST)&lt;br /&gt;
&lt;br /&gt;
== Rakenduse arvustus ==&lt;br /&gt;
&lt;br /&gt;
Eriti meeldis see toodetekuvamise rakendus. Seal võiks veel juures olla see, et kui seda kuvada suuremale ekraanile siis on toidud kahes tulbas.&lt;br /&gt;
Desktopi rakendususe puhul võika aint õelda, et võibolla on kassapidaja jaoks seal ka mitte tarviliku infot nagu ID&#039;d mis teda ilmselt tegelt ei huvita. Kuid oma eesmärgi milleks oli kirjete kustutamine ja hindade muutmine ta täidab.&lt;br /&gt;
Facebooki api&#039;s võiks veel olla kohviku enda asukoha kohta midagi näidatud ja millal lahti. Muidu oli hea et midagi üleliigset seal ei olnud.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Siim Sarv&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Kokkuvõttev arvustus ===&lt;br /&gt;
&lt;br /&gt;
Väga positiivne hinnang kogu meeskonnale. Hea näha, et ilmselt kõik meeskonnaliikmeid panustasid korralikult lõpptulemusele. &lt;br /&gt;
Tööd olid alati esitatud õigeaegselt, esitlus selge ja korralik. Teema oli küll laialt levinud ja paljude poolt valitud, kuid teostus arvatavasti parim.&lt;br /&gt;
&lt;br /&gt;
MVC 3 kasutamine on hea mõte, eriti just suuremate ja mahukamate projektide puhul.&lt;br /&gt;
Rakenduse puhul meeldis profesionaalne välimus (eriti admin liidesel) ja erinevad lisad nagu facebooki kasutamine.&lt;br /&gt;
&lt;br /&gt;
Hea töö!&lt;br /&gt;
&lt;br /&gt;
Arvustas,&lt;br /&gt;
Priit Siimo&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Arvustus kogu projektile ==&lt;br /&gt;
Päris vinge projekt, erinevates keeltes tehtud ja sotsiaalvõrgustikku üles pandud ja jutu järgi organiseeritud paar reaalset kohvikut, kes teenust kasutama hakkavad.&lt;br /&gt;
Eri rakenduste kujundused võiksid olla ühtlaslet samas stiilis, kuna jutt käib samast asjast.&lt;br /&gt;
Tundub ka, et meeskonnatöö klappis hästi.&lt;/div&gt;</summary>
		<author><name>Mtoompuu</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Meeskond_%22H2%22&amp;diff=33935</id>
		<title>Meeskond &quot;H2&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Meeskond_%22H2%22&amp;diff=33935"/>
		<updated>2011-06-06T11:30:26Z</updated>

		<summary type="html">&lt;p&gt;Mtoompuu: /* probleemid */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Kohviku menüüsüsteem==&lt;br /&gt;
===Projekt===&lt;br /&gt;
Kohvikute (esialgu ainult IT-Kohviku) menüüsüsteem, mis on jälgitav mobiilseadmetelt. Lisaväärtusena võimaldab anda pakutavale hinnanguid, otsuse langetamise hõlbustamiseks kommentaar:(see viimane funktsioon kipub vist &amp;quot;veebirakenduseks&amp;quot; muutuma)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Sihtplatvormid:&lt;br /&gt;
Windows Mobile, iOS, Android(kui leiame vabatahtlikud testijad)&lt;br /&gt;
&lt;br /&gt;
===Taustinfo===&lt;br /&gt;
Praegune IT-Kohviku menüü on käsitsi täidetav valge tahvel. Projekti eesmärgiks on parendada IT-Kohviku menüüsüsteemi ja teha see veebi kaudu kättesaadavaks, nii, et menüüsse saab lisada ka karniiri valiku. Standardmenüü puhul saab menüüs olla ka illustreeriv foto. Hetkemenüü ning hinnad ja lahtioleku ajad on samuti jälgitavad võrguühendust eviva mobiilseadme ekraanilt, hõlbustades sellega valikute tegemist.&lt;br /&gt;
&lt;br /&gt;
===Liikmed===&lt;br /&gt;
* Mailis Toompuu&lt;br /&gt;
* Henri Kroosmann&lt;br /&gt;
* Heiki Tamm&lt;br /&gt;
&lt;br /&gt;
==Sisu==&lt;br /&gt;
&lt;br /&gt;
===XML Data===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;menu&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name1&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;0&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name1&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item1&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item2&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item3&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;0&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;0&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount1&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;0&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;0&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot1&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name2&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;255&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name2&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item4&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item5&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item6&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;255&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;255&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount2&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;255&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;255&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot2&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name3&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;1&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name3&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item7&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item8&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item9&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;1&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;1&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount3&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;1&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;1&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot3&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
&amp;lt;/menu&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===XML Schema===&lt;br /&gt;
&lt;br /&gt;
Ülevaade Schema&#039;st. &amp;lt;br /&amp;gt;&lt;br /&gt;
[[File:XMLSchema_Capture_(optimized).png]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Ning sellele vastav kood.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xs:schema attributeFormDefault=&amp;quot;unqualified&amp;quot; elementFormDefault=&amp;quot;qualified&amp;quot; xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xs:element name=&amp;quot;menu&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;product&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;type&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;id&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;extras&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence minOccurs=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;item&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;price&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence minOccurs=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;int&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;frac&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element minOccurs=&amp;quot;0&amp;quot; name=&amp;quot;discount&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;vote&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;pos&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;neg&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;screenshot&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===XML Style===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;html&amp;gt;&lt;br /&gt;
      &amp;lt;head&amp;gt;&lt;br /&gt;
        &amp;lt;style type=&amp;quot;text/css&amp;quot;&amp;gt;&lt;br /&gt;
          html,body{margin:0;padding:0;font-family:Helvetica,Arial,sans-serif;font-size:14px;line-height:19px;color:#2c2c2c;}&lt;br /&gt;
          h1{margin:0;padding:25px 0 0;font-size:22px;line-height:25px;text-align:center;}&lt;br /&gt;
          h2{margin:0;padding:5px;font-size:16px;line-height:21px}&lt;br /&gt;
          span.discount{padding:0 0 0 5px;color:red;}&lt;br /&gt;
          table{margin:20px auto;padding:0;}&lt;br /&gt;
          th,td{padding:5px;border:1px solid #2c2c2c;vertical-align:top;text-align:left}&lt;br /&gt;
          th{font-weight:bold;background-color:#eee;}&lt;br /&gt;
          ul{margin:0;padding:0;list-style-type:none;}&lt;br /&gt;
        &amp;lt;/style&amp;gt;&lt;br /&gt;
      &amp;lt;/head&amp;gt;&lt;br /&gt;
      &amp;lt;body&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;Menüü&amp;lt;/h1&amp;gt;&lt;br /&gt;
        &amp;lt;table width=&amp;quot;800&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;200&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;100&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col witdh=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;150&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;tr&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Nimetus&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Lisandid&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Tüüp&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Hind&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Hinne / Hindajaid&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Pilt&amp;lt;/th&amp;gt;&lt;br /&gt;
          &amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
          &amp;lt;xsl:for-each select=&amp;quot;menu/product&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:sort select=&amp;quot;type/id&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:sort select=&amp;quot;name&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;th&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;name&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/th&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;extras/node()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;ul&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:for-each select=&amp;quot;extras/item&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;li&amp;gt;&lt;br /&gt;
                          &amp;lt;xsl:value-of select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;/li&amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
                    &amp;lt;/ul&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;td&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;type/name&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;price/node()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    €&amp;lt;xsl:value-of select=&amp;quot;price/int&amp;quot;/&amp;gt;.&amp;lt;xsl:value-of select=&amp;quot;price/frac&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:if test=&amp;quot;price/discount/text()&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;span class=&amp;quot;discount&amp;quot;&amp;gt;&lt;br /&gt;
                        (-&amp;lt;xsl:value-of select=&amp;quot;price/discount&amp;quot;/&amp;gt;%)&lt;br /&gt;
                      &amp;lt;/span&amp;gt;&lt;br /&gt;
                    &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:variable name=&amp;quot;p&amp;quot; select=&amp;quot;vote/pos&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:variable name=&amp;quot;n&amp;quot; select=&amp;quot;vote/neg&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;td&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$p - $n&amp;quot;/&amp;gt; / &amp;lt;xsl:value-of select=&amp;quot;$p + $n&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;screenshot/text()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;img src=&amp;quot;{screenshot}&amp;quot; alt=&amp;quot;&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;img src=&amp;quot;screenshots/default.png&amp;quot; alt=&amp;quot;No image&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
      &amp;lt;/body&amp;gt;&lt;br /&gt;
    &amp;lt;/html&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
Sisu ja stiilifaili koostöö http://henri.kroosmann.ee/kool/xml/index.xml &amp;lt;!--[http://henri.kroosmann.ee/kool/xml/index.xml]--&amp;gt;&lt;br /&gt;
==VEEBITEENUSED==&lt;br /&gt;
&lt;br /&gt;
===8. aprill===&lt;br /&gt;
Otsustame teha teenused kõikide kohvikute menüüde kohta.&lt;br /&gt;
&lt;br /&gt;
===11.-12. aprill===&lt;br /&gt;
Henri koostab tabelite loogika&lt;br /&gt;
&lt;br /&gt;
===13. aprill===&lt;br /&gt;
Mailis otsustab veebiteenused teha asmx-is [webmethod]-itega&lt;br /&gt;
===14. aprill===&lt;br /&gt;
Mailis hakkab veebiteenuseid tegema&lt;br /&gt;
===17. aprill===&lt;br /&gt;
Veebiteenused on valmis:&lt;br /&gt;
&lt;br /&gt;
*AnnaJoogiliikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaJoogitabelirida_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*AnnaJookideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaK6igiKohvikuteAndmeteNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyyIDed_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyyRida_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyydeNimekiri_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaMenyyLiikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaMenyydeNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaPromillideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToiduliikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToitudeNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToitutabelirida_toiduIDjargi &lt;br /&gt;
&lt;br /&gt;
*AnnaYheKohvikuAndmed_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*KustutaJookMenyyst &lt;br /&gt;
&lt;br /&gt;
*KustutaMenyy &lt;br /&gt;
&lt;br /&gt;
*KustutaKohvik &lt;br /&gt;
&lt;br /&gt;
*KustutaToitMenyyst &lt;br /&gt;
&lt;br /&gt;
*KysiYheKohvikuYheMenyyToitudeIDeed_menyyIDjargi &lt;br /&gt;
&lt;br /&gt;
*LisaJoogiLiik &lt;br /&gt;
&lt;br /&gt;
*LisaMenyyLiik &lt;br /&gt;
&lt;br /&gt;
*LisaPromill &lt;br /&gt;
&lt;br /&gt;
*LisaToiduLiik &lt;br /&gt;
&lt;br /&gt;
*SecurityAuthenticateUser &lt;br /&gt;
&lt;br /&gt;
*TOITJOOKmenyysRida_menyyIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedJoogileMenyys &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedKohvikule &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedToiduleMenyys &lt;br /&gt;
&lt;br /&gt;
*annaJoogiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiKIRJELDUS_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiKOMM_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiID_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiNIMI_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKasOnTaimeT_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKasutajaNIMI_Guidjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuLahtiolekuAjad_kohvikuIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuTeated &lt;br /&gt;
&lt;br /&gt;
*annaLinnaID_LinnaNimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaLinnaNIMI_LinnaIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaLinnad_maakonnaNIMEjargi &lt;br /&gt;
&lt;br /&gt;
*annaMaakonnaID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaMenyyLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaMenyyLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaPromill_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaPromilliID_promilliNrJargi &lt;br /&gt;
&lt;br /&gt;
*annaPromilliNR_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduKIRJELDUS_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduKOMMENTAAR_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiNIMETUS_toiduIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaYheKohvikuMenyyd_kohvikuNIMEjargi &lt;br /&gt;
&lt;br /&gt;
*autendiKasutajaParooliJargi &lt;br /&gt;
&lt;br /&gt;
*k6igiKohvikuteMenyyd &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusJoogiKohta &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusKohvikuKohta &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusToiduKohta &lt;br /&gt;
&lt;br /&gt;
*lisaJookMenyysse &lt;br /&gt;
&lt;br /&gt;
*lisaToitMenyysse &lt;br /&gt;
&lt;br /&gt;
*lisaUusJook &lt;br /&gt;
&lt;br /&gt;
*lisaUusKohvik &lt;br /&gt;
&lt;br /&gt;
*lisaUusLahtiolekuAeg &lt;br /&gt;
&lt;br /&gt;
*lisaUusMenyy &lt;br /&gt;
&lt;br /&gt;
*lisaUusTeadaanne &lt;br /&gt;
&lt;br /&gt;
*lisaUusToit &lt;br /&gt;
&lt;br /&gt;
*nadalapaevaID_paevaNimetuseJargi &lt;br /&gt;
&lt;br /&gt;
*nadalapaevaNIMETUS_paevaIDjargi&lt;br /&gt;
&lt;br /&gt;
*Registreeru&lt;br /&gt;
&lt;br /&gt;
*LogiSisseTavakasutajana&lt;br /&gt;
&lt;br /&gt;
*LogiSisseKohvikuna&lt;br /&gt;
&lt;br /&gt;
===22.aprill===&lt;br /&gt;
Toimus koosolek&lt;br /&gt;
*Henri lubas meetodite turvamise teha.&lt;br /&gt;
*Heiki lubas statistika teha meetodite kohta.&lt;br /&gt;
&lt;br /&gt;
===Allikfail===&lt;br /&gt;
Allikfail: http://www.p2ike.com/CSharp/KohvikudVeebiteenus.rar&lt;br /&gt;
&lt;br /&gt;
Meetod &#039;k6igiKohvikuteMenyyd&#039; kuvab sellise xml struktuuri: http://www.p2ike.com/CSharp/k6igiKohvikuteMenyyd.xml&lt;br /&gt;
&lt;br /&gt;
Toidud ja joogid sorteeritakse liikide kaupa.&lt;br /&gt;
&lt;br /&gt;
===Andmetabelid===&lt;br /&gt;
[[File:andmetabelid.jpg|777px|thumb|left|andmemudel]]&lt;br /&gt;
===Statistika===&lt;br /&gt;
 using System;&lt;br /&gt;
using System.Web.Services;&lt;br /&gt;
using System.Web.Services.Protocols;&lt;br /&gt;
using System.IO;&lt;br /&gt;
using System.Net;&lt;br /&gt;
 &lt;br /&gt;
// Define a SOAP Extension that traces the SOAP request and SOAP&lt;br /&gt;
// response for the XML Web service method the SOAP extension is&lt;br /&gt;
// applied to. &lt;br /&gt;
 &lt;br /&gt;
namespace WebASPKohvikud&lt;br /&gt;
{&lt;br /&gt;
    public class TraceExtension : SoapExtension&lt;br /&gt;
    {&lt;br /&gt;
        Stream oldStream;&lt;br /&gt;
        Stream newStream;&lt;br /&gt;
        string filename;&lt;br /&gt;
 &lt;br /&gt;
        // Save the Stream representing the SOAP request or SOAP response into&lt;br /&gt;
        // a local memory buffer.&lt;br /&gt;
        public override Stream ChainStream(Stream stream)&lt;br /&gt;
        {&lt;br /&gt;
            oldStream = stream;&lt;br /&gt;
            newStream = new MemoryStream();&lt;br /&gt;
            return newStream;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        // When the SOAP extension is accessed for the first time, the XML Web&lt;br /&gt;
        // service method it is applied to is accessed to store the file&lt;br /&gt;
        // name passed in, using the corresponding SoapExtensionAttribute.	&lt;br /&gt;
        public override object GetInitializer(LogicalMethodInfo methodInfo, SoapExtensionAttribute attribute)&lt;br /&gt;
        {&lt;br /&gt;
            return ((TraceExtensionAttribute)attribute).Filename;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        // The SOAP extension was configured to run using a configuration file&lt;br /&gt;
        // instead of an attribute applied to a specific XML Web service&lt;br /&gt;
        // method.&lt;br /&gt;
        public override object GetInitializer(Type WebServiceType)&lt;br /&gt;
        {&lt;br /&gt;
            // Return a file name to log the trace information to, based on the&lt;br /&gt;
            // type.&lt;br /&gt;
            return &amp;quot;C:\\&amp;quot; + WebServiceType.FullName + &amp;quot;.log&amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        // Receive the file name stored by GetInitializer and store it in a&lt;br /&gt;
        // member variable for this specific instance.&lt;br /&gt;
        public override void Initialize(object initializer)&lt;br /&gt;
        {&lt;br /&gt;
            filename = (string)initializer;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        //  If the SoapMessageStage is such that the SoapRequest or&lt;br /&gt;
        //  SoapResponse is still in the SOAP format to be sent or received,&lt;br /&gt;
        //  save it out to a file.&lt;br /&gt;
        public override void ProcessMessage(SoapMessage message)&lt;br /&gt;
        {&lt;br /&gt;
            switch (message.Stage)&lt;br /&gt;
            {&lt;br /&gt;
                case SoapMessageStage.BeforeSerialize:&lt;br /&gt;
                    break;&lt;br /&gt;
                case SoapMessageStage.AfterSerialize:&lt;br /&gt;
                    WriteOutput(message);&lt;br /&gt;
                    break;&lt;br /&gt;
                case SoapMessageStage.BeforeDeserialize:&lt;br /&gt;
                    WriteInput(message);&lt;br /&gt;
                    break;&lt;br /&gt;
                case SoapMessageStage.AfterDeserialize:&lt;br /&gt;
                    break;&lt;br /&gt;
                default:&lt;br /&gt;
                    throw new Exception(&amp;quot;invalid stage&amp;quot;);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        public void WriteOutput(SoapMessage message)&lt;br /&gt;
        {&lt;br /&gt;
            newStream.Position = 0;&lt;br /&gt;
            FileStream fs = new FileStream(filename, FileMode.Append,&lt;br /&gt;
                FileAccess.Write);&lt;br /&gt;
            StreamWriter w = new StreamWriter(fs);&lt;br /&gt;
 &lt;br /&gt;
            string soapString = (message is SoapServerMessage) ? &amp;quot;SoapResponse&amp;quot; : &amp;quot;SoapRequest&amp;quot;;&lt;br /&gt;
            w.WriteLine(&amp;quot;-----&amp;quot; + soapString + &amp;quot; at &amp;quot; + DateTime.Now);&lt;br /&gt;
            w.Flush();&lt;br /&gt;
            Copy(newStream, fs);&lt;br /&gt;
            w.Close();&lt;br /&gt;
            newStream.Position = 0;&lt;br /&gt;
            Copy(newStream, oldStream);&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        public void WriteInput(SoapMessage message)&lt;br /&gt;
        {&lt;br /&gt;
            Copy(oldStream, newStream);&lt;br /&gt;
            FileStream fs = new FileStream(filename, FileMode.Append,&lt;br /&gt;
                FileAccess.Write);&lt;br /&gt;
            StreamWriter w = new StreamWriter(fs);&lt;br /&gt;
 &lt;br /&gt;
            string soapString = (message is SoapServerMessage) ?&lt;br /&gt;
                &amp;quot;SoapRequest&amp;quot; : &amp;quot;SoapResponse&amp;quot;;&lt;br /&gt;
            w.WriteLine(&amp;quot;-----&amp;quot; + soapString +&lt;br /&gt;
                &amp;quot; at &amp;quot; + DateTime.Now);&lt;br /&gt;
            w.Flush();&lt;br /&gt;
            newStream.Position = 0;&lt;br /&gt;
            Copy(newStream, fs);&lt;br /&gt;
            w.Close();&lt;br /&gt;
            newStream.Position = 0;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        void Copy(Stream from, Stream to)&lt;br /&gt;
        {&lt;br /&gt;
            TextReader reader = new StreamReader(from);&lt;br /&gt;
            TextWriter writer = new StreamWriter(to);&lt;br /&gt;
            writer.WriteLine(reader.ReadToEnd());&lt;br /&gt;
            writer.Flush();&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    // Create a SoapExtensionAttribute for the SOAP Extension that can be&lt;br /&gt;
    // applied to an XML Web service method.&lt;br /&gt;
    [AttributeUsage(AttributeTargets.Method)]&lt;br /&gt;
    public class TraceExtensionAttribute : SoapExtensionAttribute&lt;br /&gt;
    {&lt;br /&gt;
 &lt;br /&gt;
        private string filename = @&amp;quot;C:\Users\Heiki Tamm\Documents\Õppematerjalid_2011\WebASPKohvikud\WebASPKohvikud\SoapLog.txt&amp;quot;;&lt;br /&gt;
        private int priority;&lt;br /&gt;
 &lt;br /&gt;
        public override Type ExtensionType&lt;br /&gt;
        {&lt;br /&gt;
            get { return typeof(TraceExtension); }&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        public override int Priority&lt;br /&gt;
        {&lt;br /&gt;
            get { return priority; }&lt;br /&gt;
            set { priority = value; }&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        public string Filename&lt;br /&gt;
        {&lt;br /&gt;
            get&lt;br /&gt;
            {&lt;br /&gt;
                return filename;&lt;br /&gt;
            }&lt;br /&gt;
            set&lt;br /&gt;
            {&lt;br /&gt;
                filename = value;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
// todo: &lt;br /&gt;
// from each soap header record query content &lt;br /&gt;
// (containing client, date, time, query ) into a DB&lt;br /&gt;
// for later reference for conducting any kind of &lt;br /&gt;
// applicable statistics and then generate stats :D !&lt;br /&gt;
// Proovin selliselt, et on lihtne statistika tabel:&lt;br /&gt;
// 1) meetod // välja kutsutava meetodi nimi&lt;br /&gt;
// 2) kuupäev // timestamp&lt;br /&gt;
// 3) callide arv // meetodi väljakutsimiste hulk&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==KLIENTRAKENDUS==&lt;br /&gt;
&lt;br /&gt;
===23. mai===&lt;br /&gt;
Mailis tegi kohvikute kuvamise ASP.NET rakenduse.&lt;br /&gt;
Kohvikud kuvatakse TreeView&#039;s &lt;br /&gt;
menüüde ja andmetega ning arvamustega kohvikute ja toitude ja jookide kohta.&lt;br /&gt;
&lt;br /&gt;
Samal lehel on kohvikuhuvilistele registreerimisvõimalus&lt;br /&gt;
ja sisselogimine.&lt;br /&gt;
&lt;br /&gt;
Kui on sisselogitud, saab lisada arvamusi.&lt;br /&gt;
Arvamuste lisamine on Ajax Extended Toolkiti controli&#039;ga &#039;Allways Visible ...&#039; tehtud, &lt;br /&gt;
&lt;br /&gt;
nii et mööda pikka TreeViewd alla kerides saab &lt;br /&gt;
lisada arvamust ilma ülesserva tagasi minemata.&lt;br /&gt;
&lt;br /&gt;
Arvamused ilmuvad kohe peale lisamist TreeView&#039;sse.&lt;br /&gt;
&lt;br /&gt;
TreeView&#039;sse tulevad andmed xml-failist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pooleli on veel kohvikute-poolne rakendus, kus omanik saab lisada ja kustutada kohvikuid, menüüsid ja toite-jooke, lisada teadaandeid.&lt;br /&gt;
&lt;br /&gt;
Pooleli on veel admini-rakendus, kus admin saab kasutajale määrata rolli, mis annab õigused kohviku-rakendusse sisse logida.&lt;br /&gt;
===4. juuni===&lt;br /&gt;
Valmis sai Kohvikute omanikele mõeldud klientrakendus.&lt;br /&gt;
Tehtud ASP.NET&#039;i veebirakendusena.&lt;br /&gt;
Seal on sisselogimine, registreerumine ja adminile kirja saatmine kohvikuomaniku õiguste saamiseks.&lt;br /&gt;
Peale sisselogimist saab &lt;br /&gt;
*lisada ja kustutada kohvikut&lt;br /&gt;
*lisada kohvikule lahtiolekuaegu nädalapäevade kaupa ja neid kustutada&lt;br /&gt;
*lisada kohvikule teadaandeid ja neid kustutada&lt;br /&gt;
*lisada kohvikule menüüsid ja neid kustutada: menüül on nimetus, liik, nädalapäev,  lisamiskuupäev, pildi veebiaadress jne. &lt;br /&gt;
*lisada menüüsse toite ja neid kustutada. Toitudel on nimetus, liik, hind, kas-sobib-taimetoitlasele, kogus grammides, suurus, lisamise kuupäev, pildi veebiaadress. Eraldi listides on kõikide kohvikute lisatud toidud ja selle kohviku lisatud toidud. Toitu valides rippmenüüst ilmuvad selle toidu andmed, et näha täpsemalt, mis toiduga on tegu. Ka on näha parajasti toitu lisatavasse menüüsse varem lisatud toidud.&lt;br /&gt;
*jookidele on sama, va. taimetoidu asemel on alkohoolse joogi korral promillide suurus.&lt;br /&gt;
&lt;br /&gt;
Lisada saab textbokside kaudu, nimekirjadest valimine on tehtud dropdown-listidena.&lt;br /&gt;
Kuvamised on tehtud GridViewdena, mis saavad andmeid meetoditest, mitte otse andmebaasitabelist.&lt;br /&gt;
&lt;br /&gt;
===5. juuni===&lt;br /&gt;
Valmis sai Kohvikute administraatori  ASP.NET-veebirakendus.&lt;br /&gt;
Admin saab registreeruda ja sisse logida.&lt;br /&gt;
Kui admin on sisse loginud, saab ta vaadata statistikat. Statistika-tabeleid on eraldi selle kohta, kui palju on mingit meetodit kasutatud ja selle kohta,kes millal mingit meetodit kasutas.&lt;br /&gt;
Sisseloginuna saab vaadata saabunud taotlusi ja nende järgi kasutajatele rolle määrata.&lt;br /&gt;
&lt;br /&gt;
Tabelid saavad andmeid otse andmebaasist, GridView&#039;dena, neid saab sorteerida tulpade&lt;br /&gt;
pealkirjadel klikkides.&lt;br /&gt;
&lt;br /&gt;
===ALLIKFAILID===&lt;br /&gt;
http://www.p2ike.com/CSharp/Kohvik.rar&lt;br /&gt;
&lt;br /&gt;
http://www.p2ike.com/CSharp/KohvikuKliendid.rar&lt;br /&gt;
&lt;br /&gt;
http://www.p2ike.com/CSharp/KohvikuAdministraator.rar&lt;br /&gt;
&lt;br /&gt;
==KOKKUVÕTE==&lt;br /&gt;
Oli soov teha ideaalset teenust ja rakendusi, millega on mugav lisada ja näha kohvikute menüüsid.&lt;br /&gt;
Veebiteenuseid sai veel pidevalt täiendatud rakenduste tegemise käigus, neid tuli kokku 100 ringis.&lt;br /&gt;
&lt;br /&gt;
Kõik kolm rakendust sai tehtud ASP.NET&#039;i veebirakendustena, et midagi juurde õppida.&lt;br /&gt;
Ka on veeb kõigile kättesaadav, ei pea eraldi programmi hakkama alla laadima.&lt;br /&gt;
&lt;br /&gt;
Asp.NET&#039;i tundmaõppimine oli arvatust aeganõudvam ja kõik ei saanud ideaalne: kohvikutel on laius-ja pikkuskraadid, edaspidi võiks kohvikülastajale mõeldud rakenduses kaardil näha olla, kus mõni kohvik asub. Ka ei osutunud treeview kõigi kohvikute andmete korraga kuvamisel, eriti kui on palju kohvikuid, kõige paremaks valikuks.&lt;br /&gt;
&lt;br /&gt;
Kõige paremini õnnestus kohvikute omanikele mõeldud rakendus.&lt;br /&gt;
&lt;br /&gt;
===probleemid===&lt;br /&gt;
*eri piltide programne lisamine gridview eri ridadele&lt;br /&gt;
*rakendused peaksid kasutama samas kohas asuvat andmebaasi&lt;br /&gt;
*kohvikülastaja vaates võiks olla kaardilt piirkonna järgi kohviku valimine&lt;br /&gt;
*kujundus jäi vähese aja tõttu tegemata&lt;br /&gt;
*töö jaotus meeskonnas ebavõrdselt&lt;br /&gt;
&lt;br /&gt;
==PUNKTID== &lt;br /&gt;
*Henri: 10 -  xml-osa ja veebiteenuste tabelite loogika.&lt;br /&gt;
*Heiki: 3 - wiki sissejuhatus.&lt;br /&gt;
*Mailis: 47 - veebiteenuste programmeerimine ja klientrakendused.&lt;/div&gt;</summary>
		<author><name>Mtoompuu</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Meeskond_%22H2%22&amp;diff=33933</id>
		<title>Meeskond &quot;H2&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Meeskond_%22H2%22&amp;diff=33933"/>
		<updated>2011-06-06T11:29:33Z</updated>

		<summary type="html">&lt;p&gt;Mtoompuu: /* probleemid */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Kohviku menüüsüsteem==&lt;br /&gt;
===Projekt===&lt;br /&gt;
Kohvikute (esialgu ainult IT-Kohviku) menüüsüsteem, mis on jälgitav mobiilseadmetelt. Lisaväärtusena võimaldab anda pakutavale hinnanguid, otsuse langetamise hõlbustamiseks kommentaar:(see viimane funktsioon kipub vist &amp;quot;veebirakenduseks&amp;quot; muutuma)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Sihtplatvormid:&lt;br /&gt;
Windows Mobile, iOS, Android(kui leiame vabatahtlikud testijad)&lt;br /&gt;
&lt;br /&gt;
===Taustinfo===&lt;br /&gt;
Praegune IT-Kohviku menüü on käsitsi täidetav valge tahvel. Projekti eesmärgiks on parendada IT-Kohviku menüüsüsteemi ja teha see veebi kaudu kättesaadavaks, nii, et menüüsse saab lisada ka karniiri valiku. Standardmenüü puhul saab menüüs olla ka illustreeriv foto. Hetkemenüü ning hinnad ja lahtioleku ajad on samuti jälgitavad võrguühendust eviva mobiilseadme ekraanilt, hõlbustades sellega valikute tegemist.&lt;br /&gt;
&lt;br /&gt;
===Liikmed===&lt;br /&gt;
* Mailis Toompuu&lt;br /&gt;
* Henri Kroosmann&lt;br /&gt;
* Heiki Tamm&lt;br /&gt;
&lt;br /&gt;
==Sisu==&lt;br /&gt;
&lt;br /&gt;
===XML Data===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;menu&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name1&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;0&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name1&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item1&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item2&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item3&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;0&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;0&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount1&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;0&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;0&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot1&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name2&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;255&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name2&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item4&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item5&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item6&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;255&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;255&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount2&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;255&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;255&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot2&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name3&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;1&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name3&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item7&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item8&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item9&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;1&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;1&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount3&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;1&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;1&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot3&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
&amp;lt;/menu&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===XML Schema===&lt;br /&gt;
&lt;br /&gt;
Ülevaade Schema&#039;st. &amp;lt;br /&amp;gt;&lt;br /&gt;
[[File:XMLSchema_Capture_(optimized).png]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Ning sellele vastav kood.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xs:schema attributeFormDefault=&amp;quot;unqualified&amp;quot; elementFormDefault=&amp;quot;qualified&amp;quot; xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xs:element name=&amp;quot;menu&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;product&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;type&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;id&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;extras&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence minOccurs=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;item&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;price&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence minOccurs=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;int&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;frac&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element minOccurs=&amp;quot;0&amp;quot; name=&amp;quot;discount&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;vote&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;pos&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;neg&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;screenshot&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===XML Style===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;html&amp;gt;&lt;br /&gt;
      &amp;lt;head&amp;gt;&lt;br /&gt;
        &amp;lt;style type=&amp;quot;text/css&amp;quot;&amp;gt;&lt;br /&gt;
          html,body{margin:0;padding:0;font-family:Helvetica,Arial,sans-serif;font-size:14px;line-height:19px;color:#2c2c2c;}&lt;br /&gt;
          h1{margin:0;padding:25px 0 0;font-size:22px;line-height:25px;text-align:center;}&lt;br /&gt;
          h2{margin:0;padding:5px;font-size:16px;line-height:21px}&lt;br /&gt;
          span.discount{padding:0 0 0 5px;color:red;}&lt;br /&gt;
          table{margin:20px auto;padding:0;}&lt;br /&gt;
          th,td{padding:5px;border:1px solid #2c2c2c;vertical-align:top;text-align:left}&lt;br /&gt;
          th{font-weight:bold;background-color:#eee;}&lt;br /&gt;
          ul{margin:0;padding:0;list-style-type:none;}&lt;br /&gt;
        &amp;lt;/style&amp;gt;&lt;br /&gt;
      &amp;lt;/head&amp;gt;&lt;br /&gt;
      &amp;lt;body&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;Menüü&amp;lt;/h1&amp;gt;&lt;br /&gt;
        &amp;lt;table width=&amp;quot;800&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;200&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;100&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col witdh=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;150&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;tr&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Nimetus&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Lisandid&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Tüüp&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Hind&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Hinne / Hindajaid&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Pilt&amp;lt;/th&amp;gt;&lt;br /&gt;
          &amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
          &amp;lt;xsl:for-each select=&amp;quot;menu/product&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:sort select=&amp;quot;type/id&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:sort select=&amp;quot;name&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;th&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;name&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/th&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;extras/node()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;ul&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:for-each select=&amp;quot;extras/item&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;li&amp;gt;&lt;br /&gt;
                          &amp;lt;xsl:value-of select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;/li&amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
                    &amp;lt;/ul&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;td&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;type/name&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;price/node()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    €&amp;lt;xsl:value-of select=&amp;quot;price/int&amp;quot;/&amp;gt;.&amp;lt;xsl:value-of select=&amp;quot;price/frac&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:if test=&amp;quot;price/discount/text()&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;span class=&amp;quot;discount&amp;quot;&amp;gt;&lt;br /&gt;
                        (-&amp;lt;xsl:value-of select=&amp;quot;price/discount&amp;quot;/&amp;gt;%)&lt;br /&gt;
                      &amp;lt;/span&amp;gt;&lt;br /&gt;
                    &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:variable name=&amp;quot;p&amp;quot; select=&amp;quot;vote/pos&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:variable name=&amp;quot;n&amp;quot; select=&amp;quot;vote/neg&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;td&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$p - $n&amp;quot;/&amp;gt; / &amp;lt;xsl:value-of select=&amp;quot;$p + $n&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;screenshot/text()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;img src=&amp;quot;{screenshot}&amp;quot; alt=&amp;quot;&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;img src=&amp;quot;screenshots/default.png&amp;quot; alt=&amp;quot;No image&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
      &amp;lt;/body&amp;gt;&lt;br /&gt;
    &amp;lt;/html&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
Sisu ja stiilifaili koostöö http://henri.kroosmann.ee/kool/xml/index.xml &amp;lt;!--[http://henri.kroosmann.ee/kool/xml/index.xml]--&amp;gt;&lt;br /&gt;
==VEEBITEENUSED==&lt;br /&gt;
&lt;br /&gt;
===8. aprill===&lt;br /&gt;
Otsustame teha teenused kõikide kohvikute menüüde kohta.&lt;br /&gt;
&lt;br /&gt;
===11.-12. aprill===&lt;br /&gt;
Henri koostab tabelite loogika&lt;br /&gt;
&lt;br /&gt;
===13. aprill===&lt;br /&gt;
Mailis otsustab veebiteenused teha asmx-is [webmethod]-itega&lt;br /&gt;
===14. aprill===&lt;br /&gt;
Mailis hakkab veebiteenuseid tegema&lt;br /&gt;
===17. aprill===&lt;br /&gt;
Veebiteenused on valmis:&lt;br /&gt;
&lt;br /&gt;
*AnnaJoogiliikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaJoogitabelirida_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*AnnaJookideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaK6igiKohvikuteAndmeteNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyyIDed_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyyRida_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyydeNimekiri_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaMenyyLiikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaMenyydeNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaPromillideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToiduliikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToitudeNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToitutabelirida_toiduIDjargi &lt;br /&gt;
&lt;br /&gt;
*AnnaYheKohvikuAndmed_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*KustutaJookMenyyst &lt;br /&gt;
&lt;br /&gt;
*KustutaMenyy &lt;br /&gt;
&lt;br /&gt;
*KustutaKohvik &lt;br /&gt;
&lt;br /&gt;
*KustutaToitMenyyst &lt;br /&gt;
&lt;br /&gt;
*KysiYheKohvikuYheMenyyToitudeIDeed_menyyIDjargi &lt;br /&gt;
&lt;br /&gt;
*LisaJoogiLiik &lt;br /&gt;
&lt;br /&gt;
*LisaMenyyLiik &lt;br /&gt;
&lt;br /&gt;
*LisaPromill &lt;br /&gt;
&lt;br /&gt;
*LisaToiduLiik &lt;br /&gt;
&lt;br /&gt;
*SecurityAuthenticateUser &lt;br /&gt;
&lt;br /&gt;
*TOITJOOKmenyysRida_menyyIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedJoogileMenyys &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedKohvikule &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedToiduleMenyys &lt;br /&gt;
&lt;br /&gt;
*annaJoogiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiKIRJELDUS_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiKOMM_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiID_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiNIMI_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKasOnTaimeT_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKasutajaNIMI_Guidjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuLahtiolekuAjad_kohvikuIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuTeated &lt;br /&gt;
&lt;br /&gt;
*annaLinnaID_LinnaNimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaLinnaNIMI_LinnaIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaLinnad_maakonnaNIMEjargi &lt;br /&gt;
&lt;br /&gt;
*annaMaakonnaID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaMenyyLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaMenyyLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaPromill_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaPromilliID_promilliNrJargi &lt;br /&gt;
&lt;br /&gt;
*annaPromilliNR_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduKIRJELDUS_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduKOMMENTAAR_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiNIMETUS_toiduIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaYheKohvikuMenyyd_kohvikuNIMEjargi &lt;br /&gt;
&lt;br /&gt;
*autendiKasutajaParooliJargi &lt;br /&gt;
&lt;br /&gt;
*k6igiKohvikuteMenyyd &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusJoogiKohta &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusKohvikuKohta &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusToiduKohta &lt;br /&gt;
&lt;br /&gt;
*lisaJookMenyysse &lt;br /&gt;
&lt;br /&gt;
*lisaToitMenyysse &lt;br /&gt;
&lt;br /&gt;
*lisaUusJook &lt;br /&gt;
&lt;br /&gt;
*lisaUusKohvik &lt;br /&gt;
&lt;br /&gt;
*lisaUusLahtiolekuAeg &lt;br /&gt;
&lt;br /&gt;
*lisaUusMenyy &lt;br /&gt;
&lt;br /&gt;
*lisaUusTeadaanne &lt;br /&gt;
&lt;br /&gt;
*lisaUusToit &lt;br /&gt;
&lt;br /&gt;
*nadalapaevaID_paevaNimetuseJargi &lt;br /&gt;
&lt;br /&gt;
*nadalapaevaNIMETUS_paevaIDjargi&lt;br /&gt;
&lt;br /&gt;
*Registreeru&lt;br /&gt;
&lt;br /&gt;
*LogiSisseTavakasutajana&lt;br /&gt;
&lt;br /&gt;
*LogiSisseKohvikuna&lt;br /&gt;
&lt;br /&gt;
===22.aprill===&lt;br /&gt;
Toimus koosolek&lt;br /&gt;
*Henri lubas meetodite turvamise teha.&lt;br /&gt;
*Heiki lubas statistika teha meetodite kohta.&lt;br /&gt;
&lt;br /&gt;
===Allikfail===&lt;br /&gt;
Allikfail: http://www.p2ike.com/CSharp/KohvikudVeebiteenus.rar&lt;br /&gt;
&lt;br /&gt;
Meetod &#039;k6igiKohvikuteMenyyd&#039; kuvab sellise xml struktuuri: http://www.p2ike.com/CSharp/k6igiKohvikuteMenyyd.xml&lt;br /&gt;
&lt;br /&gt;
Toidud ja joogid sorteeritakse liikide kaupa.&lt;br /&gt;
&lt;br /&gt;
===Andmetabelid===&lt;br /&gt;
[[File:andmetabelid.jpg|777px|thumb|left|andmemudel]]&lt;br /&gt;
===Statistika===&lt;br /&gt;
 using System;&lt;br /&gt;
using System.Web.Services;&lt;br /&gt;
using System.Web.Services.Protocols;&lt;br /&gt;
using System.IO;&lt;br /&gt;
using System.Net;&lt;br /&gt;
 &lt;br /&gt;
// Define a SOAP Extension that traces the SOAP request and SOAP&lt;br /&gt;
// response for the XML Web service method the SOAP extension is&lt;br /&gt;
// applied to. &lt;br /&gt;
 &lt;br /&gt;
namespace WebASPKohvikud&lt;br /&gt;
{&lt;br /&gt;
    public class TraceExtension : SoapExtension&lt;br /&gt;
    {&lt;br /&gt;
        Stream oldStream;&lt;br /&gt;
        Stream newStream;&lt;br /&gt;
        string filename;&lt;br /&gt;
 &lt;br /&gt;
        // Save the Stream representing the SOAP request or SOAP response into&lt;br /&gt;
        // a local memory buffer.&lt;br /&gt;
        public override Stream ChainStream(Stream stream)&lt;br /&gt;
        {&lt;br /&gt;
            oldStream = stream;&lt;br /&gt;
            newStream = new MemoryStream();&lt;br /&gt;
            return newStream;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        // When the SOAP extension is accessed for the first time, the XML Web&lt;br /&gt;
        // service method it is applied to is accessed to store the file&lt;br /&gt;
        // name passed in, using the corresponding SoapExtensionAttribute.	&lt;br /&gt;
        public override object GetInitializer(LogicalMethodInfo methodInfo, SoapExtensionAttribute attribute)&lt;br /&gt;
        {&lt;br /&gt;
            return ((TraceExtensionAttribute)attribute).Filename;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        // The SOAP extension was configured to run using a configuration file&lt;br /&gt;
        // instead of an attribute applied to a specific XML Web service&lt;br /&gt;
        // method.&lt;br /&gt;
        public override object GetInitializer(Type WebServiceType)&lt;br /&gt;
        {&lt;br /&gt;
            // Return a file name to log the trace information to, based on the&lt;br /&gt;
            // type.&lt;br /&gt;
            return &amp;quot;C:\\&amp;quot; + WebServiceType.FullName + &amp;quot;.log&amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        // Receive the file name stored by GetInitializer and store it in a&lt;br /&gt;
        // member variable for this specific instance.&lt;br /&gt;
        public override void Initialize(object initializer)&lt;br /&gt;
        {&lt;br /&gt;
            filename = (string)initializer;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        //  If the SoapMessageStage is such that the SoapRequest or&lt;br /&gt;
        //  SoapResponse is still in the SOAP format to be sent or received,&lt;br /&gt;
        //  save it out to a file.&lt;br /&gt;
        public override void ProcessMessage(SoapMessage message)&lt;br /&gt;
        {&lt;br /&gt;
            switch (message.Stage)&lt;br /&gt;
            {&lt;br /&gt;
                case SoapMessageStage.BeforeSerialize:&lt;br /&gt;
                    break;&lt;br /&gt;
                case SoapMessageStage.AfterSerialize:&lt;br /&gt;
                    WriteOutput(message);&lt;br /&gt;
                    break;&lt;br /&gt;
                case SoapMessageStage.BeforeDeserialize:&lt;br /&gt;
                    WriteInput(message);&lt;br /&gt;
                    break;&lt;br /&gt;
                case SoapMessageStage.AfterDeserialize:&lt;br /&gt;
                    break;&lt;br /&gt;
                default:&lt;br /&gt;
                    throw new Exception(&amp;quot;invalid stage&amp;quot;);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        public void WriteOutput(SoapMessage message)&lt;br /&gt;
        {&lt;br /&gt;
            newStream.Position = 0;&lt;br /&gt;
            FileStream fs = new FileStream(filename, FileMode.Append,&lt;br /&gt;
                FileAccess.Write);&lt;br /&gt;
            StreamWriter w = new StreamWriter(fs);&lt;br /&gt;
 &lt;br /&gt;
            string soapString = (message is SoapServerMessage) ? &amp;quot;SoapResponse&amp;quot; : &amp;quot;SoapRequest&amp;quot;;&lt;br /&gt;
            w.WriteLine(&amp;quot;-----&amp;quot; + soapString + &amp;quot; at &amp;quot; + DateTime.Now);&lt;br /&gt;
            w.Flush();&lt;br /&gt;
            Copy(newStream, fs);&lt;br /&gt;
            w.Close();&lt;br /&gt;
            newStream.Position = 0;&lt;br /&gt;
            Copy(newStream, oldStream);&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        public void WriteInput(SoapMessage message)&lt;br /&gt;
        {&lt;br /&gt;
            Copy(oldStream, newStream);&lt;br /&gt;
            FileStream fs = new FileStream(filename, FileMode.Append,&lt;br /&gt;
                FileAccess.Write);&lt;br /&gt;
            StreamWriter w = new StreamWriter(fs);&lt;br /&gt;
 &lt;br /&gt;
            string soapString = (message is SoapServerMessage) ?&lt;br /&gt;
                &amp;quot;SoapRequest&amp;quot; : &amp;quot;SoapResponse&amp;quot;;&lt;br /&gt;
            w.WriteLine(&amp;quot;-----&amp;quot; + soapString +&lt;br /&gt;
                &amp;quot; at &amp;quot; + DateTime.Now);&lt;br /&gt;
            w.Flush();&lt;br /&gt;
            newStream.Position = 0;&lt;br /&gt;
            Copy(newStream, fs);&lt;br /&gt;
            w.Close();&lt;br /&gt;
            newStream.Position = 0;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        void Copy(Stream from, Stream to)&lt;br /&gt;
        {&lt;br /&gt;
            TextReader reader = new StreamReader(from);&lt;br /&gt;
            TextWriter writer = new StreamWriter(to);&lt;br /&gt;
            writer.WriteLine(reader.ReadToEnd());&lt;br /&gt;
            writer.Flush();&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    // Create a SoapExtensionAttribute for the SOAP Extension that can be&lt;br /&gt;
    // applied to an XML Web service method.&lt;br /&gt;
    [AttributeUsage(AttributeTargets.Method)]&lt;br /&gt;
    public class TraceExtensionAttribute : SoapExtensionAttribute&lt;br /&gt;
    {&lt;br /&gt;
 &lt;br /&gt;
        private string filename = @&amp;quot;C:\Users\Heiki Tamm\Documents\Õppematerjalid_2011\WebASPKohvikud\WebASPKohvikud\SoapLog.txt&amp;quot;;&lt;br /&gt;
        private int priority;&lt;br /&gt;
 &lt;br /&gt;
        public override Type ExtensionType&lt;br /&gt;
        {&lt;br /&gt;
            get { return typeof(TraceExtension); }&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        public override int Priority&lt;br /&gt;
        {&lt;br /&gt;
            get { return priority; }&lt;br /&gt;
            set { priority = value; }&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        public string Filename&lt;br /&gt;
        {&lt;br /&gt;
            get&lt;br /&gt;
            {&lt;br /&gt;
                return filename;&lt;br /&gt;
            }&lt;br /&gt;
            set&lt;br /&gt;
            {&lt;br /&gt;
                filename = value;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
// todo: &lt;br /&gt;
// from each soap header record query content &lt;br /&gt;
// (containing client, date, time, query ) into a DB&lt;br /&gt;
// for later reference for conducting any kind of &lt;br /&gt;
// applicable statistics and then generate stats :D !&lt;br /&gt;
// Proovin selliselt, et on lihtne statistika tabel:&lt;br /&gt;
// 1) meetod // välja kutsutava meetodi nimi&lt;br /&gt;
// 2) kuupäev // timestamp&lt;br /&gt;
// 3) callide arv // meetodi väljakutsimiste hulk&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==KLIENTRAKENDUS==&lt;br /&gt;
&lt;br /&gt;
===23. mai===&lt;br /&gt;
Mailis tegi kohvikute kuvamise ASP.NET rakenduse.&lt;br /&gt;
Kohvikud kuvatakse TreeView&#039;s &lt;br /&gt;
menüüde ja andmetega ning arvamustega kohvikute ja toitude ja jookide kohta.&lt;br /&gt;
&lt;br /&gt;
Samal lehel on kohvikuhuvilistele registreerimisvõimalus&lt;br /&gt;
ja sisselogimine.&lt;br /&gt;
&lt;br /&gt;
Kui on sisselogitud, saab lisada arvamusi.&lt;br /&gt;
Arvamuste lisamine on Ajax Extended Toolkiti controli&#039;ga &#039;Allways Visible ...&#039; tehtud, &lt;br /&gt;
&lt;br /&gt;
nii et mööda pikka TreeViewd alla kerides saab &lt;br /&gt;
lisada arvamust ilma ülesserva tagasi minemata.&lt;br /&gt;
&lt;br /&gt;
Arvamused ilmuvad kohe peale lisamist TreeView&#039;sse.&lt;br /&gt;
&lt;br /&gt;
TreeView&#039;sse tulevad andmed xml-failist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pooleli on veel kohvikute-poolne rakendus, kus omanik saab lisada ja kustutada kohvikuid, menüüsid ja toite-jooke, lisada teadaandeid.&lt;br /&gt;
&lt;br /&gt;
Pooleli on veel admini-rakendus, kus admin saab kasutajale määrata rolli, mis annab õigused kohviku-rakendusse sisse logida.&lt;br /&gt;
===4. juuni===&lt;br /&gt;
Valmis sai Kohvikute omanikele mõeldud klientrakendus.&lt;br /&gt;
Tehtud ASP.NET&#039;i veebirakendusena.&lt;br /&gt;
Seal on sisselogimine, registreerumine ja adminile kirja saatmine kohvikuomaniku õiguste saamiseks.&lt;br /&gt;
Peale sisselogimist saab &lt;br /&gt;
*lisada ja kustutada kohvikut&lt;br /&gt;
*lisada kohvikule lahtiolekuaegu nädalapäevade kaupa ja neid kustutada&lt;br /&gt;
*lisada kohvikule teadaandeid ja neid kustutada&lt;br /&gt;
*lisada kohvikule menüüsid ja neid kustutada: menüül on nimetus, liik, nädalapäev,  lisamiskuupäev, pildi veebiaadress jne. &lt;br /&gt;
*lisada menüüsse toite ja neid kustutada. Toitudel on nimetus, liik, hind, kas-sobib-taimetoitlasele, kogus grammides, suurus, lisamise kuupäev, pildi veebiaadress. Eraldi listides on kõikide kohvikute lisatud toidud ja selle kohviku lisatud toidud. Toitu valides rippmenüüst ilmuvad selle toidu andmed, et näha täpsemalt, mis toiduga on tegu. Ka on näha parajasti toitu lisatavasse menüüsse varem lisatud toidud.&lt;br /&gt;
*jookidele on sama, va. taimetoidu asemel on alkohoolse joogi korral promillide suurus.&lt;br /&gt;
&lt;br /&gt;
Lisada saab textbokside kaudu, nimekirjadest valimine on tehtud dropdown-listidena.&lt;br /&gt;
Kuvamised on tehtud GridViewdena, mis saavad andmeid meetoditest, mitte otse andmebaasitabelist.&lt;br /&gt;
&lt;br /&gt;
===5. juuni===&lt;br /&gt;
Valmis sai Kohvikute administraatori  ASP.NET-veebirakendus.&lt;br /&gt;
Admin saab registreeruda ja sisse logida.&lt;br /&gt;
Kui admin on sisse loginud, saab ta vaadata statistikat. Statistika-tabeleid on eraldi selle kohta, kui palju on mingit meetodit kasutatud ja selle kohta,kes millal mingit meetodit kasutas.&lt;br /&gt;
Sisseloginuna saab vaadata saabunud taotlusi ja nende järgi kasutajatele rolle määrata.&lt;br /&gt;
&lt;br /&gt;
Tabelid saavad andmeid otse andmebaasist, GridView&#039;dena, neid saab sorteerida tulpade&lt;br /&gt;
pealkirjadel klikkides.&lt;br /&gt;
&lt;br /&gt;
===ALLIKFAILID===&lt;br /&gt;
http://www.p2ike.com/CSharp/Kohvik.rar&lt;br /&gt;
&lt;br /&gt;
http://www.p2ike.com/CSharp/KohvikuKliendid.rar&lt;br /&gt;
&lt;br /&gt;
http://www.p2ike.com/CSharp/KohvikuAdministraator.rar&lt;br /&gt;
&lt;br /&gt;
==KOKKUVÕTE==&lt;br /&gt;
Oli soov teha ideaalset teenust ja rakendusi, millega on mugav lisada ja näha kohvikute menüüsid.&lt;br /&gt;
Veebiteenuseid sai veel pidevalt täiendatud rakenduste tegemise käigus, neid tuli kokku 100 ringis.&lt;br /&gt;
&lt;br /&gt;
Kõik kolm rakendust sai tehtud ASP.NET&#039;i veebirakendustena, et midagi juurde õppida.&lt;br /&gt;
Ka on veeb kõigile kättesaadav, ei pea eraldi programmi hakkama alla laadima.&lt;br /&gt;
&lt;br /&gt;
Asp.NET&#039;i tundmaõppimine oli arvatust aeganõudvam ja kõik ei saanud ideaalne: kohvikutel on laius-ja pikkuskraadid, edaspidi võiks kohvikülastajale mõeldud rakenduses kaardil näha olla, kus mõni kohvik asub. Ka ei osutunud treeview kõigi kohvikute andmete korraga kuvamisel, eriti kui on palju kohvikuid, kõige paremaks valikuks.&lt;br /&gt;
&lt;br /&gt;
Kõige paremini õnnestus kohvikute omanikele mõeldud rakendus.&lt;br /&gt;
&lt;br /&gt;
===probleemid===&lt;br /&gt;
*eri piltide programne lisamine gridview eri ridadele&lt;br /&gt;
*rakendused peaksid kasutama samas kohas asuvat andmebaasi&lt;br /&gt;
*kohvikülastaja vaates võiks olla kaardilt piirkonna järgi kohviku valimine&lt;br /&gt;
*kujundus jäi vähese aja tõttu tegemata&lt;br /&gt;
&lt;br /&gt;
==PUNKTID== &lt;br /&gt;
*Henri: 10 -  xml-osa ja veebiteenuste tabelite loogika.&lt;br /&gt;
*Heiki: 3 - wiki sissejuhatus.&lt;br /&gt;
*Mailis: 47 - veebiteenuste programmeerimine ja klientrakendused.&lt;/div&gt;</summary>
		<author><name>Mtoompuu</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Meeskond_%22H2%22&amp;diff=33932</id>
		<title>Meeskond &quot;H2&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Meeskond_%22H2%22&amp;diff=33932"/>
		<updated>2011-06-06T11:29:09Z</updated>

		<summary type="html">&lt;p&gt;Mtoompuu: /* probleemid */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Kohviku menüüsüsteem==&lt;br /&gt;
===Projekt===&lt;br /&gt;
Kohvikute (esialgu ainult IT-Kohviku) menüüsüsteem, mis on jälgitav mobiilseadmetelt. Lisaväärtusena võimaldab anda pakutavale hinnanguid, otsuse langetamise hõlbustamiseks kommentaar:(see viimane funktsioon kipub vist &amp;quot;veebirakenduseks&amp;quot; muutuma)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Sihtplatvormid:&lt;br /&gt;
Windows Mobile, iOS, Android(kui leiame vabatahtlikud testijad)&lt;br /&gt;
&lt;br /&gt;
===Taustinfo===&lt;br /&gt;
Praegune IT-Kohviku menüü on käsitsi täidetav valge tahvel. Projekti eesmärgiks on parendada IT-Kohviku menüüsüsteemi ja teha see veebi kaudu kättesaadavaks, nii, et menüüsse saab lisada ka karniiri valiku. Standardmenüü puhul saab menüüs olla ka illustreeriv foto. Hetkemenüü ning hinnad ja lahtioleku ajad on samuti jälgitavad võrguühendust eviva mobiilseadme ekraanilt, hõlbustades sellega valikute tegemist.&lt;br /&gt;
&lt;br /&gt;
===Liikmed===&lt;br /&gt;
* Mailis Toompuu&lt;br /&gt;
* Henri Kroosmann&lt;br /&gt;
* Heiki Tamm&lt;br /&gt;
&lt;br /&gt;
==Sisu==&lt;br /&gt;
&lt;br /&gt;
===XML Data===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;menu&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name1&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;0&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name1&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item1&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item2&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item3&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;0&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;0&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount1&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;0&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;0&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot1&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name2&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;255&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name2&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item4&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item5&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item6&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;255&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;255&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount2&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;255&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;255&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot2&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name3&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;1&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name3&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item7&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item8&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item9&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;1&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;1&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount3&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;1&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;1&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot3&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
&amp;lt;/menu&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===XML Schema===&lt;br /&gt;
&lt;br /&gt;
Ülevaade Schema&#039;st. &amp;lt;br /&amp;gt;&lt;br /&gt;
[[File:XMLSchema_Capture_(optimized).png]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Ning sellele vastav kood.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xs:schema attributeFormDefault=&amp;quot;unqualified&amp;quot; elementFormDefault=&amp;quot;qualified&amp;quot; xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xs:element name=&amp;quot;menu&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;product&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;type&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;id&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;extras&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence minOccurs=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;item&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;price&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence minOccurs=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;int&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;frac&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element minOccurs=&amp;quot;0&amp;quot; name=&amp;quot;discount&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;vote&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;pos&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;neg&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;screenshot&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===XML Style===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;html&amp;gt;&lt;br /&gt;
      &amp;lt;head&amp;gt;&lt;br /&gt;
        &amp;lt;style type=&amp;quot;text/css&amp;quot;&amp;gt;&lt;br /&gt;
          html,body{margin:0;padding:0;font-family:Helvetica,Arial,sans-serif;font-size:14px;line-height:19px;color:#2c2c2c;}&lt;br /&gt;
          h1{margin:0;padding:25px 0 0;font-size:22px;line-height:25px;text-align:center;}&lt;br /&gt;
          h2{margin:0;padding:5px;font-size:16px;line-height:21px}&lt;br /&gt;
          span.discount{padding:0 0 0 5px;color:red;}&lt;br /&gt;
          table{margin:20px auto;padding:0;}&lt;br /&gt;
          th,td{padding:5px;border:1px solid #2c2c2c;vertical-align:top;text-align:left}&lt;br /&gt;
          th{font-weight:bold;background-color:#eee;}&lt;br /&gt;
          ul{margin:0;padding:0;list-style-type:none;}&lt;br /&gt;
        &amp;lt;/style&amp;gt;&lt;br /&gt;
      &amp;lt;/head&amp;gt;&lt;br /&gt;
      &amp;lt;body&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;Menüü&amp;lt;/h1&amp;gt;&lt;br /&gt;
        &amp;lt;table width=&amp;quot;800&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;200&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;100&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col witdh=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;150&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;tr&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Nimetus&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Lisandid&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Tüüp&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Hind&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Hinne / Hindajaid&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Pilt&amp;lt;/th&amp;gt;&lt;br /&gt;
          &amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
          &amp;lt;xsl:for-each select=&amp;quot;menu/product&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:sort select=&amp;quot;type/id&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:sort select=&amp;quot;name&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;th&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;name&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/th&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;extras/node()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;ul&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:for-each select=&amp;quot;extras/item&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;li&amp;gt;&lt;br /&gt;
                          &amp;lt;xsl:value-of select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;/li&amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
                    &amp;lt;/ul&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;td&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;type/name&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;price/node()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    €&amp;lt;xsl:value-of select=&amp;quot;price/int&amp;quot;/&amp;gt;.&amp;lt;xsl:value-of select=&amp;quot;price/frac&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:if test=&amp;quot;price/discount/text()&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;span class=&amp;quot;discount&amp;quot;&amp;gt;&lt;br /&gt;
                        (-&amp;lt;xsl:value-of select=&amp;quot;price/discount&amp;quot;/&amp;gt;%)&lt;br /&gt;
                      &amp;lt;/span&amp;gt;&lt;br /&gt;
                    &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:variable name=&amp;quot;p&amp;quot; select=&amp;quot;vote/pos&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:variable name=&amp;quot;n&amp;quot; select=&amp;quot;vote/neg&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;td&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$p - $n&amp;quot;/&amp;gt; / &amp;lt;xsl:value-of select=&amp;quot;$p + $n&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;screenshot/text()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;img src=&amp;quot;{screenshot}&amp;quot; alt=&amp;quot;&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;img src=&amp;quot;screenshots/default.png&amp;quot; alt=&amp;quot;No image&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
      &amp;lt;/body&amp;gt;&lt;br /&gt;
    &amp;lt;/html&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
Sisu ja stiilifaili koostöö http://henri.kroosmann.ee/kool/xml/index.xml &amp;lt;!--[http://henri.kroosmann.ee/kool/xml/index.xml]--&amp;gt;&lt;br /&gt;
==VEEBITEENUSED==&lt;br /&gt;
&lt;br /&gt;
===8. aprill===&lt;br /&gt;
Otsustame teha teenused kõikide kohvikute menüüde kohta.&lt;br /&gt;
&lt;br /&gt;
===11.-12. aprill===&lt;br /&gt;
Henri koostab tabelite loogika&lt;br /&gt;
&lt;br /&gt;
===13. aprill===&lt;br /&gt;
Mailis otsustab veebiteenused teha asmx-is [webmethod]-itega&lt;br /&gt;
===14. aprill===&lt;br /&gt;
Mailis hakkab veebiteenuseid tegema&lt;br /&gt;
===17. aprill===&lt;br /&gt;
Veebiteenused on valmis:&lt;br /&gt;
&lt;br /&gt;
*AnnaJoogiliikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaJoogitabelirida_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*AnnaJookideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaK6igiKohvikuteAndmeteNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyyIDed_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyyRida_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyydeNimekiri_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaMenyyLiikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaMenyydeNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaPromillideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToiduliikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToitudeNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToitutabelirida_toiduIDjargi &lt;br /&gt;
&lt;br /&gt;
*AnnaYheKohvikuAndmed_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*KustutaJookMenyyst &lt;br /&gt;
&lt;br /&gt;
*KustutaMenyy &lt;br /&gt;
&lt;br /&gt;
*KustutaKohvik &lt;br /&gt;
&lt;br /&gt;
*KustutaToitMenyyst &lt;br /&gt;
&lt;br /&gt;
*KysiYheKohvikuYheMenyyToitudeIDeed_menyyIDjargi &lt;br /&gt;
&lt;br /&gt;
*LisaJoogiLiik &lt;br /&gt;
&lt;br /&gt;
*LisaMenyyLiik &lt;br /&gt;
&lt;br /&gt;
*LisaPromill &lt;br /&gt;
&lt;br /&gt;
*LisaToiduLiik &lt;br /&gt;
&lt;br /&gt;
*SecurityAuthenticateUser &lt;br /&gt;
&lt;br /&gt;
*TOITJOOKmenyysRida_menyyIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedJoogileMenyys &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedKohvikule &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedToiduleMenyys &lt;br /&gt;
&lt;br /&gt;
*annaJoogiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiKIRJELDUS_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiKOMM_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiID_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiNIMI_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKasOnTaimeT_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKasutajaNIMI_Guidjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuLahtiolekuAjad_kohvikuIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuTeated &lt;br /&gt;
&lt;br /&gt;
*annaLinnaID_LinnaNimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaLinnaNIMI_LinnaIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaLinnad_maakonnaNIMEjargi &lt;br /&gt;
&lt;br /&gt;
*annaMaakonnaID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaMenyyLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaMenyyLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaPromill_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaPromilliID_promilliNrJargi &lt;br /&gt;
&lt;br /&gt;
*annaPromilliNR_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduKIRJELDUS_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduKOMMENTAAR_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiNIMETUS_toiduIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaYheKohvikuMenyyd_kohvikuNIMEjargi &lt;br /&gt;
&lt;br /&gt;
*autendiKasutajaParooliJargi &lt;br /&gt;
&lt;br /&gt;
*k6igiKohvikuteMenyyd &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusJoogiKohta &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusKohvikuKohta &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusToiduKohta &lt;br /&gt;
&lt;br /&gt;
*lisaJookMenyysse &lt;br /&gt;
&lt;br /&gt;
*lisaToitMenyysse &lt;br /&gt;
&lt;br /&gt;
*lisaUusJook &lt;br /&gt;
&lt;br /&gt;
*lisaUusKohvik &lt;br /&gt;
&lt;br /&gt;
*lisaUusLahtiolekuAeg &lt;br /&gt;
&lt;br /&gt;
*lisaUusMenyy &lt;br /&gt;
&lt;br /&gt;
*lisaUusTeadaanne &lt;br /&gt;
&lt;br /&gt;
*lisaUusToit &lt;br /&gt;
&lt;br /&gt;
*nadalapaevaID_paevaNimetuseJargi &lt;br /&gt;
&lt;br /&gt;
*nadalapaevaNIMETUS_paevaIDjargi&lt;br /&gt;
&lt;br /&gt;
*Registreeru&lt;br /&gt;
&lt;br /&gt;
*LogiSisseTavakasutajana&lt;br /&gt;
&lt;br /&gt;
*LogiSisseKohvikuna&lt;br /&gt;
&lt;br /&gt;
===22.aprill===&lt;br /&gt;
Toimus koosolek&lt;br /&gt;
*Henri lubas meetodite turvamise teha.&lt;br /&gt;
*Heiki lubas statistika teha meetodite kohta.&lt;br /&gt;
&lt;br /&gt;
===Allikfail===&lt;br /&gt;
Allikfail: http://www.p2ike.com/CSharp/KohvikudVeebiteenus.rar&lt;br /&gt;
&lt;br /&gt;
Meetod &#039;k6igiKohvikuteMenyyd&#039; kuvab sellise xml struktuuri: http://www.p2ike.com/CSharp/k6igiKohvikuteMenyyd.xml&lt;br /&gt;
&lt;br /&gt;
Toidud ja joogid sorteeritakse liikide kaupa.&lt;br /&gt;
&lt;br /&gt;
===Andmetabelid===&lt;br /&gt;
[[File:andmetabelid.jpg|777px|thumb|left|andmemudel]]&lt;br /&gt;
===Statistika===&lt;br /&gt;
 using System;&lt;br /&gt;
using System.Web.Services;&lt;br /&gt;
using System.Web.Services.Protocols;&lt;br /&gt;
using System.IO;&lt;br /&gt;
using System.Net;&lt;br /&gt;
 &lt;br /&gt;
// Define a SOAP Extension that traces the SOAP request and SOAP&lt;br /&gt;
// response for the XML Web service method the SOAP extension is&lt;br /&gt;
// applied to. &lt;br /&gt;
 &lt;br /&gt;
namespace WebASPKohvikud&lt;br /&gt;
{&lt;br /&gt;
    public class TraceExtension : SoapExtension&lt;br /&gt;
    {&lt;br /&gt;
        Stream oldStream;&lt;br /&gt;
        Stream newStream;&lt;br /&gt;
        string filename;&lt;br /&gt;
 &lt;br /&gt;
        // Save the Stream representing the SOAP request or SOAP response into&lt;br /&gt;
        // a local memory buffer.&lt;br /&gt;
        public override Stream ChainStream(Stream stream)&lt;br /&gt;
        {&lt;br /&gt;
            oldStream = stream;&lt;br /&gt;
            newStream = new MemoryStream();&lt;br /&gt;
            return newStream;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        // When the SOAP extension is accessed for the first time, the XML Web&lt;br /&gt;
        // service method it is applied to is accessed to store the file&lt;br /&gt;
        // name passed in, using the corresponding SoapExtensionAttribute.	&lt;br /&gt;
        public override object GetInitializer(LogicalMethodInfo methodInfo, SoapExtensionAttribute attribute)&lt;br /&gt;
        {&lt;br /&gt;
            return ((TraceExtensionAttribute)attribute).Filename;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        // The SOAP extension was configured to run using a configuration file&lt;br /&gt;
        // instead of an attribute applied to a specific XML Web service&lt;br /&gt;
        // method.&lt;br /&gt;
        public override object GetInitializer(Type WebServiceType)&lt;br /&gt;
        {&lt;br /&gt;
            // Return a file name to log the trace information to, based on the&lt;br /&gt;
            // type.&lt;br /&gt;
            return &amp;quot;C:\\&amp;quot; + WebServiceType.FullName + &amp;quot;.log&amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        // Receive the file name stored by GetInitializer and store it in a&lt;br /&gt;
        // member variable for this specific instance.&lt;br /&gt;
        public override void Initialize(object initializer)&lt;br /&gt;
        {&lt;br /&gt;
            filename = (string)initializer;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        //  If the SoapMessageStage is such that the SoapRequest or&lt;br /&gt;
        //  SoapResponse is still in the SOAP format to be sent or received,&lt;br /&gt;
        //  save it out to a file.&lt;br /&gt;
        public override void ProcessMessage(SoapMessage message)&lt;br /&gt;
        {&lt;br /&gt;
            switch (message.Stage)&lt;br /&gt;
            {&lt;br /&gt;
                case SoapMessageStage.BeforeSerialize:&lt;br /&gt;
                    break;&lt;br /&gt;
                case SoapMessageStage.AfterSerialize:&lt;br /&gt;
                    WriteOutput(message);&lt;br /&gt;
                    break;&lt;br /&gt;
                case SoapMessageStage.BeforeDeserialize:&lt;br /&gt;
                    WriteInput(message);&lt;br /&gt;
                    break;&lt;br /&gt;
                case SoapMessageStage.AfterDeserialize:&lt;br /&gt;
                    break;&lt;br /&gt;
                default:&lt;br /&gt;
                    throw new Exception(&amp;quot;invalid stage&amp;quot;);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        public void WriteOutput(SoapMessage message)&lt;br /&gt;
        {&lt;br /&gt;
            newStream.Position = 0;&lt;br /&gt;
            FileStream fs = new FileStream(filename, FileMode.Append,&lt;br /&gt;
                FileAccess.Write);&lt;br /&gt;
            StreamWriter w = new StreamWriter(fs);&lt;br /&gt;
 &lt;br /&gt;
            string soapString = (message is SoapServerMessage) ? &amp;quot;SoapResponse&amp;quot; : &amp;quot;SoapRequest&amp;quot;;&lt;br /&gt;
            w.WriteLine(&amp;quot;-----&amp;quot; + soapString + &amp;quot; at &amp;quot; + DateTime.Now);&lt;br /&gt;
            w.Flush();&lt;br /&gt;
            Copy(newStream, fs);&lt;br /&gt;
            w.Close();&lt;br /&gt;
            newStream.Position = 0;&lt;br /&gt;
            Copy(newStream, oldStream);&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        public void WriteInput(SoapMessage message)&lt;br /&gt;
        {&lt;br /&gt;
            Copy(oldStream, newStream);&lt;br /&gt;
            FileStream fs = new FileStream(filename, FileMode.Append,&lt;br /&gt;
                FileAccess.Write);&lt;br /&gt;
            StreamWriter w = new StreamWriter(fs);&lt;br /&gt;
 &lt;br /&gt;
            string soapString = (message is SoapServerMessage) ?&lt;br /&gt;
                &amp;quot;SoapRequest&amp;quot; : &amp;quot;SoapResponse&amp;quot;;&lt;br /&gt;
            w.WriteLine(&amp;quot;-----&amp;quot; + soapString +&lt;br /&gt;
                &amp;quot; at &amp;quot; + DateTime.Now);&lt;br /&gt;
            w.Flush();&lt;br /&gt;
            newStream.Position = 0;&lt;br /&gt;
            Copy(newStream, fs);&lt;br /&gt;
            w.Close();&lt;br /&gt;
            newStream.Position = 0;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        void Copy(Stream from, Stream to)&lt;br /&gt;
        {&lt;br /&gt;
            TextReader reader = new StreamReader(from);&lt;br /&gt;
            TextWriter writer = new StreamWriter(to);&lt;br /&gt;
            writer.WriteLine(reader.ReadToEnd());&lt;br /&gt;
            writer.Flush();&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    // Create a SoapExtensionAttribute for the SOAP Extension that can be&lt;br /&gt;
    // applied to an XML Web service method.&lt;br /&gt;
    [AttributeUsage(AttributeTargets.Method)]&lt;br /&gt;
    public class TraceExtensionAttribute : SoapExtensionAttribute&lt;br /&gt;
    {&lt;br /&gt;
 &lt;br /&gt;
        private string filename = @&amp;quot;C:\Users\Heiki Tamm\Documents\Õppematerjalid_2011\WebASPKohvikud\WebASPKohvikud\SoapLog.txt&amp;quot;;&lt;br /&gt;
        private int priority;&lt;br /&gt;
 &lt;br /&gt;
        public override Type ExtensionType&lt;br /&gt;
        {&lt;br /&gt;
            get { return typeof(TraceExtension); }&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        public override int Priority&lt;br /&gt;
        {&lt;br /&gt;
            get { return priority; }&lt;br /&gt;
            set { priority = value; }&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        public string Filename&lt;br /&gt;
        {&lt;br /&gt;
            get&lt;br /&gt;
            {&lt;br /&gt;
                return filename;&lt;br /&gt;
            }&lt;br /&gt;
            set&lt;br /&gt;
            {&lt;br /&gt;
                filename = value;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
// todo: &lt;br /&gt;
// from each soap header record query content &lt;br /&gt;
// (containing client, date, time, query ) into a DB&lt;br /&gt;
// for later reference for conducting any kind of &lt;br /&gt;
// applicable statistics and then generate stats :D !&lt;br /&gt;
// Proovin selliselt, et on lihtne statistika tabel:&lt;br /&gt;
// 1) meetod // välja kutsutava meetodi nimi&lt;br /&gt;
// 2) kuupäev // timestamp&lt;br /&gt;
// 3) callide arv // meetodi väljakutsimiste hulk&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==KLIENTRAKENDUS==&lt;br /&gt;
&lt;br /&gt;
===23. mai===&lt;br /&gt;
Mailis tegi kohvikute kuvamise ASP.NET rakenduse.&lt;br /&gt;
Kohvikud kuvatakse TreeView&#039;s &lt;br /&gt;
menüüde ja andmetega ning arvamustega kohvikute ja toitude ja jookide kohta.&lt;br /&gt;
&lt;br /&gt;
Samal lehel on kohvikuhuvilistele registreerimisvõimalus&lt;br /&gt;
ja sisselogimine.&lt;br /&gt;
&lt;br /&gt;
Kui on sisselogitud, saab lisada arvamusi.&lt;br /&gt;
Arvamuste lisamine on Ajax Extended Toolkiti controli&#039;ga &#039;Allways Visible ...&#039; tehtud, &lt;br /&gt;
&lt;br /&gt;
nii et mööda pikka TreeViewd alla kerides saab &lt;br /&gt;
lisada arvamust ilma ülesserva tagasi minemata.&lt;br /&gt;
&lt;br /&gt;
Arvamused ilmuvad kohe peale lisamist TreeView&#039;sse.&lt;br /&gt;
&lt;br /&gt;
TreeView&#039;sse tulevad andmed xml-failist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pooleli on veel kohvikute-poolne rakendus, kus omanik saab lisada ja kustutada kohvikuid, menüüsid ja toite-jooke, lisada teadaandeid.&lt;br /&gt;
&lt;br /&gt;
Pooleli on veel admini-rakendus, kus admin saab kasutajale määrata rolli, mis annab õigused kohviku-rakendusse sisse logida.&lt;br /&gt;
===4. juuni===&lt;br /&gt;
Valmis sai Kohvikute omanikele mõeldud klientrakendus.&lt;br /&gt;
Tehtud ASP.NET&#039;i veebirakendusena.&lt;br /&gt;
Seal on sisselogimine, registreerumine ja adminile kirja saatmine kohvikuomaniku õiguste saamiseks.&lt;br /&gt;
Peale sisselogimist saab &lt;br /&gt;
*lisada ja kustutada kohvikut&lt;br /&gt;
*lisada kohvikule lahtiolekuaegu nädalapäevade kaupa ja neid kustutada&lt;br /&gt;
*lisada kohvikule teadaandeid ja neid kustutada&lt;br /&gt;
*lisada kohvikule menüüsid ja neid kustutada: menüül on nimetus, liik, nädalapäev,  lisamiskuupäev, pildi veebiaadress jne. &lt;br /&gt;
*lisada menüüsse toite ja neid kustutada. Toitudel on nimetus, liik, hind, kas-sobib-taimetoitlasele, kogus grammides, suurus, lisamise kuupäev, pildi veebiaadress. Eraldi listides on kõikide kohvikute lisatud toidud ja selle kohviku lisatud toidud. Toitu valides rippmenüüst ilmuvad selle toidu andmed, et näha täpsemalt, mis toiduga on tegu. Ka on näha parajasti toitu lisatavasse menüüsse varem lisatud toidud.&lt;br /&gt;
*jookidele on sama, va. taimetoidu asemel on alkohoolse joogi korral promillide suurus.&lt;br /&gt;
&lt;br /&gt;
Lisada saab textbokside kaudu, nimekirjadest valimine on tehtud dropdown-listidena.&lt;br /&gt;
Kuvamised on tehtud GridViewdena, mis saavad andmeid meetoditest, mitte otse andmebaasitabelist.&lt;br /&gt;
&lt;br /&gt;
===5. juuni===&lt;br /&gt;
Valmis sai Kohvikute administraatori  ASP.NET-veebirakendus.&lt;br /&gt;
Admin saab registreeruda ja sisse logida.&lt;br /&gt;
Kui admin on sisse loginud, saab ta vaadata statistikat. Statistika-tabeleid on eraldi selle kohta, kui palju on mingit meetodit kasutatud ja selle kohta,kes millal mingit meetodit kasutas.&lt;br /&gt;
Sisseloginuna saab vaadata saabunud taotlusi ja nende järgi kasutajatele rolle määrata.&lt;br /&gt;
&lt;br /&gt;
Tabelid saavad andmeid otse andmebaasist, GridView&#039;dena, neid saab sorteerida tulpade&lt;br /&gt;
pealkirjadel klikkides.&lt;br /&gt;
&lt;br /&gt;
===ALLIKFAILID===&lt;br /&gt;
http://www.p2ike.com/CSharp/Kohvik.rar&lt;br /&gt;
&lt;br /&gt;
http://www.p2ike.com/CSharp/KohvikuKliendid.rar&lt;br /&gt;
&lt;br /&gt;
http://www.p2ike.com/CSharp/KohvikuAdministraator.rar&lt;br /&gt;
&lt;br /&gt;
==KOKKUVÕTE==&lt;br /&gt;
Oli soov teha ideaalset teenust ja rakendusi, millega on mugav lisada ja näha kohvikute menüüsid.&lt;br /&gt;
Veebiteenuseid sai veel pidevalt täiendatud rakenduste tegemise käigus, neid tuli kokku 100 ringis.&lt;br /&gt;
&lt;br /&gt;
Kõik kolm rakendust sai tehtud ASP.NET&#039;i veebirakendustena, et midagi juurde õppida.&lt;br /&gt;
Ka on veeb kõigile kättesaadav, ei pea eraldi programmi hakkama alla laadima.&lt;br /&gt;
&lt;br /&gt;
Asp.NET&#039;i tundmaõppimine oli arvatust aeganõudvam ja kõik ei saanud ideaalne: kohvikutel on laius-ja pikkuskraadid, edaspidi võiks kohvikülastajale mõeldud rakenduses kaardil näha olla, kus mõni kohvik asub. Ka ei osutunud treeview kõigi kohvikute andmete korraga kuvamisel, eriti kui on palju kohvikuid, kõige paremaks valikuks.&lt;br /&gt;
&lt;br /&gt;
Kõige paremini õnnestus kohvikute omanikele mõeldud rakendus.&lt;br /&gt;
&lt;br /&gt;
===probleemid===&lt;br /&gt;
*piltide programne lisamine gridview eri ridadele&lt;br /&gt;
*rakendused peaksid kasutama samas kohas asuvat andmebaasi&lt;br /&gt;
*kohvikülastaja vaates võiks olla kaardilt piirkonna järgi kohviku valimine&lt;br /&gt;
*kujundus jäi vähese aja tõttu tegemata&lt;br /&gt;
&lt;br /&gt;
==PUNKTID== &lt;br /&gt;
*Henri: 10 -  xml-osa ja veebiteenuste tabelite loogika.&lt;br /&gt;
*Heiki: 3 - wiki sissejuhatus.&lt;br /&gt;
*Mailis: 47 - veebiteenuste programmeerimine ja klientrakendused.&lt;/div&gt;</summary>
		<author><name>Mtoompuu</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Meeskond_%22H2%22&amp;diff=33911</id>
		<title>Meeskond &quot;H2&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Meeskond_%22H2%22&amp;diff=33911"/>
		<updated>2011-06-06T10:49:41Z</updated>

		<summary type="html">&lt;p&gt;Mtoompuu: /* KOKKUVÕTE */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Kohviku menüüsüsteem==&lt;br /&gt;
===Projekt===&lt;br /&gt;
Kohvikute (esialgu ainult IT-Kohviku) menüüsüsteem, mis on jälgitav mobiilseadmetelt. Lisaväärtusena võimaldab anda pakutavale hinnanguid, otsuse langetamise hõlbustamiseks kommentaar:(see viimane funktsioon kipub vist &amp;quot;veebirakenduseks&amp;quot; muutuma)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Sihtplatvormid:&lt;br /&gt;
Windows Mobile, iOS, Android(kui leiame vabatahtlikud testijad)&lt;br /&gt;
&lt;br /&gt;
===Taustinfo===&lt;br /&gt;
Praegune IT-Kohviku menüü on käsitsi täidetav valge tahvel. Projekti eesmärgiks on parendada IT-Kohviku menüüsüsteemi ja teha see veebi kaudu kättesaadavaks, nii, et menüüsse saab lisada ka karniiri valiku. Standardmenüü puhul saab menüüs olla ka illustreeriv foto. Hetkemenüü ning hinnad ja lahtioleku ajad on samuti jälgitavad võrguühendust eviva mobiilseadme ekraanilt, hõlbustades sellega valikute tegemist.&lt;br /&gt;
&lt;br /&gt;
===Liikmed===&lt;br /&gt;
* Mailis Toompuu&lt;br /&gt;
* Henri Kroosmann&lt;br /&gt;
* Heiki Tamm&lt;br /&gt;
&lt;br /&gt;
==Sisu==&lt;br /&gt;
&lt;br /&gt;
===XML Data===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;menu&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name1&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;0&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name1&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item1&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item2&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item3&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;0&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;0&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount1&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;0&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;0&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot1&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name2&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;255&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name2&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item4&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item5&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item6&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;255&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;255&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount2&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;255&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;255&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot2&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name3&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;1&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name3&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item7&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item8&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item9&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;1&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;1&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount3&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;1&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;1&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot3&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
&amp;lt;/menu&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===XML Schema===&lt;br /&gt;
&lt;br /&gt;
Ülevaade Schema&#039;st. &amp;lt;br /&amp;gt;&lt;br /&gt;
[[File:XMLSchema_Capture_(optimized).png]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Ning sellele vastav kood.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xs:schema attributeFormDefault=&amp;quot;unqualified&amp;quot; elementFormDefault=&amp;quot;qualified&amp;quot; xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xs:element name=&amp;quot;menu&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;product&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;type&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;id&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;extras&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence minOccurs=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;item&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;price&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence minOccurs=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;int&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;frac&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element minOccurs=&amp;quot;0&amp;quot; name=&amp;quot;discount&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;vote&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;pos&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;neg&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;screenshot&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===XML Style===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;html&amp;gt;&lt;br /&gt;
      &amp;lt;head&amp;gt;&lt;br /&gt;
        &amp;lt;style type=&amp;quot;text/css&amp;quot;&amp;gt;&lt;br /&gt;
          html,body{margin:0;padding:0;font-family:Helvetica,Arial,sans-serif;font-size:14px;line-height:19px;color:#2c2c2c;}&lt;br /&gt;
          h1{margin:0;padding:25px 0 0;font-size:22px;line-height:25px;text-align:center;}&lt;br /&gt;
          h2{margin:0;padding:5px;font-size:16px;line-height:21px}&lt;br /&gt;
          span.discount{padding:0 0 0 5px;color:red;}&lt;br /&gt;
          table{margin:20px auto;padding:0;}&lt;br /&gt;
          th,td{padding:5px;border:1px solid #2c2c2c;vertical-align:top;text-align:left}&lt;br /&gt;
          th{font-weight:bold;background-color:#eee;}&lt;br /&gt;
          ul{margin:0;padding:0;list-style-type:none;}&lt;br /&gt;
        &amp;lt;/style&amp;gt;&lt;br /&gt;
      &amp;lt;/head&amp;gt;&lt;br /&gt;
      &amp;lt;body&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;Menüü&amp;lt;/h1&amp;gt;&lt;br /&gt;
        &amp;lt;table width=&amp;quot;800&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;200&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;100&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col witdh=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;150&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;tr&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Nimetus&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Lisandid&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Tüüp&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Hind&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Hinne / Hindajaid&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Pilt&amp;lt;/th&amp;gt;&lt;br /&gt;
          &amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
          &amp;lt;xsl:for-each select=&amp;quot;menu/product&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:sort select=&amp;quot;type/id&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:sort select=&amp;quot;name&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;th&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;name&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/th&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;extras/node()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;ul&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:for-each select=&amp;quot;extras/item&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;li&amp;gt;&lt;br /&gt;
                          &amp;lt;xsl:value-of select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;/li&amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
                    &amp;lt;/ul&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;td&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;type/name&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;price/node()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    €&amp;lt;xsl:value-of select=&amp;quot;price/int&amp;quot;/&amp;gt;.&amp;lt;xsl:value-of select=&amp;quot;price/frac&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:if test=&amp;quot;price/discount/text()&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;span class=&amp;quot;discount&amp;quot;&amp;gt;&lt;br /&gt;
                        (-&amp;lt;xsl:value-of select=&amp;quot;price/discount&amp;quot;/&amp;gt;%)&lt;br /&gt;
                      &amp;lt;/span&amp;gt;&lt;br /&gt;
                    &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:variable name=&amp;quot;p&amp;quot; select=&amp;quot;vote/pos&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:variable name=&amp;quot;n&amp;quot; select=&amp;quot;vote/neg&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;td&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$p - $n&amp;quot;/&amp;gt; / &amp;lt;xsl:value-of select=&amp;quot;$p + $n&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;screenshot/text()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;img src=&amp;quot;{screenshot}&amp;quot; alt=&amp;quot;&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;img src=&amp;quot;screenshots/default.png&amp;quot; alt=&amp;quot;No image&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
      &amp;lt;/body&amp;gt;&lt;br /&gt;
    &amp;lt;/html&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
Sisu ja stiilifaili koostöö http://henri.kroosmann.ee/kool/xml/index.xml &amp;lt;!--[http://henri.kroosmann.ee/kool/xml/index.xml]--&amp;gt;&lt;br /&gt;
==VEEBITEENUSED==&lt;br /&gt;
&lt;br /&gt;
===8. aprill===&lt;br /&gt;
Otsustame teha teenused kõikide kohvikute menüüde kohta.&lt;br /&gt;
&lt;br /&gt;
===11.-12. aprill===&lt;br /&gt;
Henri koostab tabelite loogika&lt;br /&gt;
&lt;br /&gt;
===13. aprill===&lt;br /&gt;
Mailis otsustab veebiteenused teha asmx-is [webmethod]-itega&lt;br /&gt;
===14. aprill===&lt;br /&gt;
Mailis hakkab veebiteenuseid tegema&lt;br /&gt;
===17. aprill===&lt;br /&gt;
Veebiteenused on valmis:&lt;br /&gt;
&lt;br /&gt;
*AnnaJoogiliikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaJoogitabelirida_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*AnnaJookideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaK6igiKohvikuteAndmeteNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyyIDed_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyyRida_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyydeNimekiri_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaMenyyLiikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaMenyydeNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaPromillideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToiduliikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToitudeNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToitutabelirida_toiduIDjargi &lt;br /&gt;
&lt;br /&gt;
*AnnaYheKohvikuAndmed_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*KustutaJookMenyyst &lt;br /&gt;
&lt;br /&gt;
*KustutaMenyy &lt;br /&gt;
&lt;br /&gt;
*KustutaKohvik &lt;br /&gt;
&lt;br /&gt;
*KustutaToitMenyyst &lt;br /&gt;
&lt;br /&gt;
*KysiYheKohvikuYheMenyyToitudeIDeed_menyyIDjargi &lt;br /&gt;
&lt;br /&gt;
*LisaJoogiLiik &lt;br /&gt;
&lt;br /&gt;
*LisaMenyyLiik &lt;br /&gt;
&lt;br /&gt;
*LisaPromill &lt;br /&gt;
&lt;br /&gt;
*LisaToiduLiik &lt;br /&gt;
&lt;br /&gt;
*SecurityAuthenticateUser &lt;br /&gt;
&lt;br /&gt;
*TOITJOOKmenyysRida_menyyIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedJoogileMenyys &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedKohvikule &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedToiduleMenyys &lt;br /&gt;
&lt;br /&gt;
*annaJoogiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiKIRJELDUS_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiKOMM_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiID_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiNIMI_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKasOnTaimeT_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKasutajaNIMI_Guidjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuLahtiolekuAjad_kohvikuIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuTeated &lt;br /&gt;
&lt;br /&gt;
*annaLinnaID_LinnaNimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaLinnaNIMI_LinnaIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaLinnad_maakonnaNIMEjargi &lt;br /&gt;
&lt;br /&gt;
*annaMaakonnaID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaMenyyLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaMenyyLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaPromill_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaPromilliID_promilliNrJargi &lt;br /&gt;
&lt;br /&gt;
*annaPromilliNR_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduKIRJELDUS_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduKOMMENTAAR_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiNIMETUS_toiduIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaYheKohvikuMenyyd_kohvikuNIMEjargi &lt;br /&gt;
&lt;br /&gt;
*autendiKasutajaParooliJargi &lt;br /&gt;
&lt;br /&gt;
*k6igiKohvikuteMenyyd &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusJoogiKohta &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusKohvikuKohta &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusToiduKohta &lt;br /&gt;
&lt;br /&gt;
*lisaJookMenyysse &lt;br /&gt;
&lt;br /&gt;
*lisaToitMenyysse &lt;br /&gt;
&lt;br /&gt;
*lisaUusJook &lt;br /&gt;
&lt;br /&gt;
*lisaUusKohvik &lt;br /&gt;
&lt;br /&gt;
*lisaUusLahtiolekuAeg &lt;br /&gt;
&lt;br /&gt;
*lisaUusMenyy &lt;br /&gt;
&lt;br /&gt;
*lisaUusTeadaanne &lt;br /&gt;
&lt;br /&gt;
*lisaUusToit &lt;br /&gt;
&lt;br /&gt;
*nadalapaevaID_paevaNimetuseJargi &lt;br /&gt;
&lt;br /&gt;
*nadalapaevaNIMETUS_paevaIDjargi&lt;br /&gt;
&lt;br /&gt;
*Registreeru&lt;br /&gt;
&lt;br /&gt;
*LogiSisseTavakasutajana&lt;br /&gt;
&lt;br /&gt;
*LogiSisseKohvikuna&lt;br /&gt;
&lt;br /&gt;
===22.aprill===&lt;br /&gt;
Toimus koosolek&lt;br /&gt;
*Henri lubas meetodite turvamise teha.&lt;br /&gt;
*Heiki lubas statistika teha meetodite kohta.&lt;br /&gt;
&lt;br /&gt;
===Allikfail===&lt;br /&gt;
Allikfail: http://www.p2ike.com/CSharp/KohvikudVeebiteenus.rar&lt;br /&gt;
&lt;br /&gt;
Meetod &#039;k6igiKohvikuteMenyyd&#039; kuvab sellise xml struktuuri: http://www.p2ike.com/CSharp/k6igiKohvikuteMenyyd.xml&lt;br /&gt;
&lt;br /&gt;
Toidud ja joogid sorteeritakse liikide kaupa.&lt;br /&gt;
&lt;br /&gt;
===Andmetabelid===&lt;br /&gt;
[[File:andmetabelid.jpg|777px|thumb|left|andmemudel]]&lt;br /&gt;
===Statistika===&lt;br /&gt;
 using System;&lt;br /&gt;
using System.Web.Services;&lt;br /&gt;
using System.Web.Services.Protocols;&lt;br /&gt;
using System.IO;&lt;br /&gt;
using System.Net;&lt;br /&gt;
 &lt;br /&gt;
// Define a SOAP Extension that traces the SOAP request and SOAP&lt;br /&gt;
// response for the XML Web service method the SOAP extension is&lt;br /&gt;
// applied to. &lt;br /&gt;
 &lt;br /&gt;
namespace WebASPKohvikud&lt;br /&gt;
{&lt;br /&gt;
    public class TraceExtension : SoapExtension&lt;br /&gt;
    {&lt;br /&gt;
        Stream oldStream;&lt;br /&gt;
        Stream newStream;&lt;br /&gt;
        string filename;&lt;br /&gt;
 &lt;br /&gt;
        // Save the Stream representing the SOAP request or SOAP response into&lt;br /&gt;
        // a local memory buffer.&lt;br /&gt;
        public override Stream ChainStream(Stream stream)&lt;br /&gt;
        {&lt;br /&gt;
            oldStream = stream;&lt;br /&gt;
            newStream = new MemoryStream();&lt;br /&gt;
            return newStream;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        // When the SOAP extension is accessed for the first time, the XML Web&lt;br /&gt;
        // service method it is applied to is accessed to store the file&lt;br /&gt;
        // name passed in, using the corresponding SoapExtensionAttribute.	&lt;br /&gt;
        public override object GetInitializer(LogicalMethodInfo methodInfo, SoapExtensionAttribute attribute)&lt;br /&gt;
        {&lt;br /&gt;
            return ((TraceExtensionAttribute)attribute).Filename;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        // The SOAP extension was configured to run using a configuration file&lt;br /&gt;
        // instead of an attribute applied to a specific XML Web service&lt;br /&gt;
        // method.&lt;br /&gt;
        public override object GetInitializer(Type WebServiceType)&lt;br /&gt;
        {&lt;br /&gt;
            // Return a file name to log the trace information to, based on the&lt;br /&gt;
            // type.&lt;br /&gt;
            return &amp;quot;C:\\&amp;quot; + WebServiceType.FullName + &amp;quot;.log&amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        // Receive the file name stored by GetInitializer and store it in a&lt;br /&gt;
        // member variable for this specific instance.&lt;br /&gt;
        public override void Initialize(object initializer)&lt;br /&gt;
        {&lt;br /&gt;
            filename = (string)initializer;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        //  If the SoapMessageStage is such that the SoapRequest or&lt;br /&gt;
        //  SoapResponse is still in the SOAP format to be sent or received,&lt;br /&gt;
        //  save it out to a file.&lt;br /&gt;
        public override void ProcessMessage(SoapMessage message)&lt;br /&gt;
        {&lt;br /&gt;
            switch (message.Stage)&lt;br /&gt;
            {&lt;br /&gt;
                case SoapMessageStage.BeforeSerialize:&lt;br /&gt;
                    break;&lt;br /&gt;
                case SoapMessageStage.AfterSerialize:&lt;br /&gt;
                    WriteOutput(message);&lt;br /&gt;
                    break;&lt;br /&gt;
                case SoapMessageStage.BeforeDeserialize:&lt;br /&gt;
                    WriteInput(message);&lt;br /&gt;
                    break;&lt;br /&gt;
                case SoapMessageStage.AfterDeserialize:&lt;br /&gt;
                    break;&lt;br /&gt;
                default:&lt;br /&gt;
                    throw new Exception(&amp;quot;invalid stage&amp;quot;);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        public void WriteOutput(SoapMessage message)&lt;br /&gt;
        {&lt;br /&gt;
            newStream.Position = 0;&lt;br /&gt;
            FileStream fs = new FileStream(filename, FileMode.Append,&lt;br /&gt;
                FileAccess.Write);&lt;br /&gt;
            StreamWriter w = new StreamWriter(fs);&lt;br /&gt;
 &lt;br /&gt;
            string soapString = (message is SoapServerMessage) ? &amp;quot;SoapResponse&amp;quot; : &amp;quot;SoapRequest&amp;quot;;&lt;br /&gt;
            w.WriteLine(&amp;quot;-----&amp;quot; + soapString + &amp;quot; at &amp;quot; + DateTime.Now);&lt;br /&gt;
            w.Flush();&lt;br /&gt;
            Copy(newStream, fs);&lt;br /&gt;
            w.Close();&lt;br /&gt;
            newStream.Position = 0;&lt;br /&gt;
            Copy(newStream, oldStream);&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        public void WriteInput(SoapMessage message)&lt;br /&gt;
        {&lt;br /&gt;
            Copy(oldStream, newStream);&lt;br /&gt;
            FileStream fs = new FileStream(filename, FileMode.Append,&lt;br /&gt;
                FileAccess.Write);&lt;br /&gt;
            StreamWriter w = new StreamWriter(fs);&lt;br /&gt;
 &lt;br /&gt;
            string soapString = (message is SoapServerMessage) ?&lt;br /&gt;
                &amp;quot;SoapRequest&amp;quot; : &amp;quot;SoapResponse&amp;quot;;&lt;br /&gt;
            w.WriteLine(&amp;quot;-----&amp;quot; + soapString +&lt;br /&gt;
                &amp;quot; at &amp;quot; + DateTime.Now);&lt;br /&gt;
            w.Flush();&lt;br /&gt;
            newStream.Position = 0;&lt;br /&gt;
            Copy(newStream, fs);&lt;br /&gt;
            w.Close();&lt;br /&gt;
            newStream.Position = 0;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        void Copy(Stream from, Stream to)&lt;br /&gt;
        {&lt;br /&gt;
            TextReader reader = new StreamReader(from);&lt;br /&gt;
            TextWriter writer = new StreamWriter(to);&lt;br /&gt;
            writer.WriteLine(reader.ReadToEnd());&lt;br /&gt;
            writer.Flush();&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    // Create a SoapExtensionAttribute for the SOAP Extension that can be&lt;br /&gt;
    // applied to an XML Web service method.&lt;br /&gt;
    [AttributeUsage(AttributeTargets.Method)]&lt;br /&gt;
    public class TraceExtensionAttribute : SoapExtensionAttribute&lt;br /&gt;
    {&lt;br /&gt;
 &lt;br /&gt;
        private string filename = @&amp;quot;C:\Users\Heiki Tamm\Documents\Õppematerjalid_2011\WebASPKohvikud\WebASPKohvikud\SoapLog.txt&amp;quot;;&lt;br /&gt;
        private int priority;&lt;br /&gt;
 &lt;br /&gt;
        public override Type ExtensionType&lt;br /&gt;
        {&lt;br /&gt;
            get { return typeof(TraceExtension); }&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        public override int Priority&lt;br /&gt;
        {&lt;br /&gt;
            get { return priority; }&lt;br /&gt;
            set { priority = value; }&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        public string Filename&lt;br /&gt;
        {&lt;br /&gt;
            get&lt;br /&gt;
            {&lt;br /&gt;
                return filename;&lt;br /&gt;
            }&lt;br /&gt;
            set&lt;br /&gt;
            {&lt;br /&gt;
                filename = value;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
// todo: &lt;br /&gt;
// from each soap header record query content &lt;br /&gt;
// (containing client, date, time, query ) into a DB&lt;br /&gt;
// for later reference for conducting any kind of &lt;br /&gt;
// applicable statistics and then generate stats :D !&lt;br /&gt;
// Proovin selliselt, et on lihtne statistika tabel:&lt;br /&gt;
// 1) meetod // välja kutsutava meetodi nimi&lt;br /&gt;
// 2) kuupäev // timestamp&lt;br /&gt;
// 3) callide arv // meetodi väljakutsimiste hulk&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==KLIENTRAKENDUS==&lt;br /&gt;
&lt;br /&gt;
===23. mai===&lt;br /&gt;
Mailis tegi kohvikute kuvamise ASP.NET rakenduse.&lt;br /&gt;
Kohvikud kuvatakse TreeView&#039;s &lt;br /&gt;
menüüde ja andmetega ning arvamustega kohvikute ja toitude ja jookide kohta.&lt;br /&gt;
&lt;br /&gt;
Samal lehel on kohvikuhuvilistele registreerimisvõimalus&lt;br /&gt;
ja sisselogimine.&lt;br /&gt;
&lt;br /&gt;
Kui on sisselogitud, saab lisada arvamusi.&lt;br /&gt;
Arvamuste lisamine on Ajax Extended Toolkiti controli&#039;ga &#039;Allways Visible ...&#039; tehtud, &lt;br /&gt;
&lt;br /&gt;
nii et mööda pikka TreeViewd alla kerides saab &lt;br /&gt;
lisada arvamust ilma ülesserva tagasi minemata.&lt;br /&gt;
&lt;br /&gt;
Arvamused ilmuvad kohe peale lisamist TreeView&#039;sse.&lt;br /&gt;
&lt;br /&gt;
TreeView&#039;sse tulevad andmed xml-failist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pooleli on veel kohvikute-poolne rakendus, kus omanik saab lisada ja kustutada kohvikuid, menüüsid ja toite-jooke, lisada teadaandeid.&lt;br /&gt;
&lt;br /&gt;
Pooleli on veel admini-rakendus, kus admin saab kasutajale määrata rolli, mis annab õigused kohviku-rakendusse sisse logida.&lt;br /&gt;
===4. juuni===&lt;br /&gt;
Valmis sai Kohvikute omanikele mõeldud klientrakendus.&lt;br /&gt;
Tehtud ASP.NET&#039;i veebirakendusena.&lt;br /&gt;
Seal on sisselogimine, registreerumine ja adminile kirja saatmine kohvikuomaniku õiguste saamiseks.&lt;br /&gt;
Peale sisselogimist saab &lt;br /&gt;
*lisada ja kustutada kohvikut&lt;br /&gt;
*lisada kohvikule lahtiolekuaegu nädalapäevade kaupa ja neid kustutada&lt;br /&gt;
*lisada kohvikule teadaandeid ja neid kustutada&lt;br /&gt;
*lisada kohvikule menüüsid ja neid kustutada: menüül on nimetus, liik, nädalapäev,  lisamiskuupäev, pildi veebiaadress jne. &lt;br /&gt;
*lisada menüüsse toite ja neid kustutada. Toitudel on nimetus, liik, hind, kas-sobib-taimetoitlasele, kogus grammides, suurus, lisamise kuupäev, pildi veebiaadress. Eraldi listides on kõikide kohvikute lisatud toidud ja selle kohviku lisatud toidud. Toitu valides rippmenüüst ilmuvad selle toidu andmed, et näha täpsemalt, mis toiduga on tegu. Ka on näha parajasti toitu lisatavasse menüüsse varem lisatud toidud.&lt;br /&gt;
*jookidele on sama, va. taimetoidu asemel on alkohoolse joogi korral promillide suurus.&lt;br /&gt;
&lt;br /&gt;
Lisada saab textbokside kaudu, nimekirjadest valimine on tehtud dropdown-listidena.&lt;br /&gt;
Kuvamised on tehtud GridViewdena, mis saavad andmeid meetoditest, mitte otse andmebaasitabelist.&lt;br /&gt;
&lt;br /&gt;
===5. juuni===&lt;br /&gt;
Valmis sai Kohvikute administraatori  ASP.NET-veebirakendus.&lt;br /&gt;
Admin saab registreeruda ja sisse logida.&lt;br /&gt;
Kui admin on sisse loginud, saab ta vaadata statistikat. Statistika-tabeleid on eraldi selle kohta, kui palju on mingit meetodit kasutatud ja selle kohta,kes millal mingit meetodit kasutas.&lt;br /&gt;
Sisseloginuna saab vaadata saabunud taotlusi ja nende järgi kasutajatele rolle määrata.&lt;br /&gt;
&lt;br /&gt;
Tabelid saavad andmeid otse andmebaasist, GridView&#039;dena, neid saab sorteerida tulpade&lt;br /&gt;
pealkirjadel klikkides.&lt;br /&gt;
&lt;br /&gt;
===ALLIKFAILID===&lt;br /&gt;
http://www.p2ike.com/CSharp/Kohvik.rar&lt;br /&gt;
&lt;br /&gt;
http://www.p2ike.com/CSharp/KohvikuKliendid.rar&lt;br /&gt;
&lt;br /&gt;
http://www.p2ike.com/CSharp/KohvikuAdministraator.rar&lt;br /&gt;
&lt;br /&gt;
==KOKKUVÕTE==&lt;br /&gt;
Oli soov teha ideaalset teenust ja rakendusi, millega on mugav lisada ja näha kohvikute menüüsid.&lt;br /&gt;
Veebiteenuseid sai veel pidevalt täiendatud rakenduste tegemise käigus, neid tuli kokku 100 ringis.&lt;br /&gt;
&lt;br /&gt;
Kõik kolm rakendust sai tehtud ASP.NET&#039;i veebirakendustena, et midagi juurde õppida.&lt;br /&gt;
Ka on veeb kõigile kättesaadav, ei pea eraldi programmi hakkama alla laadima.&lt;br /&gt;
&lt;br /&gt;
Asp.NET&#039;i tundmaõppimine oli arvatust aeganõudvam ja kõik ei saanud ideaalne: kohvikutel on laius-ja pikkuskraadid, edaspidi võiks kohvikülastajale mõeldud rakenduses kaardil näha olla, kus mõni kohvik asub. Ka ei osutunud treeview kõigi kohvikute andmete korraga kuvamisel, eriti kui on palju kohvikuid, kõige paremaks valikuks.&lt;br /&gt;
&lt;br /&gt;
Kõige paremini õnnestus kohvikute omanikele mõeldud rakendus.&lt;br /&gt;
&lt;br /&gt;
===probleemid===&lt;br /&gt;
&lt;br /&gt;
==PUNKTID== &lt;br /&gt;
*Henri: 10 -  xml-osa ja veebiteenuste tabelite loogika.&lt;br /&gt;
*Heiki: 3 - wiki sissejuhatus.&lt;br /&gt;
*Mailis: 47 - veebiteenuste programmeerimine ja klientrakendused.&lt;/div&gt;</summary>
		<author><name>Mtoompuu</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Meeskond_%22H2%22&amp;diff=33796</id>
		<title>Meeskond &quot;H2&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Meeskond_%22H2%22&amp;diff=33796"/>
		<updated>2011-06-05T23:18:10Z</updated>

		<summary type="html">&lt;p&gt;Mtoompuu: /* 4. juuni */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Kohviku menüüsüsteem==&lt;br /&gt;
===Projekt===&lt;br /&gt;
Kohvikute (esialgu ainult IT-Kohviku) menüüsüsteem, mis on jälgitav mobiilseadmetelt. Lisaväärtusena võimaldab anda pakutavale hinnanguid, otsuse langetamise hõlbustamiseks kommentaar:(see viimane funktsioon kipub vist &amp;quot;veebirakenduseks&amp;quot; muutuma)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Sihtplatvormid:&lt;br /&gt;
Windows Mobile, iOS, Android(kui leiame vabatahtlikud testijad)&lt;br /&gt;
&lt;br /&gt;
===Taustinfo===&lt;br /&gt;
Praegune IT-Kohviku menüü on käsitsi täidetav valge tahvel. Projekti eesmärgiks on parendada IT-Kohviku menüüsüsteemi ja teha see veebi kaudu kättesaadavaks, nii, et menüüsse saab lisada ka karniiri valiku. Standardmenüü puhul saab menüüs olla ka illustreeriv foto. Hetkemenüü ning hinnad ja lahtioleku ajad on samuti jälgitavad võrguühendust eviva mobiilseadme ekraanilt, hõlbustades sellega valikute tegemist.&lt;br /&gt;
&lt;br /&gt;
===Liikmed===&lt;br /&gt;
* Mailis Toompuu&lt;br /&gt;
* Henri Kroosmann&lt;br /&gt;
* Heiki Tamm&lt;br /&gt;
&lt;br /&gt;
==Sisu==&lt;br /&gt;
&lt;br /&gt;
===XML Data===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;menu&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name1&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;0&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name1&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item1&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item2&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item3&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;0&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;0&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount1&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;0&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;0&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot1&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name2&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;255&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name2&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item4&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item5&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item6&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;255&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;255&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount2&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;255&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;255&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot2&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name3&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;1&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name3&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item7&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item8&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item9&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;1&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;1&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount3&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;1&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;1&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot3&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
&amp;lt;/menu&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===XML Schema===&lt;br /&gt;
&lt;br /&gt;
Ülevaade Schema&#039;st. &amp;lt;br /&amp;gt;&lt;br /&gt;
[[File:XMLSchema_Capture_(optimized).png]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Ning sellele vastav kood.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xs:schema attributeFormDefault=&amp;quot;unqualified&amp;quot; elementFormDefault=&amp;quot;qualified&amp;quot; xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xs:element name=&amp;quot;menu&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;product&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;type&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;id&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;extras&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence minOccurs=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;item&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;price&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence minOccurs=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;int&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;frac&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element minOccurs=&amp;quot;0&amp;quot; name=&amp;quot;discount&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;vote&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;pos&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;neg&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;screenshot&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===XML Style===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;html&amp;gt;&lt;br /&gt;
      &amp;lt;head&amp;gt;&lt;br /&gt;
        &amp;lt;style type=&amp;quot;text/css&amp;quot;&amp;gt;&lt;br /&gt;
          html,body{margin:0;padding:0;font-family:Helvetica,Arial,sans-serif;font-size:14px;line-height:19px;color:#2c2c2c;}&lt;br /&gt;
          h1{margin:0;padding:25px 0 0;font-size:22px;line-height:25px;text-align:center;}&lt;br /&gt;
          h2{margin:0;padding:5px;font-size:16px;line-height:21px}&lt;br /&gt;
          span.discount{padding:0 0 0 5px;color:red;}&lt;br /&gt;
          table{margin:20px auto;padding:0;}&lt;br /&gt;
          th,td{padding:5px;border:1px solid #2c2c2c;vertical-align:top;text-align:left}&lt;br /&gt;
          th{font-weight:bold;background-color:#eee;}&lt;br /&gt;
          ul{margin:0;padding:0;list-style-type:none;}&lt;br /&gt;
        &amp;lt;/style&amp;gt;&lt;br /&gt;
      &amp;lt;/head&amp;gt;&lt;br /&gt;
      &amp;lt;body&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;Menüü&amp;lt;/h1&amp;gt;&lt;br /&gt;
        &amp;lt;table width=&amp;quot;800&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;200&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;100&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col witdh=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;150&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;tr&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Nimetus&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Lisandid&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Tüüp&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Hind&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Hinne / Hindajaid&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Pilt&amp;lt;/th&amp;gt;&lt;br /&gt;
          &amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
          &amp;lt;xsl:for-each select=&amp;quot;menu/product&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:sort select=&amp;quot;type/id&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:sort select=&amp;quot;name&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;th&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;name&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/th&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;extras/node()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;ul&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:for-each select=&amp;quot;extras/item&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;li&amp;gt;&lt;br /&gt;
                          &amp;lt;xsl:value-of select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;/li&amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
                    &amp;lt;/ul&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;td&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;type/name&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;price/node()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    €&amp;lt;xsl:value-of select=&amp;quot;price/int&amp;quot;/&amp;gt;.&amp;lt;xsl:value-of select=&amp;quot;price/frac&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:if test=&amp;quot;price/discount/text()&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;span class=&amp;quot;discount&amp;quot;&amp;gt;&lt;br /&gt;
                        (-&amp;lt;xsl:value-of select=&amp;quot;price/discount&amp;quot;/&amp;gt;%)&lt;br /&gt;
                      &amp;lt;/span&amp;gt;&lt;br /&gt;
                    &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:variable name=&amp;quot;p&amp;quot; select=&amp;quot;vote/pos&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:variable name=&amp;quot;n&amp;quot; select=&amp;quot;vote/neg&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;td&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$p - $n&amp;quot;/&amp;gt; / &amp;lt;xsl:value-of select=&amp;quot;$p + $n&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;screenshot/text()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;img src=&amp;quot;{screenshot}&amp;quot; alt=&amp;quot;&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;img src=&amp;quot;screenshots/default.png&amp;quot; alt=&amp;quot;No image&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
      &amp;lt;/body&amp;gt;&lt;br /&gt;
    &amp;lt;/html&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
Sisu ja stiilifaili koostöö http://henri.kroosmann.ee/kool/xml/index.xml &amp;lt;!--[http://henri.kroosmann.ee/kool/xml/index.xml]--&amp;gt;&lt;br /&gt;
==VEEBITEENUSED==&lt;br /&gt;
&lt;br /&gt;
===8. aprill===&lt;br /&gt;
Otsustame teha teenused kõikide kohvikute menüüde kohta.&lt;br /&gt;
&lt;br /&gt;
===11.-12. aprill===&lt;br /&gt;
Henri koostab tabelite loogika&lt;br /&gt;
&lt;br /&gt;
===13. aprill===&lt;br /&gt;
Mailis otsustab veebiteenused teha asmx-is [webmethod]-itega&lt;br /&gt;
===14. aprill===&lt;br /&gt;
Mailis hakkab veebiteenuseid tegema&lt;br /&gt;
===17. aprill===&lt;br /&gt;
Veebiteenused on valmis:&lt;br /&gt;
&lt;br /&gt;
*AnnaJoogiliikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaJoogitabelirida_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*AnnaJookideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaK6igiKohvikuteAndmeteNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyyIDed_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyyRida_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyydeNimekiri_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaMenyyLiikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaMenyydeNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaPromillideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToiduliikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToitudeNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToitutabelirida_toiduIDjargi &lt;br /&gt;
&lt;br /&gt;
*AnnaYheKohvikuAndmed_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*KustutaJookMenyyst &lt;br /&gt;
&lt;br /&gt;
*KustutaMenyy &lt;br /&gt;
&lt;br /&gt;
*KustutaKohvik &lt;br /&gt;
&lt;br /&gt;
*KustutaToitMenyyst &lt;br /&gt;
&lt;br /&gt;
*KysiYheKohvikuYheMenyyToitudeIDeed_menyyIDjargi &lt;br /&gt;
&lt;br /&gt;
*LisaJoogiLiik &lt;br /&gt;
&lt;br /&gt;
*LisaMenyyLiik &lt;br /&gt;
&lt;br /&gt;
*LisaPromill &lt;br /&gt;
&lt;br /&gt;
*LisaToiduLiik &lt;br /&gt;
&lt;br /&gt;
*SecurityAuthenticateUser &lt;br /&gt;
&lt;br /&gt;
*TOITJOOKmenyysRida_menyyIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedJoogileMenyys &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedKohvikule &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedToiduleMenyys &lt;br /&gt;
&lt;br /&gt;
*annaJoogiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiKIRJELDUS_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiKOMM_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiID_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiNIMI_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKasOnTaimeT_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKasutajaNIMI_Guidjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuLahtiolekuAjad_kohvikuIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuTeated &lt;br /&gt;
&lt;br /&gt;
*annaLinnaID_LinnaNimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaLinnaNIMI_LinnaIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaLinnad_maakonnaNIMEjargi &lt;br /&gt;
&lt;br /&gt;
*annaMaakonnaID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaMenyyLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaMenyyLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaPromill_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaPromilliID_promilliNrJargi &lt;br /&gt;
&lt;br /&gt;
*annaPromilliNR_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduKIRJELDUS_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduKOMMENTAAR_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiNIMETUS_toiduIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaYheKohvikuMenyyd_kohvikuNIMEjargi &lt;br /&gt;
&lt;br /&gt;
*autendiKasutajaParooliJargi &lt;br /&gt;
&lt;br /&gt;
*k6igiKohvikuteMenyyd &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusJoogiKohta &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusKohvikuKohta &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusToiduKohta &lt;br /&gt;
&lt;br /&gt;
*lisaJookMenyysse &lt;br /&gt;
&lt;br /&gt;
*lisaToitMenyysse &lt;br /&gt;
&lt;br /&gt;
*lisaUusJook &lt;br /&gt;
&lt;br /&gt;
*lisaUusKohvik &lt;br /&gt;
&lt;br /&gt;
*lisaUusLahtiolekuAeg &lt;br /&gt;
&lt;br /&gt;
*lisaUusMenyy &lt;br /&gt;
&lt;br /&gt;
*lisaUusTeadaanne &lt;br /&gt;
&lt;br /&gt;
*lisaUusToit &lt;br /&gt;
&lt;br /&gt;
*nadalapaevaID_paevaNimetuseJargi &lt;br /&gt;
&lt;br /&gt;
*nadalapaevaNIMETUS_paevaIDjargi&lt;br /&gt;
&lt;br /&gt;
*Registreeru&lt;br /&gt;
&lt;br /&gt;
*LogiSisseTavakasutajana&lt;br /&gt;
&lt;br /&gt;
*LogiSisseKohvikuna&lt;br /&gt;
&lt;br /&gt;
===22.aprill===&lt;br /&gt;
Toimus koosolek&lt;br /&gt;
*Henri lubas meetodite turvamise teha.&lt;br /&gt;
*Heiki lubas statistika teha meetodite kohta.&lt;br /&gt;
&lt;br /&gt;
===Allikfail===&lt;br /&gt;
Allikfail: http://www.p2ike.com/CSharp/KohvikudVeebiteenus.rar&lt;br /&gt;
&lt;br /&gt;
Meetod &#039;k6igiKohvikuteMenyyd&#039; kuvab sellise xml struktuuri: http://www.p2ike.com/CSharp/k6igiKohvikuteMenyyd.xml&lt;br /&gt;
&lt;br /&gt;
Toidud ja joogid sorteeritakse liikide kaupa.&lt;br /&gt;
&lt;br /&gt;
===Andmetabelid===&lt;br /&gt;
[[File:andmetabelid.jpg|777px|thumb|left|andmemudel]]&lt;br /&gt;
===Statistika===&lt;br /&gt;
 using System;&lt;br /&gt;
using System.Web.Services;&lt;br /&gt;
using System.Web.Services.Protocols;&lt;br /&gt;
using System.IO;&lt;br /&gt;
using System.Net;&lt;br /&gt;
 &lt;br /&gt;
// Define a SOAP Extension that traces the SOAP request and SOAP&lt;br /&gt;
// response for the XML Web service method the SOAP extension is&lt;br /&gt;
// applied to. &lt;br /&gt;
 &lt;br /&gt;
namespace WebASPKohvikud&lt;br /&gt;
{&lt;br /&gt;
    public class TraceExtension : SoapExtension&lt;br /&gt;
    {&lt;br /&gt;
        Stream oldStream;&lt;br /&gt;
        Stream newStream;&lt;br /&gt;
        string filename;&lt;br /&gt;
 &lt;br /&gt;
        // Save the Stream representing the SOAP request or SOAP response into&lt;br /&gt;
        // a local memory buffer.&lt;br /&gt;
        public override Stream ChainStream(Stream stream)&lt;br /&gt;
        {&lt;br /&gt;
            oldStream = stream;&lt;br /&gt;
            newStream = new MemoryStream();&lt;br /&gt;
            return newStream;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        // When the SOAP extension is accessed for the first time, the XML Web&lt;br /&gt;
        // service method it is applied to is accessed to store the file&lt;br /&gt;
        // name passed in, using the corresponding SoapExtensionAttribute.	&lt;br /&gt;
        public override object GetInitializer(LogicalMethodInfo methodInfo, SoapExtensionAttribute attribute)&lt;br /&gt;
        {&lt;br /&gt;
            return ((TraceExtensionAttribute)attribute).Filename;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        // The SOAP extension was configured to run using a configuration file&lt;br /&gt;
        // instead of an attribute applied to a specific XML Web service&lt;br /&gt;
        // method.&lt;br /&gt;
        public override object GetInitializer(Type WebServiceType)&lt;br /&gt;
        {&lt;br /&gt;
            // Return a file name to log the trace information to, based on the&lt;br /&gt;
            // type.&lt;br /&gt;
            return &amp;quot;C:\\&amp;quot; + WebServiceType.FullName + &amp;quot;.log&amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        // Receive the file name stored by GetInitializer and store it in a&lt;br /&gt;
        // member variable for this specific instance.&lt;br /&gt;
        public override void Initialize(object initializer)&lt;br /&gt;
        {&lt;br /&gt;
            filename = (string)initializer;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        //  If the SoapMessageStage is such that the SoapRequest or&lt;br /&gt;
        //  SoapResponse is still in the SOAP format to be sent or received,&lt;br /&gt;
        //  save it out to a file.&lt;br /&gt;
        public override void ProcessMessage(SoapMessage message)&lt;br /&gt;
        {&lt;br /&gt;
            switch (message.Stage)&lt;br /&gt;
            {&lt;br /&gt;
                case SoapMessageStage.BeforeSerialize:&lt;br /&gt;
                    break;&lt;br /&gt;
                case SoapMessageStage.AfterSerialize:&lt;br /&gt;
                    WriteOutput(message);&lt;br /&gt;
                    break;&lt;br /&gt;
                case SoapMessageStage.BeforeDeserialize:&lt;br /&gt;
                    WriteInput(message);&lt;br /&gt;
                    break;&lt;br /&gt;
                case SoapMessageStage.AfterDeserialize:&lt;br /&gt;
                    break;&lt;br /&gt;
                default:&lt;br /&gt;
                    throw new Exception(&amp;quot;invalid stage&amp;quot;);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        public void WriteOutput(SoapMessage message)&lt;br /&gt;
        {&lt;br /&gt;
            newStream.Position = 0;&lt;br /&gt;
            FileStream fs = new FileStream(filename, FileMode.Append,&lt;br /&gt;
                FileAccess.Write);&lt;br /&gt;
            StreamWriter w = new StreamWriter(fs);&lt;br /&gt;
 &lt;br /&gt;
            string soapString = (message is SoapServerMessage) ? &amp;quot;SoapResponse&amp;quot; : &amp;quot;SoapRequest&amp;quot;;&lt;br /&gt;
            w.WriteLine(&amp;quot;-----&amp;quot; + soapString + &amp;quot; at &amp;quot; + DateTime.Now);&lt;br /&gt;
            w.Flush();&lt;br /&gt;
            Copy(newStream, fs);&lt;br /&gt;
            w.Close();&lt;br /&gt;
            newStream.Position = 0;&lt;br /&gt;
            Copy(newStream, oldStream);&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        public void WriteInput(SoapMessage message)&lt;br /&gt;
        {&lt;br /&gt;
            Copy(oldStream, newStream);&lt;br /&gt;
            FileStream fs = new FileStream(filename, FileMode.Append,&lt;br /&gt;
                FileAccess.Write);&lt;br /&gt;
            StreamWriter w = new StreamWriter(fs);&lt;br /&gt;
 &lt;br /&gt;
            string soapString = (message is SoapServerMessage) ?&lt;br /&gt;
                &amp;quot;SoapRequest&amp;quot; : &amp;quot;SoapResponse&amp;quot;;&lt;br /&gt;
            w.WriteLine(&amp;quot;-----&amp;quot; + soapString +&lt;br /&gt;
                &amp;quot; at &amp;quot; + DateTime.Now);&lt;br /&gt;
            w.Flush();&lt;br /&gt;
            newStream.Position = 0;&lt;br /&gt;
            Copy(newStream, fs);&lt;br /&gt;
            w.Close();&lt;br /&gt;
            newStream.Position = 0;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        void Copy(Stream from, Stream to)&lt;br /&gt;
        {&lt;br /&gt;
            TextReader reader = new StreamReader(from);&lt;br /&gt;
            TextWriter writer = new StreamWriter(to);&lt;br /&gt;
            writer.WriteLine(reader.ReadToEnd());&lt;br /&gt;
            writer.Flush();&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    // Create a SoapExtensionAttribute for the SOAP Extension that can be&lt;br /&gt;
    // applied to an XML Web service method.&lt;br /&gt;
    [AttributeUsage(AttributeTargets.Method)]&lt;br /&gt;
    public class TraceExtensionAttribute : SoapExtensionAttribute&lt;br /&gt;
    {&lt;br /&gt;
 &lt;br /&gt;
        private string filename = @&amp;quot;C:\Users\Heiki Tamm\Documents\Õppematerjalid_2011\WebASPKohvikud\WebASPKohvikud\SoapLog.txt&amp;quot;;&lt;br /&gt;
        private int priority;&lt;br /&gt;
 &lt;br /&gt;
        public override Type ExtensionType&lt;br /&gt;
        {&lt;br /&gt;
            get { return typeof(TraceExtension); }&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        public override int Priority&lt;br /&gt;
        {&lt;br /&gt;
            get { return priority; }&lt;br /&gt;
            set { priority = value; }&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        public string Filename&lt;br /&gt;
        {&lt;br /&gt;
            get&lt;br /&gt;
            {&lt;br /&gt;
                return filename;&lt;br /&gt;
            }&lt;br /&gt;
            set&lt;br /&gt;
            {&lt;br /&gt;
                filename = value;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
// todo: &lt;br /&gt;
// from each soap header record query content &lt;br /&gt;
// (containing client, date, time, query ) into a DB&lt;br /&gt;
// for later reference for conducting any kind of &lt;br /&gt;
// applicable statistics and then generate stats :D !&lt;br /&gt;
// Proovin selliselt, et on lihtne statistika tabel:&lt;br /&gt;
// 1) meetod // välja kutsutava meetodi nimi&lt;br /&gt;
// 2) kuupäev // timestamp&lt;br /&gt;
// 3) callide arv // meetodi väljakutsimiste hulk&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==KLIENTRAKENDUS==&lt;br /&gt;
&lt;br /&gt;
===23. mai===&lt;br /&gt;
Mailis tegi kohvikute kuvamise ASP.NET rakenduse.&lt;br /&gt;
Kohvikud kuvatakse TreeView&#039;s &lt;br /&gt;
menüüde ja andmetega ning arvamustega kohvikute ja toitude ja jookide kohta.&lt;br /&gt;
&lt;br /&gt;
Samal lehel on kohvikuhuvilistele registreerimisvõimalus&lt;br /&gt;
ja sisselogimine.&lt;br /&gt;
&lt;br /&gt;
Kui on sisselogitud, saab lisada arvamusi.&lt;br /&gt;
Arvamuste lisamine on Ajax Extended Toolkiti controli&#039;ga &#039;Allways Visible ...&#039; tehtud, &lt;br /&gt;
&lt;br /&gt;
nii et mööda pikka TreeViewd alla kerides saab &lt;br /&gt;
lisada arvamust ilma ülesserva tagasi minemata.&lt;br /&gt;
&lt;br /&gt;
Arvamused ilmuvad kohe peale lisamist TreeView&#039;sse.&lt;br /&gt;
&lt;br /&gt;
TreeView&#039;sse tulevad andmed xml-failist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pooleli on veel kohvikute-poolne rakendus, kus omanik saab lisada ja kustutada kohvikuid, menüüsid ja toite-jooke, lisada teadaandeid.&lt;br /&gt;
&lt;br /&gt;
Pooleli on veel admini-rakendus, kus admin saab kasutajale määrata rolli, mis annab õigused kohviku-rakendusse sisse logida.&lt;br /&gt;
===4. juuni===&lt;br /&gt;
Valmis sai Kohvikute omanikele mõeldud klientrakendus.&lt;br /&gt;
Tehtud ASP.NET&#039;i veebirakendusena.&lt;br /&gt;
Seal on sisselogimine, registreerumine ja adminile kirja saatmine kohvikuomaniku õiguste saamiseks.&lt;br /&gt;
Peale sisselogimist saab &lt;br /&gt;
*lisada ja kustutada kohvikut&lt;br /&gt;
*lisada kohvikule lahtiolekuaegu nädalapäevade kaupa ja neid kustutada&lt;br /&gt;
*lisada kohvikule teadaandeid ja neid kustutada&lt;br /&gt;
*lisada kohvikule menüüsid ja neid kustutada: menüül on nimetus, liik, nädalapäev,  lisamiskuupäev, pildi veebiaadress jne. &lt;br /&gt;
*lisada menüüsse toite ja neid kustutada. Toitudel on nimetus, liik, hind, kas-sobib-taimetoitlasele, kogus grammides, suurus, lisamise kuupäev, pildi veebiaadress. Eraldi listides on kõikide kohvikute lisatud toidud ja selle kohviku lisatud toidud. Toitu valides rippmenüüst ilmuvad selle toidu andmed, et näha täpsemalt, mis toiduga on tegu. Ka on näha parajasti toitu lisatavasse menüüsse varem lisatud toidud.&lt;br /&gt;
*jookidele on sama, va. taimetoidu asemel on alkohoolse joogi korral promillide suurus.&lt;br /&gt;
&lt;br /&gt;
Lisada saab textbokside kaudu, nimekirjadest valimine on tehtud dropdown-listidena.&lt;br /&gt;
Kuvamised on tehtud GridViewdena, mis saavad andmeid meetoditest, mitte otse andmebaasitabelist.&lt;br /&gt;
&lt;br /&gt;
===5. juuni===&lt;br /&gt;
Valmis sai Kohvikute administraatori  ASP.NET-veebirakendus.&lt;br /&gt;
Admin saab registreeruda ja sisse logida.&lt;br /&gt;
Kui admin on sisse loginud, saab ta vaadata statistikat. Statistika-tabeleid on eraldi selle kohta, kui palju on mingit meetodit kasutatud ja selle kohta,kes millal mingit meetodit kasutas.&lt;br /&gt;
Sisseloginuna saab vaadata saabunud taotlusi ja nende järgi kasutajatele rolle määrata.&lt;br /&gt;
&lt;br /&gt;
Tabelid saavad andmeid otse andmebaasist, GridView&#039;dena, neid saab sorteerida tulpade&lt;br /&gt;
pealkirjadel klikkides.&lt;br /&gt;
&lt;br /&gt;
===ALLIKFAILID===&lt;br /&gt;
http://www.p2ike.com/CSharp/Kohvik.rar&lt;br /&gt;
&lt;br /&gt;
http://www.p2ike.com/CSharp/KohvikuKliendid.rar&lt;br /&gt;
&lt;br /&gt;
http://www.p2ike.com/CSharp/KohvikuAdministraator.rar&lt;br /&gt;
&lt;br /&gt;
==KOKKUVÕTE==&lt;br /&gt;
Oli soov teha ideaalset teenust ja rakendusi, millega on mugav lisada ja näha kohvikute menüüsid.&lt;br /&gt;
Veebiteenuseid sai veel pidevalt täiendatud rakenduste tegemise käigus, neid tuli kokku 100 ringis.&lt;br /&gt;
&lt;br /&gt;
Kõik kolm rakendust sai tehtud ASP.NET&#039;i veebirakendustena, et midagi juurde õppida.&lt;br /&gt;
Ka on veeb kõigile kättesaadav, ei pea eraldi programmi hakkama alla laadima.&lt;br /&gt;
&lt;br /&gt;
Asp.NET&#039;i tundmaõppimine oli arvatust aeganõudvam ja kõik ei saanud ideaalne: kohvikutel on laius-ja pikkuskraadid, edaspidi võiks kohvikülastajale mõeldud rakenduses kaardil näha olla, kus mõni kohvik asub. Ka ei osutunud treeview kõigi kohvikute andmete korraga kuvamisel, eriti kui on palju kohvikuid, kõige paremaks valikuks.&lt;br /&gt;
&lt;br /&gt;
Kõige paremini õnnestus kohvikute omanikele mõeldud rakendus.&lt;br /&gt;
&lt;br /&gt;
==PUNKTID== &lt;br /&gt;
*Henri: 10 -  xml-osa ja veebiteenuste tabelite loogika.&lt;br /&gt;
*Heiki: 3 - wiki sissejuhatus.&lt;br /&gt;
*Mailis: 47 - veebiteenuste programmeerimine ja klientrakendused.&lt;/div&gt;</summary>
		<author><name>Mtoompuu</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Meeskond_%22H2%22&amp;diff=33795</id>
		<title>Meeskond &quot;H2&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Meeskond_%22H2%22&amp;diff=33795"/>
		<updated>2011-06-05T23:14:53Z</updated>

		<summary type="html">&lt;p&gt;Mtoompuu: /* ALLIKFAILID */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Kohviku menüüsüsteem==&lt;br /&gt;
===Projekt===&lt;br /&gt;
Kohvikute (esialgu ainult IT-Kohviku) menüüsüsteem, mis on jälgitav mobiilseadmetelt. Lisaväärtusena võimaldab anda pakutavale hinnanguid, otsuse langetamise hõlbustamiseks kommentaar:(see viimane funktsioon kipub vist &amp;quot;veebirakenduseks&amp;quot; muutuma)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Sihtplatvormid:&lt;br /&gt;
Windows Mobile, iOS, Android(kui leiame vabatahtlikud testijad)&lt;br /&gt;
&lt;br /&gt;
===Taustinfo===&lt;br /&gt;
Praegune IT-Kohviku menüü on käsitsi täidetav valge tahvel. Projekti eesmärgiks on parendada IT-Kohviku menüüsüsteemi ja teha see veebi kaudu kättesaadavaks, nii, et menüüsse saab lisada ka karniiri valiku. Standardmenüü puhul saab menüüs olla ka illustreeriv foto. Hetkemenüü ning hinnad ja lahtioleku ajad on samuti jälgitavad võrguühendust eviva mobiilseadme ekraanilt, hõlbustades sellega valikute tegemist.&lt;br /&gt;
&lt;br /&gt;
===Liikmed===&lt;br /&gt;
* Mailis Toompuu&lt;br /&gt;
* Henri Kroosmann&lt;br /&gt;
* Heiki Tamm&lt;br /&gt;
&lt;br /&gt;
==Sisu==&lt;br /&gt;
&lt;br /&gt;
===XML Data===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;menu&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name1&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;0&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name1&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item1&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item2&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item3&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;0&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;0&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount1&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;0&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;0&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot1&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name2&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;255&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name2&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item4&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item5&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item6&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;255&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;255&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount2&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;255&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;255&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot2&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name3&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;1&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name3&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item7&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item8&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item9&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;1&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;1&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount3&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;1&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;1&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot3&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
&amp;lt;/menu&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===XML Schema===&lt;br /&gt;
&lt;br /&gt;
Ülevaade Schema&#039;st. &amp;lt;br /&amp;gt;&lt;br /&gt;
[[File:XMLSchema_Capture_(optimized).png]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Ning sellele vastav kood.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xs:schema attributeFormDefault=&amp;quot;unqualified&amp;quot; elementFormDefault=&amp;quot;qualified&amp;quot; xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xs:element name=&amp;quot;menu&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;product&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;type&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;id&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;extras&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence minOccurs=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;item&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;price&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence minOccurs=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;int&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;frac&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element minOccurs=&amp;quot;0&amp;quot; name=&amp;quot;discount&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;vote&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;pos&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;neg&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;screenshot&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===XML Style===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;html&amp;gt;&lt;br /&gt;
      &amp;lt;head&amp;gt;&lt;br /&gt;
        &amp;lt;style type=&amp;quot;text/css&amp;quot;&amp;gt;&lt;br /&gt;
          html,body{margin:0;padding:0;font-family:Helvetica,Arial,sans-serif;font-size:14px;line-height:19px;color:#2c2c2c;}&lt;br /&gt;
          h1{margin:0;padding:25px 0 0;font-size:22px;line-height:25px;text-align:center;}&lt;br /&gt;
          h2{margin:0;padding:5px;font-size:16px;line-height:21px}&lt;br /&gt;
          span.discount{padding:0 0 0 5px;color:red;}&lt;br /&gt;
          table{margin:20px auto;padding:0;}&lt;br /&gt;
          th,td{padding:5px;border:1px solid #2c2c2c;vertical-align:top;text-align:left}&lt;br /&gt;
          th{font-weight:bold;background-color:#eee;}&lt;br /&gt;
          ul{margin:0;padding:0;list-style-type:none;}&lt;br /&gt;
        &amp;lt;/style&amp;gt;&lt;br /&gt;
      &amp;lt;/head&amp;gt;&lt;br /&gt;
      &amp;lt;body&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;Menüü&amp;lt;/h1&amp;gt;&lt;br /&gt;
        &amp;lt;table width=&amp;quot;800&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;200&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;100&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col witdh=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;150&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;tr&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Nimetus&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Lisandid&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Tüüp&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Hind&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Hinne / Hindajaid&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Pilt&amp;lt;/th&amp;gt;&lt;br /&gt;
          &amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
          &amp;lt;xsl:for-each select=&amp;quot;menu/product&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:sort select=&amp;quot;type/id&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:sort select=&amp;quot;name&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;th&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;name&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/th&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;extras/node()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;ul&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:for-each select=&amp;quot;extras/item&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;li&amp;gt;&lt;br /&gt;
                          &amp;lt;xsl:value-of select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;/li&amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
                    &amp;lt;/ul&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;td&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;type/name&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;price/node()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    €&amp;lt;xsl:value-of select=&amp;quot;price/int&amp;quot;/&amp;gt;.&amp;lt;xsl:value-of select=&amp;quot;price/frac&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:if test=&amp;quot;price/discount/text()&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;span class=&amp;quot;discount&amp;quot;&amp;gt;&lt;br /&gt;
                        (-&amp;lt;xsl:value-of select=&amp;quot;price/discount&amp;quot;/&amp;gt;%)&lt;br /&gt;
                      &amp;lt;/span&amp;gt;&lt;br /&gt;
                    &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:variable name=&amp;quot;p&amp;quot; select=&amp;quot;vote/pos&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:variable name=&amp;quot;n&amp;quot; select=&amp;quot;vote/neg&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;td&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$p - $n&amp;quot;/&amp;gt; / &amp;lt;xsl:value-of select=&amp;quot;$p + $n&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;screenshot/text()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;img src=&amp;quot;{screenshot}&amp;quot; alt=&amp;quot;&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;img src=&amp;quot;screenshots/default.png&amp;quot; alt=&amp;quot;No image&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
      &amp;lt;/body&amp;gt;&lt;br /&gt;
    &amp;lt;/html&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
Sisu ja stiilifaili koostöö http://henri.kroosmann.ee/kool/xml/index.xml &amp;lt;!--[http://henri.kroosmann.ee/kool/xml/index.xml]--&amp;gt;&lt;br /&gt;
==VEEBITEENUSED==&lt;br /&gt;
&lt;br /&gt;
===8. aprill===&lt;br /&gt;
Otsustame teha teenused kõikide kohvikute menüüde kohta.&lt;br /&gt;
&lt;br /&gt;
===11.-12. aprill===&lt;br /&gt;
Henri koostab tabelite loogika&lt;br /&gt;
&lt;br /&gt;
===13. aprill===&lt;br /&gt;
Mailis otsustab veebiteenused teha asmx-is [webmethod]-itega&lt;br /&gt;
===14. aprill===&lt;br /&gt;
Mailis hakkab veebiteenuseid tegema&lt;br /&gt;
===17. aprill===&lt;br /&gt;
Veebiteenused on valmis:&lt;br /&gt;
&lt;br /&gt;
*AnnaJoogiliikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaJoogitabelirida_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*AnnaJookideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaK6igiKohvikuteAndmeteNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyyIDed_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyyRida_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyydeNimekiri_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaMenyyLiikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaMenyydeNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaPromillideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToiduliikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToitudeNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToitutabelirida_toiduIDjargi &lt;br /&gt;
&lt;br /&gt;
*AnnaYheKohvikuAndmed_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*KustutaJookMenyyst &lt;br /&gt;
&lt;br /&gt;
*KustutaMenyy &lt;br /&gt;
&lt;br /&gt;
*KustutaKohvik &lt;br /&gt;
&lt;br /&gt;
*KustutaToitMenyyst &lt;br /&gt;
&lt;br /&gt;
*KysiYheKohvikuYheMenyyToitudeIDeed_menyyIDjargi &lt;br /&gt;
&lt;br /&gt;
*LisaJoogiLiik &lt;br /&gt;
&lt;br /&gt;
*LisaMenyyLiik &lt;br /&gt;
&lt;br /&gt;
*LisaPromill &lt;br /&gt;
&lt;br /&gt;
*LisaToiduLiik &lt;br /&gt;
&lt;br /&gt;
*SecurityAuthenticateUser &lt;br /&gt;
&lt;br /&gt;
*TOITJOOKmenyysRida_menyyIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedJoogileMenyys &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedKohvikule &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedToiduleMenyys &lt;br /&gt;
&lt;br /&gt;
*annaJoogiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiKIRJELDUS_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiKOMM_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiID_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiNIMI_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKasOnTaimeT_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKasutajaNIMI_Guidjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuLahtiolekuAjad_kohvikuIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuTeated &lt;br /&gt;
&lt;br /&gt;
*annaLinnaID_LinnaNimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaLinnaNIMI_LinnaIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaLinnad_maakonnaNIMEjargi &lt;br /&gt;
&lt;br /&gt;
*annaMaakonnaID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaMenyyLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaMenyyLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaPromill_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaPromilliID_promilliNrJargi &lt;br /&gt;
&lt;br /&gt;
*annaPromilliNR_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduKIRJELDUS_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduKOMMENTAAR_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiNIMETUS_toiduIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaYheKohvikuMenyyd_kohvikuNIMEjargi &lt;br /&gt;
&lt;br /&gt;
*autendiKasutajaParooliJargi &lt;br /&gt;
&lt;br /&gt;
*k6igiKohvikuteMenyyd &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusJoogiKohta &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusKohvikuKohta &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusToiduKohta &lt;br /&gt;
&lt;br /&gt;
*lisaJookMenyysse &lt;br /&gt;
&lt;br /&gt;
*lisaToitMenyysse &lt;br /&gt;
&lt;br /&gt;
*lisaUusJook &lt;br /&gt;
&lt;br /&gt;
*lisaUusKohvik &lt;br /&gt;
&lt;br /&gt;
*lisaUusLahtiolekuAeg &lt;br /&gt;
&lt;br /&gt;
*lisaUusMenyy &lt;br /&gt;
&lt;br /&gt;
*lisaUusTeadaanne &lt;br /&gt;
&lt;br /&gt;
*lisaUusToit &lt;br /&gt;
&lt;br /&gt;
*nadalapaevaID_paevaNimetuseJargi &lt;br /&gt;
&lt;br /&gt;
*nadalapaevaNIMETUS_paevaIDjargi&lt;br /&gt;
&lt;br /&gt;
*Registreeru&lt;br /&gt;
&lt;br /&gt;
*LogiSisseTavakasutajana&lt;br /&gt;
&lt;br /&gt;
*LogiSisseKohvikuna&lt;br /&gt;
&lt;br /&gt;
===22.aprill===&lt;br /&gt;
Toimus koosolek&lt;br /&gt;
*Henri lubas meetodite turvamise teha.&lt;br /&gt;
*Heiki lubas statistika teha meetodite kohta.&lt;br /&gt;
&lt;br /&gt;
===Allikfail===&lt;br /&gt;
Allikfail: http://www.p2ike.com/CSharp/KohvikudVeebiteenus.rar&lt;br /&gt;
&lt;br /&gt;
Meetod &#039;k6igiKohvikuteMenyyd&#039; kuvab sellise xml struktuuri: http://www.p2ike.com/CSharp/k6igiKohvikuteMenyyd.xml&lt;br /&gt;
&lt;br /&gt;
Toidud ja joogid sorteeritakse liikide kaupa.&lt;br /&gt;
&lt;br /&gt;
===Andmetabelid===&lt;br /&gt;
[[File:andmetabelid.jpg|777px|thumb|left|andmemudel]]&lt;br /&gt;
===Statistika===&lt;br /&gt;
 using System;&lt;br /&gt;
using System.Web.Services;&lt;br /&gt;
using System.Web.Services.Protocols;&lt;br /&gt;
using System.IO;&lt;br /&gt;
using System.Net;&lt;br /&gt;
 &lt;br /&gt;
// Define a SOAP Extension that traces the SOAP request and SOAP&lt;br /&gt;
// response for the XML Web service method the SOAP extension is&lt;br /&gt;
// applied to. &lt;br /&gt;
 &lt;br /&gt;
namespace WebASPKohvikud&lt;br /&gt;
{&lt;br /&gt;
    public class TraceExtension : SoapExtension&lt;br /&gt;
    {&lt;br /&gt;
        Stream oldStream;&lt;br /&gt;
        Stream newStream;&lt;br /&gt;
        string filename;&lt;br /&gt;
 &lt;br /&gt;
        // Save the Stream representing the SOAP request or SOAP response into&lt;br /&gt;
        // a local memory buffer.&lt;br /&gt;
        public override Stream ChainStream(Stream stream)&lt;br /&gt;
        {&lt;br /&gt;
            oldStream = stream;&lt;br /&gt;
            newStream = new MemoryStream();&lt;br /&gt;
            return newStream;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        // When the SOAP extension is accessed for the first time, the XML Web&lt;br /&gt;
        // service method it is applied to is accessed to store the file&lt;br /&gt;
        // name passed in, using the corresponding SoapExtensionAttribute.	&lt;br /&gt;
        public override object GetInitializer(LogicalMethodInfo methodInfo, SoapExtensionAttribute attribute)&lt;br /&gt;
        {&lt;br /&gt;
            return ((TraceExtensionAttribute)attribute).Filename;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        // The SOAP extension was configured to run using a configuration file&lt;br /&gt;
        // instead of an attribute applied to a specific XML Web service&lt;br /&gt;
        // method.&lt;br /&gt;
        public override object GetInitializer(Type WebServiceType)&lt;br /&gt;
        {&lt;br /&gt;
            // Return a file name to log the trace information to, based on the&lt;br /&gt;
            // type.&lt;br /&gt;
            return &amp;quot;C:\\&amp;quot; + WebServiceType.FullName + &amp;quot;.log&amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        // Receive the file name stored by GetInitializer and store it in a&lt;br /&gt;
        // member variable for this specific instance.&lt;br /&gt;
        public override void Initialize(object initializer)&lt;br /&gt;
        {&lt;br /&gt;
            filename = (string)initializer;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        //  If the SoapMessageStage is such that the SoapRequest or&lt;br /&gt;
        //  SoapResponse is still in the SOAP format to be sent or received,&lt;br /&gt;
        //  save it out to a file.&lt;br /&gt;
        public override void ProcessMessage(SoapMessage message)&lt;br /&gt;
        {&lt;br /&gt;
            switch (message.Stage)&lt;br /&gt;
            {&lt;br /&gt;
                case SoapMessageStage.BeforeSerialize:&lt;br /&gt;
                    break;&lt;br /&gt;
                case SoapMessageStage.AfterSerialize:&lt;br /&gt;
                    WriteOutput(message);&lt;br /&gt;
                    break;&lt;br /&gt;
                case SoapMessageStage.BeforeDeserialize:&lt;br /&gt;
                    WriteInput(message);&lt;br /&gt;
                    break;&lt;br /&gt;
                case SoapMessageStage.AfterDeserialize:&lt;br /&gt;
                    break;&lt;br /&gt;
                default:&lt;br /&gt;
                    throw new Exception(&amp;quot;invalid stage&amp;quot;);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        public void WriteOutput(SoapMessage message)&lt;br /&gt;
        {&lt;br /&gt;
            newStream.Position = 0;&lt;br /&gt;
            FileStream fs = new FileStream(filename, FileMode.Append,&lt;br /&gt;
                FileAccess.Write);&lt;br /&gt;
            StreamWriter w = new StreamWriter(fs);&lt;br /&gt;
 &lt;br /&gt;
            string soapString = (message is SoapServerMessage) ? &amp;quot;SoapResponse&amp;quot; : &amp;quot;SoapRequest&amp;quot;;&lt;br /&gt;
            w.WriteLine(&amp;quot;-----&amp;quot; + soapString + &amp;quot; at &amp;quot; + DateTime.Now);&lt;br /&gt;
            w.Flush();&lt;br /&gt;
            Copy(newStream, fs);&lt;br /&gt;
            w.Close();&lt;br /&gt;
            newStream.Position = 0;&lt;br /&gt;
            Copy(newStream, oldStream);&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        public void WriteInput(SoapMessage message)&lt;br /&gt;
        {&lt;br /&gt;
            Copy(oldStream, newStream);&lt;br /&gt;
            FileStream fs = new FileStream(filename, FileMode.Append,&lt;br /&gt;
                FileAccess.Write);&lt;br /&gt;
            StreamWriter w = new StreamWriter(fs);&lt;br /&gt;
 &lt;br /&gt;
            string soapString = (message is SoapServerMessage) ?&lt;br /&gt;
                &amp;quot;SoapRequest&amp;quot; : &amp;quot;SoapResponse&amp;quot;;&lt;br /&gt;
            w.WriteLine(&amp;quot;-----&amp;quot; + soapString +&lt;br /&gt;
                &amp;quot; at &amp;quot; + DateTime.Now);&lt;br /&gt;
            w.Flush();&lt;br /&gt;
            newStream.Position = 0;&lt;br /&gt;
            Copy(newStream, fs);&lt;br /&gt;
            w.Close();&lt;br /&gt;
            newStream.Position = 0;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        void Copy(Stream from, Stream to)&lt;br /&gt;
        {&lt;br /&gt;
            TextReader reader = new StreamReader(from);&lt;br /&gt;
            TextWriter writer = new StreamWriter(to);&lt;br /&gt;
            writer.WriteLine(reader.ReadToEnd());&lt;br /&gt;
            writer.Flush();&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    // Create a SoapExtensionAttribute for the SOAP Extension that can be&lt;br /&gt;
    // applied to an XML Web service method.&lt;br /&gt;
    [AttributeUsage(AttributeTargets.Method)]&lt;br /&gt;
    public class TraceExtensionAttribute : SoapExtensionAttribute&lt;br /&gt;
    {&lt;br /&gt;
 &lt;br /&gt;
        private string filename = @&amp;quot;C:\Users\Heiki Tamm\Documents\Õppematerjalid_2011\WebASPKohvikud\WebASPKohvikud\SoapLog.txt&amp;quot;;&lt;br /&gt;
        private int priority;&lt;br /&gt;
 &lt;br /&gt;
        public override Type ExtensionType&lt;br /&gt;
        {&lt;br /&gt;
            get { return typeof(TraceExtension); }&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        public override int Priority&lt;br /&gt;
        {&lt;br /&gt;
            get { return priority; }&lt;br /&gt;
            set { priority = value; }&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        public string Filename&lt;br /&gt;
        {&lt;br /&gt;
            get&lt;br /&gt;
            {&lt;br /&gt;
                return filename;&lt;br /&gt;
            }&lt;br /&gt;
            set&lt;br /&gt;
            {&lt;br /&gt;
                filename = value;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
// todo: &lt;br /&gt;
// from each soap header record query content &lt;br /&gt;
// (containing client, date, time, query ) into a DB&lt;br /&gt;
// for later reference for conducting any kind of &lt;br /&gt;
// applicable statistics and then generate stats :D !&lt;br /&gt;
// Proovin selliselt, et on lihtne statistika tabel:&lt;br /&gt;
// 1) meetod // välja kutsutava meetodi nimi&lt;br /&gt;
// 2) kuupäev // timestamp&lt;br /&gt;
// 3) callide arv // meetodi väljakutsimiste hulk&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==KLIENTRAKENDUS==&lt;br /&gt;
&lt;br /&gt;
===23. mai===&lt;br /&gt;
Mailis tegi kohvikute kuvamise ASP.NET rakenduse.&lt;br /&gt;
Kohvikud kuvatakse TreeView&#039;s &lt;br /&gt;
menüüde ja andmetega ning arvamustega kohvikute ja toitude ja jookide kohta.&lt;br /&gt;
&lt;br /&gt;
Samal lehel on kohvikuhuvilistele registreerimisvõimalus&lt;br /&gt;
ja sisselogimine.&lt;br /&gt;
&lt;br /&gt;
Kui on sisselogitud, saab lisada arvamusi.&lt;br /&gt;
Arvamuste lisamine on Ajax Extended Toolkiti controli&#039;ga &#039;Allways Visible ...&#039; tehtud, &lt;br /&gt;
&lt;br /&gt;
nii et mööda pikka TreeViewd alla kerides saab &lt;br /&gt;
lisada arvamust ilma ülesserva tagasi minemata.&lt;br /&gt;
&lt;br /&gt;
Arvamused ilmuvad kohe peale lisamist TreeView&#039;sse.&lt;br /&gt;
&lt;br /&gt;
TreeView&#039;sse tulevad andmed xml-failist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pooleli on veel kohvikute-poolne rakendus, kus omanik saab lisada ja kustutada kohvikuid, menüüsid ja toite-jooke, lisada teadaandeid.&lt;br /&gt;
&lt;br /&gt;
Pooleli on veel admini-rakendus, kus admin saab kasutajale määrata rolli, mis annab õigused kohviku-rakendusse sisse logida.&lt;br /&gt;
===4. juuni===&lt;br /&gt;
Valmis sai Kohvikute omanikele mõeldud klientrakendus.&lt;br /&gt;
Tehtud ASP.NET&#039;i veebirakendusena.&lt;br /&gt;
Seal on sisselogimine, registreerumine ja adminile kirja saatmine kohvikuomaniku õiguste saamiseks.&lt;br /&gt;
Peale sisselogimist saab &lt;br /&gt;
*lisada ja kustutada kohvikut&lt;br /&gt;
*lisada kohvikule lahtiolekuaegu nädalapäevade kaupa ja neid kustutada&lt;br /&gt;
*lisada kohvikule teadaandeid ja neid kustutada&lt;br /&gt;
*lisada kohvikule menüüsid ja neid kustutada: menüül on nimetus, liik, nädalapäev,  lisamiskuupäev jne. &lt;br /&gt;
*lisada menüüsse toite ja neid kustutada. Toitudel on nimetus, liik, hind, kas-sobib-taimetoitlasele, kogus grammides, suurus, lisamise kuupäev. Eraldi listides on kõikide kohvikute lisatud toidud ja selle kohviku lisatud toidud. Toitu valides rippmenüüst ilmuvad selle toidu andmed, et näha täpsemalt, mis toiduga on tegu. Ka on näha parajasti toitu lisatavasse menüüsse varem lisatud toidud.&lt;br /&gt;
*jookidele on sama, va. taimetoidu asemel on alkohoolse joogi korral promillide suurus.&lt;br /&gt;
&lt;br /&gt;
Lisada saab textbokside kaudu, nimekirjadest valimine on tehtud dropdown-listidena.&lt;br /&gt;
Kuvamised on tehtud GridViewdena, mis saavad andmeid meetoditest, mitte otse andmebaasitabelist.&lt;br /&gt;
&lt;br /&gt;
===5. juuni===&lt;br /&gt;
Valmis sai Kohvikute administraatori  ASP.NET-veebirakendus.&lt;br /&gt;
Admin saab registreeruda ja sisse logida.&lt;br /&gt;
Kui admin on sisse loginud, saab ta vaadata statistikat. Statistika-tabeleid on eraldi selle kohta, kui palju on mingit meetodit kasutatud ja selle kohta,kes millal mingit meetodit kasutas.&lt;br /&gt;
Sisseloginuna saab vaadata saabunud taotlusi ja nende järgi kasutajatele rolle määrata.&lt;br /&gt;
&lt;br /&gt;
Tabelid saavad andmeid otse andmebaasist, GridView&#039;dena, neid saab sorteerida tulpade&lt;br /&gt;
pealkirjadel klikkides.&lt;br /&gt;
&lt;br /&gt;
===ALLIKFAILID===&lt;br /&gt;
http://www.p2ike.com/CSharp/Kohvik.rar&lt;br /&gt;
&lt;br /&gt;
http://www.p2ike.com/CSharp/KohvikuKliendid.rar&lt;br /&gt;
&lt;br /&gt;
http://www.p2ike.com/CSharp/KohvikuAdministraator.rar&lt;br /&gt;
&lt;br /&gt;
==KOKKUVÕTE==&lt;br /&gt;
Oli soov teha ideaalset teenust ja rakendusi, millega on mugav lisada ja näha kohvikute menüüsid.&lt;br /&gt;
Veebiteenuseid sai veel pidevalt täiendatud rakenduste tegemise käigus, neid tuli kokku 100 ringis.&lt;br /&gt;
&lt;br /&gt;
Kõik kolm rakendust sai tehtud ASP.NET&#039;i veebirakendustena, et midagi juurde õppida.&lt;br /&gt;
Ka on veeb kõigile kättesaadav, ei pea eraldi programmi hakkama alla laadima.&lt;br /&gt;
&lt;br /&gt;
Asp.NET&#039;i tundmaõppimine oli arvatust aeganõudvam ja kõik ei saanud ideaalne: kohvikutel on laius-ja pikkuskraadid, edaspidi võiks kohvikülastajale mõeldud rakenduses kaardil näha olla, kus mõni kohvik asub. Ka ei osutunud treeview kõigi kohvikute andmete korraga kuvamisel, eriti kui on palju kohvikuid, kõige paremaks valikuks.&lt;br /&gt;
&lt;br /&gt;
Kõige paremini õnnestus kohvikute omanikele mõeldud rakendus.&lt;br /&gt;
&lt;br /&gt;
==PUNKTID== &lt;br /&gt;
*Henri: 10 -  xml-osa ja veebiteenuste tabelite loogika.&lt;br /&gt;
*Heiki: 3 - wiki sissejuhatus.&lt;br /&gt;
*Mailis: 47 - veebiteenuste programmeerimine ja klientrakendused.&lt;/div&gt;</summary>
		<author><name>Mtoompuu</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Meeskond_%22H2%22&amp;diff=33794</id>
		<title>Meeskond &quot;H2&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Meeskond_%22H2%22&amp;diff=33794"/>
		<updated>2011-06-05T23:14:19Z</updated>

		<summary type="html">&lt;p&gt;Mtoompuu: /* ALLIKFAILID */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Kohviku menüüsüsteem==&lt;br /&gt;
===Projekt===&lt;br /&gt;
Kohvikute (esialgu ainult IT-Kohviku) menüüsüsteem, mis on jälgitav mobiilseadmetelt. Lisaväärtusena võimaldab anda pakutavale hinnanguid, otsuse langetamise hõlbustamiseks kommentaar:(see viimane funktsioon kipub vist &amp;quot;veebirakenduseks&amp;quot; muutuma)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Sihtplatvormid:&lt;br /&gt;
Windows Mobile, iOS, Android(kui leiame vabatahtlikud testijad)&lt;br /&gt;
&lt;br /&gt;
===Taustinfo===&lt;br /&gt;
Praegune IT-Kohviku menüü on käsitsi täidetav valge tahvel. Projekti eesmärgiks on parendada IT-Kohviku menüüsüsteemi ja teha see veebi kaudu kättesaadavaks, nii, et menüüsse saab lisada ka karniiri valiku. Standardmenüü puhul saab menüüs olla ka illustreeriv foto. Hetkemenüü ning hinnad ja lahtioleku ajad on samuti jälgitavad võrguühendust eviva mobiilseadme ekraanilt, hõlbustades sellega valikute tegemist.&lt;br /&gt;
&lt;br /&gt;
===Liikmed===&lt;br /&gt;
* Mailis Toompuu&lt;br /&gt;
* Henri Kroosmann&lt;br /&gt;
* Heiki Tamm&lt;br /&gt;
&lt;br /&gt;
==Sisu==&lt;br /&gt;
&lt;br /&gt;
===XML Data===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;menu&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name1&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;0&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name1&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item1&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item2&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item3&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;0&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;0&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount1&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;0&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;0&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot1&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name2&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;255&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name2&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item4&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item5&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item6&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;255&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;255&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount2&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;255&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;255&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot2&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name3&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;1&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name3&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item7&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item8&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item9&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;1&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;1&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount3&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;1&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;1&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot3&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
&amp;lt;/menu&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===XML Schema===&lt;br /&gt;
&lt;br /&gt;
Ülevaade Schema&#039;st. &amp;lt;br /&amp;gt;&lt;br /&gt;
[[File:XMLSchema_Capture_(optimized).png]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Ning sellele vastav kood.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xs:schema attributeFormDefault=&amp;quot;unqualified&amp;quot; elementFormDefault=&amp;quot;qualified&amp;quot; xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xs:element name=&amp;quot;menu&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;product&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;type&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;id&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;extras&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence minOccurs=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;item&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;price&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence minOccurs=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;int&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;frac&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element minOccurs=&amp;quot;0&amp;quot; name=&amp;quot;discount&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;vote&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;pos&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;neg&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;screenshot&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===XML Style===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;html&amp;gt;&lt;br /&gt;
      &amp;lt;head&amp;gt;&lt;br /&gt;
        &amp;lt;style type=&amp;quot;text/css&amp;quot;&amp;gt;&lt;br /&gt;
          html,body{margin:0;padding:0;font-family:Helvetica,Arial,sans-serif;font-size:14px;line-height:19px;color:#2c2c2c;}&lt;br /&gt;
          h1{margin:0;padding:25px 0 0;font-size:22px;line-height:25px;text-align:center;}&lt;br /&gt;
          h2{margin:0;padding:5px;font-size:16px;line-height:21px}&lt;br /&gt;
          span.discount{padding:0 0 0 5px;color:red;}&lt;br /&gt;
          table{margin:20px auto;padding:0;}&lt;br /&gt;
          th,td{padding:5px;border:1px solid #2c2c2c;vertical-align:top;text-align:left}&lt;br /&gt;
          th{font-weight:bold;background-color:#eee;}&lt;br /&gt;
          ul{margin:0;padding:0;list-style-type:none;}&lt;br /&gt;
        &amp;lt;/style&amp;gt;&lt;br /&gt;
      &amp;lt;/head&amp;gt;&lt;br /&gt;
      &amp;lt;body&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;Menüü&amp;lt;/h1&amp;gt;&lt;br /&gt;
        &amp;lt;table width=&amp;quot;800&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;200&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;100&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col witdh=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;150&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;tr&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Nimetus&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Lisandid&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Tüüp&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Hind&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Hinne / Hindajaid&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Pilt&amp;lt;/th&amp;gt;&lt;br /&gt;
          &amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
          &amp;lt;xsl:for-each select=&amp;quot;menu/product&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:sort select=&amp;quot;type/id&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:sort select=&amp;quot;name&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;th&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;name&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/th&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;extras/node()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;ul&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:for-each select=&amp;quot;extras/item&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;li&amp;gt;&lt;br /&gt;
                          &amp;lt;xsl:value-of select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;/li&amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
                    &amp;lt;/ul&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;td&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;type/name&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;price/node()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    €&amp;lt;xsl:value-of select=&amp;quot;price/int&amp;quot;/&amp;gt;.&amp;lt;xsl:value-of select=&amp;quot;price/frac&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:if test=&amp;quot;price/discount/text()&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;span class=&amp;quot;discount&amp;quot;&amp;gt;&lt;br /&gt;
                        (-&amp;lt;xsl:value-of select=&amp;quot;price/discount&amp;quot;/&amp;gt;%)&lt;br /&gt;
                      &amp;lt;/span&amp;gt;&lt;br /&gt;
                    &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:variable name=&amp;quot;p&amp;quot; select=&amp;quot;vote/pos&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:variable name=&amp;quot;n&amp;quot; select=&amp;quot;vote/neg&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;td&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$p - $n&amp;quot;/&amp;gt; / &amp;lt;xsl:value-of select=&amp;quot;$p + $n&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;screenshot/text()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;img src=&amp;quot;{screenshot}&amp;quot; alt=&amp;quot;&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;img src=&amp;quot;screenshots/default.png&amp;quot; alt=&amp;quot;No image&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
      &amp;lt;/body&amp;gt;&lt;br /&gt;
    &amp;lt;/html&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
Sisu ja stiilifaili koostöö http://henri.kroosmann.ee/kool/xml/index.xml &amp;lt;!--[http://henri.kroosmann.ee/kool/xml/index.xml]--&amp;gt;&lt;br /&gt;
==VEEBITEENUSED==&lt;br /&gt;
&lt;br /&gt;
===8. aprill===&lt;br /&gt;
Otsustame teha teenused kõikide kohvikute menüüde kohta.&lt;br /&gt;
&lt;br /&gt;
===11.-12. aprill===&lt;br /&gt;
Henri koostab tabelite loogika&lt;br /&gt;
&lt;br /&gt;
===13. aprill===&lt;br /&gt;
Mailis otsustab veebiteenused teha asmx-is [webmethod]-itega&lt;br /&gt;
===14. aprill===&lt;br /&gt;
Mailis hakkab veebiteenuseid tegema&lt;br /&gt;
===17. aprill===&lt;br /&gt;
Veebiteenused on valmis:&lt;br /&gt;
&lt;br /&gt;
*AnnaJoogiliikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaJoogitabelirida_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*AnnaJookideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaK6igiKohvikuteAndmeteNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyyIDed_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyyRida_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyydeNimekiri_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaMenyyLiikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaMenyydeNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaPromillideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToiduliikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToitudeNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToitutabelirida_toiduIDjargi &lt;br /&gt;
&lt;br /&gt;
*AnnaYheKohvikuAndmed_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*KustutaJookMenyyst &lt;br /&gt;
&lt;br /&gt;
*KustutaMenyy &lt;br /&gt;
&lt;br /&gt;
*KustutaKohvik &lt;br /&gt;
&lt;br /&gt;
*KustutaToitMenyyst &lt;br /&gt;
&lt;br /&gt;
*KysiYheKohvikuYheMenyyToitudeIDeed_menyyIDjargi &lt;br /&gt;
&lt;br /&gt;
*LisaJoogiLiik &lt;br /&gt;
&lt;br /&gt;
*LisaMenyyLiik &lt;br /&gt;
&lt;br /&gt;
*LisaPromill &lt;br /&gt;
&lt;br /&gt;
*LisaToiduLiik &lt;br /&gt;
&lt;br /&gt;
*SecurityAuthenticateUser &lt;br /&gt;
&lt;br /&gt;
*TOITJOOKmenyysRida_menyyIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedJoogileMenyys &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedKohvikule &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedToiduleMenyys &lt;br /&gt;
&lt;br /&gt;
*annaJoogiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiKIRJELDUS_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiKOMM_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiID_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiNIMI_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKasOnTaimeT_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKasutajaNIMI_Guidjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuLahtiolekuAjad_kohvikuIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuTeated &lt;br /&gt;
&lt;br /&gt;
*annaLinnaID_LinnaNimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaLinnaNIMI_LinnaIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaLinnad_maakonnaNIMEjargi &lt;br /&gt;
&lt;br /&gt;
*annaMaakonnaID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaMenyyLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaMenyyLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaPromill_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaPromilliID_promilliNrJargi &lt;br /&gt;
&lt;br /&gt;
*annaPromilliNR_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduKIRJELDUS_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduKOMMENTAAR_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiNIMETUS_toiduIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaYheKohvikuMenyyd_kohvikuNIMEjargi &lt;br /&gt;
&lt;br /&gt;
*autendiKasutajaParooliJargi &lt;br /&gt;
&lt;br /&gt;
*k6igiKohvikuteMenyyd &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusJoogiKohta &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusKohvikuKohta &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusToiduKohta &lt;br /&gt;
&lt;br /&gt;
*lisaJookMenyysse &lt;br /&gt;
&lt;br /&gt;
*lisaToitMenyysse &lt;br /&gt;
&lt;br /&gt;
*lisaUusJook &lt;br /&gt;
&lt;br /&gt;
*lisaUusKohvik &lt;br /&gt;
&lt;br /&gt;
*lisaUusLahtiolekuAeg &lt;br /&gt;
&lt;br /&gt;
*lisaUusMenyy &lt;br /&gt;
&lt;br /&gt;
*lisaUusTeadaanne &lt;br /&gt;
&lt;br /&gt;
*lisaUusToit &lt;br /&gt;
&lt;br /&gt;
*nadalapaevaID_paevaNimetuseJargi &lt;br /&gt;
&lt;br /&gt;
*nadalapaevaNIMETUS_paevaIDjargi&lt;br /&gt;
&lt;br /&gt;
*Registreeru&lt;br /&gt;
&lt;br /&gt;
*LogiSisseTavakasutajana&lt;br /&gt;
&lt;br /&gt;
*LogiSisseKohvikuna&lt;br /&gt;
&lt;br /&gt;
===22.aprill===&lt;br /&gt;
Toimus koosolek&lt;br /&gt;
*Henri lubas meetodite turvamise teha.&lt;br /&gt;
*Heiki lubas statistika teha meetodite kohta.&lt;br /&gt;
&lt;br /&gt;
===Allikfail===&lt;br /&gt;
Allikfail: http://www.p2ike.com/CSharp/KohvikudVeebiteenus.rar&lt;br /&gt;
&lt;br /&gt;
Meetod &#039;k6igiKohvikuteMenyyd&#039; kuvab sellise xml struktuuri: http://www.p2ike.com/CSharp/k6igiKohvikuteMenyyd.xml&lt;br /&gt;
&lt;br /&gt;
Toidud ja joogid sorteeritakse liikide kaupa.&lt;br /&gt;
&lt;br /&gt;
===Andmetabelid===&lt;br /&gt;
[[File:andmetabelid.jpg|777px|thumb|left|andmemudel]]&lt;br /&gt;
===Statistika===&lt;br /&gt;
 using System;&lt;br /&gt;
using System.Web.Services;&lt;br /&gt;
using System.Web.Services.Protocols;&lt;br /&gt;
using System.IO;&lt;br /&gt;
using System.Net;&lt;br /&gt;
 &lt;br /&gt;
// Define a SOAP Extension that traces the SOAP request and SOAP&lt;br /&gt;
// response for the XML Web service method the SOAP extension is&lt;br /&gt;
// applied to. &lt;br /&gt;
 &lt;br /&gt;
namespace WebASPKohvikud&lt;br /&gt;
{&lt;br /&gt;
    public class TraceExtension : SoapExtension&lt;br /&gt;
    {&lt;br /&gt;
        Stream oldStream;&lt;br /&gt;
        Stream newStream;&lt;br /&gt;
        string filename;&lt;br /&gt;
 &lt;br /&gt;
        // Save the Stream representing the SOAP request or SOAP response into&lt;br /&gt;
        // a local memory buffer.&lt;br /&gt;
        public override Stream ChainStream(Stream stream)&lt;br /&gt;
        {&lt;br /&gt;
            oldStream = stream;&lt;br /&gt;
            newStream = new MemoryStream();&lt;br /&gt;
            return newStream;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        // When the SOAP extension is accessed for the first time, the XML Web&lt;br /&gt;
        // service method it is applied to is accessed to store the file&lt;br /&gt;
        // name passed in, using the corresponding SoapExtensionAttribute.	&lt;br /&gt;
        public override object GetInitializer(LogicalMethodInfo methodInfo, SoapExtensionAttribute attribute)&lt;br /&gt;
        {&lt;br /&gt;
            return ((TraceExtensionAttribute)attribute).Filename;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        // The SOAP extension was configured to run using a configuration file&lt;br /&gt;
        // instead of an attribute applied to a specific XML Web service&lt;br /&gt;
        // method.&lt;br /&gt;
        public override object GetInitializer(Type WebServiceType)&lt;br /&gt;
        {&lt;br /&gt;
            // Return a file name to log the trace information to, based on the&lt;br /&gt;
            // type.&lt;br /&gt;
            return &amp;quot;C:\\&amp;quot; + WebServiceType.FullName + &amp;quot;.log&amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        // Receive the file name stored by GetInitializer and store it in a&lt;br /&gt;
        // member variable for this specific instance.&lt;br /&gt;
        public override void Initialize(object initializer)&lt;br /&gt;
        {&lt;br /&gt;
            filename = (string)initializer;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        //  If the SoapMessageStage is such that the SoapRequest or&lt;br /&gt;
        //  SoapResponse is still in the SOAP format to be sent or received,&lt;br /&gt;
        //  save it out to a file.&lt;br /&gt;
        public override void ProcessMessage(SoapMessage message)&lt;br /&gt;
        {&lt;br /&gt;
            switch (message.Stage)&lt;br /&gt;
            {&lt;br /&gt;
                case SoapMessageStage.BeforeSerialize:&lt;br /&gt;
                    break;&lt;br /&gt;
                case SoapMessageStage.AfterSerialize:&lt;br /&gt;
                    WriteOutput(message);&lt;br /&gt;
                    break;&lt;br /&gt;
                case SoapMessageStage.BeforeDeserialize:&lt;br /&gt;
                    WriteInput(message);&lt;br /&gt;
                    break;&lt;br /&gt;
                case SoapMessageStage.AfterDeserialize:&lt;br /&gt;
                    break;&lt;br /&gt;
                default:&lt;br /&gt;
                    throw new Exception(&amp;quot;invalid stage&amp;quot;);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        public void WriteOutput(SoapMessage message)&lt;br /&gt;
        {&lt;br /&gt;
            newStream.Position = 0;&lt;br /&gt;
            FileStream fs = new FileStream(filename, FileMode.Append,&lt;br /&gt;
                FileAccess.Write);&lt;br /&gt;
            StreamWriter w = new StreamWriter(fs);&lt;br /&gt;
 &lt;br /&gt;
            string soapString = (message is SoapServerMessage) ? &amp;quot;SoapResponse&amp;quot; : &amp;quot;SoapRequest&amp;quot;;&lt;br /&gt;
            w.WriteLine(&amp;quot;-----&amp;quot; + soapString + &amp;quot; at &amp;quot; + DateTime.Now);&lt;br /&gt;
            w.Flush();&lt;br /&gt;
            Copy(newStream, fs);&lt;br /&gt;
            w.Close();&lt;br /&gt;
            newStream.Position = 0;&lt;br /&gt;
            Copy(newStream, oldStream);&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        public void WriteInput(SoapMessage message)&lt;br /&gt;
        {&lt;br /&gt;
            Copy(oldStream, newStream);&lt;br /&gt;
            FileStream fs = new FileStream(filename, FileMode.Append,&lt;br /&gt;
                FileAccess.Write);&lt;br /&gt;
            StreamWriter w = new StreamWriter(fs);&lt;br /&gt;
 &lt;br /&gt;
            string soapString = (message is SoapServerMessage) ?&lt;br /&gt;
                &amp;quot;SoapRequest&amp;quot; : &amp;quot;SoapResponse&amp;quot;;&lt;br /&gt;
            w.WriteLine(&amp;quot;-----&amp;quot; + soapString +&lt;br /&gt;
                &amp;quot; at &amp;quot; + DateTime.Now);&lt;br /&gt;
            w.Flush();&lt;br /&gt;
            newStream.Position = 0;&lt;br /&gt;
            Copy(newStream, fs);&lt;br /&gt;
            w.Close();&lt;br /&gt;
            newStream.Position = 0;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        void Copy(Stream from, Stream to)&lt;br /&gt;
        {&lt;br /&gt;
            TextReader reader = new StreamReader(from);&lt;br /&gt;
            TextWriter writer = new StreamWriter(to);&lt;br /&gt;
            writer.WriteLine(reader.ReadToEnd());&lt;br /&gt;
            writer.Flush();&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    // Create a SoapExtensionAttribute for the SOAP Extension that can be&lt;br /&gt;
    // applied to an XML Web service method.&lt;br /&gt;
    [AttributeUsage(AttributeTargets.Method)]&lt;br /&gt;
    public class TraceExtensionAttribute : SoapExtensionAttribute&lt;br /&gt;
    {&lt;br /&gt;
 &lt;br /&gt;
        private string filename = @&amp;quot;C:\Users\Heiki Tamm\Documents\Õppematerjalid_2011\WebASPKohvikud\WebASPKohvikud\SoapLog.txt&amp;quot;;&lt;br /&gt;
        private int priority;&lt;br /&gt;
 &lt;br /&gt;
        public override Type ExtensionType&lt;br /&gt;
        {&lt;br /&gt;
            get { return typeof(TraceExtension); }&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        public override int Priority&lt;br /&gt;
        {&lt;br /&gt;
            get { return priority; }&lt;br /&gt;
            set { priority = value; }&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        public string Filename&lt;br /&gt;
        {&lt;br /&gt;
            get&lt;br /&gt;
            {&lt;br /&gt;
                return filename;&lt;br /&gt;
            }&lt;br /&gt;
            set&lt;br /&gt;
            {&lt;br /&gt;
                filename = value;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
// todo: &lt;br /&gt;
// from each soap header record query content &lt;br /&gt;
// (containing client, date, time, query ) into a DB&lt;br /&gt;
// for later reference for conducting any kind of &lt;br /&gt;
// applicable statistics and then generate stats :D !&lt;br /&gt;
// Proovin selliselt, et on lihtne statistika tabel:&lt;br /&gt;
// 1) meetod // välja kutsutava meetodi nimi&lt;br /&gt;
// 2) kuupäev // timestamp&lt;br /&gt;
// 3) callide arv // meetodi väljakutsimiste hulk&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==KLIENTRAKENDUS==&lt;br /&gt;
&lt;br /&gt;
===23. mai===&lt;br /&gt;
Mailis tegi kohvikute kuvamise ASP.NET rakenduse.&lt;br /&gt;
Kohvikud kuvatakse TreeView&#039;s &lt;br /&gt;
menüüde ja andmetega ning arvamustega kohvikute ja toitude ja jookide kohta.&lt;br /&gt;
&lt;br /&gt;
Samal lehel on kohvikuhuvilistele registreerimisvõimalus&lt;br /&gt;
ja sisselogimine.&lt;br /&gt;
&lt;br /&gt;
Kui on sisselogitud, saab lisada arvamusi.&lt;br /&gt;
Arvamuste lisamine on Ajax Extended Toolkiti controli&#039;ga &#039;Allways Visible ...&#039; tehtud, &lt;br /&gt;
&lt;br /&gt;
nii et mööda pikka TreeViewd alla kerides saab &lt;br /&gt;
lisada arvamust ilma ülesserva tagasi minemata.&lt;br /&gt;
&lt;br /&gt;
Arvamused ilmuvad kohe peale lisamist TreeView&#039;sse.&lt;br /&gt;
&lt;br /&gt;
TreeView&#039;sse tulevad andmed xml-failist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pooleli on veel kohvikute-poolne rakendus, kus omanik saab lisada ja kustutada kohvikuid, menüüsid ja toite-jooke, lisada teadaandeid.&lt;br /&gt;
&lt;br /&gt;
Pooleli on veel admini-rakendus, kus admin saab kasutajale määrata rolli, mis annab õigused kohviku-rakendusse sisse logida.&lt;br /&gt;
===4. juuni===&lt;br /&gt;
Valmis sai Kohvikute omanikele mõeldud klientrakendus.&lt;br /&gt;
Tehtud ASP.NET&#039;i veebirakendusena.&lt;br /&gt;
Seal on sisselogimine, registreerumine ja adminile kirja saatmine kohvikuomaniku õiguste saamiseks.&lt;br /&gt;
Peale sisselogimist saab &lt;br /&gt;
*lisada ja kustutada kohvikut&lt;br /&gt;
*lisada kohvikule lahtiolekuaegu nädalapäevade kaupa ja neid kustutada&lt;br /&gt;
*lisada kohvikule teadaandeid ja neid kustutada&lt;br /&gt;
*lisada kohvikule menüüsid ja neid kustutada: menüül on nimetus, liik, nädalapäev,  lisamiskuupäev jne. &lt;br /&gt;
*lisada menüüsse toite ja neid kustutada. Toitudel on nimetus, liik, hind, kas-sobib-taimetoitlasele, kogus grammides, suurus, lisamise kuupäev. Eraldi listides on kõikide kohvikute lisatud toidud ja selle kohviku lisatud toidud. Toitu valides rippmenüüst ilmuvad selle toidu andmed, et näha täpsemalt, mis toiduga on tegu. Ka on näha parajasti toitu lisatavasse menüüsse varem lisatud toidud.&lt;br /&gt;
*jookidele on sama, va. taimetoidu asemel on alkohoolse joogi korral promillide suurus.&lt;br /&gt;
&lt;br /&gt;
Lisada saab textbokside kaudu, nimekirjadest valimine on tehtud dropdown-listidena.&lt;br /&gt;
Kuvamised on tehtud GridViewdena, mis saavad andmeid meetoditest, mitte otse andmebaasitabelist.&lt;br /&gt;
&lt;br /&gt;
===5. juuni===&lt;br /&gt;
Valmis sai Kohvikute administraatori  ASP.NET-veebirakendus.&lt;br /&gt;
Admin saab registreeruda ja sisse logida.&lt;br /&gt;
Kui admin on sisse loginud, saab ta vaadata statistikat. Statistika-tabeleid on eraldi selle kohta, kui palju on mingit meetodit kasutatud ja selle kohta,kes millal mingit meetodit kasutas.&lt;br /&gt;
Sisseloginuna saab vaadata saabunud taotlusi ja nende järgi kasutajatele rolle määrata.&lt;br /&gt;
&lt;br /&gt;
Tabelid saavad andmeid otse andmebaasist, GridView&#039;dena, neid saab sorteerida tulpade&lt;br /&gt;
pealkirjadel klikkides.&lt;br /&gt;
&lt;br /&gt;
===ALLIKFAILID===&lt;br /&gt;
&#039;http://www.p2ike.com/CSharp/Kohvik.rar&#039;&lt;br /&gt;
http://www.p2ike.com/CSharp/KohvikuKliendid.rar&lt;br /&gt;
http://www.p2ike.com/CSharp/KohvikuAdministraator.rar&lt;br /&gt;
&lt;br /&gt;
==KOKKUVÕTE==&lt;br /&gt;
Oli soov teha ideaalset teenust ja rakendusi, millega on mugav lisada ja näha kohvikute menüüsid.&lt;br /&gt;
Veebiteenuseid sai veel pidevalt täiendatud rakenduste tegemise käigus, neid tuli kokku 100 ringis.&lt;br /&gt;
&lt;br /&gt;
Kõik kolm rakendust sai tehtud ASP.NET&#039;i veebirakendustena, et midagi juurde õppida.&lt;br /&gt;
Ka on veeb kõigile kättesaadav, ei pea eraldi programmi hakkama alla laadima.&lt;br /&gt;
&lt;br /&gt;
Asp.NET&#039;i tundmaõppimine oli arvatust aeganõudvam ja kõik ei saanud ideaalne: kohvikutel on laius-ja pikkuskraadid, edaspidi võiks kohvikülastajale mõeldud rakenduses kaardil näha olla, kus mõni kohvik asub. Ka ei osutunud treeview kõigi kohvikute andmete korraga kuvamisel, eriti kui on palju kohvikuid, kõige paremaks valikuks.&lt;br /&gt;
&lt;br /&gt;
Kõige paremini õnnestus kohvikute omanikele mõeldud rakendus.&lt;br /&gt;
&lt;br /&gt;
==PUNKTID== &lt;br /&gt;
*Henri: 10 -  xml-osa ja veebiteenuste tabelite loogika.&lt;br /&gt;
*Heiki: 3 - wiki sissejuhatus.&lt;br /&gt;
*Mailis: 47 - veebiteenuste programmeerimine ja klientrakendused.&lt;/div&gt;</summary>
		<author><name>Mtoompuu</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Meeskond_%22H2%22&amp;diff=33793</id>
		<title>Meeskond &quot;H2&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Meeskond_%22H2%22&amp;diff=33793"/>
		<updated>2011-06-05T23:13:42Z</updated>

		<summary type="html">&lt;p&gt;Mtoompuu: /* ALLIKFAILID */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Kohviku menüüsüsteem==&lt;br /&gt;
===Projekt===&lt;br /&gt;
Kohvikute (esialgu ainult IT-Kohviku) menüüsüsteem, mis on jälgitav mobiilseadmetelt. Lisaväärtusena võimaldab anda pakutavale hinnanguid, otsuse langetamise hõlbustamiseks kommentaar:(see viimane funktsioon kipub vist &amp;quot;veebirakenduseks&amp;quot; muutuma)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Sihtplatvormid:&lt;br /&gt;
Windows Mobile, iOS, Android(kui leiame vabatahtlikud testijad)&lt;br /&gt;
&lt;br /&gt;
===Taustinfo===&lt;br /&gt;
Praegune IT-Kohviku menüü on käsitsi täidetav valge tahvel. Projekti eesmärgiks on parendada IT-Kohviku menüüsüsteemi ja teha see veebi kaudu kättesaadavaks, nii, et menüüsse saab lisada ka karniiri valiku. Standardmenüü puhul saab menüüs olla ka illustreeriv foto. Hetkemenüü ning hinnad ja lahtioleku ajad on samuti jälgitavad võrguühendust eviva mobiilseadme ekraanilt, hõlbustades sellega valikute tegemist.&lt;br /&gt;
&lt;br /&gt;
===Liikmed===&lt;br /&gt;
* Mailis Toompuu&lt;br /&gt;
* Henri Kroosmann&lt;br /&gt;
* Heiki Tamm&lt;br /&gt;
&lt;br /&gt;
==Sisu==&lt;br /&gt;
&lt;br /&gt;
===XML Data===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;menu&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name1&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;0&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name1&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item1&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item2&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item3&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;0&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;0&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount1&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;0&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;0&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot1&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name2&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;255&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name2&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item4&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item5&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item6&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;255&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;255&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount2&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;255&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;255&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot2&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name3&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;1&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name3&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item7&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item8&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item9&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;1&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;1&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount3&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;1&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;1&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot3&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
&amp;lt;/menu&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===XML Schema===&lt;br /&gt;
&lt;br /&gt;
Ülevaade Schema&#039;st. &amp;lt;br /&amp;gt;&lt;br /&gt;
[[File:XMLSchema_Capture_(optimized).png]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Ning sellele vastav kood.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xs:schema attributeFormDefault=&amp;quot;unqualified&amp;quot; elementFormDefault=&amp;quot;qualified&amp;quot; xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xs:element name=&amp;quot;menu&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;product&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;type&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;id&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;extras&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence minOccurs=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;item&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;price&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence minOccurs=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;int&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;frac&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element minOccurs=&amp;quot;0&amp;quot; name=&amp;quot;discount&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;vote&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;pos&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;neg&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;screenshot&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===XML Style===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;html&amp;gt;&lt;br /&gt;
      &amp;lt;head&amp;gt;&lt;br /&gt;
        &amp;lt;style type=&amp;quot;text/css&amp;quot;&amp;gt;&lt;br /&gt;
          html,body{margin:0;padding:0;font-family:Helvetica,Arial,sans-serif;font-size:14px;line-height:19px;color:#2c2c2c;}&lt;br /&gt;
          h1{margin:0;padding:25px 0 0;font-size:22px;line-height:25px;text-align:center;}&lt;br /&gt;
          h2{margin:0;padding:5px;font-size:16px;line-height:21px}&lt;br /&gt;
          span.discount{padding:0 0 0 5px;color:red;}&lt;br /&gt;
          table{margin:20px auto;padding:0;}&lt;br /&gt;
          th,td{padding:5px;border:1px solid #2c2c2c;vertical-align:top;text-align:left}&lt;br /&gt;
          th{font-weight:bold;background-color:#eee;}&lt;br /&gt;
          ul{margin:0;padding:0;list-style-type:none;}&lt;br /&gt;
        &amp;lt;/style&amp;gt;&lt;br /&gt;
      &amp;lt;/head&amp;gt;&lt;br /&gt;
      &amp;lt;body&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;Menüü&amp;lt;/h1&amp;gt;&lt;br /&gt;
        &amp;lt;table width=&amp;quot;800&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;200&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;100&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col witdh=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;150&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;tr&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Nimetus&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Lisandid&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Tüüp&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Hind&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Hinne / Hindajaid&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Pilt&amp;lt;/th&amp;gt;&lt;br /&gt;
          &amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
          &amp;lt;xsl:for-each select=&amp;quot;menu/product&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:sort select=&amp;quot;type/id&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:sort select=&amp;quot;name&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;th&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;name&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/th&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;extras/node()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;ul&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:for-each select=&amp;quot;extras/item&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;li&amp;gt;&lt;br /&gt;
                          &amp;lt;xsl:value-of select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;/li&amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
                    &amp;lt;/ul&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;td&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;type/name&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;price/node()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    €&amp;lt;xsl:value-of select=&amp;quot;price/int&amp;quot;/&amp;gt;.&amp;lt;xsl:value-of select=&amp;quot;price/frac&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:if test=&amp;quot;price/discount/text()&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;span class=&amp;quot;discount&amp;quot;&amp;gt;&lt;br /&gt;
                        (-&amp;lt;xsl:value-of select=&amp;quot;price/discount&amp;quot;/&amp;gt;%)&lt;br /&gt;
                      &amp;lt;/span&amp;gt;&lt;br /&gt;
                    &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:variable name=&amp;quot;p&amp;quot; select=&amp;quot;vote/pos&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:variable name=&amp;quot;n&amp;quot; select=&amp;quot;vote/neg&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;td&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$p - $n&amp;quot;/&amp;gt; / &amp;lt;xsl:value-of select=&amp;quot;$p + $n&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;screenshot/text()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;img src=&amp;quot;{screenshot}&amp;quot; alt=&amp;quot;&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;img src=&amp;quot;screenshots/default.png&amp;quot; alt=&amp;quot;No image&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
      &amp;lt;/body&amp;gt;&lt;br /&gt;
    &amp;lt;/html&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
Sisu ja stiilifaili koostöö http://henri.kroosmann.ee/kool/xml/index.xml &amp;lt;!--[http://henri.kroosmann.ee/kool/xml/index.xml]--&amp;gt;&lt;br /&gt;
==VEEBITEENUSED==&lt;br /&gt;
&lt;br /&gt;
===8. aprill===&lt;br /&gt;
Otsustame teha teenused kõikide kohvikute menüüde kohta.&lt;br /&gt;
&lt;br /&gt;
===11.-12. aprill===&lt;br /&gt;
Henri koostab tabelite loogika&lt;br /&gt;
&lt;br /&gt;
===13. aprill===&lt;br /&gt;
Mailis otsustab veebiteenused teha asmx-is [webmethod]-itega&lt;br /&gt;
===14. aprill===&lt;br /&gt;
Mailis hakkab veebiteenuseid tegema&lt;br /&gt;
===17. aprill===&lt;br /&gt;
Veebiteenused on valmis:&lt;br /&gt;
&lt;br /&gt;
*AnnaJoogiliikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaJoogitabelirida_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*AnnaJookideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaK6igiKohvikuteAndmeteNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyyIDed_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyyRida_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyydeNimekiri_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaMenyyLiikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaMenyydeNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaPromillideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToiduliikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToitudeNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToitutabelirida_toiduIDjargi &lt;br /&gt;
&lt;br /&gt;
*AnnaYheKohvikuAndmed_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*KustutaJookMenyyst &lt;br /&gt;
&lt;br /&gt;
*KustutaMenyy &lt;br /&gt;
&lt;br /&gt;
*KustutaKohvik &lt;br /&gt;
&lt;br /&gt;
*KustutaToitMenyyst &lt;br /&gt;
&lt;br /&gt;
*KysiYheKohvikuYheMenyyToitudeIDeed_menyyIDjargi &lt;br /&gt;
&lt;br /&gt;
*LisaJoogiLiik &lt;br /&gt;
&lt;br /&gt;
*LisaMenyyLiik &lt;br /&gt;
&lt;br /&gt;
*LisaPromill &lt;br /&gt;
&lt;br /&gt;
*LisaToiduLiik &lt;br /&gt;
&lt;br /&gt;
*SecurityAuthenticateUser &lt;br /&gt;
&lt;br /&gt;
*TOITJOOKmenyysRida_menyyIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedJoogileMenyys &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedKohvikule &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedToiduleMenyys &lt;br /&gt;
&lt;br /&gt;
*annaJoogiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiKIRJELDUS_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiKOMM_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiID_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiNIMI_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKasOnTaimeT_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKasutajaNIMI_Guidjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuLahtiolekuAjad_kohvikuIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuTeated &lt;br /&gt;
&lt;br /&gt;
*annaLinnaID_LinnaNimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaLinnaNIMI_LinnaIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaLinnad_maakonnaNIMEjargi &lt;br /&gt;
&lt;br /&gt;
*annaMaakonnaID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaMenyyLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaMenyyLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaPromill_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaPromilliID_promilliNrJargi &lt;br /&gt;
&lt;br /&gt;
*annaPromilliNR_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduKIRJELDUS_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduKOMMENTAAR_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiNIMETUS_toiduIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaYheKohvikuMenyyd_kohvikuNIMEjargi &lt;br /&gt;
&lt;br /&gt;
*autendiKasutajaParooliJargi &lt;br /&gt;
&lt;br /&gt;
*k6igiKohvikuteMenyyd &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusJoogiKohta &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusKohvikuKohta &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusToiduKohta &lt;br /&gt;
&lt;br /&gt;
*lisaJookMenyysse &lt;br /&gt;
&lt;br /&gt;
*lisaToitMenyysse &lt;br /&gt;
&lt;br /&gt;
*lisaUusJook &lt;br /&gt;
&lt;br /&gt;
*lisaUusKohvik &lt;br /&gt;
&lt;br /&gt;
*lisaUusLahtiolekuAeg &lt;br /&gt;
&lt;br /&gt;
*lisaUusMenyy &lt;br /&gt;
&lt;br /&gt;
*lisaUusTeadaanne &lt;br /&gt;
&lt;br /&gt;
*lisaUusToit &lt;br /&gt;
&lt;br /&gt;
*nadalapaevaID_paevaNimetuseJargi &lt;br /&gt;
&lt;br /&gt;
*nadalapaevaNIMETUS_paevaIDjargi&lt;br /&gt;
&lt;br /&gt;
*Registreeru&lt;br /&gt;
&lt;br /&gt;
*LogiSisseTavakasutajana&lt;br /&gt;
&lt;br /&gt;
*LogiSisseKohvikuna&lt;br /&gt;
&lt;br /&gt;
===22.aprill===&lt;br /&gt;
Toimus koosolek&lt;br /&gt;
*Henri lubas meetodite turvamise teha.&lt;br /&gt;
*Heiki lubas statistika teha meetodite kohta.&lt;br /&gt;
&lt;br /&gt;
===Allikfail===&lt;br /&gt;
Allikfail: http://www.p2ike.com/CSharp/KohvikudVeebiteenus.rar&lt;br /&gt;
&lt;br /&gt;
Meetod &#039;k6igiKohvikuteMenyyd&#039; kuvab sellise xml struktuuri: http://www.p2ike.com/CSharp/k6igiKohvikuteMenyyd.xml&lt;br /&gt;
&lt;br /&gt;
Toidud ja joogid sorteeritakse liikide kaupa.&lt;br /&gt;
&lt;br /&gt;
===Andmetabelid===&lt;br /&gt;
[[File:andmetabelid.jpg|777px|thumb|left|andmemudel]]&lt;br /&gt;
===Statistika===&lt;br /&gt;
 using System;&lt;br /&gt;
using System.Web.Services;&lt;br /&gt;
using System.Web.Services.Protocols;&lt;br /&gt;
using System.IO;&lt;br /&gt;
using System.Net;&lt;br /&gt;
 &lt;br /&gt;
// Define a SOAP Extension that traces the SOAP request and SOAP&lt;br /&gt;
// response for the XML Web service method the SOAP extension is&lt;br /&gt;
// applied to. &lt;br /&gt;
 &lt;br /&gt;
namespace WebASPKohvikud&lt;br /&gt;
{&lt;br /&gt;
    public class TraceExtension : SoapExtension&lt;br /&gt;
    {&lt;br /&gt;
        Stream oldStream;&lt;br /&gt;
        Stream newStream;&lt;br /&gt;
        string filename;&lt;br /&gt;
 &lt;br /&gt;
        // Save the Stream representing the SOAP request or SOAP response into&lt;br /&gt;
        // a local memory buffer.&lt;br /&gt;
        public override Stream ChainStream(Stream stream)&lt;br /&gt;
        {&lt;br /&gt;
            oldStream = stream;&lt;br /&gt;
            newStream = new MemoryStream();&lt;br /&gt;
            return newStream;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        // When the SOAP extension is accessed for the first time, the XML Web&lt;br /&gt;
        // service method it is applied to is accessed to store the file&lt;br /&gt;
        // name passed in, using the corresponding SoapExtensionAttribute.	&lt;br /&gt;
        public override object GetInitializer(LogicalMethodInfo methodInfo, SoapExtensionAttribute attribute)&lt;br /&gt;
        {&lt;br /&gt;
            return ((TraceExtensionAttribute)attribute).Filename;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        // The SOAP extension was configured to run using a configuration file&lt;br /&gt;
        // instead of an attribute applied to a specific XML Web service&lt;br /&gt;
        // method.&lt;br /&gt;
        public override object GetInitializer(Type WebServiceType)&lt;br /&gt;
        {&lt;br /&gt;
            // Return a file name to log the trace information to, based on the&lt;br /&gt;
            // type.&lt;br /&gt;
            return &amp;quot;C:\\&amp;quot; + WebServiceType.FullName + &amp;quot;.log&amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        // Receive the file name stored by GetInitializer and store it in a&lt;br /&gt;
        // member variable for this specific instance.&lt;br /&gt;
        public override void Initialize(object initializer)&lt;br /&gt;
        {&lt;br /&gt;
            filename = (string)initializer;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        //  If the SoapMessageStage is such that the SoapRequest or&lt;br /&gt;
        //  SoapResponse is still in the SOAP format to be sent or received,&lt;br /&gt;
        //  save it out to a file.&lt;br /&gt;
        public override void ProcessMessage(SoapMessage message)&lt;br /&gt;
        {&lt;br /&gt;
            switch (message.Stage)&lt;br /&gt;
            {&lt;br /&gt;
                case SoapMessageStage.BeforeSerialize:&lt;br /&gt;
                    break;&lt;br /&gt;
                case SoapMessageStage.AfterSerialize:&lt;br /&gt;
                    WriteOutput(message);&lt;br /&gt;
                    break;&lt;br /&gt;
                case SoapMessageStage.BeforeDeserialize:&lt;br /&gt;
                    WriteInput(message);&lt;br /&gt;
                    break;&lt;br /&gt;
                case SoapMessageStage.AfterDeserialize:&lt;br /&gt;
                    break;&lt;br /&gt;
                default:&lt;br /&gt;
                    throw new Exception(&amp;quot;invalid stage&amp;quot;);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        public void WriteOutput(SoapMessage message)&lt;br /&gt;
        {&lt;br /&gt;
            newStream.Position = 0;&lt;br /&gt;
            FileStream fs = new FileStream(filename, FileMode.Append,&lt;br /&gt;
                FileAccess.Write);&lt;br /&gt;
            StreamWriter w = new StreamWriter(fs);&lt;br /&gt;
 &lt;br /&gt;
            string soapString = (message is SoapServerMessage) ? &amp;quot;SoapResponse&amp;quot; : &amp;quot;SoapRequest&amp;quot;;&lt;br /&gt;
            w.WriteLine(&amp;quot;-----&amp;quot; + soapString + &amp;quot; at &amp;quot; + DateTime.Now);&lt;br /&gt;
            w.Flush();&lt;br /&gt;
            Copy(newStream, fs);&lt;br /&gt;
            w.Close();&lt;br /&gt;
            newStream.Position = 0;&lt;br /&gt;
            Copy(newStream, oldStream);&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        public void WriteInput(SoapMessage message)&lt;br /&gt;
        {&lt;br /&gt;
            Copy(oldStream, newStream);&lt;br /&gt;
            FileStream fs = new FileStream(filename, FileMode.Append,&lt;br /&gt;
                FileAccess.Write);&lt;br /&gt;
            StreamWriter w = new StreamWriter(fs);&lt;br /&gt;
 &lt;br /&gt;
            string soapString = (message is SoapServerMessage) ?&lt;br /&gt;
                &amp;quot;SoapRequest&amp;quot; : &amp;quot;SoapResponse&amp;quot;;&lt;br /&gt;
            w.WriteLine(&amp;quot;-----&amp;quot; + soapString +&lt;br /&gt;
                &amp;quot; at &amp;quot; + DateTime.Now);&lt;br /&gt;
            w.Flush();&lt;br /&gt;
            newStream.Position = 0;&lt;br /&gt;
            Copy(newStream, fs);&lt;br /&gt;
            w.Close();&lt;br /&gt;
            newStream.Position = 0;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        void Copy(Stream from, Stream to)&lt;br /&gt;
        {&lt;br /&gt;
            TextReader reader = new StreamReader(from);&lt;br /&gt;
            TextWriter writer = new StreamWriter(to);&lt;br /&gt;
            writer.WriteLine(reader.ReadToEnd());&lt;br /&gt;
            writer.Flush();&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    // Create a SoapExtensionAttribute for the SOAP Extension that can be&lt;br /&gt;
    // applied to an XML Web service method.&lt;br /&gt;
    [AttributeUsage(AttributeTargets.Method)]&lt;br /&gt;
    public class TraceExtensionAttribute : SoapExtensionAttribute&lt;br /&gt;
    {&lt;br /&gt;
 &lt;br /&gt;
        private string filename = @&amp;quot;C:\Users\Heiki Tamm\Documents\Õppematerjalid_2011\WebASPKohvikud\WebASPKohvikud\SoapLog.txt&amp;quot;;&lt;br /&gt;
        private int priority;&lt;br /&gt;
 &lt;br /&gt;
        public override Type ExtensionType&lt;br /&gt;
        {&lt;br /&gt;
            get { return typeof(TraceExtension); }&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        public override int Priority&lt;br /&gt;
        {&lt;br /&gt;
            get { return priority; }&lt;br /&gt;
            set { priority = value; }&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        public string Filename&lt;br /&gt;
        {&lt;br /&gt;
            get&lt;br /&gt;
            {&lt;br /&gt;
                return filename;&lt;br /&gt;
            }&lt;br /&gt;
            set&lt;br /&gt;
            {&lt;br /&gt;
                filename = value;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
// todo: &lt;br /&gt;
// from each soap header record query content &lt;br /&gt;
// (containing client, date, time, query ) into a DB&lt;br /&gt;
// for later reference for conducting any kind of &lt;br /&gt;
// applicable statistics and then generate stats :D !&lt;br /&gt;
// Proovin selliselt, et on lihtne statistika tabel:&lt;br /&gt;
// 1) meetod // välja kutsutava meetodi nimi&lt;br /&gt;
// 2) kuupäev // timestamp&lt;br /&gt;
// 3) callide arv // meetodi väljakutsimiste hulk&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==KLIENTRAKENDUS==&lt;br /&gt;
&lt;br /&gt;
===23. mai===&lt;br /&gt;
Mailis tegi kohvikute kuvamise ASP.NET rakenduse.&lt;br /&gt;
Kohvikud kuvatakse TreeView&#039;s &lt;br /&gt;
menüüde ja andmetega ning arvamustega kohvikute ja toitude ja jookide kohta.&lt;br /&gt;
&lt;br /&gt;
Samal lehel on kohvikuhuvilistele registreerimisvõimalus&lt;br /&gt;
ja sisselogimine.&lt;br /&gt;
&lt;br /&gt;
Kui on sisselogitud, saab lisada arvamusi.&lt;br /&gt;
Arvamuste lisamine on Ajax Extended Toolkiti controli&#039;ga &#039;Allways Visible ...&#039; tehtud, &lt;br /&gt;
&lt;br /&gt;
nii et mööda pikka TreeViewd alla kerides saab &lt;br /&gt;
lisada arvamust ilma ülesserva tagasi minemata.&lt;br /&gt;
&lt;br /&gt;
Arvamused ilmuvad kohe peale lisamist TreeView&#039;sse.&lt;br /&gt;
&lt;br /&gt;
TreeView&#039;sse tulevad andmed xml-failist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pooleli on veel kohvikute-poolne rakendus, kus omanik saab lisada ja kustutada kohvikuid, menüüsid ja toite-jooke, lisada teadaandeid.&lt;br /&gt;
&lt;br /&gt;
Pooleli on veel admini-rakendus, kus admin saab kasutajale määrata rolli, mis annab õigused kohviku-rakendusse sisse logida.&lt;br /&gt;
===4. juuni===&lt;br /&gt;
Valmis sai Kohvikute omanikele mõeldud klientrakendus.&lt;br /&gt;
Tehtud ASP.NET&#039;i veebirakendusena.&lt;br /&gt;
Seal on sisselogimine, registreerumine ja adminile kirja saatmine kohvikuomaniku õiguste saamiseks.&lt;br /&gt;
Peale sisselogimist saab &lt;br /&gt;
*lisada ja kustutada kohvikut&lt;br /&gt;
*lisada kohvikule lahtiolekuaegu nädalapäevade kaupa ja neid kustutada&lt;br /&gt;
*lisada kohvikule teadaandeid ja neid kustutada&lt;br /&gt;
*lisada kohvikule menüüsid ja neid kustutada: menüül on nimetus, liik, nädalapäev,  lisamiskuupäev jne. &lt;br /&gt;
*lisada menüüsse toite ja neid kustutada. Toitudel on nimetus, liik, hind, kas-sobib-taimetoitlasele, kogus grammides, suurus, lisamise kuupäev. Eraldi listides on kõikide kohvikute lisatud toidud ja selle kohviku lisatud toidud. Toitu valides rippmenüüst ilmuvad selle toidu andmed, et näha täpsemalt, mis toiduga on tegu. Ka on näha parajasti toitu lisatavasse menüüsse varem lisatud toidud.&lt;br /&gt;
*jookidele on sama, va. taimetoidu asemel on alkohoolse joogi korral promillide suurus.&lt;br /&gt;
&lt;br /&gt;
Lisada saab textbokside kaudu, nimekirjadest valimine on tehtud dropdown-listidena.&lt;br /&gt;
Kuvamised on tehtud GridViewdena, mis saavad andmeid meetoditest, mitte otse andmebaasitabelist.&lt;br /&gt;
&lt;br /&gt;
===5. juuni===&lt;br /&gt;
Valmis sai Kohvikute administraatori  ASP.NET-veebirakendus.&lt;br /&gt;
Admin saab registreeruda ja sisse logida.&lt;br /&gt;
Kui admin on sisse loginud, saab ta vaadata statistikat. Statistika-tabeleid on eraldi selle kohta, kui palju on mingit meetodit kasutatud ja selle kohta,kes millal mingit meetodit kasutas.&lt;br /&gt;
Sisseloginuna saab vaadata saabunud taotlusi ja nende järgi kasutajatele rolle määrata.&lt;br /&gt;
&lt;br /&gt;
Tabelid saavad andmeid otse andmebaasist, GridView&#039;dena, neid saab sorteerida tulpade&lt;br /&gt;
pealkirjadel klikkides.&lt;br /&gt;
&lt;br /&gt;
===ALLIKFAILID===&lt;br /&gt;
http://www.p2ike.com/CSharp/Kohvik.rar&lt;br /&gt;
http://www.p2ike.com/CSharp/KohvikuKliendid.rar&lt;br /&gt;
http://www.p2ike.com/CSharp/KohvikuAdministraator.rar&lt;br /&gt;
&lt;br /&gt;
==KOKKUVÕTE==&lt;br /&gt;
Oli soov teha ideaalset teenust ja rakendusi, millega on mugav lisada ja näha kohvikute menüüsid.&lt;br /&gt;
Veebiteenuseid sai veel pidevalt täiendatud rakenduste tegemise käigus, neid tuli kokku 100 ringis.&lt;br /&gt;
&lt;br /&gt;
Kõik kolm rakendust sai tehtud ASP.NET&#039;i veebirakendustena, et midagi juurde õppida.&lt;br /&gt;
Ka on veeb kõigile kättesaadav, ei pea eraldi programmi hakkama alla laadima.&lt;br /&gt;
&lt;br /&gt;
Asp.NET&#039;i tundmaõppimine oli arvatust aeganõudvam ja kõik ei saanud ideaalne: kohvikutel on laius-ja pikkuskraadid, edaspidi võiks kohvikülastajale mõeldud rakenduses kaardil näha olla, kus mõni kohvik asub. Ka ei osutunud treeview kõigi kohvikute andmete korraga kuvamisel, eriti kui on palju kohvikuid, kõige paremaks valikuks.&lt;br /&gt;
&lt;br /&gt;
Kõige paremini õnnestus kohvikute omanikele mõeldud rakendus.&lt;br /&gt;
&lt;br /&gt;
==PUNKTID== &lt;br /&gt;
*Henri: 10 -  xml-osa ja veebiteenuste tabelite loogika.&lt;br /&gt;
*Heiki: 3 - wiki sissejuhatus.&lt;br /&gt;
*Mailis: 47 - veebiteenuste programmeerimine ja klientrakendused.&lt;/div&gt;</summary>
		<author><name>Mtoompuu</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Meeskond_%22H2%22&amp;diff=33792</id>
		<title>Meeskond &quot;H2&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Meeskond_%22H2%22&amp;diff=33792"/>
		<updated>2011-06-05T23:12:09Z</updated>

		<summary type="html">&lt;p&gt;Mtoompuu: /* ALLIKFAILID */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Kohviku menüüsüsteem==&lt;br /&gt;
===Projekt===&lt;br /&gt;
Kohvikute (esialgu ainult IT-Kohviku) menüüsüsteem, mis on jälgitav mobiilseadmetelt. Lisaväärtusena võimaldab anda pakutavale hinnanguid, otsuse langetamise hõlbustamiseks kommentaar:(see viimane funktsioon kipub vist &amp;quot;veebirakenduseks&amp;quot; muutuma)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Sihtplatvormid:&lt;br /&gt;
Windows Mobile, iOS, Android(kui leiame vabatahtlikud testijad)&lt;br /&gt;
&lt;br /&gt;
===Taustinfo===&lt;br /&gt;
Praegune IT-Kohviku menüü on käsitsi täidetav valge tahvel. Projekti eesmärgiks on parendada IT-Kohviku menüüsüsteemi ja teha see veebi kaudu kättesaadavaks, nii, et menüüsse saab lisada ka karniiri valiku. Standardmenüü puhul saab menüüs olla ka illustreeriv foto. Hetkemenüü ning hinnad ja lahtioleku ajad on samuti jälgitavad võrguühendust eviva mobiilseadme ekraanilt, hõlbustades sellega valikute tegemist.&lt;br /&gt;
&lt;br /&gt;
===Liikmed===&lt;br /&gt;
* Mailis Toompuu&lt;br /&gt;
* Henri Kroosmann&lt;br /&gt;
* Heiki Tamm&lt;br /&gt;
&lt;br /&gt;
==Sisu==&lt;br /&gt;
&lt;br /&gt;
===XML Data===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;menu&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name1&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;0&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name1&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item1&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item2&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item3&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;0&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;0&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount1&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;0&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;0&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot1&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name2&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;255&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name2&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item4&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item5&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item6&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;255&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;255&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount2&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;255&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;255&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot2&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name3&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;1&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name3&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item7&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item8&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item9&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;1&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;1&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount3&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;1&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;1&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot3&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
&amp;lt;/menu&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===XML Schema===&lt;br /&gt;
&lt;br /&gt;
Ülevaade Schema&#039;st. &amp;lt;br /&amp;gt;&lt;br /&gt;
[[File:XMLSchema_Capture_(optimized).png]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Ning sellele vastav kood.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xs:schema attributeFormDefault=&amp;quot;unqualified&amp;quot; elementFormDefault=&amp;quot;qualified&amp;quot; xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xs:element name=&amp;quot;menu&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;product&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;type&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;id&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;extras&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence minOccurs=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;item&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;price&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence minOccurs=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;int&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;frac&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element minOccurs=&amp;quot;0&amp;quot; name=&amp;quot;discount&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;vote&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;pos&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;neg&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;screenshot&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===XML Style===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;html&amp;gt;&lt;br /&gt;
      &amp;lt;head&amp;gt;&lt;br /&gt;
        &amp;lt;style type=&amp;quot;text/css&amp;quot;&amp;gt;&lt;br /&gt;
          html,body{margin:0;padding:0;font-family:Helvetica,Arial,sans-serif;font-size:14px;line-height:19px;color:#2c2c2c;}&lt;br /&gt;
          h1{margin:0;padding:25px 0 0;font-size:22px;line-height:25px;text-align:center;}&lt;br /&gt;
          h2{margin:0;padding:5px;font-size:16px;line-height:21px}&lt;br /&gt;
          span.discount{padding:0 0 0 5px;color:red;}&lt;br /&gt;
          table{margin:20px auto;padding:0;}&lt;br /&gt;
          th,td{padding:5px;border:1px solid #2c2c2c;vertical-align:top;text-align:left}&lt;br /&gt;
          th{font-weight:bold;background-color:#eee;}&lt;br /&gt;
          ul{margin:0;padding:0;list-style-type:none;}&lt;br /&gt;
        &amp;lt;/style&amp;gt;&lt;br /&gt;
      &amp;lt;/head&amp;gt;&lt;br /&gt;
      &amp;lt;body&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;Menüü&amp;lt;/h1&amp;gt;&lt;br /&gt;
        &amp;lt;table width=&amp;quot;800&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;200&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;100&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col witdh=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;150&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;tr&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Nimetus&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Lisandid&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Tüüp&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Hind&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Hinne / Hindajaid&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Pilt&amp;lt;/th&amp;gt;&lt;br /&gt;
          &amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
          &amp;lt;xsl:for-each select=&amp;quot;menu/product&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:sort select=&amp;quot;type/id&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:sort select=&amp;quot;name&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;th&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;name&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/th&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;extras/node()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;ul&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:for-each select=&amp;quot;extras/item&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;li&amp;gt;&lt;br /&gt;
                          &amp;lt;xsl:value-of select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;/li&amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
                    &amp;lt;/ul&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;td&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;type/name&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;price/node()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    €&amp;lt;xsl:value-of select=&amp;quot;price/int&amp;quot;/&amp;gt;.&amp;lt;xsl:value-of select=&amp;quot;price/frac&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:if test=&amp;quot;price/discount/text()&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;span class=&amp;quot;discount&amp;quot;&amp;gt;&lt;br /&gt;
                        (-&amp;lt;xsl:value-of select=&amp;quot;price/discount&amp;quot;/&amp;gt;%)&lt;br /&gt;
                      &amp;lt;/span&amp;gt;&lt;br /&gt;
                    &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:variable name=&amp;quot;p&amp;quot; select=&amp;quot;vote/pos&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:variable name=&amp;quot;n&amp;quot; select=&amp;quot;vote/neg&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;td&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$p - $n&amp;quot;/&amp;gt; / &amp;lt;xsl:value-of select=&amp;quot;$p + $n&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;screenshot/text()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;img src=&amp;quot;{screenshot}&amp;quot; alt=&amp;quot;&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;img src=&amp;quot;screenshots/default.png&amp;quot; alt=&amp;quot;No image&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
      &amp;lt;/body&amp;gt;&lt;br /&gt;
    &amp;lt;/html&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
Sisu ja stiilifaili koostöö http://henri.kroosmann.ee/kool/xml/index.xml &amp;lt;!--[http://henri.kroosmann.ee/kool/xml/index.xml]--&amp;gt;&lt;br /&gt;
==VEEBITEENUSED==&lt;br /&gt;
&lt;br /&gt;
===8. aprill===&lt;br /&gt;
Otsustame teha teenused kõikide kohvikute menüüde kohta.&lt;br /&gt;
&lt;br /&gt;
===11.-12. aprill===&lt;br /&gt;
Henri koostab tabelite loogika&lt;br /&gt;
&lt;br /&gt;
===13. aprill===&lt;br /&gt;
Mailis otsustab veebiteenused teha asmx-is [webmethod]-itega&lt;br /&gt;
===14. aprill===&lt;br /&gt;
Mailis hakkab veebiteenuseid tegema&lt;br /&gt;
===17. aprill===&lt;br /&gt;
Veebiteenused on valmis:&lt;br /&gt;
&lt;br /&gt;
*AnnaJoogiliikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaJoogitabelirida_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*AnnaJookideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaK6igiKohvikuteAndmeteNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyyIDed_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyyRida_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyydeNimekiri_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaMenyyLiikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaMenyydeNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaPromillideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToiduliikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToitudeNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToitutabelirida_toiduIDjargi &lt;br /&gt;
&lt;br /&gt;
*AnnaYheKohvikuAndmed_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*KustutaJookMenyyst &lt;br /&gt;
&lt;br /&gt;
*KustutaMenyy &lt;br /&gt;
&lt;br /&gt;
*KustutaKohvik &lt;br /&gt;
&lt;br /&gt;
*KustutaToitMenyyst &lt;br /&gt;
&lt;br /&gt;
*KysiYheKohvikuYheMenyyToitudeIDeed_menyyIDjargi &lt;br /&gt;
&lt;br /&gt;
*LisaJoogiLiik &lt;br /&gt;
&lt;br /&gt;
*LisaMenyyLiik &lt;br /&gt;
&lt;br /&gt;
*LisaPromill &lt;br /&gt;
&lt;br /&gt;
*LisaToiduLiik &lt;br /&gt;
&lt;br /&gt;
*SecurityAuthenticateUser &lt;br /&gt;
&lt;br /&gt;
*TOITJOOKmenyysRida_menyyIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedJoogileMenyys &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedKohvikule &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedToiduleMenyys &lt;br /&gt;
&lt;br /&gt;
*annaJoogiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiKIRJELDUS_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiKOMM_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiID_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiNIMI_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKasOnTaimeT_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKasutajaNIMI_Guidjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuLahtiolekuAjad_kohvikuIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuTeated &lt;br /&gt;
&lt;br /&gt;
*annaLinnaID_LinnaNimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaLinnaNIMI_LinnaIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaLinnad_maakonnaNIMEjargi &lt;br /&gt;
&lt;br /&gt;
*annaMaakonnaID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaMenyyLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaMenyyLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaPromill_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaPromilliID_promilliNrJargi &lt;br /&gt;
&lt;br /&gt;
*annaPromilliNR_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduKIRJELDUS_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduKOMMENTAAR_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiNIMETUS_toiduIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaYheKohvikuMenyyd_kohvikuNIMEjargi &lt;br /&gt;
&lt;br /&gt;
*autendiKasutajaParooliJargi &lt;br /&gt;
&lt;br /&gt;
*k6igiKohvikuteMenyyd &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusJoogiKohta &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusKohvikuKohta &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusToiduKohta &lt;br /&gt;
&lt;br /&gt;
*lisaJookMenyysse &lt;br /&gt;
&lt;br /&gt;
*lisaToitMenyysse &lt;br /&gt;
&lt;br /&gt;
*lisaUusJook &lt;br /&gt;
&lt;br /&gt;
*lisaUusKohvik &lt;br /&gt;
&lt;br /&gt;
*lisaUusLahtiolekuAeg &lt;br /&gt;
&lt;br /&gt;
*lisaUusMenyy &lt;br /&gt;
&lt;br /&gt;
*lisaUusTeadaanne &lt;br /&gt;
&lt;br /&gt;
*lisaUusToit &lt;br /&gt;
&lt;br /&gt;
*nadalapaevaID_paevaNimetuseJargi &lt;br /&gt;
&lt;br /&gt;
*nadalapaevaNIMETUS_paevaIDjargi&lt;br /&gt;
&lt;br /&gt;
*Registreeru&lt;br /&gt;
&lt;br /&gt;
*LogiSisseTavakasutajana&lt;br /&gt;
&lt;br /&gt;
*LogiSisseKohvikuna&lt;br /&gt;
&lt;br /&gt;
===22.aprill===&lt;br /&gt;
Toimus koosolek&lt;br /&gt;
*Henri lubas meetodite turvamise teha.&lt;br /&gt;
*Heiki lubas statistika teha meetodite kohta.&lt;br /&gt;
&lt;br /&gt;
===Allikfail===&lt;br /&gt;
Allikfail: http://www.p2ike.com/CSharp/KohvikudVeebiteenus.rar&lt;br /&gt;
&lt;br /&gt;
Meetod &#039;k6igiKohvikuteMenyyd&#039; kuvab sellise xml struktuuri: http://www.p2ike.com/CSharp/k6igiKohvikuteMenyyd.xml&lt;br /&gt;
&lt;br /&gt;
Toidud ja joogid sorteeritakse liikide kaupa.&lt;br /&gt;
&lt;br /&gt;
===Andmetabelid===&lt;br /&gt;
[[File:andmetabelid.jpg|777px|thumb|left|andmemudel]]&lt;br /&gt;
===Statistika===&lt;br /&gt;
 using System;&lt;br /&gt;
using System.Web.Services;&lt;br /&gt;
using System.Web.Services.Protocols;&lt;br /&gt;
using System.IO;&lt;br /&gt;
using System.Net;&lt;br /&gt;
 &lt;br /&gt;
// Define a SOAP Extension that traces the SOAP request and SOAP&lt;br /&gt;
// response for the XML Web service method the SOAP extension is&lt;br /&gt;
// applied to. &lt;br /&gt;
 &lt;br /&gt;
namespace WebASPKohvikud&lt;br /&gt;
{&lt;br /&gt;
    public class TraceExtension : SoapExtension&lt;br /&gt;
    {&lt;br /&gt;
        Stream oldStream;&lt;br /&gt;
        Stream newStream;&lt;br /&gt;
        string filename;&lt;br /&gt;
 &lt;br /&gt;
        // Save the Stream representing the SOAP request or SOAP response into&lt;br /&gt;
        // a local memory buffer.&lt;br /&gt;
        public override Stream ChainStream(Stream stream)&lt;br /&gt;
        {&lt;br /&gt;
            oldStream = stream;&lt;br /&gt;
            newStream = new MemoryStream();&lt;br /&gt;
            return newStream;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        // When the SOAP extension is accessed for the first time, the XML Web&lt;br /&gt;
        // service method it is applied to is accessed to store the file&lt;br /&gt;
        // name passed in, using the corresponding SoapExtensionAttribute.	&lt;br /&gt;
        public override object GetInitializer(LogicalMethodInfo methodInfo, SoapExtensionAttribute attribute)&lt;br /&gt;
        {&lt;br /&gt;
            return ((TraceExtensionAttribute)attribute).Filename;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        // The SOAP extension was configured to run using a configuration file&lt;br /&gt;
        // instead of an attribute applied to a specific XML Web service&lt;br /&gt;
        // method.&lt;br /&gt;
        public override object GetInitializer(Type WebServiceType)&lt;br /&gt;
        {&lt;br /&gt;
            // Return a file name to log the trace information to, based on the&lt;br /&gt;
            // type.&lt;br /&gt;
            return &amp;quot;C:\\&amp;quot; + WebServiceType.FullName + &amp;quot;.log&amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        // Receive the file name stored by GetInitializer and store it in a&lt;br /&gt;
        // member variable for this specific instance.&lt;br /&gt;
        public override void Initialize(object initializer)&lt;br /&gt;
        {&lt;br /&gt;
            filename = (string)initializer;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        //  If the SoapMessageStage is such that the SoapRequest or&lt;br /&gt;
        //  SoapResponse is still in the SOAP format to be sent or received,&lt;br /&gt;
        //  save it out to a file.&lt;br /&gt;
        public override void ProcessMessage(SoapMessage message)&lt;br /&gt;
        {&lt;br /&gt;
            switch (message.Stage)&lt;br /&gt;
            {&lt;br /&gt;
                case SoapMessageStage.BeforeSerialize:&lt;br /&gt;
                    break;&lt;br /&gt;
                case SoapMessageStage.AfterSerialize:&lt;br /&gt;
                    WriteOutput(message);&lt;br /&gt;
                    break;&lt;br /&gt;
                case SoapMessageStage.BeforeDeserialize:&lt;br /&gt;
                    WriteInput(message);&lt;br /&gt;
                    break;&lt;br /&gt;
                case SoapMessageStage.AfterDeserialize:&lt;br /&gt;
                    break;&lt;br /&gt;
                default:&lt;br /&gt;
                    throw new Exception(&amp;quot;invalid stage&amp;quot;);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        public void WriteOutput(SoapMessage message)&lt;br /&gt;
        {&lt;br /&gt;
            newStream.Position = 0;&lt;br /&gt;
            FileStream fs = new FileStream(filename, FileMode.Append,&lt;br /&gt;
                FileAccess.Write);&lt;br /&gt;
            StreamWriter w = new StreamWriter(fs);&lt;br /&gt;
 &lt;br /&gt;
            string soapString = (message is SoapServerMessage) ? &amp;quot;SoapResponse&amp;quot; : &amp;quot;SoapRequest&amp;quot;;&lt;br /&gt;
            w.WriteLine(&amp;quot;-----&amp;quot; + soapString + &amp;quot; at &amp;quot; + DateTime.Now);&lt;br /&gt;
            w.Flush();&lt;br /&gt;
            Copy(newStream, fs);&lt;br /&gt;
            w.Close();&lt;br /&gt;
            newStream.Position = 0;&lt;br /&gt;
            Copy(newStream, oldStream);&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        public void WriteInput(SoapMessage message)&lt;br /&gt;
        {&lt;br /&gt;
            Copy(oldStream, newStream);&lt;br /&gt;
            FileStream fs = new FileStream(filename, FileMode.Append,&lt;br /&gt;
                FileAccess.Write);&lt;br /&gt;
            StreamWriter w = new StreamWriter(fs);&lt;br /&gt;
 &lt;br /&gt;
            string soapString = (message is SoapServerMessage) ?&lt;br /&gt;
                &amp;quot;SoapRequest&amp;quot; : &amp;quot;SoapResponse&amp;quot;;&lt;br /&gt;
            w.WriteLine(&amp;quot;-----&amp;quot; + soapString +&lt;br /&gt;
                &amp;quot; at &amp;quot; + DateTime.Now);&lt;br /&gt;
            w.Flush();&lt;br /&gt;
            newStream.Position = 0;&lt;br /&gt;
            Copy(newStream, fs);&lt;br /&gt;
            w.Close();&lt;br /&gt;
            newStream.Position = 0;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        void Copy(Stream from, Stream to)&lt;br /&gt;
        {&lt;br /&gt;
            TextReader reader = new StreamReader(from);&lt;br /&gt;
            TextWriter writer = new StreamWriter(to);&lt;br /&gt;
            writer.WriteLine(reader.ReadToEnd());&lt;br /&gt;
            writer.Flush();&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    // Create a SoapExtensionAttribute for the SOAP Extension that can be&lt;br /&gt;
    // applied to an XML Web service method.&lt;br /&gt;
    [AttributeUsage(AttributeTargets.Method)]&lt;br /&gt;
    public class TraceExtensionAttribute : SoapExtensionAttribute&lt;br /&gt;
    {&lt;br /&gt;
 &lt;br /&gt;
        private string filename = @&amp;quot;C:\Users\Heiki Tamm\Documents\Õppematerjalid_2011\WebASPKohvikud\WebASPKohvikud\SoapLog.txt&amp;quot;;&lt;br /&gt;
        private int priority;&lt;br /&gt;
 &lt;br /&gt;
        public override Type ExtensionType&lt;br /&gt;
        {&lt;br /&gt;
            get { return typeof(TraceExtension); }&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        public override int Priority&lt;br /&gt;
        {&lt;br /&gt;
            get { return priority; }&lt;br /&gt;
            set { priority = value; }&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        public string Filename&lt;br /&gt;
        {&lt;br /&gt;
            get&lt;br /&gt;
            {&lt;br /&gt;
                return filename;&lt;br /&gt;
            }&lt;br /&gt;
            set&lt;br /&gt;
            {&lt;br /&gt;
                filename = value;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
// todo: &lt;br /&gt;
// from each soap header record query content &lt;br /&gt;
// (containing client, date, time, query ) into a DB&lt;br /&gt;
// for later reference for conducting any kind of &lt;br /&gt;
// applicable statistics and then generate stats :D !&lt;br /&gt;
// Proovin selliselt, et on lihtne statistika tabel:&lt;br /&gt;
// 1) meetod // välja kutsutava meetodi nimi&lt;br /&gt;
// 2) kuupäev // timestamp&lt;br /&gt;
// 3) callide arv // meetodi väljakutsimiste hulk&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==KLIENTRAKENDUS==&lt;br /&gt;
&lt;br /&gt;
===23. mai===&lt;br /&gt;
Mailis tegi kohvikute kuvamise ASP.NET rakenduse.&lt;br /&gt;
Kohvikud kuvatakse TreeView&#039;s &lt;br /&gt;
menüüde ja andmetega ning arvamustega kohvikute ja toitude ja jookide kohta.&lt;br /&gt;
&lt;br /&gt;
Samal lehel on kohvikuhuvilistele registreerimisvõimalus&lt;br /&gt;
ja sisselogimine.&lt;br /&gt;
&lt;br /&gt;
Kui on sisselogitud, saab lisada arvamusi.&lt;br /&gt;
Arvamuste lisamine on Ajax Extended Toolkiti controli&#039;ga &#039;Allways Visible ...&#039; tehtud, &lt;br /&gt;
&lt;br /&gt;
nii et mööda pikka TreeViewd alla kerides saab &lt;br /&gt;
lisada arvamust ilma ülesserva tagasi minemata.&lt;br /&gt;
&lt;br /&gt;
Arvamused ilmuvad kohe peale lisamist TreeView&#039;sse.&lt;br /&gt;
&lt;br /&gt;
TreeView&#039;sse tulevad andmed xml-failist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pooleli on veel kohvikute-poolne rakendus, kus omanik saab lisada ja kustutada kohvikuid, menüüsid ja toite-jooke, lisada teadaandeid.&lt;br /&gt;
&lt;br /&gt;
Pooleli on veel admini-rakendus, kus admin saab kasutajale määrata rolli, mis annab õigused kohviku-rakendusse sisse logida.&lt;br /&gt;
===4. juuni===&lt;br /&gt;
Valmis sai Kohvikute omanikele mõeldud klientrakendus.&lt;br /&gt;
Tehtud ASP.NET&#039;i veebirakendusena.&lt;br /&gt;
Seal on sisselogimine, registreerumine ja adminile kirja saatmine kohvikuomaniku õiguste saamiseks.&lt;br /&gt;
Peale sisselogimist saab &lt;br /&gt;
*lisada ja kustutada kohvikut&lt;br /&gt;
*lisada kohvikule lahtiolekuaegu nädalapäevade kaupa ja neid kustutada&lt;br /&gt;
*lisada kohvikule teadaandeid ja neid kustutada&lt;br /&gt;
*lisada kohvikule menüüsid ja neid kustutada: menüül on nimetus, liik, nädalapäev,  lisamiskuupäev jne. &lt;br /&gt;
*lisada menüüsse toite ja neid kustutada. Toitudel on nimetus, liik, hind, kas-sobib-taimetoitlasele, kogus grammides, suurus, lisamise kuupäev. Eraldi listides on kõikide kohvikute lisatud toidud ja selle kohviku lisatud toidud. Toitu valides rippmenüüst ilmuvad selle toidu andmed, et näha täpsemalt, mis toiduga on tegu. Ka on näha parajasti toitu lisatavasse menüüsse varem lisatud toidud.&lt;br /&gt;
*jookidele on sama, va. taimetoidu asemel on alkohoolse joogi korral promillide suurus.&lt;br /&gt;
&lt;br /&gt;
Lisada saab textbokside kaudu, nimekirjadest valimine on tehtud dropdown-listidena.&lt;br /&gt;
Kuvamised on tehtud GridViewdena, mis saavad andmeid meetoditest, mitte otse andmebaasitabelist.&lt;br /&gt;
&lt;br /&gt;
===5. juuni===&lt;br /&gt;
Valmis sai Kohvikute administraatori  ASP.NET-veebirakendus.&lt;br /&gt;
Admin saab registreeruda ja sisse logida.&lt;br /&gt;
Kui admin on sisse loginud, saab ta vaadata statistikat. Statistika-tabeleid on eraldi selle kohta, kui palju on mingit meetodit kasutatud ja selle kohta,kes millal mingit meetodit kasutas.&lt;br /&gt;
Sisseloginuna saab vaadata saabunud taotlusi ja nende järgi kasutajatele rolle määrata.&lt;br /&gt;
&lt;br /&gt;
Tabelid saavad andmeid otse andmebaasist, GridView&#039;dena, neid saab sorteerida tulpade&lt;br /&gt;
pealkirjadel klikkides.&lt;br /&gt;
&lt;br /&gt;
===ALLIKFAILID===&lt;br /&gt;
http://www.p2ike.com/CSharp/Kohvik.rar&lt;br /&gt;
&lt;br /&gt;
==KOKKUVÕTE==&lt;br /&gt;
Oli soov teha ideaalset teenust ja rakendusi, millega on mugav lisada ja näha kohvikute menüüsid.&lt;br /&gt;
Veebiteenuseid sai veel pidevalt täiendatud rakenduste tegemise käigus, neid tuli kokku 100 ringis.&lt;br /&gt;
&lt;br /&gt;
Kõik kolm rakendust sai tehtud ASP.NET&#039;i veebirakendustena, et midagi juurde õppida.&lt;br /&gt;
Ka on veeb kõigile kättesaadav, ei pea eraldi programmi hakkama alla laadima.&lt;br /&gt;
&lt;br /&gt;
Asp.NET&#039;i tundmaõppimine oli arvatust aeganõudvam ja kõik ei saanud ideaalne: kohvikutel on laius-ja pikkuskraadid, edaspidi võiks kohvikülastajale mõeldud rakenduses kaardil näha olla, kus mõni kohvik asub. Ka ei osutunud treeview kõigi kohvikute andmete korraga kuvamisel, eriti kui on palju kohvikuid, kõige paremaks valikuks.&lt;br /&gt;
&lt;br /&gt;
Kõige paremini õnnestus kohvikute omanikele mõeldud rakendus.&lt;br /&gt;
&lt;br /&gt;
==PUNKTID== &lt;br /&gt;
*Henri: 10 -  xml-osa ja veebiteenuste tabelite loogika.&lt;br /&gt;
*Heiki: 3 - wiki sissejuhatus.&lt;br /&gt;
*Mailis: 47 - veebiteenuste programmeerimine ja klientrakendused.&lt;/div&gt;</summary>
		<author><name>Mtoompuu</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Meeskond_%22H2%22&amp;diff=33791</id>
		<title>Meeskond &quot;H2&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Meeskond_%22H2%22&amp;diff=33791"/>
		<updated>2011-06-05T23:10:34Z</updated>

		<summary type="html">&lt;p&gt;Mtoompuu: /* 5. juuni */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Kohviku menüüsüsteem==&lt;br /&gt;
===Projekt===&lt;br /&gt;
Kohvikute (esialgu ainult IT-Kohviku) menüüsüsteem, mis on jälgitav mobiilseadmetelt. Lisaväärtusena võimaldab anda pakutavale hinnanguid, otsuse langetamise hõlbustamiseks kommentaar:(see viimane funktsioon kipub vist &amp;quot;veebirakenduseks&amp;quot; muutuma)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Sihtplatvormid:&lt;br /&gt;
Windows Mobile, iOS, Android(kui leiame vabatahtlikud testijad)&lt;br /&gt;
&lt;br /&gt;
===Taustinfo===&lt;br /&gt;
Praegune IT-Kohviku menüü on käsitsi täidetav valge tahvel. Projekti eesmärgiks on parendada IT-Kohviku menüüsüsteemi ja teha see veebi kaudu kättesaadavaks, nii, et menüüsse saab lisada ka karniiri valiku. Standardmenüü puhul saab menüüs olla ka illustreeriv foto. Hetkemenüü ning hinnad ja lahtioleku ajad on samuti jälgitavad võrguühendust eviva mobiilseadme ekraanilt, hõlbustades sellega valikute tegemist.&lt;br /&gt;
&lt;br /&gt;
===Liikmed===&lt;br /&gt;
* Mailis Toompuu&lt;br /&gt;
* Henri Kroosmann&lt;br /&gt;
* Heiki Tamm&lt;br /&gt;
&lt;br /&gt;
==Sisu==&lt;br /&gt;
&lt;br /&gt;
===XML Data===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;menu&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name1&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;0&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name1&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item1&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item2&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item3&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;0&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;0&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount1&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;0&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;0&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot1&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name2&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;255&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name2&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item4&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item5&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item6&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;255&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;255&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount2&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;255&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;255&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot2&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name3&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;1&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name3&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item7&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item8&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item9&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;1&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;1&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount3&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;1&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;1&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot3&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
&amp;lt;/menu&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===XML Schema===&lt;br /&gt;
&lt;br /&gt;
Ülevaade Schema&#039;st. &amp;lt;br /&amp;gt;&lt;br /&gt;
[[File:XMLSchema_Capture_(optimized).png]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Ning sellele vastav kood.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xs:schema attributeFormDefault=&amp;quot;unqualified&amp;quot; elementFormDefault=&amp;quot;qualified&amp;quot; xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xs:element name=&amp;quot;menu&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;product&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;type&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;id&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;extras&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence minOccurs=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;item&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;price&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence minOccurs=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;int&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;frac&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element minOccurs=&amp;quot;0&amp;quot; name=&amp;quot;discount&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;vote&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;pos&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;neg&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;screenshot&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===XML Style===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;html&amp;gt;&lt;br /&gt;
      &amp;lt;head&amp;gt;&lt;br /&gt;
        &amp;lt;style type=&amp;quot;text/css&amp;quot;&amp;gt;&lt;br /&gt;
          html,body{margin:0;padding:0;font-family:Helvetica,Arial,sans-serif;font-size:14px;line-height:19px;color:#2c2c2c;}&lt;br /&gt;
          h1{margin:0;padding:25px 0 0;font-size:22px;line-height:25px;text-align:center;}&lt;br /&gt;
          h2{margin:0;padding:5px;font-size:16px;line-height:21px}&lt;br /&gt;
          span.discount{padding:0 0 0 5px;color:red;}&lt;br /&gt;
          table{margin:20px auto;padding:0;}&lt;br /&gt;
          th,td{padding:5px;border:1px solid #2c2c2c;vertical-align:top;text-align:left}&lt;br /&gt;
          th{font-weight:bold;background-color:#eee;}&lt;br /&gt;
          ul{margin:0;padding:0;list-style-type:none;}&lt;br /&gt;
        &amp;lt;/style&amp;gt;&lt;br /&gt;
      &amp;lt;/head&amp;gt;&lt;br /&gt;
      &amp;lt;body&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;Menüü&amp;lt;/h1&amp;gt;&lt;br /&gt;
        &amp;lt;table width=&amp;quot;800&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;200&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;100&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col witdh=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;150&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;tr&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Nimetus&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Lisandid&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Tüüp&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Hind&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Hinne / Hindajaid&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Pilt&amp;lt;/th&amp;gt;&lt;br /&gt;
          &amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
          &amp;lt;xsl:for-each select=&amp;quot;menu/product&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:sort select=&amp;quot;type/id&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:sort select=&amp;quot;name&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;th&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;name&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/th&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;extras/node()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;ul&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:for-each select=&amp;quot;extras/item&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;li&amp;gt;&lt;br /&gt;
                          &amp;lt;xsl:value-of select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;/li&amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
                    &amp;lt;/ul&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;td&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;type/name&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;price/node()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    €&amp;lt;xsl:value-of select=&amp;quot;price/int&amp;quot;/&amp;gt;.&amp;lt;xsl:value-of select=&amp;quot;price/frac&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:if test=&amp;quot;price/discount/text()&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;span class=&amp;quot;discount&amp;quot;&amp;gt;&lt;br /&gt;
                        (-&amp;lt;xsl:value-of select=&amp;quot;price/discount&amp;quot;/&amp;gt;%)&lt;br /&gt;
                      &amp;lt;/span&amp;gt;&lt;br /&gt;
                    &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:variable name=&amp;quot;p&amp;quot; select=&amp;quot;vote/pos&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:variable name=&amp;quot;n&amp;quot; select=&amp;quot;vote/neg&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;td&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$p - $n&amp;quot;/&amp;gt; / &amp;lt;xsl:value-of select=&amp;quot;$p + $n&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;screenshot/text()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;img src=&amp;quot;{screenshot}&amp;quot; alt=&amp;quot;&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;img src=&amp;quot;screenshots/default.png&amp;quot; alt=&amp;quot;No image&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
      &amp;lt;/body&amp;gt;&lt;br /&gt;
    &amp;lt;/html&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
Sisu ja stiilifaili koostöö http://henri.kroosmann.ee/kool/xml/index.xml &amp;lt;!--[http://henri.kroosmann.ee/kool/xml/index.xml]--&amp;gt;&lt;br /&gt;
==VEEBITEENUSED==&lt;br /&gt;
&lt;br /&gt;
===8. aprill===&lt;br /&gt;
Otsustame teha teenused kõikide kohvikute menüüde kohta.&lt;br /&gt;
&lt;br /&gt;
===11.-12. aprill===&lt;br /&gt;
Henri koostab tabelite loogika&lt;br /&gt;
&lt;br /&gt;
===13. aprill===&lt;br /&gt;
Mailis otsustab veebiteenused teha asmx-is [webmethod]-itega&lt;br /&gt;
===14. aprill===&lt;br /&gt;
Mailis hakkab veebiteenuseid tegema&lt;br /&gt;
===17. aprill===&lt;br /&gt;
Veebiteenused on valmis:&lt;br /&gt;
&lt;br /&gt;
*AnnaJoogiliikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaJoogitabelirida_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*AnnaJookideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaK6igiKohvikuteAndmeteNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyyIDed_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyyRida_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyydeNimekiri_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaMenyyLiikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaMenyydeNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaPromillideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToiduliikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToitudeNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToitutabelirida_toiduIDjargi &lt;br /&gt;
&lt;br /&gt;
*AnnaYheKohvikuAndmed_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*KustutaJookMenyyst &lt;br /&gt;
&lt;br /&gt;
*KustutaMenyy &lt;br /&gt;
&lt;br /&gt;
*KustutaKohvik &lt;br /&gt;
&lt;br /&gt;
*KustutaToitMenyyst &lt;br /&gt;
&lt;br /&gt;
*KysiYheKohvikuYheMenyyToitudeIDeed_menyyIDjargi &lt;br /&gt;
&lt;br /&gt;
*LisaJoogiLiik &lt;br /&gt;
&lt;br /&gt;
*LisaMenyyLiik &lt;br /&gt;
&lt;br /&gt;
*LisaPromill &lt;br /&gt;
&lt;br /&gt;
*LisaToiduLiik &lt;br /&gt;
&lt;br /&gt;
*SecurityAuthenticateUser &lt;br /&gt;
&lt;br /&gt;
*TOITJOOKmenyysRida_menyyIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedJoogileMenyys &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedKohvikule &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedToiduleMenyys &lt;br /&gt;
&lt;br /&gt;
*annaJoogiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiKIRJELDUS_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiKOMM_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiID_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiNIMI_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKasOnTaimeT_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKasutajaNIMI_Guidjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuLahtiolekuAjad_kohvikuIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuTeated &lt;br /&gt;
&lt;br /&gt;
*annaLinnaID_LinnaNimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaLinnaNIMI_LinnaIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaLinnad_maakonnaNIMEjargi &lt;br /&gt;
&lt;br /&gt;
*annaMaakonnaID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaMenyyLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaMenyyLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaPromill_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaPromilliID_promilliNrJargi &lt;br /&gt;
&lt;br /&gt;
*annaPromilliNR_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduKIRJELDUS_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduKOMMENTAAR_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiNIMETUS_toiduIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaYheKohvikuMenyyd_kohvikuNIMEjargi &lt;br /&gt;
&lt;br /&gt;
*autendiKasutajaParooliJargi &lt;br /&gt;
&lt;br /&gt;
*k6igiKohvikuteMenyyd &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusJoogiKohta &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusKohvikuKohta &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusToiduKohta &lt;br /&gt;
&lt;br /&gt;
*lisaJookMenyysse &lt;br /&gt;
&lt;br /&gt;
*lisaToitMenyysse &lt;br /&gt;
&lt;br /&gt;
*lisaUusJook &lt;br /&gt;
&lt;br /&gt;
*lisaUusKohvik &lt;br /&gt;
&lt;br /&gt;
*lisaUusLahtiolekuAeg &lt;br /&gt;
&lt;br /&gt;
*lisaUusMenyy &lt;br /&gt;
&lt;br /&gt;
*lisaUusTeadaanne &lt;br /&gt;
&lt;br /&gt;
*lisaUusToit &lt;br /&gt;
&lt;br /&gt;
*nadalapaevaID_paevaNimetuseJargi &lt;br /&gt;
&lt;br /&gt;
*nadalapaevaNIMETUS_paevaIDjargi&lt;br /&gt;
&lt;br /&gt;
*Registreeru&lt;br /&gt;
&lt;br /&gt;
*LogiSisseTavakasutajana&lt;br /&gt;
&lt;br /&gt;
*LogiSisseKohvikuna&lt;br /&gt;
&lt;br /&gt;
===22.aprill===&lt;br /&gt;
Toimus koosolek&lt;br /&gt;
*Henri lubas meetodite turvamise teha.&lt;br /&gt;
*Heiki lubas statistika teha meetodite kohta.&lt;br /&gt;
&lt;br /&gt;
===Allikfail===&lt;br /&gt;
Allikfail: http://www.p2ike.com/CSharp/KohvikudVeebiteenus.rar&lt;br /&gt;
&lt;br /&gt;
Meetod &#039;k6igiKohvikuteMenyyd&#039; kuvab sellise xml struktuuri: http://www.p2ike.com/CSharp/k6igiKohvikuteMenyyd.xml&lt;br /&gt;
&lt;br /&gt;
Toidud ja joogid sorteeritakse liikide kaupa.&lt;br /&gt;
&lt;br /&gt;
===Andmetabelid===&lt;br /&gt;
[[File:andmetabelid.jpg|777px|thumb|left|andmemudel]]&lt;br /&gt;
===Statistika===&lt;br /&gt;
 using System;&lt;br /&gt;
using System.Web.Services;&lt;br /&gt;
using System.Web.Services.Protocols;&lt;br /&gt;
using System.IO;&lt;br /&gt;
using System.Net;&lt;br /&gt;
 &lt;br /&gt;
// Define a SOAP Extension that traces the SOAP request and SOAP&lt;br /&gt;
// response for the XML Web service method the SOAP extension is&lt;br /&gt;
// applied to. &lt;br /&gt;
 &lt;br /&gt;
namespace WebASPKohvikud&lt;br /&gt;
{&lt;br /&gt;
    public class TraceExtension : SoapExtension&lt;br /&gt;
    {&lt;br /&gt;
        Stream oldStream;&lt;br /&gt;
        Stream newStream;&lt;br /&gt;
        string filename;&lt;br /&gt;
 &lt;br /&gt;
        // Save the Stream representing the SOAP request or SOAP response into&lt;br /&gt;
        // a local memory buffer.&lt;br /&gt;
        public override Stream ChainStream(Stream stream)&lt;br /&gt;
        {&lt;br /&gt;
            oldStream = stream;&lt;br /&gt;
            newStream = new MemoryStream();&lt;br /&gt;
            return newStream;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        // When the SOAP extension is accessed for the first time, the XML Web&lt;br /&gt;
        // service method it is applied to is accessed to store the file&lt;br /&gt;
        // name passed in, using the corresponding SoapExtensionAttribute.	&lt;br /&gt;
        public override object GetInitializer(LogicalMethodInfo methodInfo, SoapExtensionAttribute attribute)&lt;br /&gt;
        {&lt;br /&gt;
            return ((TraceExtensionAttribute)attribute).Filename;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        // The SOAP extension was configured to run using a configuration file&lt;br /&gt;
        // instead of an attribute applied to a specific XML Web service&lt;br /&gt;
        // method.&lt;br /&gt;
        public override object GetInitializer(Type WebServiceType)&lt;br /&gt;
        {&lt;br /&gt;
            // Return a file name to log the trace information to, based on the&lt;br /&gt;
            // type.&lt;br /&gt;
            return &amp;quot;C:\\&amp;quot; + WebServiceType.FullName + &amp;quot;.log&amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        // Receive the file name stored by GetInitializer and store it in a&lt;br /&gt;
        // member variable for this specific instance.&lt;br /&gt;
        public override void Initialize(object initializer)&lt;br /&gt;
        {&lt;br /&gt;
            filename = (string)initializer;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        //  If the SoapMessageStage is such that the SoapRequest or&lt;br /&gt;
        //  SoapResponse is still in the SOAP format to be sent or received,&lt;br /&gt;
        //  save it out to a file.&lt;br /&gt;
        public override void ProcessMessage(SoapMessage message)&lt;br /&gt;
        {&lt;br /&gt;
            switch (message.Stage)&lt;br /&gt;
            {&lt;br /&gt;
                case SoapMessageStage.BeforeSerialize:&lt;br /&gt;
                    break;&lt;br /&gt;
                case SoapMessageStage.AfterSerialize:&lt;br /&gt;
                    WriteOutput(message);&lt;br /&gt;
                    break;&lt;br /&gt;
                case SoapMessageStage.BeforeDeserialize:&lt;br /&gt;
                    WriteInput(message);&lt;br /&gt;
                    break;&lt;br /&gt;
                case SoapMessageStage.AfterDeserialize:&lt;br /&gt;
                    break;&lt;br /&gt;
                default:&lt;br /&gt;
                    throw new Exception(&amp;quot;invalid stage&amp;quot;);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        public void WriteOutput(SoapMessage message)&lt;br /&gt;
        {&lt;br /&gt;
            newStream.Position = 0;&lt;br /&gt;
            FileStream fs = new FileStream(filename, FileMode.Append,&lt;br /&gt;
                FileAccess.Write);&lt;br /&gt;
            StreamWriter w = new StreamWriter(fs);&lt;br /&gt;
 &lt;br /&gt;
            string soapString = (message is SoapServerMessage) ? &amp;quot;SoapResponse&amp;quot; : &amp;quot;SoapRequest&amp;quot;;&lt;br /&gt;
            w.WriteLine(&amp;quot;-----&amp;quot; + soapString + &amp;quot; at &amp;quot; + DateTime.Now);&lt;br /&gt;
            w.Flush();&lt;br /&gt;
            Copy(newStream, fs);&lt;br /&gt;
            w.Close();&lt;br /&gt;
            newStream.Position = 0;&lt;br /&gt;
            Copy(newStream, oldStream);&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        public void WriteInput(SoapMessage message)&lt;br /&gt;
        {&lt;br /&gt;
            Copy(oldStream, newStream);&lt;br /&gt;
            FileStream fs = new FileStream(filename, FileMode.Append,&lt;br /&gt;
                FileAccess.Write);&lt;br /&gt;
            StreamWriter w = new StreamWriter(fs);&lt;br /&gt;
 &lt;br /&gt;
            string soapString = (message is SoapServerMessage) ?&lt;br /&gt;
                &amp;quot;SoapRequest&amp;quot; : &amp;quot;SoapResponse&amp;quot;;&lt;br /&gt;
            w.WriteLine(&amp;quot;-----&amp;quot; + soapString +&lt;br /&gt;
                &amp;quot; at &amp;quot; + DateTime.Now);&lt;br /&gt;
            w.Flush();&lt;br /&gt;
            newStream.Position = 0;&lt;br /&gt;
            Copy(newStream, fs);&lt;br /&gt;
            w.Close();&lt;br /&gt;
            newStream.Position = 0;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        void Copy(Stream from, Stream to)&lt;br /&gt;
        {&lt;br /&gt;
            TextReader reader = new StreamReader(from);&lt;br /&gt;
            TextWriter writer = new StreamWriter(to);&lt;br /&gt;
            writer.WriteLine(reader.ReadToEnd());&lt;br /&gt;
            writer.Flush();&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    // Create a SoapExtensionAttribute for the SOAP Extension that can be&lt;br /&gt;
    // applied to an XML Web service method.&lt;br /&gt;
    [AttributeUsage(AttributeTargets.Method)]&lt;br /&gt;
    public class TraceExtensionAttribute : SoapExtensionAttribute&lt;br /&gt;
    {&lt;br /&gt;
 &lt;br /&gt;
        private string filename = @&amp;quot;C:\Users\Heiki Tamm\Documents\Õppematerjalid_2011\WebASPKohvikud\WebASPKohvikud\SoapLog.txt&amp;quot;;&lt;br /&gt;
        private int priority;&lt;br /&gt;
 &lt;br /&gt;
        public override Type ExtensionType&lt;br /&gt;
        {&lt;br /&gt;
            get { return typeof(TraceExtension); }&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        public override int Priority&lt;br /&gt;
        {&lt;br /&gt;
            get { return priority; }&lt;br /&gt;
            set { priority = value; }&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        public string Filename&lt;br /&gt;
        {&lt;br /&gt;
            get&lt;br /&gt;
            {&lt;br /&gt;
                return filename;&lt;br /&gt;
            }&lt;br /&gt;
            set&lt;br /&gt;
            {&lt;br /&gt;
                filename = value;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
// todo: &lt;br /&gt;
// from each soap header record query content &lt;br /&gt;
// (containing client, date, time, query ) into a DB&lt;br /&gt;
// for later reference for conducting any kind of &lt;br /&gt;
// applicable statistics and then generate stats :D !&lt;br /&gt;
// Proovin selliselt, et on lihtne statistika tabel:&lt;br /&gt;
// 1) meetod // välja kutsutava meetodi nimi&lt;br /&gt;
// 2) kuupäev // timestamp&lt;br /&gt;
// 3) callide arv // meetodi väljakutsimiste hulk&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==KLIENTRAKENDUS==&lt;br /&gt;
&lt;br /&gt;
===23. mai===&lt;br /&gt;
Mailis tegi kohvikute kuvamise ASP.NET rakenduse.&lt;br /&gt;
Kohvikud kuvatakse TreeView&#039;s &lt;br /&gt;
menüüde ja andmetega ning arvamustega kohvikute ja toitude ja jookide kohta.&lt;br /&gt;
&lt;br /&gt;
Samal lehel on kohvikuhuvilistele registreerimisvõimalus&lt;br /&gt;
ja sisselogimine.&lt;br /&gt;
&lt;br /&gt;
Kui on sisselogitud, saab lisada arvamusi.&lt;br /&gt;
Arvamuste lisamine on Ajax Extended Toolkiti controli&#039;ga &#039;Allways Visible ...&#039; tehtud, &lt;br /&gt;
&lt;br /&gt;
nii et mööda pikka TreeViewd alla kerides saab &lt;br /&gt;
lisada arvamust ilma ülesserva tagasi minemata.&lt;br /&gt;
&lt;br /&gt;
Arvamused ilmuvad kohe peale lisamist TreeView&#039;sse.&lt;br /&gt;
&lt;br /&gt;
TreeView&#039;sse tulevad andmed xml-failist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pooleli on veel kohvikute-poolne rakendus, kus omanik saab lisada ja kustutada kohvikuid, menüüsid ja toite-jooke, lisada teadaandeid.&lt;br /&gt;
&lt;br /&gt;
Pooleli on veel admini-rakendus, kus admin saab kasutajale määrata rolli, mis annab õigused kohviku-rakendusse sisse logida.&lt;br /&gt;
===4. juuni===&lt;br /&gt;
Valmis sai Kohvikute omanikele mõeldud klientrakendus.&lt;br /&gt;
Tehtud ASP.NET&#039;i veebirakendusena.&lt;br /&gt;
Seal on sisselogimine, registreerumine ja adminile kirja saatmine kohvikuomaniku õiguste saamiseks.&lt;br /&gt;
Peale sisselogimist saab &lt;br /&gt;
*lisada ja kustutada kohvikut&lt;br /&gt;
*lisada kohvikule lahtiolekuaegu nädalapäevade kaupa ja neid kustutada&lt;br /&gt;
*lisada kohvikule teadaandeid ja neid kustutada&lt;br /&gt;
*lisada kohvikule menüüsid ja neid kustutada: menüül on nimetus, liik, nädalapäev,  lisamiskuupäev jne. &lt;br /&gt;
*lisada menüüsse toite ja neid kustutada. Toitudel on nimetus, liik, hind, kas-sobib-taimetoitlasele, kogus grammides, suurus, lisamise kuupäev. Eraldi listides on kõikide kohvikute lisatud toidud ja selle kohviku lisatud toidud. Toitu valides rippmenüüst ilmuvad selle toidu andmed, et näha täpsemalt, mis toiduga on tegu. Ka on näha parajasti toitu lisatavasse menüüsse varem lisatud toidud.&lt;br /&gt;
*jookidele on sama, va. taimetoidu asemel on alkohoolse joogi korral promillide suurus.&lt;br /&gt;
&lt;br /&gt;
Lisada saab textbokside kaudu, nimekirjadest valimine on tehtud dropdown-listidena.&lt;br /&gt;
Kuvamised on tehtud GridViewdena, mis saavad andmeid meetoditest, mitte otse andmebaasitabelist.&lt;br /&gt;
&lt;br /&gt;
===5. juuni===&lt;br /&gt;
Valmis sai Kohvikute administraatori  ASP.NET-veebirakendus.&lt;br /&gt;
Admin saab registreeruda ja sisse logida.&lt;br /&gt;
Kui admin on sisse loginud, saab ta vaadata statistikat. Statistika-tabeleid on eraldi selle kohta, kui palju on mingit meetodit kasutatud ja selle kohta,kes millal mingit meetodit kasutas.&lt;br /&gt;
Sisseloginuna saab vaadata saabunud taotlusi ja nende järgi kasutajatele rolle määrata.&lt;br /&gt;
&lt;br /&gt;
Tabelid saavad andmeid otse andmebaasist, GridView&#039;dena, neid saab sorteerida tulpade&lt;br /&gt;
pealkirjadel klikkides.&lt;br /&gt;
&lt;br /&gt;
===ALLIKFAILID===&lt;br /&gt;
&lt;br /&gt;
==KOKKUVÕTE==&lt;br /&gt;
Oli soov teha ideaalset teenust ja rakendusi, millega on mugav lisada ja näha kohvikute menüüsid.&lt;br /&gt;
Veebiteenuseid sai veel pidevalt täiendatud rakenduste tegemise käigus, neid tuli kokku 100 ringis.&lt;br /&gt;
&lt;br /&gt;
Kõik kolm rakendust sai tehtud ASP.NET&#039;i veebirakendustena, et midagi juurde õppida.&lt;br /&gt;
Ka on veeb kõigile kättesaadav, ei pea eraldi programmi hakkama alla laadima.&lt;br /&gt;
&lt;br /&gt;
Asp.NET&#039;i tundmaõppimine oli arvatust aeganõudvam ja kõik ei saanud ideaalne: kohvikutel on laius-ja pikkuskraadid, edaspidi võiks kohvikülastajale mõeldud rakenduses kaardil näha olla, kus mõni kohvik asub. Ka ei osutunud treeview kõigi kohvikute andmete korraga kuvamisel, eriti kui on palju kohvikuid, kõige paremaks valikuks.&lt;br /&gt;
&lt;br /&gt;
Kõige paremini õnnestus kohvikute omanikele mõeldud rakendus.&lt;br /&gt;
&lt;br /&gt;
==PUNKTID== &lt;br /&gt;
*Henri: 10 -  xml-osa ja veebiteenuste tabelite loogika.&lt;br /&gt;
*Heiki: 3 - wiki sissejuhatus.&lt;br /&gt;
*Mailis: 47 - veebiteenuste programmeerimine ja klientrakendused.&lt;/div&gt;</summary>
		<author><name>Mtoompuu</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Meeskond_%22H2%22&amp;diff=33790</id>
		<title>Meeskond &quot;H2&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Meeskond_%22H2%22&amp;diff=33790"/>
		<updated>2011-06-05T23:00:15Z</updated>

		<summary type="html">&lt;p&gt;Mtoompuu: /* PUNKTID */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Kohviku menüüsüsteem==&lt;br /&gt;
===Projekt===&lt;br /&gt;
Kohvikute (esialgu ainult IT-Kohviku) menüüsüsteem, mis on jälgitav mobiilseadmetelt. Lisaväärtusena võimaldab anda pakutavale hinnanguid, otsuse langetamise hõlbustamiseks kommentaar:(see viimane funktsioon kipub vist &amp;quot;veebirakenduseks&amp;quot; muutuma)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Sihtplatvormid:&lt;br /&gt;
Windows Mobile, iOS, Android(kui leiame vabatahtlikud testijad)&lt;br /&gt;
&lt;br /&gt;
===Taustinfo===&lt;br /&gt;
Praegune IT-Kohviku menüü on käsitsi täidetav valge tahvel. Projekti eesmärgiks on parendada IT-Kohviku menüüsüsteemi ja teha see veebi kaudu kättesaadavaks, nii, et menüüsse saab lisada ka karniiri valiku. Standardmenüü puhul saab menüüs olla ka illustreeriv foto. Hetkemenüü ning hinnad ja lahtioleku ajad on samuti jälgitavad võrguühendust eviva mobiilseadme ekraanilt, hõlbustades sellega valikute tegemist.&lt;br /&gt;
&lt;br /&gt;
===Liikmed===&lt;br /&gt;
* Mailis Toompuu&lt;br /&gt;
* Henri Kroosmann&lt;br /&gt;
* Heiki Tamm&lt;br /&gt;
&lt;br /&gt;
==Sisu==&lt;br /&gt;
&lt;br /&gt;
===XML Data===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;menu&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name1&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;0&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name1&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item1&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item2&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item3&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;0&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;0&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount1&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;0&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;0&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot1&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name2&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;255&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name2&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item4&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item5&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item6&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;255&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;255&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount2&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;255&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;255&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot2&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name3&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;1&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name3&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item7&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item8&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item9&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;1&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;1&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount3&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;1&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;1&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot3&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
&amp;lt;/menu&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===XML Schema===&lt;br /&gt;
&lt;br /&gt;
Ülevaade Schema&#039;st. &amp;lt;br /&amp;gt;&lt;br /&gt;
[[File:XMLSchema_Capture_(optimized).png]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Ning sellele vastav kood.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xs:schema attributeFormDefault=&amp;quot;unqualified&amp;quot; elementFormDefault=&amp;quot;qualified&amp;quot; xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xs:element name=&amp;quot;menu&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;product&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;type&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;id&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;extras&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence minOccurs=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;item&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;price&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence minOccurs=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;int&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;frac&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element minOccurs=&amp;quot;0&amp;quot; name=&amp;quot;discount&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;vote&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;pos&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;neg&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;screenshot&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===XML Style===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;html&amp;gt;&lt;br /&gt;
      &amp;lt;head&amp;gt;&lt;br /&gt;
        &amp;lt;style type=&amp;quot;text/css&amp;quot;&amp;gt;&lt;br /&gt;
          html,body{margin:0;padding:0;font-family:Helvetica,Arial,sans-serif;font-size:14px;line-height:19px;color:#2c2c2c;}&lt;br /&gt;
          h1{margin:0;padding:25px 0 0;font-size:22px;line-height:25px;text-align:center;}&lt;br /&gt;
          h2{margin:0;padding:5px;font-size:16px;line-height:21px}&lt;br /&gt;
          span.discount{padding:0 0 0 5px;color:red;}&lt;br /&gt;
          table{margin:20px auto;padding:0;}&lt;br /&gt;
          th,td{padding:5px;border:1px solid #2c2c2c;vertical-align:top;text-align:left}&lt;br /&gt;
          th{font-weight:bold;background-color:#eee;}&lt;br /&gt;
          ul{margin:0;padding:0;list-style-type:none;}&lt;br /&gt;
        &amp;lt;/style&amp;gt;&lt;br /&gt;
      &amp;lt;/head&amp;gt;&lt;br /&gt;
      &amp;lt;body&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;Menüü&amp;lt;/h1&amp;gt;&lt;br /&gt;
        &amp;lt;table width=&amp;quot;800&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;200&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;100&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col witdh=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;150&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;tr&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Nimetus&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Lisandid&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Tüüp&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Hind&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Hinne / Hindajaid&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Pilt&amp;lt;/th&amp;gt;&lt;br /&gt;
          &amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
          &amp;lt;xsl:for-each select=&amp;quot;menu/product&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:sort select=&amp;quot;type/id&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:sort select=&amp;quot;name&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;th&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;name&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/th&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;extras/node()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;ul&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:for-each select=&amp;quot;extras/item&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;li&amp;gt;&lt;br /&gt;
                          &amp;lt;xsl:value-of select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;/li&amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
                    &amp;lt;/ul&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;td&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;type/name&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;price/node()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    €&amp;lt;xsl:value-of select=&amp;quot;price/int&amp;quot;/&amp;gt;.&amp;lt;xsl:value-of select=&amp;quot;price/frac&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:if test=&amp;quot;price/discount/text()&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;span class=&amp;quot;discount&amp;quot;&amp;gt;&lt;br /&gt;
                        (-&amp;lt;xsl:value-of select=&amp;quot;price/discount&amp;quot;/&amp;gt;%)&lt;br /&gt;
                      &amp;lt;/span&amp;gt;&lt;br /&gt;
                    &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:variable name=&amp;quot;p&amp;quot; select=&amp;quot;vote/pos&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:variable name=&amp;quot;n&amp;quot; select=&amp;quot;vote/neg&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;td&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$p - $n&amp;quot;/&amp;gt; / &amp;lt;xsl:value-of select=&amp;quot;$p + $n&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;screenshot/text()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;img src=&amp;quot;{screenshot}&amp;quot; alt=&amp;quot;&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;img src=&amp;quot;screenshots/default.png&amp;quot; alt=&amp;quot;No image&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
      &amp;lt;/body&amp;gt;&lt;br /&gt;
    &amp;lt;/html&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
Sisu ja stiilifaili koostöö http://henri.kroosmann.ee/kool/xml/index.xml &amp;lt;!--[http://henri.kroosmann.ee/kool/xml/index.xml]--&amp;gt;&lt;br /&gt;
==VEEBITEENUSED==&lt;br /&gt;
&lt;br /&gt;
===8. aprill===&lt;br /&gt;
Otsustame teha teenused kõikide kohvikute menüüde kohta.&lt;br /&gt;
&lt;br /&gt;
===11.-12. aprill===&lt;br /&gt;
Henri koostab tabelite loogika&lt;br /&gt;
&lt;br /&gt;
===13. aprill===&lt;br /&gt;
Mailis otsustab veebiteenused teha asmx-is [webmethod]-itega&lt;br /&gt;
===14. aprill===&lt;br /&gt;
Mailis hakkab veebiteenuseid tegema&lt;br /&gt;
===17. aprill===&lt;br /&gt;
Veebiteenused on valmis:&lt;br /&gt;
&lt;br /&gt;
*AnnaJoogiliikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaJoogitabelirida_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*AnnaJookideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaK6igiKohvikuteAndmeteNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyyIDed_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyyRida_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyydeNimekiri_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaMenyyLiikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaMenyydeNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaPromillideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToiduliikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToitudeNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToitutabelirida_toiduIDjargi &lt;br /&gt;
&lt;br /&gt;
*AnnaYheKohvikuAndmed_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*KustutaJookMenyyst &lt;br /&gt;
&lt;br /&gt;
*KustutaMenyy &lt;br /&gt;
&lt;br /&gt;
*KustutaKohvik &lt;br /&gt;
&lt;br /&gt;
*KustutaToitMenyyst &lt;br /&gt;
&lt;br /&gt;
*KysiYheKohvikuYheMenyyToitudeIDeed_menyyIDjargi &lt;br /&gt;
&lt;br /&gt;
*LisaJoogiLiik &lt;br /&gt;
&lt;br /&gt;
*LisaMenyyLiik &lt;br /&gt;
&lt;br /&gt;
*LisaPromill &lt;br /&gt;
&lt;br /&gt;
*LisaToiduLiik &lt;br /&gt;
&lt;br /&gt;
*SecurityAuthenticateUser &lt;br /&gt;
&lt;br /&gt;
*TOITJOOKmenyysRida_menyyIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedJoogileMenyys &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedKohvikule &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedToiduleMenyys &lt;br /&gt;
&lt;br /&gt;
*annaJoogiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiKIRJELDUS_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiKOMM_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiID_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiNIMI_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKasOnTaimeT_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKasutajaNIMI_Guidjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuLahtiolekuAjad_kohvikuIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuTeated &lt;br /&gt;
&lt;br /&gt;
*annaLinnaID_LinnaNimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaLinnaNIMI_LinnaIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaLinnad_maakonnaNIMEjargi &lt;br /&gt;
&lt;br /&gt;
*annaMaakonnaID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaMenyyLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaMenyyLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaPromill_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaPromilliID_promilliNrJargi &lt;br /&gt;
&lt;br /&gt;
*annaPromilliNR_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduKIRJELDUS_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduKOMMENTAAR_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiNIMETUS_toiduIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaYheKohvikuMenyyd_kohvikuNIMEjargi &lt;br /&gt;
&lt;br /&gt;
*autendiKasutajaParooliJargi &lt;br /&gt;
&lt;br /&gt;
*k6igiKohvikuteMenyyd &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusJoogiKohta &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusKohvikuKohta &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusToiduKohta &lt;br /&gt;
&lt;br /&gt;
*lisaJookMenyysse &lt;br /&gt;
&lt;br /&gt;
*lisaToitMenyysse &lt;br /&gt;
&lt;br /&gt;
*lisaUusJook &lt;br /&gt;
&lt;br /&gt;
*lisaUusKohvik &lt;br /&gt;
&lt;br /&gt;
*lisaUusLahtiolekuAeg &lt;br /&gt;
&lt;br /&gt;
*lisaUusMenyy &lt;br /&gt;
&lt;br /&gt;
*lisaUusTeadaanne &lt;br /&gt;
&lt;br /&gt;
*lisaUusToit &lt;br /&gt;
&lt;br /&gt;
*nadalapaevaID_paevaNimetuseJargi &lt;br /&gt;
&lt;br /&gt;
*nadalapaevaNIMETUS_paevaIDjargi&lt;br /&gt;
&lt;br /&gt;
*Registreeru&lt;br /&gt;
&lt;br /&gt;
*LogiSisseTavakasutajana&lt;br /&gt;
&lt;br /&gt;
*LogiSisseKohvikuna&lt;br /&gt;
&lt;br /&gt;
===22.aprill===&lt;br /&gt;
Toimus koosolek&lt;br /&gt;
*Henri lubas meetodite turvamise teha.&lt;br /&gt;
*Heiki lubas statistika teha meetodite kohta.&lt;br /&gt;
&lt;br /&gt;
===Allikfail===&lt;br /&gt;
Allikfail: http://www.p2ike.com/CSharp/KohvikudVeebiteenus.rar&lt;br /&gt;
&lt;br /&gt;
Meetod &#039;k6igiKohvikuteMenyyd&#039; kuvab sellise xml struktuuri: http://www.p2ike.com/CSharp/k6igiKohvikuteMenyyd.xml&lt;br /&gt;
&lt;br /&gt;
Toidud ja joogid sorteeritakse liikide kaupa.&lt;br /&gt;
&lt;br /&gt;
===Andmetabelid===&lt;br /&gt;
[[File:andmetabelid.jpg|777px|thumb|left|andmemudel]]&lt;br /&gt;
===Statistika===&lt;br /&gt;
 using System;&lt;br /&gt;
using System.Web.Services;&lt;br /&gt;
using System.Web.Services.Protocols;&lt;br /&gt;
using System.IO;&lt;br /&gt;
using System.Net;&lt;br /&gt;
 &lt;br /&gt;
// Define a SOAP Extension that traces the SOAP request and SOAP&lt;br /&gt;
// response for the XML Web service method the SOAP extension is&lt;br /&gt;
// applied to. &lt;br /&gt;
 &lt;br /&gt;
namespace WebASPKohvikud&lt;br /&gt;
{&lt;br /&gt;
    public class TraceExtension : SoapExtension&lt;br /&gt;
    {&lt;br /&gt;
        Stream oldStream;&lt;br /&gt;
        Stream newStream;&lt;br /&gt;
        string filename;&lt;br /&gt;
 &lt;br /&gt;
        // Save the Stream representing the SOAP request or SOAP response into&lt;br /&gt;
        // a local memory buffer.&lt;br /&gt;
        public override Stream ChainStream(Stream stream)&lt;br /&gt;
        {&lt;br /&gt;
            oldStream = stream;&lt;br /&gt;
            newStream = new MemoryStream();&lt;br /&gt;
            return newStream;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        // When the SOAP extension is accessed for the first time, the XML Web&lt;br /&gt;
        // service method it is applied to is accessed to store the file&lt;br /&gt;
        // name passed in, using the corresponding SoapExtensionAttribute.	&lt;br /&gt;
        public override object GetInitializer(LogicalMethodInfo methodInfo, SoapExtensionAttribute attribute)&lt;br /&gt;
        {&lt;br /&gt;
            return ((TraceExtensionAttribute)attribute).Filename;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        // The SOAP extension was configured to run using a configuration file&lt;br /&gt;
        // instead of an attribute applied to a specific XML Web service&lt;br /&gt;
        // method.&lt;br /&gt;
        public override object GetInitializer(Type WebServiceType)&lt;br /&gt;
        {&lt;br /&gt;
            // Return a file name to log the trace information to, based on the&lt;br /&gt;
            // type.&lt;br /&gt;
            return &amp;quot;C:\\&amp;quot; + WebServiceType.FullName + &amp;quot;.log&amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        // Receive the file name stored by GetInitializer and store it in a&lt;br /&gt;
        // member variable for this specific instance.&lt;br /&gt;
        public override void Initialize(object initializer)&lt;br /&gt;
        {&lt;br /&gt;
            filename = (string)initializer;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        //  If the SoapMessageStage is such that the SoapRequest or&lt;br /&gt;
        //  SoapResponse is still in the SOAP format to be sent or received,&lt;br /&gt;
        //  save it out to a file.&lt;br /&gt;
        public override void ProcessMessage(SoapMessage message)&lt;br /&gt;
        {&lt;br /&gt;
            switch (message.Stage)&lt;br /&gt;
            {&lt;br /&gt;
                case SoapMessageStage.BeforeSerialize:&lt;br /&gt;
                    break;&lt;br /&gt;
                case SoapMessageStage.AfterSerialize:&lt;br /&gt;
                    WriteOutput(message);&lt;br /&gt;
                    break;&lt;br /&gt;
                case SoapMessageStage.BeforeDeserialize:&lt;br /&gt;
                    WriteInput(message);&lt;br /&gt;
                    break;&lt;br /&gt;
                case SoapMessageStage.AfterDeserialize:&lt;br /&gt;
                    break;&lt;br /&gt;
                default:&lt;br /&gt;
                    throw new Exception(&amp;quot;invalid stage&amp;quot;);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        public void WriteOutput(SoapMessage message)&lt;br /&gt;
        {&lt;br /&gt;
            newStream.Position = 0;&lt;br /&gt;
            FileStream fs = new FileStream(filename, FileMode.Append,&lt;br /&gt;
                FileAccess.Write);&lt;br /&gt;
            StreamWriter w = new StreamWriter(fs);&lt;br /&gt;
 &lt;br /&gt;
            string soapString = (message is SoapServerMessage) ? &amp;quot;SoapResponse&amp;quot; : &amp;quot;SoapRequest&amp;quot;;&lt;br /&gt;
            w.WriteLine(&amp;quot;-----&amp;quot; + soapString + &amp;quot; at &amp;quot; + DateTime.Now);&lt;br /&gt;
            w.Flush();&lt;br /&gt;
            Copy(newStream, fs);&lt;br /&gt;
            w.Close();&lt;br /&gt;
            newStream.Position = 0;&lt;br /&gt;
            Copy(newStream, oldStream);&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        public void WriteInput(SoapMessage message)&lt;br /&gt;
        {&lt;br /&gt;
            Copy(oldStream, newStream);&lt;br /&gt;
            FileStream fs = new FileStream(filename, FileMode.Append,&lt;br /&gt;
                FileAccess.Write);&lt;br /&gt;
            StreamWriter w = new StreamWriter(fs);&lt;br /&gt;
 &lt;br /&gt;
            string soapString = (message is SoapServerMessage) ?&lt;br /&gt;
                &amp;quot;SoapRequest&amp;quot; : &amp;quot;SoapResponse&amp;quot;;&lt;br /&gt;
            w.WriteLine(&amp;quot;-----&amp;quot; + soapString +&lt;br /&gt;
                &amp;quot; at &amp;quot; + DateTime.Now);&lt;br /&gt;
            w.Flush();&lt;br /&gt;
            newStream.Position = 0;&lt;br /&gt;
            Copy(newStream, fs);&lt;br /&gt;
            w.Close();&lt;br /&gt;
            newStream.Position = 0;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        void Copy(Stream from, Stream to)&lt;br /&gt;
        {&lt;br /&gt;
            TextReader reader = new StreamReader(from);&lt;br /&gt;
            TextWriter writer = new StreamWriter(to);&lt;br /&gt;
            writer.WriteLine(reader.ReadToEnd());&lt;br /&gt;
            writer.Flush();&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    // Create a SoapExtensionAttribute for the SOAP Extension that can be&lt;br /&gt;
    // applied to an XML Web service method.&lt;br /&gt;
    [AttributeUsage(AttributeTargets.Method)]&lt;br /&gt;
    public class TraceExtensionAttribute : SoapExtensionAttribute&lt;br /&gt;
    {&lt;br /&gt;
 &lt;br /&gt;
        private string filename = @&amp;quot;C:\Users\Heiki Tamm\Documents\Õppematerjalid_2011\WebASPKohvikud\WebASPKohvikud\SoapLog.txt&amp;quot;;&lt;br /&gt;
        private int priority;&lt;br /&gt;
 &lt;br /&gt;
        public override Type ExtensionType&lt;br /&gt;
        {&lt;br /&gt;
            get { return typeof(TraceExtension); }&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        public override int Priority&lt;br /&gt;
        {&lt;br /&gt;
            get { return priority; }&lt;br /&gt;
            set { priority = value; }&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        public string Filename&lt;br /&gt;
        {&lt;br /&gt;
            get&lt;br /&gt;
            {&lt;br /&gt;
                return filename;&lt;br /&gt;
            }&lt;br /&gt;
            set&lt;br /&gt;
            {&lt;br /&gt;
                filename = value;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
// todo: &lt;br /&gt;
// from each soap header record query content &lt;br /&gt;
// (containing client, date, time, query ) into a DB&lt;br /&gt;
// for later reference for conducting any kind of &lt;br /&gt;
// applicable statistics and then generate stats :D !&lt;br /&gt;
// Proovin selliselt, et on lihtne statistika tabel:&lt;br /&gt;
// 1) meetod // välja kutsutava meetodi nimi&lt;br /&gt;
// 2) kuupäev // timestamp&lt;br /&gt;
// 3) callide arv // meetodi väljakutsimiste hulk&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==KLIENTRAKENDUS==&lt;br /&gt;
&lt;br /&gt;
===23. mai===&lt;br /&gt;
Mailis tegi kohvikute kuvamise ASP.NET rakenduse.&lt;br /&gt;
Kohvikud kuvatakse TreeView&#039;s &lt;br /&gt;
menüüde ja andmetega ning arvamustega kohvikute ja toitude ja jookide kohta.&lt;br /&gt;
&lt;br /&gt;
Samal lehel on kohvikuhuvilistele registreerimisvõimalus&lt;br /&gt;
ja sisselogimine.&lt;br /&gt;
&lt;br /&gt;
Kui on sisselogitud, saab lisada arvamusi.&lt;br /&gt;
Arvamuste lisamine on Ajax Extended Toolkiti controli&#039;ga &#039;Allways Visible ...&#039; tehtud, &lt;br /&gt;
&lt;br /&gt;
nii et mööda pikka TreeViewd alla kerides saab &lt;br /&gt;
lisada arvamust ilma ülesserva tagasi minemata.&lt;br /&gt;
&lt;br /&gt;
Arvamused ilmuvad kohe peale lisamist TreeView&#039;sse.&lt;br /&gt;
&lt;br /&gt;
TreeView&#039;sse tulevad andmed xml-failist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pooleli on veel kohvikute-poolne rakendus, kus omanik saab lisada ja kustutada kohvikuid, menüüsid ja toite-jooke, lisada teadaandeid.&lt;br /&gt;
&lt;br /&gt;
Pooleli on veel admini-rakendus, kus admin saab kasutajale määrata rolli, mis annab õigused kohviku-rakendusse sisse logida.&lt;br /&gt;
===4. juuni===&lt;br /&gt;
Valmis sai Kohvikute omanikele mõeldud klientrakendus.&lt;br /&gt;
Tehtud ASP.NET&#039;i veebirakendusena.&lt;br /&gt;
Seal on sisselogimine, registreerumine ja adminile kirja saatmine kohvikuomaniku õiguste saamiseks.&lt;br /&gt;
Peale sisselogimist saab &lt;br /&gt;
*lisada ja kustutada kohvikut&lt;br /&gt;
*lisada kohvikule lahtiolekuaegu nädalapäevade kaupa ja neid kustutada&lt;br /&gt;
*lisada kohvikule teadaandeid ja neid kustutada&lt;br /&gt;
*lisada kohvikule menüüsid ja neid kustutada: menüül on nimetus, liik, nädalapäev,  lisamiskuupäev jne. &lt;br /&gt;
*lisada menüüsse toite ja neid kustutada. Toitudel on nimetus, liik, hind, kas-sobib-taimetoitlasele, kogus grammides, suurus, lisamise kuupäev. Eraldi listides on kõikide kohvikute lisatud toidud ja selle kohviku lisatud toidud. Toitu valides rippmenüüst ilmuvad selle toidu andmed, et näha täpsemalt, mis toiduga on tegu. Ka on näha parajasti toitu lisatavasse menüüsse varem lisatud toidud.&lt;br /&gt;
*jookidele on sama, va. taimetoidu asemel on alkohoolse joogi korral promillide suurus.&lt;br /&gt;
&lt;br /&gt;
Lisada saab textbokside kaudu, nimekirjadest valimine on tehtud dropdown-listidena.&lt;br /&gt;
Kuvamised on tehtud GridViewdena, mis saavad andmeid meetoditest, mitte otse andmebaasitabelist.&lt;br /&gt;
&lt;br /&gt;
===5. juuni===&lt;br /&gt;
Valmis sai Kohvikute administraatori  ASP.NET-veebirakendus.&lt;br /&gt;
Admin saab registreeruda ja sisse logida.&lt;br /&gt;
Kui admin on sisse loginud, saab ta vaadata statistikat. Statistika-tabeleid on eraldi selle kohta, kui palju on mingit meetodit kasutatud ja selle kohta,kes millal mingit meetodit kasutas.&lt;br /&gt;
Sisseloginuna saab vaadata saabunud taotlusi ja nende järgi kasutajatele rolle määrata.&lt;br /&gt;
&lt;br /&gt;
Tabelid saavad andmeid otse andmebaasist, GridView&#039;dena, neid saab sorteerida tulpade&lt;br /&gt;
pealkirjadel klikkides.&lt;br /&gt;
&lt;br /&gt;
==KOKKUVÕTE==&lt;br /&gt;
Oli soov teha ideaalset teenust ja rakendusi, millega on mugav lisada ja näha kohvikute menüüsid.&lt;br /&gt;
Veebiteenuseid sai veel pidevalt täiendatud rakenduste tegemise käigus, neid tuli kokku 100 ringis.&lt;br /&gt;
&lt;br /&gt;
Kõik kolm rakendust sai tehtud ASP.NET&#039;i veebirakendustena, et midagi juurde õppida.&lt;br /&gt;
Ka on veeb kõigile kättesaadav, ei pea eraldi programmi hakkama alla laadima.&lt;br /&gt;
&lt;br /&gt;
Asp.NET&#039;i tundmaõppimine oli arvatust aeganõudvam ja kõik ei saanud ideaalne: kohvikutel on laius-ja pikkuskraadid, edaspidi võiks kohvikülastajale mõeldud rakenduses kaardil näha olla, kus mõni kohvik asub. Ka ei osutunud treeview kõigi kohvikute andmete korraga kuvamisel, eriti kui on palju kohvikuid, kõige paremaks valikuks.&lt;br /&gt;
&lt;br /&gt;
Kõige paremini õnnestus kohvikute omanikele mõeldud rakendus.&lt;br /&gt;
&lt;br /&gt;
==PUNKTID== &lt;br /&gt;
*Henri: 10 -  xml-osa ja veebiteenuste tabelite loogika.&lt;br /&gt;
*Heiki: 3 - wiki sissejuhatus.&lt;br /&gt;
*Mailis: 47 - veebiteenuste programmeerimine ja klientrakendused.&lt;/div&gt;</summary>
		<author><name>Mtoompuu</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Meeskond_%22H2%22&amp;diff=33789</id>
		<title>Meeskond &quot;H2&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Meeskond_%22H2%22&amp;diff=33789"/>
		<updated>2011-06-05T22:59:54Z</updated>

		<summary type="html">&lt;p&gt;Mtoompuu: /* KOKKUVÕTE */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Kohviku menüüsüsteem==&lt;br /&gt;
===Projekt===&lt;br /&gt;
Kohvikute (esialgu ainult IT-Kohviku) menüüsüsteem, mis on jälgitav mobiilseadmetelt. Lisaväärtusena võimaldab anda pakutavale hinnanguid, otsuse langetamise hõlbustamiseks kommentaar:(see viimane funktsioon kipub vist &amp;quot;veebirakenduseks&amp;quot; muutuma)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Sihtplatvormid:&lt;br /&gt;
Windows Mobile, iOS, Android(kui leiame vabatahtlikud testijad)&lt;br /&gt;
&lt;br /&gt;
===Taustinfo===&lt;br /&gt;
Praegune IT-Kohviku menüü on käsitsi täidetav valge tahvel. Projekti eesmärgiks on parendada IT-Kohviku menüüsüsteemi ja teha see veebi kaudu kättesaadavaks, nii, et menüüsse saab lisada ka karniiri valiku. Standardmenüü puhul saab menüüs olla ka illustreeriv foto. Hetkemenüü ning hinnad ja lahtioleku ajad on samuti jälgitavad võrguühendust eviva mobiilseadme ekraanilt, hõlbustades sellega valikute tegemist.&lt;br /&gt;
&lt;br /&gt;
===Liikmed===&lt;br /&gt;
* Mailis Toompuu&lt;br /&gt;
* Henri Kroosmann&lt;br /&gt;
* Heiki Tamm&lt;br /&gt;
&lt;br /&gt;
==Sisu==&lt;br /&gt;
&lt;br /&gt;
===XML Data===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;menu&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name1&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;0&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name1&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item1&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item2&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item3&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;0&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;0&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount1&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;0&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;0&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot1&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name2&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;255&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name2&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item4&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item5&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item6&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;255&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;255&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount2&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;255&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;255&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot2&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name3&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;1&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name3&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item7&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item8&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item9&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;1&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;1&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount3&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;1&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;1&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot3&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
&amp;lt;/menu&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===XML Schema===&lt;br /&gt;
&lt;br /&gt;
Ülevaade Schema&#039;st. &amp;lt;br /&amp;gt;&lt;br /&gt;
[[File:XMLSchema_Capture_(optimized).png]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Ning sellele vastav kood.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xs:schema attributeFormDefault=&amp;quot;unqualified&amp;quot; elementFormDefault=&amp;quot;qualified&amp;quot; xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xs:element name=&amp;quot;menu&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;product&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;type&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;id&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;extras&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence minOccurs=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;item&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;price&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence minOccurs=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;int&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;frac&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element minOccurs=&amp;quot;0&amp;quot; name=&amp;quot;discount&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;vote&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;pos&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;neg&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;screenshot&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===XML Style===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;html&amp;gt;&lt;br /&gt;
      &amp;lt;head&amp;gt;&lt;br /&gt;
        &amp;lt;style type=&amp;quot;text/css&amp;quot;&amp;gt;&lt;br /&gt;
          html,body{margin:0;padding:0;font-family:Helvetica,Arial,sans-serif;font-size:14px;line-height:19px;color:#2c2c2c;}&lt;br /&gt;
          h1{margin:0;padding:25px 0 0;font-size:22px;line-height:25px;text-align:center;}&lt;br /&gt;
          h2{margin:0;padding:5px;font-size:16px;line-height:21px}&lt;br /&gt;
          span.discount{padding:0 0 0 5px;color:red;}&lt;br /&gt;
          table{margin:20px auto;padding:0;}&lt;br /&gt;
          th,td{padding:5px;border:1px solid #2c2c2c;vertical-align:top;text-align:left}&lt;br /&gt;
          th{font-weight:bold;background-color:#eee;}&lt;br /&gt;
          ul{margin:0;padding:0;list-style-type:none;}&lt;br /&gt;
        &amp;lt;/style&amp;gt;&lt;br /&gt;
      &amp;lt;/head&amp;gt;&lt;br /&gt;
      &amp;lt;body&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;Menüü&amp;lt;/h1&amp;gt;&lt;br /&gt;
        &amp;lt;table width=&amp;quot;800&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;200&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;100&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col witdh=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;150&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;tr&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Nimetus&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Lisandid&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Tüüp&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Hind&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Hinne / Hindajaid&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Pilt&amp;lt;/th&amp;gt;&lt;br /&gt;
          &amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
          &amp;lt;xsl:for-each select=&amp;quot;menu/product&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:sort select=&amp;quot;type/id&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:sort select=&amp;quot;name&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;th&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;name&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/th&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;extras/node()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;ul&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:for-each select=&amp;quot;extras/item&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;li&amp;gt;&lt;br /&gt;
                          &amp;lt;xsl:value-of select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;/li&amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
                    &amp;lt;/ul&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;td&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;type/name&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;price/node()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    €&amp;lt;xsl:value-of select=&amp;quot;price/int&amp;quot;/&amp;gt;.&amp;lt;xsl:value-of select=&amp;quot;price/frac&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:if test=&amp;quot;price/discount/text()&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;span class=&amp;quot;discount&amp;quot;&amp;gt;&lt;br /&gt;
                        (-&amp;lt;xsl:value-of select=&amp;quot;price/discount&amp;quot;/&amp;gt;%)&lt;br /&gt;
                      &amp;lt;/span&amp;gt;&lt;br /&gt;
                    &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:variable name=&amp;quot;p&amp;quot; select=&amp;quot;vote/pos&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:variable name=&amp;quot;n&amp;quot; select=&amp;quot;vote/neg&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;td&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$p - $n&amp;quot;/&amp;gt; / &amp;lt;xsl:value-of select=&amp;quot;$p + $n&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;screenshot/text()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;img src=&amp;quot;{screenshot}&amp;quot; alt=&amp;quot;&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;img src=&amp;quot;screenshots/default.png&amp;quot; alt=&amp;quot;No image&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
      &amp;lt;/body&amp;gt;&lt;br /&gt;
    &amp;lt;/html&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
Sisu ja stiilifaili koostöö http://henri.kroosmann.ee/kool/xml/index.xml &amp;lt;!--[http://henri.kroosmann.ee/kool/xml/index.xml]--&amp;gt;&lt;br /&gt;
==VEEBITEENUSED==&lt;br /&gt;
&lt;br /&gt;
===8. aprill===&lt;br /&gt;
Otsustame teha teenused kõikide kohvikute menüüde kohta.&lt;br /&gt;
&lt;br /&gt;
===11.-12. aprill===&lt;br /&gt;
Henri koostab tabelite loogika&lt;br /&gt;
&lt;br /&gt;
===13. aprill===&lt;br /&gt;
Mailis otsustab veebiteenused teha asmx-is [webmethod]-itega&lt;br /&gt;
===14. aprill===&lt;br /&gt;
Mailis hakkab veebiteenuseid tegema&lt;br /&gt;
===17. aprill===&lt;br /&gt;
Veebiteenused on valmis:&lt;br /&gt;
&lt;br /&gt;
*AnnaJoogiliikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaJoogitabelirida_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*AnnaJookideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaK6igiKohvikuteAndmeteNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyyIDed_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyyRida_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyydeNimekiri_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaMenyyLiikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaMenyydeNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaPromillideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToiduliikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToitudeNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToitutabelirida_toiduIDjargi &lt;br /&gt;
&lt;br /&gt;
*AnnaYheKohvikuAndmed_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*KustutaJookMenyyst &lt;br /&gt;
&lt;br /&gt;
*KustutaMenyy &lt;br /&gt;
&lt;br /&gt;
*KustutaKohvik &lt;br /&gt;
&lt;br /&gt;
*KustutaToitMenyyst &lt;br /&gt;
&lt;br /&gt;
*KysiYheKohvikuYheMenyyToitudeIDeed_menyyIDjargi &lt;br /&gt;
&lt;br /&gt;
*LisaJoogiLiik &lt;br /&gt;
&lt;br /&gt;
*LisaMenyyLiik &lt;br /&gt;
&lt;br /&gt;
*LisaPromill &lt;br /&gt;
&lt;br /&gt;
*LisaToiduLiik &lt;br /&gt;
&lt;br /&gt;
*SecurityAuthenticateUser &lt;br /&gt;
&lt;br /&gt;
*TOITJOOKmenyysRida_menyyIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedJoogileMenyys &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedKohvikule &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedToiduleMenyys &lt;br /&gt;
&lt;br /&gt;
*annaJoogiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiKIRJELDUS_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiKOMM_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiID_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiNIMI_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKasOnTaimeT_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKasutajaNIMI_Guidjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuLahtiolekuAjad_kohvikuIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuTeated &lt;br /&gt;
&lt;br /&gt;
*annaLinnaID_LinnaNimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaLinnaNIMI_LinnaIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaLinnad_maakonnaNIMEjargi &lt;br /&gt;
&lt;br /&gt;
*annaMaakonnaID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaMenyyLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaMenyyLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaPromill_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaPromilliID_promilliNrJargi &lt;br /&gt;
&lt;br /&gt;
*annaPromilliNR_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduKIRJELDUS_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduKOMMENTAAR_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiNIMETUS_toiduIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaYheKohvikuMenyyd_kohvikuNIMEjargi &lt;br /&gt;
&lt;br /&gt;
*autendiKasutajaParooliJargi &lt;br /&gt;
&lt;br /&gt;
*k6igiKohvikuteMenyyd &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusJoogiKohta &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusKohvikuKohta &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusToiduKohta &lt;br /&gt;
&lt;br /&gt;
*lisaJookMenyysse &lt;br /&gt;
&lt;br /&gt;
*lisaToitMenyysse &lt;br /&gt;
&lt;br /&gt;
*lisaUusJook &lt;br /&gt;
&lt;br /&gt;
*lisaUusKohvik &lt;br /&gt;
&lt;br /&gt;
*lisaUusLahtiolekuAeg &lt;br /&gt;
&lt;br /&gt;
*lisaUusMenyy &lt;br /&gt;
&lt;br /&gt;
*lisaUusTeadaanne &lt;br /&gt;
&lt;br /&gt;
*lisaUusToit &lt;br /&gt;
&lt;br /&gt;
*nadalapaevaID_paevaNimetuseJargi &lt;br /&gt;
&lt;br /&gt;
*nadalapaevaNIMETUS_paevaIDjargi&lt;br /&gt;
&lt;br /&gt;
*Registreeru&lt;br /&gt;
&lt;br /&gt;
*LogiSisseTavakasutajana&lt;br /&gt;
&lt;br /&gt;
*LogiSisseKohvikuna&lt;br /&gt;
&lt;br /&gt;
===22.aprill===&lt;br /&gt;
Toimus koosolek&lt;br /&gt;
*Henri lubas meetodite turvamise teha.&lt;br /&gt;
*Heiki lubas statistika teha meetodite kohta.&lt;br /&gt;
&lt;br /&gt;
===Allikfail===&lt;br /&gt;
Allikfail: http://www.p2ike.com/CSharp/KohvikudVeebiteenus.rar&lt;br /&gt;
&lt;br /&gt;
Meetod &#039;k6igiKohvikuteMenyyd&#039; kuvab sellise xml struktuuri: http://www.p2ike.com/CSharp/k6igiKohvikuteMenyyd.xml&lt;br /&gt;
&lt;br /&gt;
Toidud ja joogid sorteeritakse liikide kaupa.&lt;br /&gt;
&lt;br /&gt;
===Andmetabelid===&lt;br /&gt;
[[File:andmetabelid.jpg|777px|thumb|left|andmemudel]]&lt;br /&gt;
===Statistika===&lt;br /&gt;
 using System;&lt;br /&gt;
using System.Web.Services;&lt;br /&gt;
using System.Web.Services.Protocols;&lt;br /&gt;
using System.IO;&lt;br /&gt;
using System.Net;&lt;br /&gt;
 &lt;br /&gt;
// Define a SOAP Extension that traces the SOAP request and SOAP&lt;br /&gt;
// response for the XML Web service method the SOAP extension is&lt;br /&gt;
// applied to. &lt;br /&gt;
 &lt;br /&gt;
namespace WebASPKohvikud&lt;br /&gt;
{&lt;br /&gt;
    public class TraceExtension : SoapExtension&lt;br /&gt;
    {&lt;br /&gt;
        Stream oldStream;&lt;br /&gt;
        Stream newStream;&lt;br /&gt;
        string filename;&lt;br /&gt;
 &lt;br /&gt;
        // Save the Stream representing the SOAP request or SOAP response into&lt;br /&gt;
        // a local memory buffer.&lt;br /&gt;
        public override Stream ChainStream(Stream stream)&lt;br /&gt;
        {&lt;br /&gt;
            oldStream = stream;&lt;br /&gt;
            newStream = new MemoryStream();&lt;br /&gt;
            return newStream;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        // When the SOAP extension is accessed for the first time, the XML Web&lt;br /&gt;
        // service method it is applied to is accessed to store the file&lt;br /&gt;
        // name passed in, using the corresponding SoapExtensionAttribute.	&lt;br /&gt;
        public override object GetInitializer(LogicalMethodInfo methodInfo, SoapExtensionAttribute attribute)&lt;br /&gt;
        {&lt;br /&gt;
            return ((TraceExtensionAttribute)attribute).Filename;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        // The SOAP extension was configured to run using a configuration file&lt;br /&gt;
        // instead of an attribute applied to a specific XML Web service&lt;br /&gt;
        // method.&lt;br /&gt;
        public override object GetInitializer(Type WebServiceType)&lt;br /&gt;
        {&lt;br /&gt;
            // Return a file name to log the trace information to, based on the&lt;br /&gt;
            // type.&lt;br /&gt;
            return &amp;quot;C:\\&amp;quot; + WebServiceType.FullName + &amp;quot;.log&amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        // Receive the file name stored by GetInitializer and store it in a&lt;br /&gt;
        // member variable for this specific instance.&lt;br /&gt;
        public override void Initialize(object initializer)&lt;br /&gt;
        {&lt;br /&gt;
            filename = (string)initializer;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        //  If the SoapMessageStage is such that the SoapRequest or&lt;br /&gt;
        //  SoapResponse is still in the SOAP format to be sent or received,&lt;br /&gt;
        //  save it out to a file.&lt;br /&gt;
        public override void ProcessMessage(SoapMessage message)&lt;br /&gt;
        {&lt;br /&gt;
            switch (message.Stage)&lt;br /&gt;
            {&lt;br /&gt;
                case SoapMessageStage.BeforeSerialize:&lt;br /&gt;
                    break;&lt;br /&gt;
                case SoapMessageStage.AfterSerialize:&lt;br /&gt;
                    WriteOutput(message);&lt;br /&gt;
                    break;&lt;br /&gt;
                case SoapMessageStage.BeforeDeserialize:&lt;br /&gt;
                    WriteInput(message);&lt;br /&gt;
                    break;&lt;br /&gt;
                case SoapMessageStage.AfterDeserialize:&lt;br /&gt;
                    break;&lt;br /&gt;
                default:&lt;br /&gt;
                    throw new Exception(&amp;quot;invalid stage&amp;quot;);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        public void WriteOutput(SoapMessage message)&lt;br /&gt;
        {&lt;br /&gt;
            newStream.Position = 0;&lt;br /&gt;
            FileStream fs = new FileStream(filename, FileMode.Append,&lt;br /&gt;
                FileAccess.Write);&lt;br /&gt;
            StreamWriter w = new StreamWriter(fs);&lt;br /&gt;
 &lt;br /&gt;
            string soapString = (message is SoapServerMessage) ? &amp;quot;SoapResponse&amp;quot; : &amp;quot;SoapRequest&amp;quot;;&lt;br /&gt;
            w.WriteLine(&amp;quot;-----&amp;quot; + soapString + &amp;quot; at &amp;quot; + DateTime.Now);&lt;br /&gt;
            w.Flush();&lt;br /&gt;
            Copy(newStream, fs);&lt;br /&gt;
            w.Close();&lt;br /&gt;
            newStream.Position = 0;&lt;br /&gt;
            Copy(newStream, oldStream);&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        public void WriteInput(SoapMessage message)&lt;br /&gt;
        {&lt;br /&gt;
            Copy(oldStream, newStream);&lt;br /&gt;
            FileStream fs = new FileStream(filename, FileMode.Append,&lt;br /&gt;
                FileAccess.Write);&lt;br /&gt;
            StreamWriter w = new StreamWriter(fs);&lt;br /&gt;
 &lt;br /&gt;
            string soapString = (message is SoapServerMessage) ?&lt;br /&gt;
                &amp;quot;SoapRequest&amp;quot; : &amp;quot;SoapResponse&amp;quot;;&lt;br /&gt;
            w.WriteLine(&amp;quot;-----&amp;quot; + soapString +&lt;br /&gt;
                &amp;quot; at &amp;quot; + DateTime.Now);&lt;br /&gt;
            w.Flush();&lt;br /&gt;
            newStream.Position = 0;&lt;br /&gt;
            Copy(newStream, fs);&lt;br /&gt;
            w.Close();&lt;br /&gt;
            newStream.Position = 0;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        void Copy(Stream from, Stream to)&lt;br /&gt;
        {&lt;br /&gt;
            TextReader reader = new StreamReader(from);&lt;br /&gt;
            TextWriter writer = new StreamWriter(to);&lt;br /&gt;
            writer.WriteLine(reader.ReadToEnd());&lt;br /&gt;
            writer.Flush();&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    // Create a SoapExtensionAttribute for the SOAP Extension that can be&lt;br /&gt;
    // applied to an XML Web service method.&lt;br /&gt;
    [AttributeUsage(AttributeTargets.Method)]&lt;br /&gt;
    public class TraceExtensionAttribute : SoapExtensionAttribute&lt;br /&gt;
    {&lt;br /&gt;
 &lt;br /&gt;
        private string filename = @&amp;quot;C:\Users\Heiki Tamm\Documents\Õppematerjalid_2011\WebASPKohvikud\WebASPKohvikud\SoapLog.txt&amp;quot;;&lt;br /&gt;
        private int priority;&lt;br /&gt;
 &lt;br /&gt;
        public override Type ExtensionType&lt;br /&gt;
        {&lt;br /&gt;
            get { return typeof(TraceExtension); }&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        public override int Priority&lt;br /&gt;
        {&lt;br /&gt;
            get { return priority; }&lt;br /&gt;
            set { priority = value; }&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        public string Filename&lt;br /&gt;
        {&lt;br /&gt;
            get&lt;br /&gt;
            {&lt;br /&gt;
                return filename;&lt;br /&gt;
            }&lt;br /&gt;
            set&lt;br /&gt;
            {&lt;br /&gt;
                filename = value;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
// todo: &lt;br /&gt;
// from each soap header record query content &lt;br /&gt;
// (containing client, date, time, query ) into a DB&lt;br /&gt;
// for later reference for conducting any kind of &lt;br /&gt;
// applicable statistics and then generate stats :D !&lt;br /&gt;
// Proovin selliselt, et on lihtne statistika tabel:&lt;br /&gt;
// 1) meetod // välja kutsutava meetodi nimi&lt;br /&gt;
// 2) kuupäev // timestamp&lt;br /&gt;
// 3) callide arv // meetodi väljakutsimiste hulk&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==KLIENTRAKENDUS==&lt;br /&gt;
&lt;br /&gt;
===23. mai===&lt;br /&gt;
Mailis tegi kohvikute kuvamise ASP.NET rakenduse.&lt;br /&gt;
Kohvikud kuvatakse TreeView&#039;s &lt;br /&gt;
menüüde ja andmetega ning arvamustega kohvikute ja toitude ja jookide kohta.&lt;br /&gt;
&lt;br /&gt;
Samal lehel on kohvikuhuvilistele registreerimisvõimalus&lt;br /&gt;
ja sisselogimine.&lt;br /&gt;
&lt;br /&gt;
Kui on sisselogitud, saab lisada arvamusi.&lt;br /&gt;
Arvamuste lisamine on Ajax Extended Toolkiti controli&#039;ga &#039;Allways Visible ...&#039; tehtud, &lt;br /&gt;
&lt;br /&gt;
nii et mööda pikka TreeViewd alla kerides saab &lt;br /&gt;
lisada arvamust ilma ülesserva tagasi minemata.&lt;br /&gt;
&lt;br /&gt;
Arvamused ilmuvad kohe peale lisamist TreeView&#039;sse.&lt;br /&gt;
&lt;br /&gt;
TreeView&#039;sse tulevad andmed xml-failist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pooleli on veel kohvikute-poolne rakendus, kus omanik saab lisada ja kustutada kohvikuid, menüüsid ja toite-jooke, lisada teadaandeid.&lt;br /&gt;
&lt;br /&gt;
Pooleli on veel admini-rakendus, kus admin saab kasutajale määrata rolli, mis annab õigused kohviku-rakendusse sisse logida.&lt;br /&gt;
===4. juuni===&lt;br /&gt;
Valmis sai Kohvikute omanikele mõeldud klientrakendus.&lt;br /&gt;
Tehtud ASP.NET&#039;i veebirakendusena.&lt;br /&gt;
Seal on sisselogimine, registreerumine ja adminile kirja saatmine kohvikuomaniku õiguste saamiseks.&lt;br /&gt;
Peale sisselogimist saab &lt;br /&gt;
*lisada ja kustutada kohvikut&lt;br /&gt;
*lisada kohvikule lahtiolekuaegu nädalapäevade kaupa ja neid kustutada&lt;br /&gt;
*lisada kohvikule teadaandeid ja neid kustutada&lt;br /&gt;
*lisada kohvikule menüüsid ja neid kustutada: menüül on nimetus, liik, nädalapäev,  lisamiskuupäev jne. &lt;br /&gt;
*lisada menüüsse toite ja neid kustutada. Toitudel on nimetus, liik, hind, kas-sobib-taimetoitlasele, kogus grammides, suurus, lisamise kuupäev. Eraldi listides on kõikide kohvikute lisatud toidud ja selle kohviku lisatud toidud. Toitu valides rippmenüüst ilmuvad selle toidu andmed, et näha täpsemalt, mis toiduga on tegu. Ka on näha parajasti toitu lisatavasse menüüsse varem lisatud toidud.&lt;br /&gt;
*jookidele on sama, va. taimetoidu asemel on alkohoolse joogi korral promillide suurus.&lt;br /&gt;
&lt;br /&gt;
Lisada saab textbokside kaudu, nimekirjadest valimine on tehtud dropdown-listidena.&lt;br /&gt;
Kuvamised on tehtud GridViewdena, mis saavad andmeid meetoditest, mitte otse andmebaasitabelist.&lt;br /&gt;
&lt;br /&gt;
===5. juuni===&lt;br /&gt;
Valmis sai Kohvikute administraatori  ASP.NET-veebirakendus.&lt;br /&gt;
Admin saab registreeruda ja sisse logida.&lt;br /&gt;
Kui admin on sisse loginud, saab ta vaadata statistikat. Statistika-tabeleid on eraldi selle kohta, kui palju on mingit meetodit kasutatud ja selle kohta,kes millal mingit meetodit kasutas.&lt;br /&gt;
Sisseloginuna saab vaadata saabunud taotlusi ja nende järgi kasutajatele rolle määrata.&lt;br /&gt;
&lt;br /&gt;
Tabelid saavad andmeid otse andmebaasist, GridView&#039;dena, neid saab sorteerida tulpade&lt;br /&gt;
pealkirjadel klikkides.&lt;br /&gt;
&lt;br /&gt;
==KOKKUVÕTE==&lt;br /&gt;
Oli soov teha ideaalset teenust ja rakendusi, millega on mugav lisada ja näha kohvikute menüüsid.&lt;br /&gt;
Veebiteenuseid sai veel pidevalt täiendatud rakenduste tegemise käigus, neid tuli kokku 100 ringis.&lt;br /&gt;
&lt;br /&gt;
Kõik kolm rakendust sai tehtud ASP.NET&#039;i veebirakendustena, et midagi juurde õppida.&lt;br /&gt;
Ka on veeb kõigile kättesaadav, ei pea eraldi programmi hakkama alla laadima.&lt;br /&gt;
&lt;br /&gt;
Asp.NET&#039;i tundmaõppimine oli arvatust aeganõudvam ja kõik ei saanud ideaalne: kohvikutel on laius-ja pikkuskraadid, edaspidi võiks kohvikülastajale mõeldud rakenduses kaardil näha olla, kus mõni kohvik asub. Ka ei osutunud treeview kõigi kohvikute andmete korraga kuvamisel, eriti kui on palju kohvikuid, kõige paremaks valikuks.&lt;br /&gt;
&lt;br /&gt;
Kõige paremini õnnestus kohvikute omanikele mõeldud rakendus.&lt;br /&gt;
&lt;br /&gt;
==PUNKTID== &lt;br /&gt;
Henri: 10 -  xml-osa ja veebiteenuste tabelite loogika.&lt;br /&gt;
Heiki: 3 - wiki sissejuhatus.&lt;br /&gt;
Mailis: 47 - veebiteenuste programmeerimine ja klientrakendused.&lt;/div&gt;</summary>
		<author><name>Mtoompuu</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Meeskond_%22H2%22&amp;diff=33788</id>
		<title>Meeskond &quot;H2&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Meeskond_%22H2%22&amp;diff=33788"/>
		<updated>2011-06-05T22:42:00Z</updated>

		<summary type="html">&lt;p&gt;Mtoompuu: /* KLIENTRAKENDUS */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Kohviku menüüsüsteem==&lt;br /&gt;
===Projekt===&lt;br /&gt;
Kohvikute (esialgu ainult IT-Kohviku) menüüsüsteem, mis on jälgitav mobiilseadmetelt. Lisaväärtusena võimaldab anda pakutavale hinnanguid, otsuse langetamise hõlbustamiseks kommentaar:(see viimane funktsioon kipub vist &amp;quot;veebirakenduseks&amp;quot; muutuma)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Sihtplatvormid:&lt;br /&gt;
Windows Mobile, iOS, Android(kui leiame vabatahtlikud testijad)&lt;br /&gt;
&lt;br /&gt;
===Taustinfo===&lt;br /&gt;
Praegune IT-Kohviku menüü on käsitsi täidetav valge tahvel. Projekti eesmärgiks on parendada IT-Kohviku menüüsüsteemi ja teha see veebi kaudu kättesaadavaks, nii, et menüüsse saab lisada ka karniiri valiku. Standardmenüü puhul saab menüüs olla ka illustreeriv foto. Hetkemenüü ning hinnad ja lahtioleku ajad on samuti jälgitavad võrguühendust eviva mobiilseadme ekraanilt, hõlbustades sellega valikute tegemist.&lt;br /&gt;
&lt;br /&gt;
===Liikmed===&lt;br /&gt;
* Mailis Toompuu&lt;br /&gt;
* Henri Kroosmann&lt;br /&gt;
* Heiki Tamm&lt;br /&gt;
&lt;br /&gt;
==Sisu==&lt;br /&gt;
&lt;br /&gt;
===XML Data===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;menu&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name1&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;0&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name1&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item1&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item2&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item3&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;0&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;0&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount1&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;0&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;0&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot1&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name2&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;255&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name2&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item4&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item5&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item6&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;255&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;255&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount2&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;255&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;255&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot2&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name3&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;1&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name3&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item7&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item8&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item9&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;1&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;1&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount3&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;1&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;1&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot3&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
&amp;lt;/menu&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===XML Schema===&lt;br /&gt;
&lt;br /&gt;
Ülevaade Schema&#039;st. &amp;lt;br /&amp;gt;&lt;br /&gt;
[[File:XMLSchema_Capture_(optimized).png]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Ning sellele vastav kood.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xs:schema attributeFormDefault=&amp;quot;unqualified&amp;quot; elementFormDefault=&amp;quot;qualified&amp;quot; xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xs:element name=&amp;quot;menu&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;product&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;type&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;id&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;extras&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence minOccurs=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;item&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;price&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence minOccurs=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;int&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;frac&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element minOccurs=&amp;quot;0&amp;quot; name=&amp;quot;discount&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;vote&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;pos&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;neg&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;screenshot&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===XML Style===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;html&amp;gt;&lt;br /&gt;
      &amp;lt;head&amp;gt;&lt;br /&gt;
        &amp;lt;style type=&amp;quot;text/css&amp;quot;&amp;gt;&lt;br /&gt;
          html,body{margin:0;padding:0;font-family:Helvetica,Arial,sans-serif;font-size:14px;line-height:19px;color:#2c2c2c;}&lt;br /&gt;
          h1{margin:0;padding:25px 0 0;font-size:22px;line-height:25px;text-align:center;}&lt;br /&gt;
          h2{margin:0;padding:5px;font-size:16px;line-height:21px}&lt;br /&gt;
          span.discount{padding:0 0 0 5px;color:red;}&lt;br /&gt;
          table{margin:20px auto;padding:0;}&lt;br /&gt;
          th,td{padding:5px;border:1px solid #2c2c2c;vertical-align:top;text-align:left}&lt;br /&gt;
          th{font-weight:bold;background-color:#eee;}&lt;br /&gt;
          ul{margin:0;padding:0;list-style-type:none;}&lt;br /&gt;
        &amp;lt;/style&amp;gt;&lt;br /&gt;
      &amp;lt;/head&amp;gt;&lt;br /&gt;
      &amp;lt;body&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;Menüü&amp;lt;/h1&amp;gt;&lt;br /&gt;
        &amp;lt;table width=&amp;quot;800&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;200&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;100&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col witdh=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;150&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;tr&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Nimetus&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Lisandid&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Tüüp&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Hind&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Hinne / Hindajaid&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Pilt&amp;lt;/th&amp;gt;&lt;br /&gt;
          &amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
          &amp;lt;xsl:for-each select=&amp;quot;menu/product&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:sort select=&amp;quot;type/id&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:sort select=&amp;quot;name&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;th&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;name&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/th&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;extras/node()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;ul&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:for-each select=&amp;quot;extras/item&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;li&amp;gt;&lt;br /&gt;
                          &amp;lt;xsl:value-of select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;/li&amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
                    &amp;lt;/ul&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;td&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;type/name&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;price/node()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    €&amp;lt;xsl:value-of select=&amp;quot;price/int&amp;quot;/&amp;gt;.&amp;lt;xsl:value-of select=&amp;quot;price/frac&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:if test=&amp;quot;price/discount/text()&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;span class=&amp;quot;discount&amp;quot;&amp;gt;&lt;br /&gt;
                        (-&amp;lt;xsl:value-of select=&amp;quot;price/discount&amp;quot;/&amp;gt;%)&lt;br /&gt;
                      &amp;lt;/span&amp;gt;&lt;br /&gt;
                    &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:variable name=&amp;quot;p&amp;quot; select=&amp;quot;vote/pos&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:variable name=&amp;quot;n&amp;quot; select=&amp;quot;vote/neg&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;td&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$p - $n&amp;quot;/&amp;gt; / &amp;lt;xsl:value-of select=&amp;quot;$p + $n&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;screenshot/text()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;img src=&amp;quot;{screenshot}&amp;quot; alt=&amp;quot;&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;img src=&amp;quot;screenshots/default.png&amp;quot; alt=&amp;quot;No image&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
      &amp;lt;/body&amp;gt;&lt;br /&gt;
    &amp;lt;/html&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
Sisu ja stiilifaili koostöö http://henri.kroosmann.ee/kool/xml/index.xml &amp;lt;!--[http://henri.kroosmann.ee/kool/xml/index.xml]--&amp;gt;&lt;br /&gt;
==VEEBITEENUSED==&lt;br /&gt;
&lt;br /&gt;
===8. aprill===&lt;br /&gt;
Otsustame teha teenused kõikide kohvikute menüüde kohta.&lt;br /&gt;
&lt;br /&gt;
===11.-12. aprill===&lt;br /&gt;
Henri koostab tabelite loogika&lt;br /&gt;
&lt;br /&gt;
===13. aprill===&lt;br /&gt;
Mailis otsustab veebiteenused teha asmx-is [webmethod]-itega&lt;br /&gt;
===14. aprill===&lt;br /&gt;
Mailis hakkab veebiteenuseid tegema&lt;br /&gt;
===17. aprill===&lt;br /&gt;
Veebiteenused on valmis:&lt;br /&gt;
&lt;br /&gt;
*AnnaJoogiliikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaJoogitabelirida_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*AnnaJookideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaK6igiKohvikuteAndmeteNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyyIDed_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyyRida_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyydeNimekiri_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaMenyyLiikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaMenyydeNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaPromillideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToiduliikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToitudeNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToitutabelirida_toiduIDjargi &lt;br /&gt;
&lt;br /&gt;
*AnnaYheKohvikuAndmed_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*KustutaJookMenyyst &lt;br /&gt;
&lt;br /&gt;
*KustutaMenyy &lt;br /&gt;
&lt;br /&gt;
*KustutaKohvik &lt;br /&gt;
&lt;br /&gt;
*KustutaToitMenyyst &lt;br /&gt;
&lt;br /&gt;
*KysiYheKohvikuYheMenyyToitudeIDeed_menyyIDjargi &lt;br /&gt;
&lt;br /&gt;
*LisaJoogiLiik &lt;br /&gt;
&lt;br /&gt;
*LisaMenyyLiik &lt;br /&gt;
&lt;br /&gt;
*LisaPromill &lt;br /&gt;
&lt;br /&gt;
*LisaToiduLiik &lt;br /&gt;
&lt;br /&gt;
*SecurityAuthenticateUser &lt;br /&gt;
&lt;br /&gt;
*TOITJOOKmenyysRida_menyyIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedJoogileMenyys &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedKohvikule &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedToiduleMenyys &lt;br /&gt;
&lt;br /&gt;
*annaJoogiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiKIRJELDUS_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiKOMM_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiID_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiNIMI_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKasOnTaimeT_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKasutajaNIMI_Guidjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuLahtiolekuAjad_kohvikuIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuTeated &lt;br /&gt;
&lt;br /&gt;
*annaLinnaID_LinnaNimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaLinnaNIMI_LinnaIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaLinnad_maakonnaNIMEjargi &lt;br /&gt;
&lt;br /&gt;
*annaMaakonnaID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaMenyyLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaMenyyLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaPromill_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaPromilliID_promilliNrJargi &lt;br /&gt;
&lt;br /&gt;
*annaPromilliNR_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduKIRJELDUS_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduKOMMENTAAR_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiNIMETUS_toiduIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaYheKohvikuMenyyd_kohvikuNIMEjargi &lt;br /&gt;
&lt;br /&gt;
*autendiKasutajaParooliJargi &lt;br /&gt;
&lt;br /&gt;
*k6igiKohvikuteMenyyd &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusJoogiKohta &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusKohvikuKohta &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusToiduKohta &lt;br /&gt;
&lt;br /&gt;
*lisaJookMenyysse &lt;br /&gt;
&lt;br /&gt;
*lisaToitMenyysse &lt;br /&gt;
&lt;br /&gt;
*lisaUusJook &lt;br /&gt;
&lt;br /&gt;
*lisaUusKohvik &lt;br /&gt;
&lt;br /&gt;
*lisaUusLahtiolekuAeg &lt;br /&gt;
&lt;br /&gt;
*lisaUusMenyy &lt;br /&gt;
&lt;br /&gt;
*lisaUusTeadaanne &lt;br /&gt;
&lt;br /&gt;
*lisaUusToit &lt;br /&gt;
&lt;br /&gt;
*nadalapaevaID_paevaNimetuseJargi &lt;br /&gt;
&lt;br /&gt;
*nadalapaevaNIMETUS_paevaIDjargi&lt;br /&gt;
&lt;br /&gt;
*Registreeru&lt;br /&gt;
&lt;br /&gt;
*LogiSisseTavakasutajana&lt;br /&gt;
&lt;br /&gt;
*LogiSisseKohvikuna&lt;br /&gt;
&lt;br /&gt;
===22.aprill===&lt;br /&gt;
Toimus koosolek&lt;br /&gt;
*Henri lubas meetodite turvamise teha.&lt;br /&gt;
*Heiki lubas statistika teha meetodite kohta.&lt;br /&gt;
&lt;br /&gt;
===Allikfail===&lt;br /&gt;
Allikfail: http://www.p2ike.com/CSharp/KohvikudVeebiteenus.rar&lt;br /&gt;
&lt;br /&gt;
Meetod &#039;k6igiKohvikuteMenyyd&#039; kuvab sellise xml struktuuri: http://www.p2ike.com/CSharp/k6igiKohvikuteMenyyd.xml&lt;br /&gt;
&lt;br /&gt;
Toidud ja joogid sorteeritakse liikide kaupa.&lt;br /&gt;
&lt;br /&gt;
===Andmetabelid===&lt;br /&gt;
[[File:andmetabelid.jpg|777px|thumb|left|andmemudel]]&lt;br /&gt;
===Statistika===&lt;br /&gt;
 using System;&lt;br /&gt;
using System.Web.Services;&lt;br /&gt;
using System.Web.Services.Protocols;&lt;br /&gt;
using System.IO;&lt;br /&gt;
using System.Net;&lt;br /&gt;
 &lt;br /&gt;
// Define a SOAP Extension that traces the SOAP request and SOAP&lt;br /&gt;
// response for the XML Web service method the SOAP extension is&lt;br /&gt;
// applied to. &lt;br /&gt;
 &lt;br /&gt;
namespace WebASPKohvikud&lt;br /&gt;
{&lt;br /&gt;
    public class TraceExtension : SoapExtension&lt;br /&gt;
    {&lt;br /&gt;
        Stream oldStream;&lt;br /&gt;
        Stream newStream;&lt;br /&gt;
        string filename;&lt;br /&gt;
 &lt;br /&gt;
        // Save the Stream representing the SOAP request or SOAP response into&lt;br /&gt;
        // a local memory buffer.&lt;br /&gt;
        public override Stream ChainStream(Stream stream)&lt;br /&gt;
        {&lt;br /&gt;
            oldStream = stream;&lt;br /&gt;
            newStream = new MemoryStream();&lt;br /&gt;
            return newStream;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        // When the SOAP extension is accessed for the first time, the XML Web&lt;br /&gt;
        // service method it is applied to is accessed to store the file&lt;br /&gt;
        // name passed in, using the corresponding SoapExtensionAttribute.	&lt;br /&gt;
        public override object GetInitializer(LogicalMethodInfo methodInfo, SoapExtensionAttribute attribute)&lt;br /&gt;
        {&lt;br /&gt;
            return ((TraceExtensionAttribute)attribute).Filename;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        // The SOAP extension was configured to run using a configuration file&lt;br /&gt;
        // instead of an attribute applied to a specific XML Web service&lt;br /&gt;
        // method.&lt;br /&gt;
        public override object GetInitializer(Type WebServiceType)&lt;br /&gt;
        {&lt;br /&gt;
            // Return a file name to log the trace information to, based on the&lt;br /&gt;
            // type.&lt;br /&gt;
            return &amp;quot;C:\\&amp;quot; + WebServiceType.FullName + &amp;quot;.log&amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        // Receive the file name stored by GetInitializer and store it in a&lt;br /&gt;
        // member variable for this specific instance.&lt;br /&gt;
        public override void Initialize(object initializer)&lt;br /&gt;
        {&lt;br /&gt;
            filename = (string)initializer;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        //  If the SoapMessageStage is such that the SoapRequest or&lt;br /&gt;
        //  SoapResponse is still in the SOAP format to be sent or received,&lt;br /&gt;
        //  save it out to a file.&lt;br /&gt;
        public override void ProcessMessage(SoapMessage message)&lt;br /&gt;
        {&lt;br /&gt;
            switch (message.Stage)&lt;br /&gt;
            {&lt;br /&gt;
                case SoapMessageStage.BeforeSerialize:&lt;br /&gt;
                    break;&lt;br /&gt;
                case SoapMessageStage.AfterSerialize:&lt;br /&gt;
                    WriteOutput(message);&lt;br /&gt;
                    break;&lt;br /&gt;
                case SoapMessageStage.BeforeDeserialize:&lt;br /&gt;
                    WriteInput(message);&lt;br /&gt;
                    break;&lt;br /&gt;
                case SoapMessageStage.AfterDeserialize:&lt;br /&gt;
                    break;&lt;br /&gt;
                default:&lt;br /&gt;
                    throw new Exception(&amp;quot;invalid stage&amp;quot;);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        public void WriteOutput(SoapMessage message)&lt;br /&gt;
        {&lt;br /&gt;
            newStream.Position = 0;&lt;br /&gt;
            FileStream fs = new FileStream(filename, FileMode.Append,&lt;br /&gt;
                FileAccess.Write);&lt;br /&gt;
            StreamWriter w = new StreamWriter(fs);&lt;br /&gt;
 &lt;br /&gt;
            string soapString = (message is SoapServerMessage) ? &amp;quot;SoapResponse&amp;quot; : &amp;quot;SoapRequest&amp;quot;;&lt;br /&gt;
            w.WriteLine(&amp;quot;-----&amp;quot; + soapString + &amp;quot; at &amp;quot; + DateTime.Now);&lt;br /&gt;
            w.Flush();&lt;br /&gt;
            Copy(newStream, fs);&lt;br /&gt;
            w.Close();&lt;br /&gt;
            newStream.Position = 0;&lt;br /&gt;
            Copy(newStream, oldStream);&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        public void WriteInput(SoapMessage message)&lt;br /&gt;
        {&lt;br /&gt;
            Copy(oldStream, newStream);&lt;br /&gt;
            FileStream fs = new FileStream(filename, FileMode.Append,&lt;br /&gt;
                FileAccess.Write);&lt;br /&gt;
            StreamWriter w = new StreamWriter(fs);&lt;br /&gt;
 &lt;br /&gt;
            string soapString = (message is SoapServerMessage) ?&lt;br /&gt;
                &amp;quot;SoapRequest&amp;quot; : &amp;quot;SoapResponse&amp;quot;;&lt;br /&gt;
            w.WriteLine(&amp;quot;-----&amp;quot; + soapString +&lt;br /&gt;
                &amp;quot; at &amp;quot; + DateTime.Now);&lt;br /&gt;
            w.Flush();&lt;br /&gt;
            newStream.Position = 0;&lt;br /&gt;
            Copy(newStream, fs);&lt;br /&gt;
            w.Close();&lt;br /&gt;
            newStream.Position = 0;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        void Copy(Stream from, Stream to)&lt;br /&gt;
        {&lt;br /&gt;
            TextReader reader = new StreamReader(from);&lt;br /&gt;
            TextWriter writer = new StreamWriter(to);&lt;br /&gt;
            writer.WriteLine(reader.ReadToEnd());&lt;br /&gt;
            writer.Flush();&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    // Create a SoapExtensionAttribute for the SOAP Extension that can be&lt;br /&gt;
    // applied to an XML Web service method.&lt;br /&gt;
    [AttributeUsage(AttributeTargets.Method)]&lt;br /&gt;
    public class TraceExtensionAttribute : SoapExtensionAttribute&lt;br /&gt;
    {&lt;br /&gt;
 &lt;br /&gt;
        private string filename = @&amp;quot;C:\Users\Heiki Tamm\Documents\Õppematerjalid_2011\WebASPKohvikud\WebASPKohvikud\SoapLog.txt&amp;quot;;&lt;br /&gt;
        private int priority;&lt;br /&gt;
 &lt;br /&gt;
        public override Type ExtensionType&lt;br /&gt;
        {&lt;br /&gt;
            get { return typeof(TraceExtension); }&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        public override int Priority&lt;br /&gt;
        {&lt;br /&gt;
            get { return priority; }&lt;br /&gt;
            set { priority = value; }&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        public string Filename&lt;br /&gt;
        {&lt;br /&gt;
            get&lt;br /&gt;
            {&lt;br /&gt;
                return filename;&lt;br /&gt;
            }&lt;br /&gt;
            set&lt;br /&gt;
            {&lt;br /&gt;
                filename = value;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
// todo: &lt;br /&gt;
// from each soap header record query content &lt;br /&gt;
// (containing client, date, time, query ) into a DB&lt;br /&gt;
// for later reference for conducting any kind of &lt;br /&gt;
// applicable statistics and then generate stats :D !&lt;br /&gt;
// Proovin selliselt, et on lihtne statistika tabel:&lt;br /&gt;
// 1) meetod // välja kutsutava meetodi nimi&lt;br /&gt;
// 2) kuupäev // timestamp&lt;br /&gt;
// 3) callide arv // meetodi väljakutsimiste hulk&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==KLIENTRAKENDUS==&lt;br /&gt;
&lt;br /&gt;
===23. mai===&lt;br /&gt;
Mailis tegi kohvikute kuvamise ASP.NET rakenduse.&lt;br /&gt;
Kohvikud kuvatakse TreeView&#039;s &lt;br /&gt;
menüüde ja andmetega ning arvamustega kohvikute ja toitude ja jookide kohta.&lt;br /&gt;
&lt;br /&gt;
Samal lehel on kohvikuhuvilistele registreerimisvõimalus&lt;br /&gt;
ja sisselogimine.&lt;br /&gt;
&lt;br /&gt;
Kui on sisselogitud, saab lisada arvamusi.&lt;br /&gt;
Arvamuste lisamine on Ajax Extended Toolkiti controli&#039;ga &#039;Allways Visible ...&#039; tehtud, &lt;br /&gt;
&lt;br /&gt;
nii et mööda pikka TreeViewd alla kerides saab &lt;br /&gt;
lisada arvamust ilma ülesserva tagasi minemata.&lt;br /&gt;
&lt;br /&gt;
Arvamused ilmuvad kohe peale lisamist TreeView&#039;sse.&lt;br /&gt;
&lt;br /&gt;
TreeView&#039;sse tulevad andmed xml-failist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pooleli on veel kohvikute-poolne rakendus, kus omanik saab lisada ja kustutada kohvikuid, menüüsid ja toite-jooke, lisada teadaandeid.&lt;br /&gt;
&lt;br /&gt;
Pooleli on veel admini-rakendus, kus admin saab kasutajale määrata rolli, mis annab õigused kohviku-rakendusse sisse logida.&lt;br /&gt;
===4. juuni===&lt;br /&gt;
Valmis sai Kohvikute omanikele mõeldud klientrakendus.&lt;br /&gt;
Tehtud ASP.NET&#039;i veebirakendusena.&lt;br /&gt;
Seal on sisselogimine, registreerumine ja adminile kirja saatmine kohvikuomaniku õiguste saamiseks.&lt;br /&gt;
Peale sisselogimist saab &lt;br /&gt;
*lisada ja kustutada kohvikut&lt;br /&gt;
*lisada kohvikule lahtiolekuaegu nädalapäevade kaupa ja neid kustutada&lt;br /&gt;
*lisada kohvikule teadaandeid ja neid kustutada&lt;br /&gt;
*lisada kohvikule menüüsid ja neid kustutada: menüül on nimetus, liik, nädalapäev,  lisamiskuupäev jne. &lt;br /&gt;
*lisada menüüsse toite ja neid kustutada. Toitudel on nimetus, liik, hind, kas-sobib-taimetoitlasele, kogus grammides, suurus, lisamise kuupäev. Eraldi listides on kõikide kohvikute lisatud toidud ja selle kohviku lisatud toidud. Toitu valides rippmenüüst ilmuvad selle toidu andmed, et näha täpsemalt, mis toiduga on tegu. Ka on näha parajasti toitu lisatavasse menüüsse varem lisatud toidud.&lt;br /&gt;
*jookidele on sama, va. taimetoidu asemel on alkohoolse joogi korral promillide suurus.&lt;br /&gt;
&lt;br /&gt;
Lisada saab textbokside kaudu, nimekirjadest valimine on tehtud dropdown-listidena.&lt;br /&gt;
Kuvamised on tehtud GridViewdena, mis saavad andmeid meetoditest, mitte otse andmebaasitabelist.&lt;br /&gt;
&lt;br /&gt;
===5. juuni===&lt;br /&gt;
Valmis sai Kohvikute administraatori  ASP.NET-veebirakendus.&lt;br /&gt;
Admin saab registreeruda ja sisse logida.&lt;br /&gt;
Kui admin on sisse loginud, saab ta vaadata statistikat. Statistika-tabeleid on eraldi selle kohta, kui palju on mingit meetodit kasutatud ja selle kohta,kes millal mingit meetodit kasutas.&lt;br /&gt;
Sisseloginuna saab vaadata saabunud taotlusi ja nende järgi kasutajatele rolle määrata.&lt;br /&gt;
&lt;br /&gt;
Tabelid saavad andmeid otse andmebaasist, GridView&#039;dena, neid saab sorteerida tulpade&lt;br /&gt;
pealkirjadel klikkides.&lt;br /&gt;
&lt;br /&gt;
==KOKKUVÕTE==&lt;/div&gt;</summary>
		<author><name>Mtoompuu</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=V%C3%B5rgurakendused_II:_2011_kevadel_valminud_kodut%C3%B6%C3%B6d&amp;diff=33784</id>
		<title>Võrgurakendused II: 2011 kevadel valminud kodutööd</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=V%C3%B5rgurakendused_II:_2011_kevadel_valminud_kodut%C3%B6%C3%B6d&amp;diff=33784"/>
		<updated>2011-06-05T22:25:51Z</updated>

		<summary type="html">&lt;p&gt;Mtoompuu: /* Mailis Toompuu */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Jaan Igamees=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;FoodWars&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;Tyhik&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Kert Suvi=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Tyhik&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond Tool]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Helen Muidik=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Tyhik&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;GAP&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele [[Talk:Meeskond &amp;quot;C terav&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenuse klientidele [[Talk:Meeskond &amp;quot;Tact&amp;quot;]]&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Mihkel Sokk=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Tact&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;Sepad&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele [[Talk:Meeskond Tool]]&lt;br /&gt;
** Arvustus veebiteenuse klientidele [[Talk:Meeskond &amp;quot;Sepad&amp;quot;]]&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Seda Sahradyan=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Tyhik&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;Tact&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele [[Talk:Meeskond &amp;quot;GAP&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt [[Talk:Meeskond &amp;quot;Nämm-nämm&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
=Priit Siimo=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;GAP&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond Tool]]&lt;br /&gt;
** Arvustus veebiteenusele [[Talk:Meeskond_%22Tyhik%22]]&lt;br /&gt;
** Arvustus veebiteenuse klientidele [[Talk:Meeskond_%22Tyhik%22]]&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt [[Talk:Meeskond_%22Hungry_Student_Food_Board%22]]&lt;br /&gt;
&lt;br /&gt;
=Siim Sarv=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;C terav&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;FoodWars&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele [[Talk:Meeskond &amp;quot;FoodWars&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenuse klientidele [[Talk:Meeskond &amp;quot;Hungry Student Food Board&amp;quot;]]&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Reigo Männiste=&lt;br /&gt;
* Meeskond [[Meeskond Tool]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;Tyhik&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Karl Männil=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Sepad&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;H2&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Ilmar Telga=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;FoodWars&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;GAP&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele [[Talk:Meeskond Tool]]&lt;br /&gt;
** Arvustus veebiteenuse klientidele [[Talk:Meeskond &amp;quot;Hungry Student Food Board&amp;quot;]]&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Siim Aaver=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Nämm-nämm&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;H2&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele [[Talk:Meeskond &amp;quot;Tyhik&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Taavi Ilves=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Hungry_Student_Food_Board&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;ASP-tastic&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele [[Talk:Meeskond_&amp;quot;Tyhik&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Jaan Kruusma=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Hungry_Student_Food_Board&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;C terav&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele [[Talk:Meeskond &amp;quot;Nämm-nämm&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Andrus Reedla=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;GAP&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;Nämm-nämm&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Jaak Lehtsalu=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Tact&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;Tyhik&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele [[Talk:Meeskond Tool]]&lt;br /&gt;
** Arvustus veebiteenuse klientidele [[Talk:Meeskond &amp;quot;H2&amp;quot;]]&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Jana Mrots=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Tyhik&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;Tact&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele [[Talk:Meeskond  &amp;quot;Hungry Student Food Board&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenuse klientidele [[Talk:Meeskond &amp;quot;H2&amp;quot;]]&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Heiki Tamm=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;H2&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;Meeskond&amp;quot;]]&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond  &amp;quot;Hungry Student Food Board&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Toomas Soha=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Sepad&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;Nämm-nämm&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele [[Talk:Meeskond_%22Tyhik%22]]&lt;br /&gt;
** Arvustus veebiteenuse klientidele [[Talk:Meeskond_%22C_terav%22]]&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt [[Talk:Meeskond_%22Tact%22]]&lt;br /&gt;
&lt;br /&gt;
=Miina Sikk=&lt;br /&gt;
* Meeskond [[Meeskond Tool]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;Tact&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Rauno Rüga=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;FoodWars&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;C terav&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele [[Talk:Meeskond &amp;quot;C terav&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenuse klientidele [[Talk:Meeskond Tool]]&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt [[Talk:Meeskond &amp;quot;Tyhik&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
=Tanel Liiv=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Hungry Student Food Board&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;C terav&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele [[Talk:Meeskond &amp;quot;Tyhik&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenuse klientidele [[Talk:Meeskond &amp;quot;Tyhik&amp;quot;]]&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Gaspar Karm=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;GAP&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;FoodWars&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele [[Talk:Meeskond &amp;quot;FoodWars&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenuse klientidele [[Talk:Meeskond &amp;quot;FoodWars&amp;quot;]]&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Joosep Ilves=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Nämm-nämm&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;C terav&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele [[Talk:Meeskond &amp;quot;H2&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenuse klientidele [[Talk:Meeskond_&amp;quot;FoodWars&amp;quot;]]&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Taivo Türnpu=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;ASP-tastic&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond Tool]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Sander Baikov=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Sepad&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;ASP-tastic&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Allar Anijago=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Tyhik&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;Tool&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Madis Sarv=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;C terav&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;Nämm-nämm&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele [[Talk:Meeskond &amp;quot;Nämm-nämm&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenuse klientidele [[Talk:Meeskond_Tool]]&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Kaspar Kallasmaa=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Nämm-nämm&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;C terav&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Jarko Kaskmaa=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;ASP-tastic&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;Tyhik&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele [[Talk:Meeskond_%22H2%22]]&lt;br /&gt;
** Arvustus veebiteenuse klientidele [[Talk:Meeskond_%22H2%22]]&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Indrek Kõue=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;ASP-tastic&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;GAP&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Erik Kaju=&lt;br /&gt;
* Meeskond [[Meeskond Tool]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Mailis Toompuu=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;H2&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;Sepad&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele [[Talk:Meeskond Tool]]&lt;br /&gt;
** Arvustus veebiteenuse klientidele [[Talk:Meeskond Tool]]&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Madis Kõosaar=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Tyhik&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;C terav&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele [[Talk:Meeskond &amp;quot;C terav&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenuse klientidele [[Talk:Meeskond &amp;quot;Sepad&amp;quot;]]&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Gert Glükmann=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Nämm-nämm&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;ASP-tastic&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Martin Lensment=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Tact&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond_&amp;quot;FoodWars&amp;quot;]] ja [[Talk:Meeskond_Tool]]&lt;br /&gt;
** Arvustus veebiteenusele [[Talk:Meeskond_Tool]]&lt;br /&gt;
** Arvustus veebiteenuse klientidele [[Talk:Meeskond_&amp;quot;H2&amp;quot;]]&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Madis Sildaru=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Sepad&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;C terav&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele [[Talk:Meeskond_Tool]]&lt;br /&gt;
** Arvustus veebiteenuse klientidele [[Talk:Meeskond &amp;quot;Tyhik&amp;quot;]]&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;/div&gt;</summary>
		<author><name>Mtoompuu</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=V%C3%B5rgurakendused_II:_2011_kevadel_valminud_kodut%C3%B6%C3%B6d&amp;diff=33783</id>
		<title>Võrgurakendused II: 2011 kevadel valminud kodutööd</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=V%C3%B5rgurakendused_II:_2011_kevadel_valminud_kodut%C3%B6%C3%B6d&amp;diff=33783"/>
		<updated>2011-06-05T22:25:17Z</updated>

		<summary type="html">&lt;p&gt;Mtoompuu: /* Mailis Toompuu */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Jaan Igamees=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;FoodWars&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;Tyhik&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Kert Suvi=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Tyhik&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond Tool]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Helen Muidik=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Tyhik&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;GAP&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele [[Talk:Meeskond &amp;quot;C terav&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenuse klientidele [[Talk:Meeskond &amp;quot;Tact&amp;quot;]]&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Mihkel Sokk=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Tact&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;Sepad&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele [[Talk:Meeskond Tool]]&lt;br /&gt;
** Arvustus veebiteenuse klientidele [[Talk:Meeskond &amp;quot;Sepad&amp;quot;]]&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Seda Sahradyan=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Tyhik&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;Tact&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele [[Talk:Meeskond &amp;quot;GAP&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt [[Talk:Meeskond &amp;quot;Nämm-nämm&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
=Priit Siimo=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;GAP&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond Tool]]&lt;br /&gt;
** Arvustus veebiteenusele [[Talk:Meeskond_%22Tyhik%22]]&lt;br /&gt;
** Arvustus veebiteenuse klientidele [[Talk:Meeskond_%22Tyhik%22]]&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt [[Talk:Meeskond_%22Hungry_Student_Food_Board%22]]&lt;br /&gt;
&lt;br /&gt;
=Siim Sarv=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;C terav&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;FoodWars&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele [[Talk:Meeskond &amp;quot;FoodWars&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenuse klientidele [[Talk:Meeskond &amp;quot;Hungry Student Food Board&amp;quot;]]&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Reigo Männiste=&lt;br /&gt;
* Meeskond [[Meeskond Tool]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;Tyhik&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Karl Männil=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Sepad&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;H2&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Ilmar Telga=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;FoodWars&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;GAP&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele [[Talk:Meeskond Tool]]&lt;br /&gt;
** Arvustus veebiteenuse klientidele [[Talk:Meeskond &amp;quot;Hungry Student Food Board&amp;quot;]]&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Siim Aaver=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Nämm-nämm&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;H2&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele [[Talk:Meeskond &amp;quot;Tyhik&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Taavi Ilves=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Hungry_Student_Food_Board&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;ASP-tastic&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele [[Talk:Meeskond_&amp;quot;Tyhik&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Jaan Kruusma=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Hungry_Student_Food_Board&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;C terav&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele [[Talk:Meeskond &amp;quot;Nämm-nämm&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Andrus Reedla=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;GAP&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;Nämm-nämm&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Jaak Lehtsalu=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Tact&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;Tyhik&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele [[Talk:Meeskond Tool]]&lt;br /&gt;
** Arvustus veebiteenuse klientidele [[Talk:Meeskond &amp;quot;H2&amp;quot;]]&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Jana Mrots=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Tyhik&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;Tact&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele [[Talk:Meeskond  &amp;quot;Hungry Student Food Board&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenuse klientidele [[Talk:Meeskond &amp;quot;H2&amp;quot;]]&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Heiki Tamm=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;H2&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;Meeskond&amp;quot;]]&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond  &amp;quot;Hungry Student Food Board&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Toomas Soha=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Sepad&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;Nämm-nämm&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele [[Talk:Meeskond_%22Tyhik%22]]&lt;br /&gt;
** Arvustus veebiteenuse klientidele [[Talk:Meeskond_%22C_terav%22]]&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt [[Talk:Meeskond_%22Tact%22]]&lt;br /&gt;
&lt;br /&gt;
=Miina Sikk=&lt;br /&gt;
* Meeskond [[Meeskond Tool]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;Tact&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Rauno Rüga=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;FoodWars&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;C terav&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele [[Talk:Meeskond &amp;quot;C terav&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenuse klientidele [[Talk:Meeskond Tool]]&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt [[Talk:Meeskond &amp;quot;Tyhik&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
=Tanel Liiv=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Hungry Student Food Board&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;C terav&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele [[Talk:Meeskond &amp;quot;Tyhik&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenuse klientidele [[Talk:Meeskond &amp;quot;Tyhik&amp;quot;]]&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Gaspar Karm=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;GAP&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;FoodWars&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele [[Talk:Meeskond &amp;quot;FoodWars&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenuse klientidele [[Talk:Meeskond &amp;quot;FoodWars&amp;quot;]]&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Joosep Ilves=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Nämm-nämm&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;C terav&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele [[Talk:Meeskond &amp;quot;H2&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenuse klientidele [[Talk:Meeskond_&amp;quot;FoodWars&amp;quot;]]&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Taivo Türnpu=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;ASP-tastic&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond Tool]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Sander Baikov=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Sepad&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;ASP-tastic&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Allar Anijago=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Tyhik&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;Tool&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Madis Sarv=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;C terav&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;Nämm-nämm&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele [[Talk:Meeskond &amp;quot;Nämm-nämm&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenuse klientidele [[Talk:Meeskond_Tool]]&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Kaspar Kallasmaa=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Nämm-nämm&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;C terav&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Jarko Kaskmaa=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;ASP-tastic&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;Tyhik&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele [[Talk:Meeskond_%22H2%22]]&lt;br /&gt;
** Arvustus veebiteenuse klientidele [[Talk:Meeskond_%22H2%22]]&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Indrek Kõue=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;ASP-tastic&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;GAP&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Erik Kaju=&lt;br /&gt;
* Meeskond [[Meeskond Tool]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Mailis Toompuu=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;H2&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;Sepad&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele[[Talk:Meeskond Tool]]&lt;br /&gt;
** Arvustus veebiteenuse klientidele[[Talk:Meeskond Tool]]&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Madis Kõosaar=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Tyhik&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;C terav&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele [[Talk:Meeskond &amp;quot;C terav&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenuse klientidele [[Talk:Meeskond &amp;quot;Sepad&amp;quot;]]&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Gert Glükmann=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Nämm-nämm&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;ASP-tastic&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Martin Lensment=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Tact&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond_&amp;quot;FoodWars&amp;quot;]] ja [[Talk:Meeskond_Tool]]&lt;br /&gt;
** Arvustus veebiteenusele [[Talk:Meeskond_Tool]]&lt;br /&gt;
** Arvustus veebiteenuse klientidele [[Talk:Meeskond_&amp;quot;H2&amp;quot;]]&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Madis Sildaru=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Sepad&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;C terav&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele [[Talk:Meeskond_Tool]]&lt;br /&gt;
** Arvustus veebiteenuse klientidele [[Talk:Meeskond &amp;quot;Tyhik&amp;quot;]]&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;/div&gt;</summary>
		<author><name>Mtoompuu</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Talk:Meeskond_Tool&amp;diff=33782</id>
		<title>Talk:Meeskond Tool</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Talk:Meeskond_Tool&amp;diff=33782"/>
		<updated>2011-06-05T22:23:10Z</updated>

		<summary type="html">&lt;p&gt;Mtoompuu: /* Veebiteenuse arvustus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Väga hea on kohvikutele vahelduseks ka mingit muud xml-i lugeda. Selge ja arusaadav teenus, hea lühike ja ülevaatlik, treppida oleks saanud muidugi paremini. &lt;br /&gt;
&lt;br /&gt;
Täiesti mõtetu arvustus aga mis teha.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Priit Siimo D22&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===XML Arvustus===&lt;br /&gt;
Meeldib, et XML on väga lühike ja kompaktne. Võib-olla võiks lisada ka pildi lingi antud lumelaua juurde. XMLi treppimine on natuke paigast. Mõnes kohas on taane kaks tühikut ja mõnes kohas koguni terve tab.&lt;br /&gt;
&lt;br /&gt;
Oleks võinud XSLT-le ka veidi CSSi külge panna, et tabelile veidike silmailu anda.&lt;br /&gt;
&lt;br /&gt;
Meeskonna idee on väga hea ja wiki leht sisukas.&lt;br /&gt;
Ootan huviga projekti uuendusi.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Martin Lensment D21&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Hea lühike xml, korralik wiki leht. Silma hakkasid xmli treppimisega tehtud vead.&lt;br /&gt;
Mis siin muud ikka kirjutada :P.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Allar Anijago D21&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Nagu ka eelnevalt kommenteeriti - tore et on valitud midagi peale kohviku. Kõik on ilus, tore, kena aga parameetrite osa oleks lahendanud teisiti. &lt;br /&gt;
&lt;br /&gt;
Näiteks:&lt;br /&gt;
&amp;lt;parameetrid&amp;gt;&lt;br /&gt;
  &amp;lt;parameeter&amp;gt;&lt;br /&gt;
     &amp;lt;tyyp&amp;gt;Pikkus&amp;lt;/tyyp&amp;gt;&lt;br /&gt;
     &amp;lt;v22rtus&amp;gt;2000cm&amp;lt;/tyyp&amp;gt;&lt;br /&gt;
  &amp;lt;/parameeter&amp;gt;&lt;br /&gt;
  &amp;lt;parameeter&amp;gt;&lt;br /&gt;
     &amp;lt;tyyp&amp;gt;Laius&amp;lt;/tyyp&amp;gt;&lt;br /&gt;
     &amp;lt;v22rtus&amp;gt;3000cm&amp;lt;/tyyp&amp;gt;&lt;br /&gt;
  &amp;lt;/parameeter&amp;gt;&lt;br /&gt;
&amp;lt;/parameetrid&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See võimaldaks kasutada pmts lõpmatuseni erinevaid parameetreid. Praegu tuleks uue parameetri käiku võtmisel XML ümber teha. Kui aga olete kindlad, et seda ei juhtu, siis pole vahet :)&lt;br /&gt;
&lt;br /&gt;
Kõik muu on hästi tehtud.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kert Suvi D22&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
XML fail on selge ja hästi loetav, piisavalt lihtne, samas katab funktsionaalsuse. Pildid võimalus võiks ka tegelikult olla küll. Treppimine on so-so, loetav siiski. Hästi tehtud, ei ole vaja asja mõttetult keerukaks ajada, tublid!&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Taivo Türnpu D21&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Veebiteenuse arvustus ==&lt;br /&gt;
Üks vähestest projektidest, mis sai tähtajaks valmis ja on korraliku wiki lehega. &lt;br /&gt;
&lt;br /&gt;
Vaatasin muuhulgas Kasutaja klassi. Kasutaja paroolist krüptoräsi (&#039;&#039;hash&#039;&#039;) tegemine on turvalisuse huvides keerulisemalt teostatud (kasutatud on räsi soolamist ehk &#039;&#039;hash salting&#039;&#039;). Kuid registreeritud kasutajate hulgast juba olemasolevate kasutajanimede kontroll on liiga pikalt tehtud. Oleks võinud kasutada LINQ meetodit &#039;&#039;Any()&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
    if (! kont.Kasutajas.Any(user =&amp;gt; user.Nimi == userName)) // kui sellise nimega kasutajat pole&lt;br /&gt;
    {&lt;br /&gt;
        // siis sisesta kasutaja andmed baasi&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kood on jaotatud klassidesse ja klassid ilusti regioonidesse (&#039;&#039;#region ja #endregion&#039;&#039;). Kuid dokumentatsioon ei ole täielik. Enamus meetodeid on üldiselt kirjeldatud ja enamus meetodite parameetrid ja tagastused (ehk mida &#039;&#039;return&#039;&#039;-itakse) on lahti seletamata. &lt;br /&gt;
&lt;br /&gt;
Üldine mulje tööst on hea.&lt;br /&gt;
&lt;br /&gt;
[[User:Itelga|Ilmar Telga]] 21:25, 23 April 2011 (EEST)&lt;br /&gt;
&lt;br /&gt;
====Vastus Ilmarile====&lt;br /&gt;
&lt;br /&gt;
Aitäh kommentaari eest - võtame arvesse ja viime parandused sisse. Selline kasutajakontroll on kõvasti lihtsam tõepoolest ja dokumentatsioon saab ka parandatud.&lt;br /&gt;
&lt;br /&gt;
Miina Sikk&lt;br /&gt;
&lt;br /&gt;
== Veebiteenuse arvustus ==&lt;br /&gt;
&lt;br /&gt;
Veebiteenust on korralikult wiki lehel kirjeldatud, tegevuskava ka üsna täpselt paigas (kes millal ja mida tegi).&lt;br /&gt;
Kood on korralikult klassides ja arusaadav ning loetav. Tahaks juba lõpptulemust näha :D Tubli töö!&lt;br /&gt;
&lt;br /&gt;
Jaak Lehtsalu D22&lt;br /&gt;
&lt;br /&gt;
== Veebiteenuse arvustus ==&lt;br /&gt;
&lt;br /&gt;
Idee meeldib - alternatiivne ja praktiline.&lt;br /&gt;
Võiksite projektifaili koodi lisada, saaks kerge vaevaga projekti käima.&lt;br /&gt;
&lt;br /&gt;
Hetkel sai ainult uuritud koodi ja wiki poolt.&lt;br /&gt;
&lt;br /&gt;
Süsteem on hästi klassidesse jaotatud, kuid wikist on raske aru saada, mis meetodid on veebiteenuses kätte saadavad, näeb ainult klassikirjeldust.&lt;br /&gt;
&lt;br /&gt;
Muidu on wiki detailne ja logi on väga korralikult peetud.&lt;br /&gt;
&lt;br /&gt;
Koodi poolel on meetodite dokumenteerimine jäänud väheke poolikuks. Nagu Ilmar mainis, et return-id on enamjaolt puudu, mis vist on tingitud veatöötluse keerulisusest.&lt;br /&gt;
&lt;br /&gt;
Üldiselt on projekti kood loetav ning hallatav ja korralikult on kasutatud LINQ-t.&lt;br /&gt;
&lt;br /&gt;
Ootan huviga lõpptulemust.&lt;br /&gt;
&lt;br /&gt;
Mihkel Sokk D21&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Teenuse arvustus==&lt;br /&gt;
&lt;br /&gt;
Väga põhjalik wiki leht ja nagu näha osatakse oma aega ning meeskonnasisest tööd planeerida. Mõeldud on ka turvalisusele (salasõnade hashimine). Kasutatud erinevaid innovaatilisi lahendusi. Teenusel on ka täitsa praktiline vajadus olemas, kui inimene soovib endale lumelauda valida. Meetodid on asjalikud ja nende kaudu saab edukalt rakendust kasutada. Meeldis ka koodi käekiri/esteetilus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Indrek Kõue D21&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Veebiteenuse arvustus ==&lt;br /&gt;
&lt;br /&gt;
Teenus on üsna põhjalikult ja korralikult tehtud. Kood on jaotatud ilusti klassidesse, klassid regioonidesse. &lt;br /&gt;
&lt;br /&gt;
Meetodite kirjeldamine on veidi puudulik, kuid koodi uurides saab kõigest aru.&lt;br /&gt;
&lt;br /&gt;
Meeldis, et silmas on peetud turvalisust ja kasutatud räsi soolamist.&lt;br /&gt;
&lt;br /&gt;
Wiki on sisukas ja korralikult kirjutatud.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Martin Lensment D21&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Veebiteenuse arvustus ==&lt;br /&gt;
&lt;br /&gt;
Teenus on väga hea ja korralik. Koodi lugemisega probleemi ei olnud, eelnevalt siin on öeldud, et meetodite kirjeldamine veidi puudulik siis ütleksin, et kõik on täitsa hea ( võibolla on vahepeal muidugi asja parandatud ). Wiki leht on vägagi asjalik. Mis puudutab teenust ennast siis arvan, et sarnane asi ka suusakohta teha oleks päris hea idee. &lt;br /&gt;
&lt;br /&gt;
Madis Sildaru D32&lt;br /&gt;
&lt;br /&gt;
== Klientrakenduse arvustus ==&lt;br /&gt;
&lt;br /&gt;
Esimese positiivse asjana võib kohe välja tuua selle, et wikis on olemas lahenduse source kood(enamus projektide puhul see puudub) ning selgitus, kuidas rakendus enda arvutis tööle läheb. Antud näpunäiteid järgides ei tekkinud mingeid probleeme ja sain rakenduse kiirelt tööle.&lt;br /&gt;
&lt;br /&gt;
Rakendus ise toimib korralikult, kõik kirjeldatud funktsioonid on olemas. Vaadates tagumisi otsingu tulemuste kommentaare ja siis vahetades otsingu parameetreid viskab küll mitte just kõige kasutajasõbralikuma veateate, kuid viga on vähemalt kinni püütud ja rakendus töötab edasi. Üks väike soovitus oleks seoses XAML-iga, Gridi sees võiks paigutada erinevad controlid (eelkõige textboxid) loogilisse järjekorda, et näiteks kui sisestan pikkuse ning siis tahan tabi vajutades järgmise textboxile minna, et siis läheks fookus kaalu textboxi peale, mitte kasutajanime peale, kuidas hetkel on.&lt;br /&gt;
&lt;br /&gt;
Administraatori poolel on kõik vajalik olemas: lumelaudade lisamine, kasutajate haldus ja statistika. Vaatamata lihtsalt välimusele on seal palju võimalusi realiseeritud. Nuriseda võiks antud rakenduse puhul välimuse kallal, oleks võinud natuke rohkem värve olla ja disaini, kuigi jah kena rakenduse disain polegi antud töö eesmärk, vaid funktsionaalselt toimiv rakendus. Oleks oodanud ka teist rakendust, kasvõi väiksema funktsionaalsusega, ainult lumelaudade vaatamine vms.&lt;br /&gt;
&lt;br /&gt;
Rääkides veel wikilehe kohta, siis meeldis lisaks üldisele ülesehitusele veel eriti logis välja toodud töö tegija, nii sai hea pildi, kuna keegi midagi projekti jaoks teinud või mida uut lisanud. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Rauno Rüga, D21&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[User:Rruga|Rruga]] 17:28, 16 May 2011 (EEST)&lt;br /&gt;
&lt;br /&gt;
===Vastus===&lt;br /&gt;
&lt;br /&gt;
Aitäh arvustuse eest. Saime (mina vist põhiliselt) valesti aru veits ja arvasime (arvasin), et kui teha mitte eraldi klientrakendus, vaid 3 erinevat kasutajat, kes kõik saavad erinevat moodi kasutada, siis teeb sama välja.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Miina Sikk&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Vastus===&lt;br /&gt;
&lt;br /&gt;
Tegin lumelaudade otsimisel Tab&#039;i kasutamise korda, kohendasin peaakna väljanägemist.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Indrek Tamm&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Klientrakenduse arvustus ==&lt;br /&gt;
&lt;br /&gt;
Esimesena tooks välja asjaolu, et wikis on korralikult ära seletatud kuidas teenus ja klienti kasutada. Ka on lahtiseletatud mida erinevad klassid teevad ja koodis endas on meetodid komenteeritud, mis muudab koodist arusaamise kiiremaks.&lt;br /&gt;
&lt;br /&gt;
Klientrakenduse poolet ei paista midagi suurt viga olevat, kõik olulised toimingud saab tehtud. Klient rakendus ise on korralikult läbimõeldud disain on antud ülesande puhul korralik ja midagi, mis segaks tööd rakendusega ei hakka silma.&lt;br /&gt;
&lt;br /&gt;
Kuigi ideaalis oleks olnud vaja teha vähemat 2 klientrakendust.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Madis Sarv&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Veebiteenuse arvustus ==&lt;br /&gt;
Minu arvates pole soolamist vaja, kasuta lishtsalt mõnda turvalisemat räsi, nt SHA256.&lt;br /&gt;
A muidu kui aega üle on, võib huvi pärast soolata ka.&lt;br /&gt;
&lt;br /&gt;
Meetodites on kasutatud LINQut, aga oleks võinud rohkem dokumenteerida, muidu ise ka ei mäleta, mis kirja sai pandud.&lt;br /&gt;
&#039;&#039;&#039;Mailis Toompuu&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Klientrakenduse arvustus ==&lt;br /&gt;
Eriti ei tea lumelaudadest midagi, aga kui valima hakata, siis võiks rakenduses nende pildid ka olla, aga võibolla pole see oluline.&lt;br /&gt;
Rakendus paistis ka veidi ebalogilise paigutusega, kõik kuvamise-listviwed ja lisamise textboxid tihedalt üksteise kõrval hunnikus.&lt;br /&gt;
Üldiselt hea mõte kergendada lauavalikut ja rakendus tötas sujuvalt.&lt;br /&gt;
&#039;&#039;&#039;Mailis Toompuu&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Mtoompuu</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Talk:Meeskond_Tool&amp;diff=33781</id>
		<title>Talk:Meeskond Tool</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Talk:Meeskond_Tool&amp;diff=33781"/>
		<updated>2011-06-05T22:17:33Z</updated>

		<summary type="html">&lt;p&gt;Mtoompuu: /* Klientrakenduse arvustus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Väga hea on kohvikutele vahelduseks ka mingit muud xml-i lugeda. Selge ja arusaadav teenus, hea lühike ja ülevaatlik, treppida oleks saanud muidugi paremini. &lt;br /&gt;
&lt;br /&gt;
Täiesti mõtetu arvustus aga mis teha.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Priit Siimo D22&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===XML Arvustus===&lt;br /&gt;
Meeldib, et XML on väga lühike ja kompaktne. Võib-olla võiks lisada ka pildi lingi antud lumelaua juurde. XMLi treppimine on natuke paigast. Mõnes kohas on taane kaks tühikut ja mõnes kohas koguni terve tab.&lt;br /&gt;
&lt;br /&gt;
Oleks võinud XSLT-le ka veidi CSSi külge panna, et tabelile veidike silmailu anda.&lt;br /&gt;
&lt;br /&gt;
Meeskonna idee on väga hea ja wiki leht sisukas.&lt;br /&gt;
Ootan huviga projekti uuendusi.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Martin Lensment D21&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Hea lühike xml, korralik wiki leht. Silma hakkasid xmli treppimisega tehtud vead.&lt;br /&gt;
Mis siin muud ikka kirjutada :P.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Allar Anijago D21&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Nagu ka eelnevalt kommenteeriti - tore et on valitud midagi peale kohviku. Kõik on ilus, tore, kena aga parameetrite osa oleks lahendanud teisiti. &lt;br /&gt;
&lt;br /&gt;
Näiteks:&lt;br /&gt;
&amp;lt;parameetrid&amp;gt;&lt;br /&gt;
  &amp;lt;parameeter&amp;gt;&lt;br /&gt;
     &amp;lt;tyyp&amp;gt;Pikkus&amp;lt;/tyyp&amp;gt;&lt;br /&gt;
     &amp;lt;v22rtus&amp;gt;2000cm&amp;lt;/tyyp&amp;gt;&lt;br /&gt;
  &amp;lt;/parameeter&amp;gt;&lt;br /&gt;
  &amp;lt;parameeter&amp;gt;&lt;br /&gt;
     &amp;lt;tyyp&amp;gt;Laius&amp;lt;/tyyp&amp;gt;&lt;br /&gt;
     &amp;lt;v22rtus&amp;gt;3000cm&amp;lt;/tyyp&amp;gt;&lt;br /&gt;
  &amp;lt;/parameeter&amp;gt;&lt;br /&gt;
&amp;lt;/parameetrid&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See võimaldaks kasutada pmts lõpmatuseni erinevaid parameetreid. Praegu tuleks uue parameetri käiku võtmisel XML ümber teha. Kui aga olete kindlad, et seda ei juhtu, siis pole vahet :)&lt;br /&gt;
&lt;br /&gt;
Kõik muu on hästi tehtud.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kert Suvi D22&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
XML fail on selge ja hästi loetav, piisavalt lihtne, samas katab funktsionaalsuse. Pildid võimalus võiks ka tegelikult olla küll. Treppimine on so-so, loetav siiski. Hästi tehtud, ei ole vaja asja mõttetult keerukaks ajada, tublid!&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Taivo Türnpu D21&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Veebiteenuse arvustus ==&lt;br /&gt;
Üks vähestest projektidest, mis sai tähtajaks valmis ja on korraliku wiki lehega. &lt;br /&gt;
&lt;br /&gt;
Vaatasin muuhulgas Kasutaja klassi. Kasutaja paroolist krüptoräsi (&#039;&#039;hash&#039;&#039;) tegemine on turvalisuse huvides keerulisemalt teostatud (kasutatud on räsi soolamist ehk &#039;&#039;hash salting&#039;&#039;). Kuid registreeritud kasutajate hulgast juba olemasolevate kasutajanimede kontroll on liiga pikalt tehtud. Oleks võinud kasutada LINQ meetodit &#039;&#039;Any()&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
    if (! kont.Kasutajas.Any(user =&amp;gt; user.Nimi == userName)) // kui sellise nimega kasutajat pole&lt;br /&gt;
    {&lt;br /&gt;
        // siis sisesta kasutaja andmed baasi&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kood on jaotatud klassidesse ja klassid ilusti regioonidesse (&#039;&#039;#region ja #endregion&#039;&#039;). Kuid dokumentatsioon ei ole täielik. Enamus meetodeid on üldiselt kirjeldatud ja enamus meetodite parameetrid ja tagastused (ehk mida &#039;&#039;return&#039;&#039;-itakse) on lahti seletamata. &lt;br /&gt;
&lt;br /&gt;
Üldine mulje tööst on hea.&lt;br /&gt;
&lt;br /&gt;
[[User:Itelga|Ilmar Telga]] 21:25, 23 April 2011 (EEST)&lt;br /&gt;
&lt;br /&gt;
====Vastus Ilmarile====&lt;br /&gt;
&lt;br /&gt;
Aitäh kommentaari eest - võtame arvesse ja viime parandused sisse. Selline kasutajakontroll on kõvasti lihtsam tõepoolest ja dokumentatsioon saab ka parandatud.&lt;br /&gt;
&lt;br /&gt;
Miina Sikk&lt;br /&gt;
&lt;br /&gt;
== Veebiteenuse arvustus ==&lt;br /&gt;
&lt;br /&gt;
Veebiteenust on korralikult wiki lehel kirjeldatud, tegevuskava ka üsna täpselt paigas (kes millal ja mida tegi).&lt;br /&gt;
Kood on korralikult klassides ja arusaadav ning loetav. Tahaks juba lõpptulemust näha :D Tubli töö!&lt;br /&gt;
&lt;br /&gt;
Jaak Lehtsalu D22&lt;br /&gt;
&lt;br /&gt;
== Veebiteenuse arvustus ==&lt;br /&gt;
&lt;br /&gt;
Idee meeldib - alternatiivne ja praktiline.&lt;br /&gt;
Võiksite projektifaili koodi lisada, saaks kerge vaevaga projekti käima.&lt;br /&gt;
&lt;br /&gt;
Hetkel sai ainult uuritud koodi ja wiki poolt.&lt;br /&gt;
&lt;br /&gt;
Süsteem on hästi klassidesse jaotatud, kuid wikist on raske aru saada, mis meetodid on veebiteenuses kätte saadavad, näeb ainult klassikirjeldust.&lt;br /&gt;
&lt;br /&gt;
Muidu on wiki detailne ja logi on väga korralikult peetud.&lt;br /&gt;
&lt;br /&gt;
Koodi poolel on meetodite dokumenteerimine jäänud väheke poolikuks. Nagu Ilmar mainis, et return-id on enamjaolt puudu, mis vist on tingitud veatöötluse keerulisusest.&lt;br /&gt;
&lt;br /&gt;
Üldiselt on projekti kood loetav ning hallatav ja korralikult on kasutatud LINQ-t.&lt;br /&gt;
&lt;br /&gt;
Ootan huviga lõpptulemust.&lt;br /&gt;
&lt;br /&gt;
Mihkel Sokk D21&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Teenuse arvustus==&lt;br /&gt;
&lt;br /&gt;
Väga põhjalik wiki leht ja nagu näha osatakse oma aega ning meeskonnasisest tööd planeerida. Mõeldud on ka turvalisusele (salasõnade hashimine). Kasutatud erinevaid innovaatilisi lahendusi. Teenusel on ka täitsa praktiline vajadus olemas, kui inimene soovib endale lumelauda valida. Meetodid on asjalikud ja nende kaudu saab edukalt rakendust kasutada. Meeldis ka koodi käekiri/esteetilus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Indrek Kõue D21&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Veebiteenuse arvustus ==&lt;br /&gt;
&lt;br /&gt;
Teenus on üsna põhjalikult ja korralikult tehtud. Kood on jaotatud ilusti klassidesse, klassid regioonidesse. &lt;br /&gt;
&lt;br /&gt;
Meetodite kirjeldamine on veidi puudulik, kuid koodi uurides saab kõigest aru.&lt;br /&gt;
&lt;br /&gt;
Meeldis, et silmas on peetud turvalisust ja kasutatud räsi soolamist.&lt;br /&gt;
&lt;br /&gt;
Wiki on sisukas ja korralikult kirjutatud.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Martin Lensment D21&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Veebiteenuse arvustus ==&lt;br /&gt;
&lt;br /&gt;
Teenus on väga hea ja korralik. Koodi lugemisega probleemi ei olnud, eelnevalt siin on öeldud, et meetodite kirjeldamine veidi puudulik siis ütleksin, et kõik on täitsa hea ( võibolla on vahepeal muidugi asja parandatud ). Wiki leht on vägagi asjalik. Mis puudutab teenust ennast siis arvan, et sarnane asi ka suusakohta teha oleks päris hea idee. &lt;br /&gt;
&lt;br /&gt;
Madis Sildaru D32&lt;br /&gt;
&lt;br /&gt;
== Klientrakenduse arvustus ==&lt;br /&gt;
&lt;br /&gt;
Esimese positiivse asjana võib kohe välja tuua selle, et wikis on olemas lahenduse source kood(enamus projektide puhul see puudub) ning selgitus, kuidas rakendus enda arvutis tööle läheb. Antud näpunäiteid järgides ei tekkinud mingeid probleeme ja sain rakenduse kiirelt tööle.&lt;br /&gt;
&lt;br /&gt;
Rakendus ise toimib korralikult, kõik kirjeldatud funktsioonid on olemas. Vaadates tagumisi otsingu tulemuste kommentaare ja siis vahetades otsingu parameetreid viskab küll mitte just kõige kasutajasõbralikuma veateate, kuid viga on vähemalt kinni püütud ja rakendus töötab edasi. Üks väike soovitus oleks seoses XAML-iga, Gridi sees võiks paigutada erinevad controlid (eelkõige textboxid) loogilisse järjekorda, et näiteks kui sisestan pikkuse ning siis tahan tabi vajutades järgmise textboxile minna, et siis läheks fookus kaalu textboxi peale, mitte kasutajanime peale, kuidas hetkel on.&lt;br /&gt;
&lt;br /&gt;
Administraatori poolel on kõik vajalik olemas: lumelaudade lisamine, kasutajate haldus ja statistika. Vaatamata lihtsalt välimusele on seal palju võimalusi realiseeritud. Nuriseda võiks antud rakenduse puhul välimuse kallal, oleks võinud natuke rohkem värve olla ja disaini, kuigi jah kena rakenduse disain polegi antud töö eesmärk, vaid funktsionaalselt toimiv rakendus. Oleks oodanud ka teist rakendust, kasvõi väiksema funktsionaalsusega, ainult lumelaudade vaatamine vms.&lt;br /&gt;
&lt;br /&gt;
Rääkides veel wikilehe kohta, siis meeldis lisaks üldisele ülesehitusele veel eriti logis välja toodud töö tegija, nii sai hea pildi, kuna keegi midagi projekti jaoks teinud või mida uut lisanud. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Rauno Rüga, D21&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[User:Rruga|Rruga]] 17:28, 16 May 2011 (EEST)&lt;br /&gt;
&lt;br /&gt;
===Vastus===&lt;br /&gt;
&lt;br /&gt;
Aitäh arvustuse eest. Saime (mina vist põhiliselt) valesti aru veits ja arvasime (arvasin), et kui teha mitte eraldi klientrakendus, vaid 3 erinevat kasutajat, kes kõik saavad erinevat moodi kasutada, siis teeb sama välja.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Miina Sikk&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Vastus===&lt;br /&gt;
&lt;br /&gt;
Tegin lumelaudade otsimisel Tab&#039;i kasutamise korda, kohendasin peaakna väljanägemist.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Indrek Tamm&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Klientrakenduse arvustus ==&lt;br /&gt;
&lt;br /&gt;
Esimesena tooks välja asjaolu, et wikis on korralikult ära seletatud kuidas teenus ja klienti kasutada. Ka on lahtiseletatud mida erinevad klassid teevad ja koodis endas on meetodid komenteeritud, mis muudab koodist arusaamise kiiremaks.&lt;br /&gt;
&lt;br /&gt;
Klientrakenduse poolet ei paista midagi suurt viga olevat, kõik olulised toimingud saab tehtud. Klient rakendus ise on korralikult läbimõeldud disain on antud ülesande puhul korralik ja midagi, mis segaks tööd rakendusega ei hakka silma.&lt;br /&gt;
&lt;br /&gt;
Kuigi ideaalis oleks olnud vaja teha vähemat 2 klientrakendust.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Madis Sarv&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Veebiteenuse arvustus ==&lt;br /&gt;
Minu arvates pole soolamist vaja, kasuta lishtsalt mõnda turvalisemat räsi, nt SHA256.&lt;br /&gt;
A muidu kui aega üle on, võib huvi pärast soolata ka.&lt;br /&gt;
&#039;&#039;&#039;Mailis Toompuu&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Mtoompuu</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Meeskond_%22H2%22&amp;diff=33778</id>
		<title>Meeskond &quot;H2&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Meeskond_%22H2%22&amp;diff=33778"/>
		<updated>2011-06-05T22:02:10Z</updated>

		<summary type="html">&lt;p&gt;Mtoompuu: /* 4. juuni */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Kohviku menüüsüsteem==&lt;br /&gt;
===Projekt===&lt;br /&gt;
Kohvikute (esialgu ainult IT-Kohviku) menüüsüsteem, mis on jälgitav mobiilseadmetelt. Lisaväärtusena võimaldab anda pakutavale hinnanguid, otsuse langetamise hõlbustamiseks kommentaar:(see viimane funktsioon kipub vist &amp;quot;veebirakenduseks&amp;quot; muutuma)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Sihtplatvormid:&lt;br /&gt;
Windows Mobile, iOS, Android(kui leiame vabatahtlikud testijad)&lt;br /&gt;
&lt;br /&gt;
===Taustinfo===&lt;br /&gt;
Praegune IT-Kohviku menüü on käsitsi täidetav valge tahvel. Projekti eesmärgiks on parendada IT-Kohviku menüüsüsteemi ja teha see veebi kaudu kättesaadavaks, nii, et menüüsse saab lisada ka karniiri valiku. Standardmenüü puhul saab menüüs olla ka illustreeriv foto. Hetkemenüü ning hinnad ja lahtioleku ajad on samuti jälgitavad võrguühendust eviva mobiilseadme ekraanilt, hõlbustades sellega valikute tegemist.&lt;br /&gt;
&lt;br /&gt;
===Liikmed===&lt;br /&gt;
* Mailis Toompuu&lt;br /&gt;
* Henri Kroosmann&lt;br /&gt;
* Heiki Tamm&lt;br /&gt;
&lt;br /&gt;
==Sisu==&lt;br /&gt;
&lt;br /&gt;
===XML Data===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;menu&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name1&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;0&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name1&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item1&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item2&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item3&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;0&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;0&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount1&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;0&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;0&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot1&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name2&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;255&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name2&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item4&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item5&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item6&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;255&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;255&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount2&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;255&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;255&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot2&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name3&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;1&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name3&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item7&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item8&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item9&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;1&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;1&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount3&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;1&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;1&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot3&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
&amp;lt;/menu&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===XML Schema===&lt;br /&gt;
&lt;br /&gt;
Ülevaade Schema&#039;st. &amp;lt;br /&amp;gt;&lt;br /&gt;
[[File:XMLSchema_Capture_(optimized).png]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Ning sellele vastav kood.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xs:schema attributeFormDefault=&amp;quot;unqualified&amp;quot; elementFormDefault=&amp;quot;qualified&amp;quot; xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xs:element name=&amp;quot;menu&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;product&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;type&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;id&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;extras&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence minOccurs=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;item&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;price&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence minOccurs=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;int&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;frac&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element minOccurs=&amp;quot;0&amp;quot; name=&amp;quot;discount&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;vote&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;pos&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;neg&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;screenshot&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===XML Style===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;html&amp;gt;&lt;br /&gt;
      &amp;lt;head&amp;gt;&lt;br /&gt;
        &amp;lt;style type=&amp;quot;text/css&amp;quot;&amp;gt;&lt;br /&gt;
          html,body{margin:0;padding:0;font-family:Helvetica,Arial,sans-serif;font-size:14px;line-height:19px;color:#2c2c2c;}&lt;br /&gt;
          h1{margin:0;padding:25px 0 0;font-size:22px;line-height:25px;text-align:center;}&lt;br /&gt;
          h2{margin:0;padding:5px;font-size:16px;line-height:21px}&lt;br /&gt;
          span.discount{padding:0 0 0 5px;color:red;}&lt;br /&gt;
          table{margin:20px auto;padding:0;}&lt;br /&gt;
          th,td{padding:5px;border:1px solid #2c2c2c;vertical-align:top;text-align:left}&lt;br /&gt;
          th{font-weight:bold;background-color:#eee;}&lt;br /&gt;
          ul{margin:0;padding:0;list-style-type:none;}&lt;br /&gt;
        &amp;lt;/style&amp;gt;&lt;br /&gt;
      &amp;lt;/head&amp;gt;&lt;br /&gt;
      &amp;lt;body&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;Menüü&amp;lt;/h1&amp;gt;&lt;br /&gt;
        &amp;lt;table width=&amp;quot;800&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;200&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;100&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col witdh=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;150&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;tr&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Nimetus&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Lisandid&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Tüüp&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Hind&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Hinne / Hindajaid&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Pilt&amp;lt;/th&amp;gt;&lt;br /&gt;
          &amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
          &amp;lt;xsl:for-each select=&amp;quot;menu/product&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:sort select=&amp;quot;type/id&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:sort select=&amp;quot;name&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;th&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;name&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/th&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;extras/node()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;ul&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:for-each select=&amp;quot;extras/item&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;li&amp;gt;&lt;br /&gt;
                          &amp;lt;xsl:value-of select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;/li&amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
                    &amp;lt;/ul&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;td&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;type/name&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;price/node()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    €&amp;lt;xsl:value-of select=&amp;quot;price/int&amp;quot;/&amp;gt;.&amp;lt;xsl:value-of select=&amp;quot;price/frac&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:if test=&amp;quot;price/discount/text()&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;span class=&amp;quot;discount&amp;quot;&amp;gt;&lt;br /&gt;
                        (-&amp;lt;xsl:value-of select=&amp;quot;price/discount&amp;quot;/&amp;gt;%)&lt;br /&gt;
                      &amp;lt;/span&amp;gt;&lt;br /&gt;
                    &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:variable name=&amp;quot;p&amp;quot; select=&amp;quot;vote/pos&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:variable name=&amp;quot;n&amp;quot; select=&amp;quot;vote/neg&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;td&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$p - $n&amp;quot;/&amp;gt; / &amp;lt;xsl:value-of select=&amp;quot;$p + $n&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;screenshot/text()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;img src=&amp;quot;{screenshot}&amp;quot; alt=&amp;quot;&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;img src=&amp;quot;screenshots/default.png&amp;quot; alt=&amp;quot;No image&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
      &amp;lt;/body&amp;gt;&lt;br /&gt;
    &amp;lt;/html&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
Sisu ja stiilifaili koostöö http://henri.kroosmann.ee/kool/xml/index.xml &amp;lt;!--[http://henri.kroosmann.ee/kool/xml/index.xml]--&amp;gt;&lt;br /&gt;
==VEEBITEENUSED==&lt;br /&gt;
&lt;br /&gt;
===8. aprill===&lt;br /&gt;
Otsustame teha teenused kõikide kohvikute menüüde kohta.&lt;br /&gt;
&lt;br /&gt;
===11.-12. aprill===&lt;br /&gt;
Henri koostab tabelite loogika&lt;br /&gt;
&lt;br /&gt;
===13. aprill===&lt;br /&gt;
Mailis otsustab veebiteenused teha asmx-is [webmethod]-itega&lt;br /&gt;
===14. aprill===&lt;br /&gt;
Mailis hakkab veebiteenuseid tegema&lt;br /&gt;
===17. aprill===&lt;br /&gt;
Veebiteenused on valmis:&lt;br /&gt;
&lt;br /&gt;
*AnnaJoogiliikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaJoogitabelirida_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*AnnaJookideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaK6igiKohvikuteAndmeteNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyyIDed_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyyRida_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyydeNimekiri_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaMenyyLiikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaMenyydeNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaPromillideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToiduliikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToitudeNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToitutabelirida_toiduIDjargi &lt;br /&gt;
&lt;br /&gt;
*AnnaYheKohvikuAndmed_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*KustutaJookMenyyst &lt;br /&gt;
&lt;br /&gt;
*KustutaMenyy &lt;br /&gt;
&lt;br /&gt;
*KustutaKohvik &lt;br /&gt;
&lt;br /&gt;
*KustutaToitMenyyst &lt;br /&gt;
&lt;br /&gt;
*KysiYheKohvikuYheMenyyToitudeIDeed_menyyIDjargi &lt;br /&gt;
&lt;br /&gt;
*LisaJoogiLiik &lt;br /&gt;
&lt;br /&gt;
*LisaMenyyLiik &lt;br /&gt;
&lt;br /&gt;
*LisaPromill &lt;br /&gt;
&lt;br /&gt;
*LisaToiduLiik &lt;br /&gt;
&lt;br /&gt;
*SecurityAuthenticateUser &lt;br /&gt;
&lt;br /&gt;
*TOITJOOKmenyysRida_menyyIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedJoogileMenyys &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedKohvikule &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedToiduleMenyys &lt;br /&gt;
&lt;br /&gt;
*annaJoogiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiKIRJELDUS_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiKOMM_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiID_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiNIMI_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKasOnTaimeT_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKasutajaNIMI_Guidjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuLahtiolekuAjad_kohvikuIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuTeated &lt;br /&gt;
&lt;br /&gt;
*annaLinnaID_LinnaNimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaLinnaNIMI_LinnaIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaLinnad_maakonnaNIMEjargi &lt;br /&gt;
&lt;br /&gt;
*annaMaakonnaID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaMenyyLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaMenyyLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaPromill_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaPromilliID_promilliNrJargi &lt;br /&gt;
&lt;br /&gt;
*annaPromilliNR_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduKIRJELDUS_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduKOMMENTAAR_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiNIMETUS_toiduIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaYheKohvikuMenyyd_kohvikuNIMEjargi &lt;br /&gt;
&lt;br /&gt;
*autendiKasutajaParooliJargi &lt;br /&gt;
&lt;br /&gt;
*k6igiKohvikuteMenyyd &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusJoogiKohta &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusKohvikuKohta &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusToiduKohta &lt;br /&gt;
&lt;br /&gt;
*lisaJookMenyysse &lt;br /&gt;
&lt;br /&gt;
*lisaToitMenyysse &lt;br /&gt;
&lt;br /&gt;
*lisaUusJook &lt;br /&gt;
&lt;br /&gt;
*lisaUusKohvik &lt;br /&gt;
&lt;br /&gt;
*lisaUusLahtiolekuAeg &lt;br /&gt;
&lt;br /&gt;
*lisaUusMenyy &lt;br /&gt;
&lt;br /&gt;
*lisaUusTeadaanne &lt;br /&gt;
&lt;br /&gt;
*lisaUusToit &lt;br /&gt;
&lt;br /&gt;
*nadalapaevaID_paevaNimetuseJargi &lt;br /&gt;
&lt;br /&gt;
*nadalapaevaNIMETUS_paevaIDjargi&lt;br /&gt;
&lt;br /&gt;
*Registreeru&lt;br /&gt;
&lt;br /&gt;
*LogiSisseTavakasutajana&lt;br /&gt;
&lt;br /&gt;
*LogiSisseKohvikuna&lt;br /&gt;
&lt;br /&gt;
===22.aprill===&lt;br /&gt;
Toimus koosolek&lt;br /&gt;
*Henri lubas meetodite turvamise teha.&lt;br /&gt;
*Heiki lubas statistika teha meetodite kohta.&lt;br /&gt;
&lt;br /&gt;
===Allikfail===&lt;br /&gt;
Allikfail: http://www.p2ike.com/CSharp/KohvikudVeebiteenus.rar&lt;br /&gt;
&lt;br /&gt;
Meetod &#039;k6igiKohvikuteMenyyd&#039; kuvab sellise xml struktuuri: http://www.p2ike.com/CSharp/k6igiKohvikuteMenyyd.xml&lt;br /&gt;
&lt;br /&gt;
Toidud ja joogid sorteeritakse liikide kaupa.&lt;br /&gt;
&lt;br /&gt;
===Andmetabelid===&lt;br /&gt;
[[File:andmetabelid.jpg|777px|thumb|left|andmemudel]]&lt;br /&gt;
===Statistika===&lt;br /&gt;
 using System;&lt;br /&gt;
using System.Web.Services;&lt;br /&gt;
using System.Web.Services.Protocols;&lt;br /&gt;
using System.IO;&lt;br /&gt;
using System.Net;&lt;br /&gt;
 &lt;br /&gt;
// Define a SOAP Extension that traces the SOAP request and SOAP&lt;br /&gt;
// response for the XML Web service method the SOAP extension is&lt;br /&gt;
// applied to. &lt;br /&gt;
 &lt;br /&gt;
namespace WebASPKohvikud&lt;br /&gt;
{&lt;br /&gt;
    public class TraceExtension : SoapExtension&lt;br /&gt;
    {&lt;br /&gt;
        Stream oldStream;&lt;br /&gt;
        Stream newStream;&lt;br /&gt;
        string filename;&lt;br /&gt;
 &lt;br /&gt;
        // Save the Stream representing the SOAP request or SOAP response into&lt;br /&gt;
        // a local memory buffer.&lt;br /&gt;
        public override Stream ChainStream(Stream stream)&lt;br /&gt;
        {&lt;br /&gt;
            oldStream = stream;&lt;br /&gt;
            newStream = new MemoryStream();&lt;br /&gt;
            return newStream;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        // When the SOAP extension is accessed for the first time, the XML Web&lt;br /&gt;
        // service method it is applied to is accessed to store the file&lt;br /&gt;
        // name passed in, using the corresponding SoapExtensionAttribute.	&lt;br /&gt;
        public override object GetInitializer(LogicalMethodInfo methodInfo, SoapExtensionAttribute attribute)&lt;br /&gt;
        {&lt;br /&gt;
            return ((TraceExtensionAttribute)attribute).Filename;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        // The SOAP extension was configured to run using a configuration file&lt;br /&gt;
        // instead of an attribute applied to a specific XML Web service&lt;br /&gt;
        // method.&lt;br /&gt;
        public override object GetInitializer(Type WebServiceType)&lt;br /&gt;
        {&lt;br /&gt;
            // Return a file name to log the trace information to, based on the&lt;br /&gt;
            // type.&lt;br /&gt;
            return &amp;quot;C:\\&amp;quot; + WebServiceType.FullName + &amp;quot;.log&amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        // Receive the file name stored by GetInitializer and store it in a&lt;br /&gt;
        // member variable for this specific instance.&lt;br /&gt;
        public override void Initialize(object initializer)&lt;br /&gt;
        {&lt;br /&gt;
            filename = (string)initializer;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        //  If the SoapMessageStage is such that the SoapRequest or&lt;br /&gt;
        //  SoapResponse is still in the SOAP format to be sent or received,&lt;br /&gt;
        //  save it out to a file.&lt;br /&gt;
        public override void ProcessMessage(SoapMessage message)&lt;br /&gt;
        {&lt;br /&gt;
            switch (message.Stage)&lt;br /&gt;
            {&lt;br /&gt;
                case SoapMessageStage.BeforeSerialize:&lt;br /&gt;
                    break;&lt;br /&gt;
                case SoapMessageStage.AfterSerialize:&lt;br /&gt;
                    WriteOutput(message);&lt;br /&gt;
                    break;&lt;br /&gt;
                case SoapMessageStage.BeforeDeserialize:&lt;br /&gt;
                    WriteInput(message);&lt;br /&gt;
                    break;&lt;br /&gt;
                case SoapMessageStage.AfterDeserialize:&lt;br /&gt;
                    break;&lt;br /&gt;
                default:&lt;br /&gt;
                    throw new Exception(&amp;quot;invalid stage&amp;quot;);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        public void WriteOutput(SoapMessage message)&lt;br /&gt;
        {&lt;br /&gt;
            newStream.Position = 0;&lt;br /&gt;
            FileStream fs = new FileStream(filename, FileMode.Append,&lt;br /&gt;
                FileAccess.Write);&lt;br /&gt;
            StreamWriter w = new StreamWriter(fs);&lt;br /&gt;
 &lt;br /&gt;
            string soapString = (message is SoapServerMessage) ? &amp;quot;SoapResponse&amp;quot; : &amp;quot;SoapRequest&amp;quot;;&lt;br /&gt;
            w.WriteLine(&amp;quot;-----&amp;quot; + soapString + &amp;quot; at &amp;quot; + DateTime.Now);&lt;br /&gt;
            w.Flush();&lt;br /&gt;
            Copy(newStream, fs);&lt;br /&gt;
            w.Close();&lt;br /&gt;
            newStream.Position = 0;&lt;br /&gt;
            Copy(newStream, oldStream);&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        public void WriteInput(SoapMessage message)&lt;br /&gt;
        {&lt;br /&gt;
            Copy(oldStream, newStream);&lt;br /&gt;
            FileStream fs = new FileStream(filename, FileMode.Append,&lt;br /&gt;
                FileAccess.Write);&lt;br /&gt;
            StreamWriter w = new StreamWriter(fs);&lt;br /&gt;
 &lt;br /&gt;
            string soapString = (message is SoapServerMessage) ?&lt;br /&gt;
                &amp;quot;SoapRequest&amp;quot; : &amp;quot;SoapResponse&amp;quot;;&lt;br /&gt;
            w.WriteLine(&amp;quot;-----&amp;quot; + soapString +&lt;br /&gt;
                &amp;quot; at &amp;quot; + DateTime.Now);&lt;br /&gt;
            w.Flush();&lt;br /&gt;
            newStream.Position = 0;&lt;br /&gt;
            Copy(newStream, fs);&lt;br /&gt;
            w.Close();&lt;br /&gt;
            newStream.Position = 0;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        void Copy(Stream from, Stream to)&lt;br /&gt;
        {&lt;br /&gt;
            TextReader reader = new StreamReader(from);&lt;br /&gt;
            TextWriter writer = new StreamWriter(to);&lt;br /&gt;
            writer.WriteLine(reader.ReadToEnd());&lt;br /&gt;
            writer.Flush();&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    // Create a SoapExtensionAttribute for the SOAP Extension that can be&lt;br /&gt;
    // applied to an XML Web service method.&lt;br /&gt;
    [AttributeUsage(AttributeTargets.Method)]&lt;br /&gt;
    public class TraceExtensionAttribute : SoapExtensionAttribute&lt;br /&gt;
    {&lt;br /&gt;
 &lt;br /&gt;
        private string filename = @&amp;quot;C:\Users\Heiki Tamm\Documents\Õppematerjalid_2011\WebASPKohvikud\WebASPKohvikud\SoapLog.txt&amp;quot;;&lt;br /&gt;
        private int priority;&lt;br /&gt;
 &lt;br /&gt;
        public override Type ExtensionType&lt;br /&gt;
        {&lt;br /&gt;
            get { return typeof(TraceExtension); }&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        public override int Priority&lt;br /&gt;
        {&lt;br /&gt;
            get { return priority; }&lt;br /&gt;
            set { priority = value; }&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        public string Filename&lt;br /&gt;
        {&lt;br /&gt;
            get&lt;br /&gt;
            {&lt;br /&gt;
                return filename;&lt;br /&gt;
            }&lt;br /&gt;
            set&lt;br /&gt;
            {&lt;br /&gt;
                filename = value;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
// todo: &lt;br /&gt;
// from each soap header record query content &lt;br /&gt;
// (containing client, date, time, query ) into a DB&lt;br /&gt;
// for later reference for conducting any kind of &lt;br /&gt;
// applicable statistics and then generate stats :D !&lt;br /&gt;
// Proovin selliselt, et on lihtne statistika tabel:&lt;br /&gt;
// 1) meetod // välja kutsutava meetodi nimi&lt;br /&gt;
// 2) kuupäev // timestamp&lt;br /&gt;
// 3) callide arv // meetodi väljakutsimiste hulk&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==KLIENTRAKENDUS==&lt;br /&gt;
&lt;br /&gt;
===23. mai===&lt;br /&gt;
Mailis tegi kohvikute kuvamise ASP.NET rakenduse.&lt;br /&gt;
Kohvikud kuvatakse TreeView&#039;s &lt;br /&gt;
menüüde ja andmetega ning arvamustega kohvikute ja toitude ja jookide kohta.&lt;br /&gt;
&lt;br /&gt;
Samal lehel on kohvikuhuvilistele registreerimisvõimalus&lt;br /&gt;
ja sisselogimine.&lt;br /&gt;
&lt;br /&gt;
Kui on sisselogitud, saab lisada arvamusi.&lt;br /&gt;
Arvamuste lisamine on Ajax Extended Toolkiti controli&#039;ga &#039;Allways Visible ...&#039; tehtud, &lt;br /&gt;
&lt;br /&gt;
nii et mööda pikka TreeViewd alla kerides saab &lt;br /&gt;
lisada arvamust ilma ülesserva tagasi minemata.&lt;br /&gt;
&lt;br /&gt;
Arvamused ilmuvad kohe peale lisamist TreeView&#039;sse.&lt;br /&gt;
&lt;br /&gt;
TreeView&#039;sse tulevad andmed xml-failist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pooleli on veel kohvikute-poolne rakendus, kus omanik saab lisada ja kustutada kohvikuid, menüüsid ja toite-jooke, lisada teadaandeid.&lt;br /&gt;
&lt;br /&gt;
Pooleli on veel admini-rakendus, kus admin saab kasutajale määrata rolli, mis annab õigused kohviku-rakendusse sisse logida.&lt;br /&gt;
===4. juuni===&lt;br /&gt;
Valmis sai Kohvikute omanikele mõeldud klientrakendus.&lt;br /&gt;
Tehtud ASP.NET&#039;i veebirakendusena.&lt;br /&gt;
Seal on sisselogimine, registreerumine ja adminile kirja saatmine kohvikuomaniku õiguste saamiseks.&lt;br /&gt;
Peale sisselogimist saab &lt;br /&gt;
*lisada ja kustutada kohvikut&lt;br /&gt;
*lisada kohvikule lahtiolekuaegu nädalapäevade kaupa ja neid kustutada&lt;br /&gt;
*lisada kohvikule teadaandeid ja neid kustutada&lt;br /&gt;
*lisada kohvikule menüüsid ja neid kustutada: menüül on nimetus, liik, nädalapäev,  lisamiskuupäev jne. &lt;br /&gt;
*lisada menüüsse toite ja neid kustutada. Toitudel on nimetus, liik, hind, kas-sobib-taimetoitlasele, kogus grammides, suurus, lisamise kuupäev. Eraldi listides on kõikide kohvikute lisatud toidud ja selle kohviku lisatud toidud. Toitu valides rippmenüüst ilmuvad selle toidu andmed, et näha täpsemalt, mis toiduga on tegu. Ka on näha parajasti toitu lisatavasse menüüsse varem lisatud toidud.&lt;br /&gt;
*jookidele on sama, va. taimetoidu asemel on alkohoolse joogi korral promillide suurus.&lt;br /&gt;
&lt;br /&gt;
Lisada saab textbokside kaudu, nimekirjadest valimine on tehtud dropdown-listidena.&lt;br /&gt;
Kuvamised on tehtud GridViewdena, mis saavad andmeid meetoditest, mitte otse andmebaasitabelist.&lt;br /&gt;
&lt;br /&gt;
===5. juuni===&lt;br /&gt;
Valmis sai Kohvikute administraatori  ASP.NET-veebirakendus.&lt;br /&gt;
Admin saab registreeruda ja sisse logida.&lt;br /&gt;
Kui admin on sisse loginud, saab ta vaadata statistikat. Statistika-tabeleid on eraldi selle kohta, kui palju on mingit meetodit kasutatud ja selle kohta,kes millal mingit meetodit kasutas.&lt;br /&gt;
Sisseloginuna saab vaadata saabunud taotlusi ja nende järgi kasutajatele rolle määrata.&lt;br /&gt;
&lt;br /&gt;
Tabelid saavad andmeid otse andmebaasist, GridView&#039;dena, neid saab sorteerida tulpade&lt;br /&gt;
pealkirjadel klikkides.&lt;/div&gt;</summary>
		<author><name>Mtoompuu</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Meeskond_%22H2%22&amp;diff=33776</id>
		<title>Meeskond &quot;H2&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Meeskond_%22H2%22&amp;diff=33776"/>
		<updated>2011-06-05T22:01:46Z</updated>

		<summary type="html">&lt;p&gt;Mtoompuu: /* 4. juuni */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Kohviku menüüsüsteem==&lt;br /&gt;
===Projekt===&lt;br /&gt;
Kohvikute (esialgu ainult IT-Kohviku) menüüsüsteem, mis on jälgitav mobiilseadmetelt. Lisaväärtusena võimaldab anda pakutavale hinnanguid, otsuse langetamise hõlbustamiseks kommentaar:(see viimane funktsioon kipub vist &amp;quot;veebirakenduseks&amp;quot; muutuma)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Sihtplatvormid:&lt;br /&gt;
Windows Mobile, iOS, Android(kui leiame vabatahtlikud testijad)&lt;br /&gt;
&lt;br /&gt;
===Taustinfo===&lt;br /&gt;
Praegune IT-Kohviku menüü on käsitsi täidetav valge tahvel. Projekti eesmärgiks on parendada IT-Kohviku menüüsüsteemi ja teha see veebi kaudu kättesaadavaks, nii, et menüüsse saab lisada ka karniiri valiku. Standardmenüü puhul saab menüüs olla ka illustreeriv foto. Hetkemenüü ning hinnad ja lahtioleku ajad on samuti jälgitavad võrguühendust eviva mobiilseadme ekraanilt, hõlbustades sellega valikute tegemist.&lt;br /&gt;
&lt;br /&gt;
===Liikmed===&lt;br /&gt;
* Mailis Toompuu&lt;br /&gt;
* Henri Kroosmann&lt;br /&gt;
* Heiki Tamm&lt;br /&gt;
&lt;br /&gt;
==Sisu==&lt;br /&gt;
&lt;br /&gt;
===XML Data===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;menu&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name1&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;0&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name1&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item1&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item2&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item3&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;0&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;0&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount1&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;0&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;0&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot1&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name2&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;255&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name2&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item4&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item5&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item6&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;255&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;255&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount2&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;255&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;255&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot2&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name3&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;1&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name3&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item7&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item8&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item9&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;1&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;1&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount3&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;1&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;1&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot3&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
&amp;lt;/menu&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===XML Schema===&lt;br /&gt;
&lt;br /&gt;
Ülevaade Schema&#039;st. &amp;lt;br /&amp;gt;&lt;br /&gt;
[[File:XMLSchema_Capture_(optimized).png]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Ning sellele vastav kood.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xs:schema attributeFormDefault=&amp;quot;unqualified&amp;quot; elementFormDefault=&amp;quot;qualified&amp;quot; xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xs:element name=&amp;quot;menu&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;product&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;type&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;id&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;extras&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence minOccurs=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;item&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;price&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence minOccurs=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;int&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;frac&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element minOccurs=&amp;quot;0&amp;quot; name=&amp;quot;discount&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;vote&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;pos&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;neg&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;screenshot&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===XML Style===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;html&amp;gt;&lt;br /&gt;
      &amp;lt;head&amp;gt;&lt;br /&gt;
        &amp;lt;style type=&amp;quot;text/css&amp;quot;&amp;gt;&lt;br /&gt;
          html,body{margin:0;padding:0;font-family:Helvetica,Arial,sans-serif;font-size:14px;line-height:19px;color:#2c2c2c;}&lt;br /&gt;
          h1{margin:0;padding:25px 0 0;font-size:22px;line-height:25px;text-align:center;}&lt;br /&gt;
          h2{margin:0;padding:5px;font-size:16px;line-height:21px}&lt;br /&gt;
          span.discount{padding:0 0 0 5px;color:red;}&lt;br /&gt;
          table{margin:20px auto;padding:0;}&lt;br /&gt;
          th,td{padding:5px;border:1px solid #2c2c2c;vertical-align:top;text-align:left}&lt;br /&gt;
          th{font-weight:bold;background-color:#eee;}&lt;br /&gt;
          ul{margin:0;padding:0;list-style-type:none;}&lt;br /&gt;
        &amp;lt;/style&amp;gt;&lt;br /&gt;
      &amp;lt;/head&amp;gt;&lt;br /&gt;
      &amp;lt;body&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;Menüü&amp;lt;/h1&amp;gt;&lt;br /&gt;
        &amp;lt;table width=&amp;quot;800&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;200&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;100&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col witdh=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;150&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;tr&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Nimetus&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Lisandid&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Tüüp&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Hind&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Hinne / Hindajaid&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Pilt&amp;lt;/th&amp;gt;&lt;br /&gt;
          &amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
          &amp;lt;xsl:for-each select=&amp;quot;menu/product&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:sort select=&amp;quot;type/id&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:sort select=&amp;quot;name&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;th&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;name&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/th&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;extras/node()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;ul&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:for-each select=&amp;quot;extras/item&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;li&amp;gt;&lt;br /&gt;
                          &amp;lt;xsl:value-of select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;/li&amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
                    &amp;lt;/ul&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;td&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;type/name&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;price/node()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    €&amp;lt;xsl:value-of select=&amp;quot;price/int&amp;quot;/&amp;gt;.&amp;lt;xsl:value-of select=&amp;quot;price/frac&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:if test=&amp;quot;price/discount/text()&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;span class=&amp;quot;discount&amp;quot;&amp;gt;&lt;br /&gt;
                        (-&amp;lt;xsl:value-of select=&amp;quot;price/discount&amp;quot;/&amp;gt;%)&lt;br /&gt;
                      &amp;lt;/span&amp;gt;&lt;br /&gt;
                    &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:variable name=&amp;quot;p&amp;quot; select=&amp;quot;vote/pos&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:variable name=&amp;quot;n&amp;quot; select=&amp;quot;vote/neg&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;td&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$p - $n&amp;quot;/&amp;gt; / &amp;lt;xsl:value-of select=&amp;quot;$p + $n&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;screenshot/text()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;img src=&amp;quot;{screenshot}&amp;quot; alt=&amp;quot;&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;img src=&amp;quot;screenshots/default.png&amp;quot; alt=&amp;quot;No image&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
      &amp;lt;/body&amp;gt;&lt;br /&gt;
    &amp;lt;/html&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
Sisu ja stiilifaili koostöö http://henri.kroosmann.ee/kool/xml/index.xml &amp;lt;!--[http://henri.kroosmann.ee/kool/xml/index.xml]--&amp;gt;&lt;br /&gt;
==VEEBITEENUSED==&lt;br /&gt;
&lt;br /&gt;
===8. aprill===&lt;br /&gt;
Otsustame teha teenused kõikide kohvikute menüüde kohta.&lt;br /&gt;
&lt;br /&gt;
===11.-12. aprill===&lt;br /&gt;
Henri koostab tabelite loogika&lt;br /&gt;
&lt;br /&gt;
===13. aprill===&lt;br /&gt;
Mailis otsustab veebiteenused teha asmx-is [webmethod]-itega&lt;br /&gt;
===14. aprill===&lt;br /&gt;
Mailis hakkab veebiteenuseid tegema&lt;br /&gt;
===17. aprill===&lt;br /&gt;
Veebiteenused on valmis:&lt;br /&gt;
&lt;br /&gt;
*AnnaJoogiliikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaJoogitabelirida_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*AnnaJookideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaK6igiKohvikuteAndmeteNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyyIDed_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyyRida_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyydeNimekiri_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaMenyyLiikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaMenyydeNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaPromillideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToiduliikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToitudeNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToitutabelirida_toiduIDjargi &lt;br /&gt;
&lt;br /&gt;
*AnnaYheKohvikuAndmed_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*KustutaJookMenyyst &lt;br /&gt;
&lt;br /&gt;
*KustutaMenyy &lt;br /&gt;
&lt;br /&gt;
*KustutaKohvik &lt;br /&gt;
&lt;br /&gt;
*KustutaToitMenyyst &lt;br /&gt;
&lt;br /&gt;
*KysiYheKohvikuYheMenyyToitudeIDeed_menyyIDjargi &lt;br /&gt;
&lt;br /&gt;
*LisaJoogiLiik &lt;br /&gt;
&lt;br /&gt;
*LisaMenyyLiik &lt;br /&gt;
&lt;br /&gt;
*LisaPromill &lt;br /&gt;
&lt;br /&gt;
*LisaToiduLiik &lt;br /&gt;
&lt;br /&gt;
*SecurityAuthenticateUser &lt;br /&gt;
&lt;br /&gt;
*TOITJOOKmenyysRida_menyyIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedJoogileMenyys &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedKohvikule &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedToiduleMenyys &lt;br /&gt;
&lt;br /&gt;
*annaJoogiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiKIRJELDUS_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiKOMM_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiID_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiNIMI_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKasOnTaimeT_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKasutajaNIMI_Guidjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuLahtiolekuAjad_kohvikuIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuTeated &lt;br /&gt;
&lt;br /&gt;
*annaLinnaID_LinnaNimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaLinnaNIMI_LinnaIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaLinnad_maakonnaNIMEjargi &lt;br /&gt;
&lt;br /&gt;
*annaMaakonnaID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaMenyyLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaMenyyLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaPromill_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaPromilliID_promilliNrJargi &lt;br /&gt;
&lt;br /&gt;
*annaPromilliNR_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduKIRJELDUS_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduKOMMENTAAR_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiNIMETUS_toiduIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaYheKohvikuMenyyd_kohvikuNIMEjargi &lt;br /&gt;
&lt;br /&gt;
*autendiKasutajaParooliJargi &lt;br /&gt;
&lt;br /&gt;
*k6igiKohvikuteMenyyd &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusJoogiKohta &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusKohvikuKohta &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusToiduKohta &lt;br /&gt;
&lt;br /&gt;
*lisaJookMenyysse &lt;br /&gt;
&lt;br /&gt;
*lisaToitMenyysse &lt;br /&gt;
&lt;br /&gt;
*lisaUusJook &lt;br /&gt;
&lt;br /&gt;
*lisaUusKohvik &lt;br /&gt;
&lt;br /&gt;
*lisaUusLahtiolekuAeg &lt;br /&gt;
&lt;br /&gt;
*lisaUusMenyy &lt;br /&gt;
&lt;br /&gt;
*lisaUusTeadaanne &lt;br /&gt;
&lt;br /&gt;
*lisaUusToit &lt;br /&gt;
&lt;br /&gt;
*nadalapaevaID_paevaNimetuseJargi &lt;br /&gt;
&lt;br /&gt;
*nadalapaevaNIMETUS_paevaIDjargi&lt;br /&gt;
&lt;br /&gt;
*Registreeru&lt;br /&gt;
&lt;br /&gt;
*LogiSisseTavakasutajana&lt;br /&gt;
&lt;br /&gt;
*LogiSisseKohvikuna&lt;br /&gt;
&lt;br /&gt;
===22.aprill===&lt;br /&gt;
Toimus koosolek&lt;br /&gt;
*Henri lubas meetodite turvamise teha.&lt;br /&gt;
*Heiki lubas statistika teha meetodite kohta.&lt;br /&gt;
&lt;br /&gt;
===Allikfail===&lt;br /&gt;
Allikfail: http://www.p2ike.com/CSharp/KohvikudVeebiteenus.rar&lt;br /&gt;
&lt;br /&gt;
Meetod &#039;k6igiKohvikuteMenyyd&#039; kuvab sellise xml struktuuri: http://www.p2ike.com/CSharp/k6igiKohvikuteMenyyd.xml&lt;br /&gt;
&lt;br /&gt;
Toidud ja joogid sorteeritakse liikide kaupa.&lt;br /&gt;
&lt;br /&gt;
===Andmetabelid===&lt;br /&gt;
[[File:andmetabelid.jpg|777px|thumb|left|andmemudel]]&lt;br /&gt;
===Statistika===&lt;br /&gt;
 using System;&lt;br /&gt;
using System.Web.Services;&lt;br /&gt;
using System.Web.Services.Protocols;&lt;br /&gt;
using System.IO;&lt;br /&gt;
using System.Net;&lt;br /&gt;
 &lt;br /&gt;
// Define a SOAP Extension that traces the SOAP request and SOAP&lt;br /&gt;
// response for the XML Web service method the SOAP extension is&lt;br /&gt;
// applied to. &lt;br /&gt;
 &lt;br /&gt;
namespace WebASPKohvikud&lt;br /&gt;
{&lt;br /&gt;
    public class TraceExtension : SoapExtension&lt;br /&gt;
    {&lt;br /&gt;
        Stream oldStream;&lt;br /&gt;
        Stream newStream;&lt;br /&gt;
        string filename;&lt;br /&gt;
 &lt;br /&gt;
        // Save the Stream representing the SOAP request or SOAP response into&lt;br /&gt;
        // a local memory buffer.&lt;br /&gt;
        public override Stream ChainStream(Stream stream)&lt;br /&gt;
        {&lt;br /&gt;
            oldStream = stream;&lt;br /&gt;
            newStream = new MemoryStream();&lt;br /&gt;
            return newStream;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        // When the SOAP extension is accessed for the first time, the XML Web&lt;br /&gt;
        // service method it is applied to is accessed to store the file&lt;br /&gt;
        // name passed in, using the corresponding SoapExtensionAttribute.	&lt;br /&gt;
        public override object GetInitializer(LogicalMethodInfo methodInfo, SoapExtensionAttribute attribute)&lt;br /&gt;
        {&lt;br /&gt;
            return ((TraceExtensionAttribute)attribute).Filename;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        // The SOAP extension was configured to run using a configuration file&lt;br /&gt;
        // instead of an attribute applied to a specific XML Web service&lt;br /&gt;
        // method.&lt;br /&gt;
        public override object GetInitializer(Type WebServiceType)&lt;br /&gt;
        {&lt;br /&gt;
            // Return a file name to log the trace information to, based on the&lt;br /&gt;
            // type.&lt;br /&gt;
            return &amp;quot;C:\\&amp;quot; + WebServiceType.FullName + &amp;quot;.log&amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        // Receive the file name stored by GetInitializer and store it in a&lt;br /&gt;
        // member variable for this specific instance.&lt;br /&gt;
        public override void Initialize(object initializer)&lt;br /&gt;
        {&lt;br /&gt;
            filename = (string)initializer;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        //  If the SoapMessageStage is such that the SoapRequest or&lt;br /&gt;
        //  SoapResponse is still in the SOAP format to be sent or received,&lt;br /&gt;
        //  save it out to a file.&lt;br /&gt;
        public override void ProcessMessage(SoapMessage message)&lt;br /&gt;
        {&lt;br /&gt;
            switch (message.Stage)&lt;br /&gt;
            {&lt;br /&gt;
                case SoapMessageStage.BeforeSerialize:&lt;br /&gt;
                    break;&lt;br /&gt;
                case SoapMessageStage.AfterSerialize:&lt;br /&gt;
                    WriteOutput(message);&lt;br /&gt;
                    break;&lt;br /&gt;
                case SoapMessageStage.BeforeDeserialize:&lt;br /&gt;
                    WriteInput(message);&lt;br /&gt;
                    break;&lt;br /&gt;
                case SoapMessageStage.AfterDeserialize:&lt;br /&gt;
                    break;&lt;br /&gt;
                default:&lt;br /&gt;
                    throw new Exception(&amp;quot;invalid stage&amp;quot;);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        public void WriteOutput(SoapMessage message)&lt;br /&gt;
        {&lt;br /&gt;
            newStream.Position = 0;&lt;br /&gt;
            FileStream fs = new FileStream(filename, FileMode.Append,&lt;br /&gt;
                FileAccess.Write);&lt;br /&gt;
            StreamWriter w = new StreamWriter(fs);&lt;br /&gt;
 &lt;br /&gt;
            string soapString = (message is SoapServerMessage) ? &amp;quot;SoapResponse&amp;quot; : &amp;quot;SoapRequest&amp;quot;;&lt;br /&gt;
            w.WriteLine(&amp;quot;-----&amp;quot; + soapString + &amp;quot; at &amp;quot; + DateTime.Now);&lt;br /&gt;
            w.Flush();&lt;br /&gt;
            Copy(newStream, fs);&lt;br /&gt;
            w.Close();&lt;br /&gt;
            newStream.Position = 0;&lt;br /&gt;
            Copy(newStream, oldStream);&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        public void WriteInput(SoapMessage message)&lt;br /&gt;
        {&lt;br /&gt;
            Copy(oldStream, newStream);&lt;br /&gt;
            FileStream fs = new FileStream(filename, FileMode.Append,&lt;br /&gt;
                FileAccess.Write);&lt;br /&gt;
            StreamWriter w = new StreamWriter(fs);&lt;br /&gt;
 &lt;br /&gt;
            string soapString = (message is SoapServerMessage) ?&lt;br /&gt;
                &amp;quot;SoapRequest&amp;quot; : &amp;quot;SoapResponse&amp;quot;;&lt;br /&gt;
            w.WriteLine(&amp;quot;-----&amp;quot; + soapString +&lt;br /&gt;
                &amp;quot; at &amp;quot; + DateTime.Now);&lt;br /&gt;
            w.Flush();&lt;br /&gt;
            newStream.Position = 0;&lt;br /&gt;
            Copy(newStream, fs);&lt;br /&gt;
            w.Close();&lt;br /&gt;
            newStream.Position = 0;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        void Copy(Stream from, Stream to)&lt;br /&gt;
        {&lt;br /&gt;
            TextReader reader = new StreamReader(from);&lt;br /&gt;
            TextWriter writer = new StreamWriter(to);&lt;br /&gt;
            writer.WriteLine(reader.ReadToEnd());&lt;br /&gt;
            writer.Flush();&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    // Create a SoapExtensionAttribute for the SOAP Extension that can be&lt;br /&gt;
    // applied to an XML Web service method.&lt;br /&gt;
    [AttributeUsage(AttributeTargets.Method)]&lt;br /&gt;
    public class TraceExtensionAttribute : SoapExtensionAttribute&lt;br /&gt;
    {&lt;br /&gt;
 &lt;br /&gt;
        private string filename = @&amp;quot;C:\Users\Heiki Tamm\Documents\Õppematerjalid_2011\WebASPKohvikud\WebASPKohvikud\SoapLog.txt&amp;quot;;&lt;br /&gt;
        private int priority;&lt;br /&gt;
 &lt;br /&gt;
        public override Type ExtensionType&lt;br /&gt;
        {&lt;br /&gt;
            get { return typeof(TraceExtension); }&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        public override int Priority&lt;br /&gt;
        {&lt;br /&gt;
            get { return priority; }&lt;br /&gt;
            set { priority = value; }&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        public string Filename&lt;br /&gt;
        {&lt;br /&gt;
            get&lt;br /&gt;
            {&lt;br /&gt;
                return filename;&lt;br /&gt;
            }&lt;br /&gt;
            set&lt;br /&gt;
            {&lt;br /&gt;
                filename = value;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
// todo: &lt;br /&gt;
// from each soap header record query content &lt;br /&gt;
// (containing client, date, time, query ) into a DB&lt;br /&gt;
// for later reference for conducting any kind of &lt;br /&gt;
// applicable statistics and then generate stats :D !&lt;br /&gt;
// Proovin selliselt, et on lihtne statistika tabel:&lt;br /&gt;
// 1) meetod // välja kutsutava meetodi nimi&lt;br /&gt;
// 2) kuupäev // timestamp&lt;br /&gt;
// 3) callide arv // meetodi väljakutsimiste hulk&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==KLIENTRAKENDUS==&lt;br /&gt;
&lt;br /&gt;
===23. mai===&lt;br /&gt;
Mailis tegi kohvikute kuvamise ASP.NET rakenduse.&lt;br /&gt;
Kohvikud kuvatakse TreeView&#039;s &lt;br /&gt;
menüüde ja andmetega ning arvamustega kohvikute ja toitude ja jookide kohta.&lt;br /&gt;
&lt;br /&gt;
Samal lehel on kohvikuhuvilistele registreerimisvõimalus&lt;br /&gt;
ja sisselogimine.&lt;br /&gt;
&lt;br /&gt;
Kui on sisselogitud, saab lisada arvamusi.&lt;br /&gt;
Arvamuste lisamine on Ajax Extended Toolkiti controli&#039;ga &#039;Allways Visible ...&#039; tehtud, &lt;br /&gt;
&lt;br /&gt;
nii et mööda pikka TreeViewd alla kerides saab &lt;br /&gt;
lisada arvamust ilma ülesserva tagasi minemata.&lt;br /&gt;
&lt;br /&gt;
Arvamused ilmuvad kohe peale lisamist TreeView&#039;sse.&lt;br /&gt;
&lt;br /&gt;
TreeView&#039;sse tulevad andmed xml-failist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pooleli on veel kohvikute-poolne rakendus, kus omanik saab lisada ja kustutada kohvikuid, menüüsid ja toite-jooke, lisada teadaandeid.&lt;br /&gt;
&lt;br /&gt;
Pooleli on veel admini-rakendus, kus admin saab kasutajale määrata rolli, mis annab õigused kohviku-rakendusse sisse logida.&lt;br /&gt;
===4. juuni===&lt;br /&gt;
Valmis sai Kohvikute omanikele mõeldud klientrakendus.&lt;br /&gt;
Tehtud ASP.NET&#039;i veebirakendusena.&lt;br /&gt;
Seal on sisselogimine, registreerumine ja adminile kirja saatmine kohvikuomaniku õiguste saamiseks.&lt;br /&gt;
Peale sisselogimist saab &lt;br /&gt;
*lisada ja kustutada kohvikut&lt;br /&gt;
*lisada kohvikule lahtiolekuaegu nädalapäevade kaupa ja neid kustutada&lt;br /&gt;
*lisada kohvikule teadaandeid ja neid kustutada&lt;br /&gt;
*lisada kohvikule menüüsid ja neid kustutada: menüül on nimetus, liik, nädalapäev,  lisamiskuupäev jne. &lt;br /&gt;
*lisada menüüsse toite ja neid kustutada. Toitudel on nimetus, liik, hind, kas-sobib-taimetoitlasele, kogus grammides, suurus, lisamise kuupäev. Eraldi listides on kõikide kohvikute lisatud toidud ja selle kohviku lisatud toidud. Toitu valides rippmenüüst ilmuvad selle toidu andmed, et näha täpsemalt, mis toiduga on tegu. Ka on näha parajasti toitu lisatavasse menüüsse varem lisatud toidud.&lt;br /&gt;
*jookidele on sama, va. taimetoidu asemel on alkohoolse joogi korral promillide suurus.&lt;br /&gt;
&lt;br /&gt;
Lisada saab tehtud textbokside kaudu, nimekirjadest valimine on tehtud dropdown-listidena.&lt;br /&gt;
Kuvamised on tehtud GridViewdena, mis saavad andmeid meetoditest, mitte otse andmebaasitabelist.&lt;br /&gt;
&lt;br /&gt;
===5. juuni===&lt;br /&gt;
Valmis sai Kohvikute administraatori  ASP.NET-veebirakendus.&lt;br /&gt;
Admin saab registreeruda ja sisse logida.&lt;br /&gt;
Kui admin on sisse loginud, saab ta vaadata statistikat. Statistika-tabeleid on eraldi selle kohta, kui palju on mingit meetodit kasutatud ja selle kohta,kes millal mingit meetodit kasutas.&lt;br /&gt;
Sisseloginuna saab vaadata saabunud taotlusi ja nende järgi kasutajatele rolle määrata.&lt;br /&gt;
&lt;br /&gt;
Tabelid saavad andmeid otse andmebaasist, GridView&#039;dena, neid saab sorteerida tulpade&lt;br /&gt;
pealkirjadel klikkides.&lt;/div&gt;</summary>
		<author><name>Mtoompuu</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Meeskond_%22H2%22&amp;diff=33770</id>
		<title>Meeskond &quot;H2&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Meeskond_%22H2%22&amp;diff=33770"/>
		<updated>2011-06-05T21:58:34Z</updated>

		<summary type="html">&lt;p&gt;Mtoompuu: /* 4. juuni */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Kohviku menüüsüsteem==&lt;br /&gt;
===Projekt===&lt;br /&gt;
Kohvikute (esialgu ainult IT-Kohviku) menüüsüsteem, mis on jälgitav mobiilseadmetelt. Lisaväärtusena võimaldab anda pakutavale hinnanguid, otsuse langetamise hõlbustamiseks kommentaar:(see viimane funktsioon kipub vist &amp;quot;veebirakenduseks&amp;quot; muutuma)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Sihtplatvormid:&lt;br /&gt;
Windows Mobile, iOS, Android(kui leiame vabatahtlikud testijad)&lt;br /&gt;
&lt;br /&gt;
===Taustinfo===&lt;br /&gt;
Praegune IT-Kohviku menüü on käsitsi täidetav valge tahvel. Projekti eesmärgiks on parendada IT-Kohviku menüüsüsteemi ja teha see veebi kaudu kättesaadavaks, nii, et menüüsse saab lisada ka karniiri valiku. Standardmenüü puhul saab menüüs olla ka illustreeriv foto. Hetkemenüü ning hinnad ja lahtioleku ajad on samuti jälgitavad võrguühendust eviva mobiilseadme ekraanilt, hõlbustades sellega valikute tegemist.&lt;br /&gt;
&lt;br /&gt;
===Liikmed===&lt;br /&gt;
* Mailis Toompuu&lt;br /&gt;
* Henri Kroosmann&lt;br /&gt;
* Heiki Tamm&lt;br /&gt;
&lt;br /&gt;
==Sisu==&lt;br /&gt;
&lt;br /&gt;
===XML Data===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;menu&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name1&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;0&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name1&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item1&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item2&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item3&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;0&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;0&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount1&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;0&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;0&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot1&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name2&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;255&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name2&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item4&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item5&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item6&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;255&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;255&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount2&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;255&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;255&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot2&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name3&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;1&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name3&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item7&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item8&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item9&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;1&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;1&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount3&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;1&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;1&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot3&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
&amp;lt;/menu&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===XML Schema===&lt;br /&gt;
&lt;br /&gt;
Ülevaade Schema&#039;st. &amp;lt;br /&amp;gt;&lt;br /&gt;
[[File:XMLSchema_Capture_(optimized).png]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Ning sellele vastav kood.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xs:schema attributeFormDefault=&amp;quot;unqualified&amp;quot; elementFormDefault=&amp;quot;qualified&amp;quot; xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xs:element name=&amp;quot;menu&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;product&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;type&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;id&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;extras&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence minOccurs=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;item&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;price&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence minOccurs=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;int&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;frac&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element minOccurs=&amp;quot;0&amp;quot; name=&amp;quot;discount&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;vote&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;pos&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;neg&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;screenshot&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===XML Style===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;html&amp;gt;&lt;br /&gt;
      &amp;lt;head&amp;gt;&lt;br /&gt;
        &amp;lt;style type=&amp;quot;text/css&amp;quot;&amp;gt;&lt;br /&gt;
          html,body{margin:0;padding:0;font-family:Helvetica,Arial,sans-serif;font-size:14px;line-height:19px;color:#2c2c2c;}&lt;br /&gt;
          h1{margin:0;padding:25px 0 0;font-size:22px;line-height:25px;text-align:center;}&lt;br /&gt;
          h2{margin:0;padding:5px;font-size:16px;line-height:21px}&lt;br /&gt;
          span.discount{padding:0 0 0 5px;color:red;}&lt;br /&gt;
          table{margin:20px auto;padding:0;}&lt;br /&gt;
          th,td{padding:5px;border:1px solid #2c2c2c;vertical-align:top;text-align:left}&lt;br /&gt;
          th{font-weight:bold;background-color:#eee;}&lt;br /&gt;
          ul{margin:0;padding:0;list-style-type:none;}&lt;br /&gt;
        &amp;lt;/style&amp;gt;&lt;br /&gt;
      &amp;lt;/head&amp;gt;&lt;br /&gt;
      &amp;lt;body&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;Menüü&amp;lt;/h1&amp;gt;&lt;br /&gt;
        &amp;lt;table width=&amp;quot;800&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;200&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;100&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col witdh=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;150&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;tr&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Nimetus&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Lisandid&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Tüüp&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Hind&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Hinne / Hindajaid&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Pilt&amp;lt;/th&amp;gt;&lt;br /&gt;
          &amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
          &amp;lt;xsl:for-each select=&amp;quot;menu/product&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:sort select=&amp;quot;type/id&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:sort select=&amp;quot;name&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;th&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;name&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/th&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;extras/node()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;ul&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:for-each select=&amp;quot;extras/item&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;li&amp;gt;&lt;br /&gt;
                          &amp;lt;xsl:value-of select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;/li&amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
                    &amp;lt;/ul&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;td&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;type/name&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;price/node()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    €&amp;lt;xsl:value-of select=&amp;quot;price/int&amp;quot;/&amp;gt;.&amp;lt;xsl:value-of select=&amp;quot;price/frac&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:if test=&amp;quot;price/discount/text()&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;span class=&amp;quot;discount&amp;quot;&amp;gt;&lt;br /&gt;
                        (-&amp;lt;xsl:value-of select=&amp;quot;price/discount&amp;quot;/&amp;gt;%)&lt;br /&gt;
                      &amp;lt;/span&amp;gt;&lt;br /&gt;
                    &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:variable name=&amp;quot;p&amp;quot; select=&amp;quot;vote/pos&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:variable name=&amp;quot;n&amp;quot; select=&amp;quot;vote/neg&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;td&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$p - $n&amp;quot;/&amp;gt; / &amp;lt;xsl:value-of select=&amp;quot;$p + $n&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;screenshot/text()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;img src=&amp;quot;{screenshot}&amp;quot; alt=&amp;quot;&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;img src=&amp;quot;screenshots/default.png&amp;quot; alt=&amp;quot;No image&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
      &amp;lt;/body&amp;gt;&lt;br /&gt;
    &amp;lt;/html&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
Sisu ja stiilifaili koostöö http://henri.kroosmann.ee/kool/xml/index.xml &amp;lt;!--[http://henri.kroosmann.ee/kool/xml/index.xml]--&amp;gt;&lt;br /&gt;
==VEEBITEENUSED==&lt;br /&gt;
&lt;br /&gt;
===8. aprill===&lt;br /&gt;
Otsustame teha teenused kõikide kohvikute menüüde kohta.&lt;br /&gt;
&lt;br /&gt;
===11.-12. aprill===&lt;br /&gt;
Henri koostab tabelite loogika&lt;br /&gt;
&lt;br /&gt;
===13. aprill===&lt;br /&gt;
Mailis otsustab veebiteenused teha asmx-is [webmethod]-itega&lt;br /&gt;
===14. aprill===&lt;br /&gt;
Mailis hakkab veebiteenuseid tegema&lt;br /&gt;
===17. aprill===&lt;br /&gt;
Veebiteenused on valmis:&lt;br /&gt;
&lt;br /&gt;
*AnnaJoogiliikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaJoogitabelirida_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*AnnaJookideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaK6igiKohvikuteAndmeteNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyyIDed_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyyRida_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyydeNimekiri_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaMenyyLiikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaMenyydeNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaPromillideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToiduliikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToitudeNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToitutabelirida_toiduIDjargi &lt;br /&gt;
&lt;br /&gt;
*AnnaYheKohvikuAndmed_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*KustutaJookMenyyst &lt;br /&gt;
&lt;br /&gt;
*KustutaMenyy &lt;br /&gt;
&lt;br /&gt;
*KustutaKohvik &lt;br /&gt;
&lt;br /&gt;
*KustutaToitMenyyst &lt;br /&gt;
&lt;br /&gt;
*KysiYheKohvikuYheMenyyToitudeIDeed_menyyIDjargi &lt;br /&gt;
&lt;br /&gt;
*LisaJoogiLiik &lt;br /&gt;
&lt;br /&gt;
*LisaMenyyLiik &lt;br /&gt;
&lt;br /&gt;
*LisaPromill &lt;br /&gt;
&lt;br /&gt;
*LisaToiduLiik &lt;br /&gt;
&lt;br /&gt;
*SecurityAuthenticateUser &lt;br /&gt;
&lt;br /&gt;
*TOITJOOKmenyysRida_menyyIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedJoogileMenyys &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedKohvikule &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedToiduleMenyys &lt;br /&gt;
&lt;br /&gt;
*annaJoogiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiKIRJELDUS_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiKOMM_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiID_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiNIMI_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKasOnTaimeT_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKasutajaNIMI_Guidjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuLahtiolekuAjad_kohvikuIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuTeated &lt;br /&gt;
&lt;br /&gt;
*annaLinnaID_LinnaNimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaLinnaNIMI_LinnaIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaLinnad_maakonnaNIMEjargi &lt;br /&gt;
&lt;br /&gt;
*annaMaakonnaID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaMenyyLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaMenyyLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaPromill_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaPromilliID_promilliNrJargi &lt;br /&gt;
&lt;br /&gt;
*annaPromilliNR_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduKIRJELDUS_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduKOMMENTAAR_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiNIMETUS_toiduIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaYheKohvikuMenyyd_kohvikuNIMEjargi &lt;br /&gt;
&lt;br /&gt;
*autendiKasutajaParooliJargi &lt;br /&gt;
&lt;br /&gt;
*k6igiKohvikuteMenyyd &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusJoogiKohta &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusKohvikuKohta &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusToiduKohta &lt;br /&gt;
&lt;br /&gt;
*lisaJookMenyysse &lt;br /&gt;
&lt;br /&gt;
*lisaToitMenyysse &lt;br /&gt;
&lt;br /&gt;
*lisaUusJook &lt;br /&gt;
&lt;br /&gt;
*lisaUusKohvik &lt;br /&gt;
&lt;br /&gt;
*lisaUusLahtiolekuAeg &lt;br /&gt;
&lt;br /&gt;
*lisaUusMenyy &lt;br /&gt;
&lt;br /&gt;
*lisaUusTeadaanne &lt;br /&gt;
&lt;br /&gt;
*lisaUusToit &lt;br /&gt;
&lt;br /&gt;
*nadalapaevaID_paevaNimetuseJargi &lt;br /&gt;
&lt;br /&gt;
*nadalapaevaNIMETUS_paevaIDjargi&lt;br /&gt;
&lt;br /&gt;
*Registreeru&lt;br /&gt;
&lt;br /&gt;
*LogiSisseTavakasutajana&lt;br /&gt;
&lt;br /&gt;
*LogiSisseKohvikuna&lt;br /&gt;
&lt;br /&gt;
===22.aprill===&lt;br /&gt;
Toimus koosolek&lt;br /&gt;
*Henri lubas meetodite turvamise teha.&lt;br /&gt;
*Heiki lubas statistika teha meetodite kohta.&lt;br /&gt;
&lt;br /&gt;
===Allikfail===&lt;br /&gt;
Allikfail: http://www.p2ike.com/CSharp/KohvikudVeebiteenus.rar&lt;br /&gt;
&lt;br /&gt;
Meetod &#039;k6igiKohvikuteMenyyd&#039; kuvab sellise xml struktuuri: http://www.p2ike.com/CSharp/k6igiKohvikuteMenyyd.xml&lt;br /&gt;
&lt;br /&gt;
Toidud ja joogid sorteeritakse liikide kaupa.&lt;br /&gt;
&lt;br /&gt;
===Andmetabelid===&lt;br /&gt;
[[File:andmetabelid.jpg|777px|thumb|left|andmemudel]]&lt;br /&gt;
===Statistika===&lt;br /&gt;
 using System;&lt;br /&gt;
using System.Web.Services;&lt;br /&gt;
using System.Web.Services.Protocols;&lt;br /&gt;
using System.IO;&lt;br /&gt;
using System.Net;&lt;br /&gt;
 &lt;br /&gt;
// Define a SOAP Extension that traces the SOAP request and SOAP&lt;br /&gt;
// response for the XML Web service method the SOAP extension is&lt;br /&gt;
// applied to. &lt;br /&gt;
 &lt;br /&gt;
namespace WebASPKohvikud&lt;br /&gt;
{&lt;br /&gt;
    public class TraceExtension : SoapExtension&lt;br /&gt;
    {&lt;br /&gt;
        Stream oldStream;&lt;br /&gt;
        Stream newStream;&lt;br /&gt;
        string filename;&lt;br /&gt;
 &lt;br /&gt;
        // Save the Stream representing the SOAP request or SOAP response into&lt;br /&gt;
        // a local memory buffer.&lt;br /&gt;
        public override Stream ChainStream(Stream stream)&lt;br /&gt;
        {&lt;br /&gt;
            oldStream = stream;&lt;br /&gt;
            newStream = new MemoryStream();&lt;br /&gt;
            return newStream;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        // When the SOAP extension is accessed for the first time, the XML Web&lt;br /&gt;
        // service method it is applied to is accessed to store the file&lt;br /&gt;
        // name passed in, using the corresponding SoapExtensionAttribute.	&lt;br /&gt;
        public override object GetInitializer(LogicalMethodInfo methodInfo, SoapExtensionAttribute attribute)&lt;br /&gt;
        {&lt;br /&gt;
            return ((TraceExtensionAttribute)attribute).Filename;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        // The SOAP extension was configured to run using a configuration file&lt;br /&gt;
        // instead of an attribute applied to a specific XML Web service&lt;br /&gt;
        // method.&lt;br /&gt;
        public override object GetInitializer(Type WebServiceType)&lt;br /&gt;
        {&lt;br /&gt;
            // Return a file name to log the trace information to, based on the&lt;br /&gt;
            // type.&lt;br /&gt;
            return &amp;quot;C:\\&amp;quot; + WebServiceType.FullName + &amp;quot;.log&amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        // Receive the file name stored by GetInitializer and store it in a&lt;br /&gt;
        // member variable for this specific instance.&lt;br /&gt;
        public override void Initialize(object initializer)&lt;br /&gt;
        {&lt;br /&gt;
            filename = (string)initializer;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        //  If the SoapMessageStage is such that the SoapRequest or&lt;br /&gt;
        //  SoapResponse is still in the SOAP format to be sent or received,&lt;br /&gt;
        //  save it out to a file.&lt;br /&gt;
        public override void ProcessMessage(SoapMessage message)&lt;br /&gt;
        {&lt;br /&gt;
            switch (message.Stage)&lt;br /&gt;
            {&lt;br /&gt;
                case SoapMessageStage.BeforeSerialize:&lt;br /&gt;
                    break;&lt;br /&gt;
                case SoapMessageStage.AfterSerialize:&lt;br /&gt;
                    WriteOutput(message);&lt;br /&gt;
                    break;&lt;br /&gt;
                case SoapMessageStage.BeforeDeserialize:&lt;br /&gt;
                    WriteInput(message);&lt;br /&gt;
                    break;&lt;br /&gt;
                case SoapMessageStage.AfterDeserialize:&lt;br /&gt;
                    break;&lt;br /&gt;
                default:&lt;br /&gt;
                    throw new Exception(&amp;quot;invalid stage&amp;quot;);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        public void WriteOutput(SoapMessage message)&lt;br /&gt;
        {&lt;br /&gt;
            newStream.Position = 0;&lt;br /&gt;
            FileStream fs = new FileStream(filename, FileMode.Append,&lt;br /&gt;
                FileAccess.Write);&lt;br /&gt;
            StreamWriter w = new StreamWriter(fs);&lt;br /&gt;
 &lt;br /&gt;
            string soapString = (message is SoapServerMessage) ? &amp;quot;SoapResponse&amp;quot; : &amp;quot;SoapRequest&amp;quot;;&lt;br /&gt;
            w.WriteLine(&amp;quot;-----&amp;quot; + soapString + &amp;quot; at &amp;quot; + DateTime.Now);&lt;br /&gt;
            w.Flush();&lt;br /&gt;
            Copy(newStream, fs);&lt;br /&gt;
            w.Close();&lt;br /&gt;
            newStream.Position = 0;&lt;br /&gt;
            Copy(newStream, oldStream);&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        public void WriteInput(SoapMessage message)&lt;br /&gt;
        {&lt;br /&gt;
            Copy(oldStream, newStream);&lt;br /&gt;
            FileStream fs = new FileStream(filename, FileMode.Append,&lt;br /&gt;
                FileAccess.Write);&lt;br /&gt;
            StreamWriter w = new StreamWriter(fs);&lt;br /&gt;
 &lt;br /&gt;
            string soapString = (message is SoapServerMessage) ?&lt;br /&gt;
                &amp;quot;SoapRequest&amp;quot; : &amp;quot;SoapResponse&amp;quot;;&lt;br /&gt;
            w.WriteLine(&amp;quot;-----&amp;quot; + soapString +&lt;br /&gt;
                &amp;quot; at &amp;quot; + DateTime.Now);&lt;br /&gt;
            w.Flush();&lt;br /&gt;
            newStream.Position = 0;&lt;br /&gt;
            Copy(newStream, fs);&lt;br /&gt;
            w.Close();&lt;br /&gt;
            newStream.Position = 0;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        void Copy(Stream from, Stream to)&lt;br /&gt;
        {&lt;br /&gt;
            TextReader reader = new StreamReader(from);&lt;br /&gt;
            TextWriter writer = new StreamWriter(to);&lt;br /&gt;
            writer.WriteLine(reader.ReadToEnd());&lt;br /&gt;
            writer.Flush();&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    // Create a SoapExtensionAttribute for the SOAP Extension that can be&lt;br /&gt;
    // applied to an XML Web service method.&lt;br /&gt;
    [AttributeUsage(AttributeTargets.Method)]&lt;br /&gt;
    public class TraceExtensionAttribute : SoapExtensionAttribute&lt;br /&gt;
    {&lt;br /&gt;
 &lt;br /&gt;
        private string filename = @&amp;quot;C:\Users\Heiki Tamm\Documents\Õppematerjalid_2011\WebASPKohvikud\WebASPKohvikud\SoapLog.txt&amp;quot;;&lt;br /&gt;
        private int priority;&lt;br /&gt;
 &lt;br /&gt;
        public override Type ExtensionType&lt;br /&gt;
        {&lt;br /&gt;
            get { return typeof(TraceExtension); }&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        public override int Priority&lt;br /&gt;
        {&lt;br /&gt;
            get { return priority; }&lt;br /&gt;
            set { priority = value; }&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        public string Filename&lt;br /&gt;
        {&lt;br /&gt;
            get&lt;br /&gt;
            {&lt;br /&gt;
                return filename;&lt;br /&gt;
            }&lt;br /&gt;
            set&lt;br /&gt;
            {&lt;br /&gt;
                filename = value;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
// todo: &lt;br /&gt;
// from each soap header record query content &lt;br /&gt;
// (containing client, date, time, query ) into a DB&lt;br /&gt;
// for later reference for conducting any kind of &lt;br /&gt;
// applicable statistics and then generate stats :D !&lt;br /&gt;
// Proovin selliselt, et on lihtne statistika tabel:&lt;br /&gt;
// 1) meetod // välja kutsutava meetodi nimi&lt;br /&gt;
// 2) kuupäev // timestamp&lt;br /&gt;
// 3) callide arv // meetodi väljakutsimiste hulk&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==KLIENTRAKENDUS==&lt;br /&gt;
&lt;br /&gt;
===23. mai===&lt;br /&gt;
Mailis tegi kohvikute kuvamise ASP.NET rakenduse.&lt;br /&gt;
Kohvikud kuvatakse TreeView&#039;s &lt;br /&gt;
menüüde ja andmetega ning arvamustega kohvikute ja toitude ja jookide kohta.&lt;br /&gt;
&lt;br /&gt;
Samal lehel on kohvikuhuvilistele registreerimisvõimalus&lt;br /&gt;
ja sisselogimine.&lt;br /&gt;
&lt;br /&gt;
Kui on sisselogitud, saab lisada arvamusi.&lt;br /&gt;
Arvamuste lisamine on Ajax Extended Toolkiti controli&#039;ga &#039;Allways Visible ...&#039; tehtud, &lt;br /&gt;
&lt;br /&gt;
nii et mööda pikka TreeViewd alla kerides saab &lt;br /&gt;
lisada arvamust ilma ülesserva tagasi minemata.&lt;br /&gt;
&lt;br /&gt;
Arvamused ilmuvad kohe peale lisamist TreeView&#039;sse.&lt;br /&gt;
&lt;br /&gt;
TreeView&#039;sse tulevad andmed xml-failist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pooleli on veel kohvikute-poolne rakendus, kus omanik saab lisada ja kustutada kohvikuid, menüüsid ja toite-jooke, lisada teadaandeid.&lt;br /&gt;
&lt;br /&gt;
Pooleli on veel admini-rakendus, kus admin saab kasutajale määrata rolli, mis annab õigused kohviku-rakendusse sisse logida.&lt;br /&gt;
===4. juuni===&lt;br /&gt;
Valmis sai Kohvikute omanikele mõeldud klientrakendus.&lt;br /&gt;
Tehtud ASP.NET&#039;i veebirakendusena.&lt;br /&gt;
Seal on sisselogimine, registreerumine ja adminile kirja saatmine kohvikuomaniku õiguste saamiseks.&lt;br /&gt;
Peale sisselogimist saab &lt;br /&gt;
*lisada ja kustutada kohvikut&lt;br /&gt;
*lisada kohvikule lahtiolekuaegu nädalapäevade kaupa ja neid kustutada&lt;br /&gt;
*lisada kohvikule teadaandeid ja neid kustutada&lt;br /&gt;
*lisada kohvikule menüüsid ja neid kustutada: menüül on nimetus, liik, nädalapäev,  lisamiskuupäev jne&lt;br /&gt;
*lisada menüüsse toite ja neid kustutada. Toitudel on nimetus, liik, hind, kas-sobib-taimetoitlasele, kogus grammides, suurus, lisamise kuupäev. Eraldi listides on kõikide kohvikute lisatud toidud ja selle kohviku lisatud toidud.&lt;br /&gt;
*jookidele on sama, va. taimetoidu asemel on alkohoolse joogi korral promillide suurus.&lt;br /&gt;
&lt;br /&gt;
Lisada saab tehtud textbokside kaudu, nimekirjadest valimine on tehtud dropdown-listidena.&lt;br /&gt;
Kuvamised on tehtud GridViewdena, mis saavad andmeid meetoditest, mitte otse andmebaasitabelist.&lt;br /&gt;
&lt;br /&gt;
===5. juuni===&lt;br /&gt;
Valmis sai Kohvikute administraatori  ASP.NET-veebirakendus.&lt;br /&gt;
Admin saab registreeruda ja sisse logida.&lt;br /&gt;
Kui admin on sisse loginud, saab ta vaadata statistikat. Statistika-tabeleid on eraldi selle kohta, kui palju on mingit meetodit kasutatud ja selle kohta,kes millal mingit meetodit kasutas.&lt;br /&gt;
Sisseloginuna saab vaadata saabunud taotlusi ja nende järgi kasutajatele rolle määrata.&lt;br /&gt;
&lt;br /&gt;
Tabelid saavad andmeid otse andmebaasist, GridView&#039;dena, neid saab sorteerida tulpade&lt;br /&gt;
pealkirjadel klikkides.&lt;/div&gt;</summary>
		<author><name>Mtoompuu</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Meeskond_%22H2%22&amp;diff=33769</id>
		<title>Meeskond &quot;H2&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Meeskond_%22H2%22&amp;diff=33769"/>
		<updated>2011-06-05T21:58:11Z</updated>

		<summary type="html">&lt;p&gt;Mtoompuu: /* 4. juuni */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Kohviku menüüsüsteem==&lt;br /&gt;
===Projekt===&lt;br /&gt;
Kohvikute (esialgu ainult IT-Kohviku) menüüsüsteem, mis on jälgitav mobiilseadmetelt. Lisaväärtusena võimaldab anda pakutavale hinnanguid, otsuse langetamise hõlbustamiseks kommentaar:(see viimane funktsioon kipub vist &amp;quot;veebirakenduseks&amp;quot; muutuma)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Sihtplatvormid:&lt;br /&gt;
Windows Mobile, iOS, Android(kui leiame vabatahtlikud testijad)&lt;br /&gt;
&lt;br /&gt;
===Taustinfo===&lt;br /&gt;
Praegune IT-Kohviku menüü on käsitsi täidetav valge tahvel. Projekti eesmärgiks on parendada IT-Kohviku menüüsüsteemi ja teha see veebi kaudu kättesaadavaks, nii, et menüüsse saab lisada ka karniiri valiku. Standardmenüü puhul saab menüüs olla ka illustreeriv foto. Hetkemenüü ning hinnad ja lahtioleku ajad on samuti jälgitavad võrguühendust eviva mobiilseadme ekraanilt, hõlbustades sellega valikute tegemist.&lt;br /&gt;
&lt;br /&gt;
===Liikmed===&lt;br /&gt;
* Mailis Toompuu&lt;br /&gt;
* Henri Kroosmann&lt;br /&gt;
* Heiki Tamm&lt;br /&gt;
&lt;br /&gt;
==Sisu==&lt;br /&gt;
&lt;br /&gt;
===XML Data===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;menu&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name1&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;0&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name1&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item1&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item2&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item3&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;0&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;0&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount1&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;0&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;0&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot1&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name2&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;255&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name2&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item4&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item5&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item6&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;255&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;255&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount2&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;255&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;255&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot2&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name3&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;1&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name3&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item7&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item8&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item9&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;1&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;1&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount3&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;1&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;1&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot3&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
&amp;lt;/menu&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===XML Schema===&lt;br /&gt;
&lt;br /&gt;
Ülevaade Schema&#039;st. &amp;lt;br /&amp;gt;&lt;br /&gt;
[[File:XMLSchema_Capture_(optimized).png]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Ning sellele vastav kood.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xs:schema attributeFormDefault=&amp;quot;unqualified&amp;quot; elementFormDefault=&amp;quot;qualified&amp;quot; xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xs:element name=&amp;quot;menu&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;product&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;type&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;id&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;extras&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence minOccurs=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;item&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;price&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence minOccurs=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;int&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;frac&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element minOccurs=&amp;quot;0&amp;quot; name=&amp;quot;discount&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;vote&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;pos&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;neg&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;screenshot&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===XML Style===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;html&amp;gt;&lt;br /&gt;
      &amp;lt;head&amp;gt;&lt;br /&gt;
        &amp;lt;style type=&amp;quot;text/css&amp;quot;&amp;gt;&lt;br /&gt;
          html,body{margin:0;padding:0;font-family:Helvetica,Arial,sans-serif;font-size:14px;line-height:19px;color:#2c2c2c;}&lt;br /&gt;
          h1{margin:0;padding:25px 0 0;font-size:22px;line-height:25px;text-align:center;}&lt;br /&gt;
          h2{margin:0;padding:5px;font-size:16px;line-height:21px}&lt;br /&gt;
          span.discount{padding:0 0 0 5px;color:red;}&lt;br /&gt;
          table{margin:20px auto;padding:0;}&lt;br /&gt;
          th,td{padding:5px;border:1px solid #2c2c2c;vertical-align:top;text-align:left}&lt;br /&gt;
          th{font-weight:bold;background-color:#eee;}&lt;br /&gt;
          ul{margin:0;padding:0;list-style-type:none;}&lt;br /&gt;
        &amp;lt;/style&amp;gt;&lt;br /&gt;
      &amp;lt;/head&amp;gt;&lt;br /&gt;
      &amp;lt;body&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;Menüü&amp;lt;/h1&amp;gt;&lt;br /&gt;
        &amp;lt;table width=&amp;quot;800&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;200&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;100&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col witdh=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;150&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;tr&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Nimetus&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Lisandid&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Tüüp&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Hind&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Hinne / Hindajaid&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Pilt&amp;lt;/th&amp;gt;&lt;br /&gt;
          &amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
          &amp;lt;xsl:for-each select=&amp;quot;menu/product&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:sort select=&amp;quot;type/id&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:sort select=&amp;quot;name&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;th&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;name&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/th&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;extras/node()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;ul&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:for-each select=&amp;quot;extras/item&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;li&amp;gt;&lt;br /&gt;
                          &amp;lt;xsl:value-of select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;/li&amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
                    &amp;lt;/ul&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;td&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;type/name&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;price/node()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    €&amp;lt;xsl:value-of select=&amp;quot;price/int&amp;quot;/&amp;gt;.&amp;lt;xsl:value-of select=&amp;quot;price/frac&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:if test=&amp;quot;price/discount/text()&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;span class=&amp;quot;discount&amp;quot;&amp;gt;&lt;br /&gt;
                        (-&amp;lt;xsl:value-of select=&amp;quot;price/discount&amp;quot;/&amp;gt;%)&lt;br /&gt;
                      &amp;lt;/span&amp;gt;&lt;br /&gt;
                    &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:variable name=&amp;quot;p&amp;quot; select=&amp;quot;vote/pos&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:variable name=&amp;quot;n&amp;quot; select=&amp;quot;vote/neg&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;td&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$p - $n&amp;quot;/&amp;gt; / &amp;lt;xsl:value-of select=&amp;quot;$p + $n&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;screenshot/text()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;img src=&amp;quot;{screenshot}&amp;quot; alt=&amp;quot;&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;img src=&amp;quot;screenshots/default.png&amp;quot; alt=&amp;quot;No image&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
      &amp;lt;/body&amp;gt;&lt;br /&gt;
    &amp;lt;/html&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
Sisu ja stiilifaili koostöö http://henri.kroosmann.ee/kool/xml/index.xml &amp;lt;!--[http://henri.kroosmann.ee/kool/xml/index.xml]--&amp;gt;&lt;br /&gt;
==VEEBITEENUSED==&lt;br /&gt;
&lt;br /&gt;
===8. aprill===&lt;br /&gt;
Otsustame teha teenused kõikide kohvikute menüüde kohta.&lt;br /&gt;
&lt;br /&gt;
===11.-12. aprill===&lt;br /&gt;
Henri koostab tabelite loogika&lt;br /&gt;
&lt;br /&gt;
===13. aprill===&lt;br /&gt;
Mailis otsustab veebiteenused teha asmx-is [webmethod]-itega&lt;br /&gt;
===14. aprill===&lt;br /&gt;
Mailis hakkab veebiteenuseid tegema&lt;br /&gt;
===17. aprill===&lt;br /&gt;
Veebiteenused on valmis:&lt;br /&gt;
&lt;br /&gt;
*AnnaJoogiliikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaJoogitabelirida_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*AnnaJookideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaK6igiKohvikuteAndmeteNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyyIDed_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyyRida_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyydeNimekiri_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaMenyyLiikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaMenyydeNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaPromillideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToiduliikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToitudeNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToitutabelirida_toiduIDjargi &lt;br /&gt;
&lt;br /&gt;
*AnnaYheKohvikuAndmed_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*KustutaJookMenyyst &lt;br /&gt;
&lt;br /&gt;
*KustutaMenyy &lt;br /&gt;
&lt;br /&gt;
*KustutaKohvik &lt;br /&gt;
&lt;br /&gt;
*KustutaToitMenyyst &lt;br /&gt;
&lt;br /&gt;
*KysiYheKohvikuYheMenyyToitudeIDeed_menyyIDjargi &lt;br /&gt;
&lt;br /&gt;
*LisaJoogiLiik &lt;br /&gt;
&lt;br /&gt;
*LisaMenyyLiik &lt;br /&gt;
&lt;br /&gt;
*LisaPromill &lt;br /&gt;
&lt;br /&gt;
*LisaToiduLiik &lt;br /&gt;
&lt;br /&gt;
*SecurityAuthenticateUser &lt;br /&gt;
&lt;br /&gt;
*TOITJOOKmenyysRida_menyyIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedJoogileMenyys &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedKohvikule &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedToiduleMenyys &lt;br /&gt;
&lt;br /&gt;
*annaJoogiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiKIRJELDUS_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiKOMM_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiID_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiNIMI_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKasOnTaimeT_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKasutajaNIMI_Guidjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuLahtiolekuAjad_kohvikuIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuTeated &lt;br /&gt;
&lt;br /&gt;
*annaLinnaID_LinnaNimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaLinnaNIMI_LinnaIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaLinnad_maakonnaNIMEjargi &lt;br /&gt;
&lt;br /&gt;
*annaMaakonnaID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaMenyyLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaMenyyLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaPromill_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaPromilliID_promilliNrJargi &lt;br /&gt;
&lt;br /&gt;
*annaPromilliNR_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduKIRJELDUS_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduKOMMENTAAR_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiNIMETUS_toiduIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaYheKohvikuMenyyd_kohvikuNIMEjargi &lt;br /&gt;
&lt;br /&gt;
*autendiKasutajaParooliJargi &lt;br /&gt;
&lt;br /&gt;
*k6igiKohvikuteMenyyd &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusJoogiKohta &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusKohvikuKohta &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusToiduKohta &lt;br /&gt;
&lt;br /&gt;
*lisaJookMenyysse &lt;br /&gt;
&lt;br /&gt;
*lisaToitMenyysse &lt;br /&gt;
&lt;br /&gt;
*lisaUusJook &lt;br /&gt;
&lt;br /&gt;
*lisaUusKohvik &lt;br /&gt;
&lt;br /&gt;
*lisaUusLahtiolekuAeg &lt;br /&gt;
&lt;br /&gt;
*lisaUusMenyy &lt;br /&gt;
&lt;br /&gt;
*lisaUusTeadaanne &lt;br /&gt;
&lt;br /&gt;
*lisaUusToit &lt;br /&gt;
&lt;br /&gt;
*nadalapaevaID_paevaNimetuseJargi &lt;br /&gt;
&lt;br /&gt;
*nadalapaevaNIMETUS_paevaIDjargi&lt;br /&gt;
&lt;br /&gt;
*Registreeru&lt;br /&gt;
&lt;br /&gt;
*LogiSisseTavakasutajana&lt;br /&gt;
&lt;br /&gt;
*LogiSisseKohvikuna&lt;br /&gt;
&lt;br /&gt;
===22.aprill===&lt;br /&gt;
Toimus koosolek&lt;br /&gt;
*Henri lubas meetodite turvamise teha.&lt;br /&gt;
*Heiki lubas statistika teha meetodite kohta.&lt;br /&gt;
&lt;br /&gt;
===Allikfail===&lt;br /&gt;
Allikfail: http://www.p2ike.com/CSharp/KohvikudVeebiteenus.rar&lt;br /&gt;
&lt;br /&gt;
Meetod &#039;k6igiKohvikuteMenyyd&#039; kuvab sellise xml struktuuri: http://www.p2ike.com/CSharp/k6igiKohvikuteMenyyd.xml&lt;br /&gt;
&lt;br /&gt;
Toidud ja joogid sorteeritakse liikide kaupa.&lt;br /&gt;
&lt;br /&gt;
===Andmetabelid===&lt;br /&gt;
[[File:andmetabelid.jpg|777px|thumb|left|andmemudel]]&lt;br /&gt;
===Statistika===&lt;br /&gt;
 using System;&lt;br /&gt;
using System.Web.Services;&lt;br /&gt;
using System.Web.Services.Protocols;&lt;br /&gt;
using System.IO;&lt;br /&gt;
using System.Net;&lt;br /&gt;
 &lt;br /&gt;
// Define a SOAP Extension that traces the SOAP request and SOAP&lt;br /&gt;
// response for the XML Web service method the SOAP extension is&lt;br /&gt;
// applied to. &lt;br /&gt;
 &lt;br /&gt;
namespace WebASPKohvikud&lt;br /&gt;
{&lt;br /&gt;
    public class TraceExtension : SoapExtension&lt;br /&gt;
    {&lt;br /&gt;
        Stream oldStream;&lt;br /&gt;
        Stream newStream;&lt;br /&gt;
        string filename;&lt;br /&gt;
 &lt;br /&gt;
        // Save the Stream representing the SOAP request or SOAP response into&lt;br /&gt;
        // a local memory buffer.&lt;br /&gt;
        public override Stream ChainStream(Stream stream)&lt;br /&gt;
        {&lt;br /&gt;
            oldStream = stream;&lt;br /&gt;
            newStream = new MemoryStream();&lt;br /&gt;
            return newStream;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        // When the SOAP extension is accessed for the first time, the XML Web&lt;br /&gt;
        // service method it is applied to is accessed to store the file&lt;br /&gt;
        // name passed in, using the corresponding SoapExtensionAttribute.	&lt;br /&gt;
        public override object GetInitializer(LogicalMethodInfo methodInfo, SoapExtensionAttribute attribute)&lt;br /&gt;
        {&lt;br /&gt;
            return ((TraceExtensionAttribute)attribute).Filename;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        // The SOAP extension was configured to run using a configuration file&lt;br /&gt;
        // instead of an attribute applied to a specific XML Web service&lt;br /&gt;
        // method.&lt;br /&gt;
        public override object GetInitializer(Type WebServiceType)&lt;br /&gt;
        {&lt;br /&gt;
            // Return a file name to log the trace information to, based on the&lt;br /&gt;
            // type.&lt;br /&gt;
            return &amp;quot;C:\\&amp;quot; + WebServiceType.FullName + &amp;quot;.log&amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        // Receive the file name stored by GetInitializer and store it in a&lt;br /&gt;
        // member variable for this specific instance.&lt;br /&gt;
        public override void Initialize(object initializer)&lt;br /&gt;
        {&lt;br /&gt;
            filename = (string)initializer;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        //  If the SoapMessageStage is such that the SoapRequest or&lt;br /&gt;
        //  SoapResponse is still in the SOAP format to be sent or received,&lt;br /&gt;
        //  save it out to a file.&lt;br /&gt;
        public override void ProcessMessage(SoapMessage message)&lt;br /&gt;
        {&lt;br /&gt;
            switch (message.Stage)&lt;br /&gt;
            {&lt;br /&gt;
                case SoapMessageStage.BeforeSerialize:&lt;br /&gt;
                    break;&lt;br /&gt;
                case SoapMessageStage.AfterSerialize:&lt;br /&gt;
                    WriteOutput(message);&lt;br /&gt;
                    break;&lt;br /&gt;
                case SoapMessageStage.BeforeDeserialize:&lt;br /&gt;
                    WriteInput(message);&lt;br /&gt;
                    break;&lt;br /&gt;
                case SoapMessageStage.AfterDeserialize:&lt;br /&gt;
                    break;&lt;br /&gt;
                default:&lt;br /&gt;
                    throw new Exception(&amp;quot;invalid stage&amp;quot;);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        public void WriteOutput(SoapMessage message)&lt;br /&gt;
        {&lt;br /&gt;
            newStream.Position = 0;&lt;br /&gt;
            FileStream fs = new FileStream(filename, FileMode.Append,&lt;br /&gt;
                FileAccess.Write);&lt;br /&gt;
            StreamWriter w = new StreamWriter(fs);&lt;br /&gt;
 &lt;br /&gt;
            string soapString = (message is SoapServerMessage) ? &amp;quot;SoapResponse&amp;quot; : &amp;quot;SoapRequest&amp;quot;;&lt;br /&gt;
            w.WriteLine(&amp;quot;-----&amp;quot; + soapString + &amp;quot; at &amp;quot; + DateTime.Now);&lt;br /&gt;
            w.Flush();&lt;br /&gt;
            Copy(newStream, fs);&lt;br /&gt;
            w.Close();&lt;br /&gt;
            newStream.Position = 0;&lt;br /&gt;
            Copy(newStream, oldStream);&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        public void WriteInput(SoapMessage message)&lt;br /&gt;
        {&lt;br /&gt;
            Copy(oldStream, newStream);&lt;br /&gt;
            FileStream fs = new FileStream(filename, FileMode.Append,&lt;br /&gt;
                FileAccess.Write);&lt;br /&gt;
            StreamWriter w = new StreamWriter(fs);&lt;br /&gt;
 &lt;br /&gt;
            string soapString = (message is SoapServerMessage) ?&lt;br /&gt;
                &amp;quot;SoapRequest&amp;quot; : &amp;quot;SoapResponse&amp;quot;;&lt;br /&gt;
            w.WriteLine(&amp;quot;-----&amp;quot; + soapString +&lt;br /&gt;
                &amp;quot; at &amp;quot; + DateTime.Now);&lt;br /&gt;
            w.Flush();&lt;br /&gt;
            newStream.Position = 0;&lt;br /&gt;
            Copy(newStream, fs);&lt;br /&gt;
            w.Close();&lt;br /&gt;
            newStream.Position = 0;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        void Copy(Stream from, Stream to)&lt;br /&gt;
        {&lt;br /&gt;
            TextReader reader = new StreamReader(from);&lt;br /&gt;
            TextWriter writer = new StreamWriter(to);&lt;br /&gt;
            writer.WriteLine(reader.ReadToEnd());&lt;br /&gt;
            writer.Flush();&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    // Create a SoapExtensionAttribute for the SOAP Extension that can be&lt;br /&gt;
    // applied to an XML Web service method.&lt;br /&gt;
    [AttributeUsage(AttributeTargets.Method)]&lt;br /&gt;
    public class TraceExtensionAttribute : SoapExtensionAttribute&lt;br /&gt;
    {&lt;br /&gt;
 &lt;br /&gt;
        private string filename = @&amp;quot;C:\Users\Heiki Tamm\Documents\Õppematerjalid_2011\WebASPKohvikud\WebASPKohvikud\SoapLog.txt&amp;quot;;&lt;br /&gt;
        private int priority;&lt;br /&gt;
 &lt;br /&gt;
        public override Type ExtensionType&lt;br /&gt;
        {&lt;br /&gt;
            get { return typeof(TraceExtension); }&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        public override int Priority&lt;br /&gt;
        {&lt;br /&gt;
            get { return priority; }&lt;br /&gt;
            set { priority = value; }&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        public string Filename&lt;br /&gt;
        {&lt;br /&gt;
            get&lt;br /&gt;
            {&lt;br /&gt;
                return filename;&lt;br /&gt;
            }&lt;br /&gt;
            set&lt;br /&gt;
            {&lt;br /&gt;
                filename = value;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
// todo: &lt;br /&gt;
// from each soap header record query content &lt;br /&gt;
// (containing client, date, time, query ) into a DB&lt;br /&gt;
// for later reference for conducting any kind of &lt;br /&gt;
// applicable statistics and then generate stats :D !&lt;br /&gt;
// Proovin selliselt, et on lihtne statistika tabel:&lt;br /&gt;
// 1) meetod // välja kutsutava meetodi nimi&lt;br /&gt;
// 2) kuupäev // timestamp&lt;br /&gt;
// 3) callide arv // meetodi väljakutsimiste hulk&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==KLIENTRAKENDUS==&lt;br /&gt;
&lt;br /&gt;
===23. mai===&lt;br /&gt;
Mailis tegi kohvikute kuvamise ASP.NET rakenduse.&lt;br /&gt;
Kohvikud kuvatakse TreeView&#039;s &lt;br /&gt;
menüüde ja andmetega ning arvamustega kohvikute ja toitude ja jookide kohta.&lt;br /&gt;
&lt;br /&gt;
Samal lehel on kohvikuhuvilistele registreerimisvõimalus&lt;br /&gt;
ja sisselogimine.&lt;br /&gt;
&lt;br /&gt;
Kui on sisselogitud, saab lisada arvamusi.&lt;br /&gt;
Arvamuste lisamine on Ajax Extended Toolkiti controli&#039;ga &#039;Allways Visible ...&#039; tehtud, &lt;br /&gt;
&lt;br /&gt;
nii et mööda pikka TreeViewd alla kerides saab &lt;br /&gt;
lisada arvamust ilma ülesserva tagasi minemata.&lt;br /&gt;
&lt;br /&gt;
Arvamused ilmuvad kohe peale lisamist TreeView&#039;sse.&lt;br /&gt;
&lt;br /&gt;
TreeView&#039;sse tulevad andmed xml-failist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pooleli on veel kohvikute-poolne rakendus, kus omanik saab lisada ja kustutada kohvikuid, menüüsid ja toite-jooke, lisada teadaandeid.&lt;br /&gt;
&lt;br /&gt;
Pooleli on veel admini-rakendus, kus admin saab kasutajale määrata rolli, mis annab õigused kohviku-rakendusse sisse logida.&lt;br /&gt;
===4. juuni===&lt;br /&gt;
Valmis sai Kohvikute omanikele mõeldud klientrakendus.&lt;br /&gt;
Tehtud ASP.NET&#039;i veebirakendusena.&lt;br /&gt;
Seal on sisselogimine, registreerumine ja adminile kirja saatmine kohvikuomaniku õiguste saamiseks.&lt;br /&gt;
Peale sisselogimist saab &lt;br /&gt;
*lisada ja kustutada kohvikut&lt;br /&gt;
*lisada kohvikule lahtiolekuaegu nädalapäevade kaupa ja neid kustutada&lt;br /&gt;
*lisada kohvikule teadaandeid ja neid kustutada&lt;br /&gt;
*lisada kohvikule menüüsid ja neid kustutada: menüül on nimetus, liik, nädalapäev,  lisamiskuupäev jne&lt;br /&gt;
*lisada menüüsse toite ja neid kustutada. &lt;br /&gt;
 Toitudel on nimetus, liik, hind, kas-sobib-taimetoitlasele, kogus grammides, suurus, lisamise kuupäev. Eraldi listides on kõikide kohvikute lisatud toidud ja selle kohviku lisatud toidud.&lt;br /&gt;
*jookidele on sama, va. taimetoidu asemel on alkohoolse joogi korral promillide suurus.&lt;br /&gt;
&lt;br /&gt;
Lisada saab tehtud textbokside kaudu, nimekirjadest valimine on tehtud dropdown-listidena.&lt;br /&gt;
Kuvamised on tehtud GridViewdena, mis saavad andmeid meetoditest, mitte otse andmebaasitabelist.&lt;br /&gt;
&lt;br /&gt;
===5. juuni===&lt;br /&gt;
Valmis sai Kohvikute administraatori  ASP.NET-veebirakendus.&lt;br /&gt;
Admin saab registreeruda ja sisse logida.&lt;br /&gt;
Kui admin on sisse loginud, saab ta vaadata statistikat. Statistika-tabeleid on eraldi selle kohta, kui palju on mingit meetodit kasutatud ja selle kohta,kes millal mingit meetodit kasutas.&lt;br /&gt;
Sisseloginuna saab vaadata saabunud taotlusi ja nende järgi kasutajatele rolle määrata.&lt;br /&gt;
&lt;br /&gt;
Tabelid saavad andmeid otse andmebaasist, GridView&#039;dena, neid saab sorteerida tulpade&lt;br /&gt;
pealkirjadel klikkides.&lt;/div&gt;</summary>
		<author><name>Mtoompuu</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Meeskond_%22H2%22&amp;diff=33768</id>
		<title>Meeskond &quot;H2&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Meeskond_%22H2%22&amp;diff=33768"/>
		<updated>2011-06-05T21:57:29Z</updated>

		<summary type="html">&lt;p&gt;Mtoompuu: /* 4. juuni */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Kohviku menüüsüsteem==&lt;br /&gt;
===Projekt===&lt;br /&gt;
Kohvikute (esialgu ainult IT-Kohviku) menüüsüsteem, mis on jälgitav mobiilseadmetelt. Lisaväärtusena võimaldab anda pakutavale hinnanguid, otsuse langetamise hõlbustamiseks kommentaar:(see viimane funktsioon kipub vist &amp;quot;veebirakenduseks&amp;quot; muutuma)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Sihtplatvormid:&lt;br /&gt;
Windows Mobile, iOS, Android(kui leiame vabatahtlikud testijad)&lt;br /&gt;
&lt;br /&gt;
===Taustinfo===&lt;br /&gt;
Praegune IT-Kohviku menüü on käsitsi täidetav valge tahvel. Projekti eesmärgiks on parendada IT-Kohviku menüüsüsteemi ja teha see veebi kaudu kättesaadavaks, nii, et menüüsse saab lisada ka karniiri valiku. Standardmenüü puhul saab menüüs olla ka illustreeriv foto. Hetkemenüü ning hinnad ja lahtioleku ajad on samuti jälgitavad võrguühendust eviva mobiilseadme ekraanilt, hõlbustades sellega valikute tegemist.&lt;br /&gt;
&lt;br /&gt;
===Liikmed===&lt;br /&gt;
* Mailis Toompuu&lt;br /&gt;
* Henri Kroosmann&lt;br /&gt;
* Heiki Tamm&lt;br /&gt;
&lt;br /&gt;
==Sisu==&lt;br /&gt;
&lt;br /&gt;
===XML Data===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;menu&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name1&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;0&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name1&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item1&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item2&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item3&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;0&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;0&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount1&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;0&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;0&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot1&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name2&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;255&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name2&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item4&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item5&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item6&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;255&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;255&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount2&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;255&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;255&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot2&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name3&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;1&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name3&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item7&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item8&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item9&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;1&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;1&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount3&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;1&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;1&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot3&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
&amp;lt;/menu&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===XML Schema===&lt;br /&gt;
&lt;br /&gt;
Ülevaade Schema&#039;st. &amp;lt;br /&amp;gt;&lt;br /&gt;
[[File:XMLSchema_Capture_(optimized).png]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Ning sellele vastav kood.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xs:schema attributeFormDefault=&amp;quot;unqualified&amp;quot; elementFormDefault=&amp;quot;qualified&amp;quot; xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xs:element name=&amp;quot;menu&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;product&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;type&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;id&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;extras&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence minOccurs=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;item&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;price&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence minOccurs=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;int&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;frac&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element minOccurs=&amp;quot;0&amp;quot; name=&amp;quot;discount&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;vote&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;pos&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;neg&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;screenshot&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===XML Style===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;html&amp;gt;&lt;br /&gt;
      &amp;lt;head&amp;gt;&lt;br /&gt;
        &amp;lt;style type=&amp;quot;text/css&amp;quot;&amp;gt;&lt;br /&gt;
          html,body{margin:0;padding:0;font-family:Helvetica,Arial,sans-serif;font-size:14px;line-height:19px;color:#2c2c2c;}&lt;br /&gt;
          h1{margin:0;padding:25px 0 0;font-size:22px;line-height:25px;text-align:center;}&lt;br /&gt;
          h2{margin:0;padding:5px;font-size:16px;line-height:21px}&lt;br /&gt;
          span.discount{padding:0 0 0 5px;color:red;}&lt;br /&gt;
          table{margin:20px auto;padding:0;}&lt;br /&gt;
          th,td{padding:5px;border:1px solid #2c2c2c;vertical-align:top;text-align:left}&lt;br /&gt;
          th{font-weight:bold;background-color:#eee;}&lt;br /&gt;
          ul{margin:0;padding:0;list-style-type:none;}&lt;br /&gt;
        &amp;lt;/style&amp;gt;&lt;br /&gt;
      &amp;lt;/head&amp;gt;&lt;br /&gt;
      &amp;lt;body&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;Menüü&amp;lt;/h1&amp;gt;&lt;br /&gt;
        &amp;lt;table width=&amp;quot;800&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;200&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;100&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col witdh=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;150&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;tr&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Nimetus&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Lisandid&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Tüüp&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Hind&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Hinne / Hindajaid&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Pilt&amp;lt;/th&amp;gt;&lt;br /&gt;
          &amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
          &amp;lt;xsl:for-each select=&amp;quot;menu/product&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:sort select=&amp;quot;type/id&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:sort select=&amp;quot;name&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;th&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;name&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/th&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;extras/node()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;ul&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:for-each select=&amp;quot;extras/item&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;li&amp;gt;&lt;br /&gt;
                          &amp;lt;xsl:value-of select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;/li&amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
                    &amp;lt;/ul&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;td&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;type/name&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;price/node()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    €&amp;lt;xsl:value-of select=&amp;quot;price/int&amp;quot;/&amp;gt;.&amp;lt;xsl:value-of select=&amp;quot;price/frac&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:if test=&amp;quot;price/discount/text()&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;span class=&amp;quot;discount&amp;quot;&amp;gt;&lt;br /&gt;
                        (-&amp;lt;xsl:value-of select=&amp;quot;price/discount&amp;quot;/&amp;gt;%)&lt;br /&gt;
                      &amp;lt;/span&amp;gt;&lt;br /&gt;
                    &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:variable name=&amp;quot;p&amp;quot; select=&amp;quot;vote/pos&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:variable name=&amp;quot;n&amp;quot; select=&amp;quot;vote/neg&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;td&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$p - $n&amp;quot;/&amp;gt; / &amp;lt;xsl:value-of select=&amp;quot;$p + $n&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;screenshot/text()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;img src=&amp;quot;{screenshot}&amp;quot; alt=&amp;quot;&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;img src=&amp;quot;screenshots/default.png&amp;quot; alt=&amp;quot;No image&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
      &amp;lt;/body&amp;gt;&lt;br /&gt;
    &amp;lt;/html&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
Sisu ja stiilifaili koostöö http://henri.kroosmann.ee/kool/xml/index.xml &amp;lt;!--[http://henri.kroosmann.ee/kool/xml/index.xml]--&amp;gt;&lt;br /&gt;
==VEEBITEENUSED==&lt;br /&gt;
&lt;br /&gt;
===8. aprill===&lt;br /&gt;
Otsustame teha teenused kõikide kohvikute menüüde kohta.&lt;br /&gt;
&lt;br /&gt;
===11.-12. aprill===&lt;br /&gt;
Henri koostab tabelite loogika&lt;br /&gt;
&lt;br /&gt;
===13. aprill===&lt;br /&gt;
Mailis otsustab veebiteenused teha asmx-is [webmethod]-itega&lt;br /&gt;
===14. aprill===&lt;br /&gt;
Mailis hakkab veebiteenuseid tegema&lt;br /&gt;
===17. aprill===&lt;br /&gt;
Veebiteenused on valmis:&lt;br /&gt;
&lt;br /&gt;
*AnnaJoogiliikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaJoogitabelirida_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*AnnaJookideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaK6igiKohvikuteAndmeteNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyyIDed_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyyRida_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyydeNimekiri_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaMenyyLiikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaMenyydeNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaPromillideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToiduliikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToitudeNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToitutabelirida_toiduIDjargi &lt;br /&gt;
&lt;br /&gt;
*AnnaYheKohvikuAndmed_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*KustutaJookMenyyst &lt;br /&gt;
&lt;br /&gt;
*KustutaMenyy &lt;br /&gt;
&lt;br /&gt;
*KustutaKohvik &lt;br /&gt;
&lt;br /&gt;
*KustutaToitMenyyst &lt;br /&gt;
&lt;br /&gt;
*KysiYheKohvikuYheMenyyToitudeIDeed_menyyIDjargi &lt;br /&gt;
&lt;br /&gt;
*LisaJoogiLiik &lt;br /&gt;
&lt;br /&gt;
*LisaMenyyLiik &lt;br /&gt;
&lt;br /&gt;
*LisaPromill &lt;br /&gt;
&lt;br /&gt;
*LisaToiduLiik &lt;br /&gt;
&lt;br /&gt;
*SecurityAuthenticateUser &lt;br /&gt;
&lt;br /&gt;
*TOITJOOKmenyysRida_menyyIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedJoogileMenyys &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedKohvikule &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedToiduleMenyys &lt;br /&gt;
&lt;br /&gt;
*annaJoogiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiKIRJELDUS_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiKOMM_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiID_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiNIMI_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKasOnTaimeT_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKasutajaNIMI_Guidjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuLahtiolekuAjad_kohvikuIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuTeated &lt;br /&gt;
&lt;br /&gt;
*annaLinnaID_LinnaNimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaLinnaNIMI_LinnaIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaLinnad_maakonnaNIMEjargi &lt;br /&gt;
&lt;br /&gt;
*annaMaakonnaID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaMenyyLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaMenyyLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaPromill_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaPromilliID_promilliNrJargi &lt;br /&gt;
&lt;br /&gt;
*annaPromilliNR_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduKIRJELDUS_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduKOMMENTAAR_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiNIMETUS_toiduIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaYheKohvikuMenyyd_kohvikuNIMEjargi &lt;br /&gt;
&lt;br /&gt;
*autendiKasutajaParooliJargi &lt;br /&gt;
&lt;br /&gt;
*k6igiKohvikuteMenyyd &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusJoogiKohta &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusKohvikuKohta &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusToiduKohta &lt;br /&gt;
&lt;br /&gt;
*lisaJookMenyysse &lt;br /&gt;
&lt;br /&gt;
*lisaToitMenyysse &lt;br /&gt;
&lt;br /&gt;
*lisaUusJook &lt;br /&gt;
&lt;br /&gt;
*lisaUusKohvik &lt;br /&gt;
&lt;br /&gt;
*lisaUusLahtiolekuAeg &lt;br /&gt;
&lt;br /&gt;
*lisaUusMenyy &lt;br /&gt;
&lt;br /&gt;
*lisaUusTeadaanne &lt;br /&gt;
&lt;br /&gt;
*lisaUusToit &lt;br /&gt;
&lt;br /&gt;
*nadalapaevaID_paevaNimetuseJargi &lt;br /&gt;
&lt;br /&gt;
*nadalapaevaNIMETUS_paevaIDjargi&lt;br /&gt;
&lt;br /&gt;
*Registreeru&lt;br /&gt;
&lt;br /&gt;
*LogiSisseTavakasutajana&lt;br /&gt;
&lt;br /&gt;
*LogiSisseKohvikuna&lt;br /&gt;
&lt;br /&gt;
===22.aprill===&lt;br /&gt;
Toimus koosolek&lt;br /&gt;
*Henri lubas meetodite turvamise teha.&lt;br /&gt;
*Heiki lubas statistika teha meetodite kohta.&lt;br /&gt;
&lt;br /&gt;
===Allikfail===&lt;br /&gt;
Allikfail: http://www.p2ike.com/CSharp/KohvikudVeebiteenus.rar&lt;br /&gt;
&lt;br /&gt;
Meetod &#039;k6igiKohvikuteMenyyd&#039; kuvab sellise xml struktuuri: http://www.p2ike.com/CSharp/k6igiKohvikuteMenyyd.xml&lt;br /&gt;
&lt;br /&gt;
Toidud ja joogid sorteeritakse liikide kaupa.&lt;br /&gt;
&lt;br /&gt;
===Andmetabelid===&lt;br /&gt;
[[File:andmetabelid.jpg|777px|thumb|left|andmemudel]]&lt;br /&gt;
===Statistika===&lt;br /&gt;
 using System;&lt;br /&gt;
using System.Web.Services;&lt;br /&gt;
using System.Web.Services.Protocols;&lt;br /&gt;
using System.IO;&lt;br /&gt;
using System.Net;&lt;br /&gt;
 &lt;br /&gt;
// Define a SOAP Extension that traces the SOAP request and SOAP&lt;br /&gt;
// response for the XML Web service method the SOAP extension is&lt;br /&gt;
// applied to. &lt;br /&gt;
 &lt;br /&gt;
namespace WebASPKohvikud&lt;br /&gt;
{&lt;br /&gt;
    public class TraceExtension : SoapExtension&lt;br /&gt;
    {&lt;br /&gt;
        Stream oldStream;&lt;br /&gt;
        Stream newStream;&lt;br /&gt;
        string filename;&lt;br /&gt;
 &lt;br /&gt;
        // Save the Stream representing the SOAP request or SOAP response into&lt;br /&gt;
        // a local memory buffer.&lt;br /&gt;
        public override Stream ChainStream(Stream stream)&lt;br /&gt;
        {&lt;br /&gt;
            oldStream = stream;&lt;br /&gt;
            newStream = new MemoryStream();&lt;br /&gt;
            return newStream;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        // When the SOAP extension is accessed for the first time, the XML Web&lt;br /&gt;
        // service method it is applied to is accessed to store the file&lt;br /&gt;
        // name passed in, using the corresponding SoapExtensionAttribute.	&lt;br /&gt;
        public override object GetInitializer(LogicalMethodInfo methodInfo, SoapExtensionAttribute attribute)&lt;br /&gt;
        {&lt;br /&gt;
            return ((TraceExtensionAttribute)attribute).Filename;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        // The SOAP extension was configured to run using a configuration file&lt;br /&gt;
        // instead of an attribute applied to a specific XML Web service&lt;br /&gt;
        // method.&lt;br /&gt;
        public override object GetInitializer(Type WebServiceType)&lt;br /&gt;
        {&lt;br /&gt;
            // Return a file name to log the trace information to, based on the&lt;br /&gt;
            // type.&lt;br /&gt;
            return &amp;quot;C:\\&amp;quot; + WebServiceType.FullName + &amp;quot;.log&amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        // Receive the file name stored by GetInitializer and store it in a&lt;br /&gt;
        // member variable for this specific instance.&lt;br /&gt;
        public override void Initialize(object initializer)&lt;br /&gt;
        {&lt;br /&gt;
            filename = (string)initializer;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        //  If the SoapMessageStage is such that the SoapRequest or&lt;br /&gt;
        //  SoapResponse is still in the SOAP format to be sent or received,&lt;br /&gt;
        //  save it out to a file.&lt;br /&gt;
        public override void ProcessMessage(SoapMessage message)&lt;br /&gt;
        {&lt;br /&gt;
            switch (message.Stage)&lt;br /&gt;
            {&lt;br /&gt;
                case SoapMessageStage.BeforeSerialize:&lt;br /&gt;
                    break;&lt;br /&gt;
                case SoapMessageStage.AfterSerialize:&lt;br /&gt;
                    WriteOutput(message);&lt;br /&gt;
                    break;&lt;br /&gt;
                case SoapMessageStage.BeforeDeserialize:&lt;br /&gt;
                    WriteInput(message);&lt;br /&gt;
                    break;&lt;br /&gt;
                case SoapMessageStage.AfterDeserialize:&lt;br /&gt;
                    break;&lt;br /&gt;
                default:&lt;br /&gt;
                    throw new Exception(&amp;quot;invalid stage&amp;quot;);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        public void WriteOutput(SoapMessage message)&lt;br /&gt;
        {&lt;br /&gt;
            newStream.Position = 0;&lt;br /&gt;
            FileStream fs = new FileStream(filename, FileMode.Append,&lt;br /&gt;
                FileAccess.Write);&lt;br /&gt;
            StreamWriter w = new StreamWriter(fs);&lt;br /&gt;
 &lt;br /&gt;
            string soapString = (message is SoapServerMessage) ? &amp;quot;SoapResponse&amp;quot; : &amp;quot;SoapRequest&amp;quot;;&lt;br /&gt;
            w.WriteLine(&amp;quot;-----&amp;quot; + soapString + &amp;quot; at &amp;quot; + DateTime.Now);&lt;br /&gt;
            w.Flush();&lt;br /&gt;
            Copy(newStream, fs);&lt;br /&gt;
            w.Close();&lt;br /&gt;
            newStream.Position = 0;&lt;br /&gt;
            Copy(newStream, oldStream);&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        public void WriteInput(SoapMessage message)&lt;br /&gt;
        {&lt;br /&gt;
            Copy(oldStream, newStream);&lt;br /&gt;
            FileStream fs = new FileStream(filename, FileMode.Append,&lt;br /&gt;
                FileAccess.Write);&lt;br /&gt;
            StreamWriter w = new StreamWriter(fs);&lt;br /&gt;
 &lt;br /&gt;
            string soapString = (message is SoapServerMessage) ?&lt;br /&gt;
                &amp;quot;SoapRequest&amp;quot; : &amp;quot;SoapResponse&amp;quot;;&lt;br /&gt;
            w.WriteLine(&amp;quot;-----&amp;quot; + soapString +&lt;br /&gt;
                &amp;quot; at &amp;quot; + DateTime.Now);&lt;br /&gt;
            w.Flush();&lt;br /&gt;
            newStream.Position = 0;&lt;br /&gt;
            Copy(newStream, fs);&lt;br /&gt;
            w.Close();&lt;br /&gt;
            newStream.Position = 0;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        void Copy(Stream from, Stream to)&lt;br /&gt;
        {&lt;br /&gt;
            TextReader reader = new StreamReader(from);&lt;br /&gt;
            TextWriter writer = new StreamWriter(to);&lt;br /&gt;
            writer.WriteLine(reader.ReadToEnd());&lt;br /&gt;
            writer.Flush();&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    // Create a SoapExtensionAttribute for the SOAP Extension that can be&lt;br /&gt;
    // applied to an XML Web service method.&lt;br /&gt;
    [AttributeUsage(AttributeTargets.Method)]&lt;br /&gt;
    public class TraceExtensionAttribute : SoapExtensionAttribute&lt;br /&gt;
    {&lt;br /&gt;
 &lt;br /&gt;
        private string filename = @&amp;quot;C:\Users\Heiki Tamm\Documents\Õppematerjalid_2011\WebASPKohvikud\WebASPKohvikud\SoapLog.txt&amp;quot;;&lt;br /&gt;
        private int priority;&lt;br /&gt;
 &lt;br /&gt;
        public override Type ExtensionType&lt;br /&gt;
        {&lt;br /&gt;
            get { return typeof(TraceExtension); }&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        public override int Priority&lt;br /&gt;
        {&lt;br /&gt;
            get { return priority; }&lt;br /&gt;
            set { priority = value; }&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        public string Filename&lt;br /&gt;
        {&lt;br /&gt;
            get&lt;br /&gt;
            {&lt;br /&gt;
                return filename;&lt;br /&gt;
            }&lt;br /&gt;
            set&lt;br /&gt;
            {&lt;br /&gt;
                filename = value;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
// todo: &lt;br /&gt;
// from each soap header record query content &lt;br /&gt;
// (containing client, date, time, query ) into a DB&lt;br /&gt;
// for later reference for conducting any kind of &lt;br /&gt;
// applicable statistics and then generate stats :D !&lt;br /&gt;
// Proovin selliselt, et on lihtne statistika tabel:&lt;br /&gt;
// 1) meetod // välja kutsutava meetodi nimi&lt;br /&gt;
// 2) kuupäev // timestamp&lt;br /&gt;
// 3) callide arv // meetodi väljakutsimiste hulk&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==KLIENTRAKENDUS==&lt;br /&gt;
&lt;br /&gt;
===23. mai===&lt;br /&gt;
Mailis tegi kohvikute kuvamise ASP.NET rakenduse.&lt;br /&gt;
Kohvikud kuvatakse TreeView&#039;s &lt;br /&gt;
menüüde ja andmetega ning arvamustega kohvikute ja toitude ja jookide kohta.&lt;br /&gt;
&lt;br /&gt;
Samal lehel on kohvikuhuvilistele registreerimisvõimalus&lt;br /&gt;
ja sisselogimine.&lt;br /&gt;
&lt;br /&gt;
Kui on sisselogitud, saab lisada arvamusi.&lt;br /&gt;
Arvamuste lisamine on Ajax Extended Toolkiti controli&#039;ga &#039;Allways Visible ...&#039; tehtud, &lt;br /&gt;
&lt;br /&gt;
nii et mööda pikka TreeViewd alla kerides saab &lt;br /&gt;
lisada arvamust ilma ülesserva tagasi minemata.&lt;br /&gt;
&lt;br /&gt;
Arvamused ilmuvad kohe peale lisamist TreeView&#039;sse.&lt;br /&gt;
&lt;br /&gt;
TreeView&#039;sse tulevad andmed xml-failist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pooleli on veel kohvikute-poolne rakendus, kus omanik saab lisada ja kustutada kohvikuid, menüüsid ja toite-jooke, lisada teadaandeid.&lt;br /&gt;
&lt;br /&gt;
Pooleli on veel admini-rakendus, kus admin saab kasutajale määrata rolli, mis annab õigused kohviku-rakendusse sisse logida.&lt;br /&gt;
===4. juuni===&lt;br /&gt;
Valmis sai Kohvikute omanikele mõeldud klientrakendus.&lt;br /&gt;
Tehtud ASP.NET&#039;i veebirakendusena.&lt;br /&gt;
Seal on sisselogimine, registreerumine ja adminile kirja saatmine kohvikuomaniku õiguste saamiseks.&lt;br /&gt;
Peale sisselogimist saab &lt;br /&gt;
*lisada ja kustutada kohvikut&lt;br /&gt;
*lisada kohvikule lahtiolekuaegu nädalapäevade kaupa ja neid kustutada&lt;br /&gt;
*lisada kohvikule teadaandeid ja neid kustutada&lt;br /&gt;
*lisada kohvikule menüüsid ja neid kustutada: menüül on nimetus, liik, nädalapäev,  lisamiskuupäev jne&lt;br /&gt;
*lisada menüüsse toite ja neid kustutada. &lt;br /&gt;
 Toitudel on nimetus, liik, hind, kas-sobib-taimetoitlasele, kogus grammides, suurus,&lt;br /&gt;
 lisamise kuupäev. Eraldi listides on kõikide kohvikute lisatud toidud ja selle kohviku &lt;br /&gt;
 lisatud toidud.&lt;br /&gt;
*jookidele on sama, va. taimetoidu asemel on alkohoolse joogi korral promillide suurus.&lt;br /&gt;
&lt;br /&gt;
Lisada saab tehtud textbokside kaudu, nimekirjadest valimine on tehtud dropdown-listidena.&lt;br /&gt;
Kuvamised on tehtud GridViewdena, mis saavad andmeid meetoditest, mitte otse andmebaasitabelist.&lt;br /&gt;
&lt;br /&gt;
===5. juuni===&lt;br /&gt;
Valmis sai Kohvikute administraatori  ASP.NET-veebirakendus.&lt;br /&gt;
Admin saab registreeruda ja sisse logida.&lt;br /&gt;
Kui admin on sisse loginud, saab ta vaadata statistikat. Statistika-tabeleid on eraldi selle kohta, kui palju on mingit meetodit kasutatud ja selle kohta,kes millal mingit meetodit kasutas.&lt;br /&gt;
Sisseloginuna saab vaadata saabunud taotlusi ja nende järgi kasutajatele rolle määrata.&lt;br /&gt;
&lt;br /&gt;
Tabelid saavad andmeid otse andmebaasist, GridView&#039;dena, neid saab sorteerida tulpade&lt;br /&gt;
pealkirjadel klikkides.&lt;/div&gt;</summary>
		<author><name>Mtoompuu</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Meeskond_%22H2%22&amp;diff=33765</id>
		<title>Meeskond &quot;H2&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Meeskond_%22H2%22&amp;diff=33765"/>
		<updated>2011-06-05T21:53:54Z</updated>

		<summary type="html">&lt;p&gt;Mtoompuu: /* 5. juuni */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Kohviku menüüsüsteem==&lt;br /&gt;
===Projekt===&lt;br /&gt;
Kohvikute (esialgu ainult IT-Kohviku) menüüsüsteem, mis on jälgitav mobiilseadmetelt. Lisaväärtusena võimaldab anda pakutavale hinnanguid, otsuse langetamise hõlbustamiseks kommentaar:(see viimane funktsioon kipub vist &amp;quot;veebirakenduseks&amp;quot; muutuma)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Sihtplatvormid:&lt;br /&gt;
Windows Mobile, iOS, Android(kui leiame vabatahtlikud testijad)&lt;br /&gt;
&lt;br /&gt;
===Taustinfo===&lt;br /&gt;
Praegune IT-Kohviku menüü on käsitsi täidetav valge tahvel. Projekti eesmärgiks on parendada IT-Kohviku menüüsüsteemi ja teha see veebi kaudu kättesaadavaks, nii, et menüüsse saab lisada ka karniiri valiku. Standardmenüü puhul saab menüüs olla ka illustreeriv foto. Hetkemenüü ning hinnad ja lahtioleku ajad on samuti jälgitavad võrguühendust eviva mobiilseadme ekraanilt, hõlbustades sellega valikute tegemist.&lt;br /&gt;
&lt;br /&gt;
===Liikmed===&lt;br /&gt;
* Mailis Toompuu&lt;br /&gt;
* Henri Kroosmann&lt;br /&gt;
* Heiki Tamm&lt;br /&gt;
&lt;br /&gt;
==Sisu==&lt;br /&gt;
&lt;br /&gt;
===XML Data===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;menu&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name1&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;0&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name1&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item1&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item2&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item3&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;0&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;0&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount1&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;0&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;0&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot1&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name2&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;255&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name2&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item4&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item5&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item6&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;255&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;255&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount2&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;255&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;255&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot2&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name3&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;1&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name3&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item7&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item8&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item9&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;1&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;1&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount3&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;1&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;1&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot3&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
&amp;lt;/menu&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===XML Schema===&lt;br /&gt;
&lt;br /&gt;
Ülevaade Schema&#039;st. &amp;lt;br /&amp;gt;&lt;br /&gt;
[[File:XMLSchema_Capture_(optimized).png]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Ning sellele vastav kood.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xs:schema attributeFormDefault=&amp;quot;unqualified&amp;quot; elementFormDefault=&amp;quot;qualified&amp;quot; xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xs:element name=&amp;quot;menu&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;product&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;type&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;id&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;extras&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence minOccurs=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;item&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;price&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence minOccurs=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;int&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;frac&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element minOccurs=&amp;quot;0&amp;quot; name=&amp;quot;discount&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;vote&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;pos&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;neg&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;screenshot&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===XML Style===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;html&amp;gt;&lt;br /&gt;
      &amp;lt;head&amp;gt;&lt;br /&gt;
        &amp;lt;style type=&amp;quot;text/css&amp;quot;&amp;gt;&lt;br /&gt;
          html,body{margin:0;padding:0;font-family:Helvetica,Arial,sans-serif;font-size:14px;line-height:19px;color:#2c2c2c;}&lt;br /&gt;
          h1{margin:0;padding:25px 0 0;font-size:22px;line-height:25px;text-align:center;}&lt;br /&gt;
          h2{margin:0;padding:5px;font-size:16px;line-height:21px}&lt;br /&gt;
          span.discount{padding:0 0 0 5px;color:red;}&lt;br /&gt;
          table{margin:20px auto;padding:0;}&lt;br /&gt;
          th,td{padding:5px;border:1px solid #2c2c2c;vertical-align:top;text-align:left}&lt;br /&gt;
          th{font-weight:bold;background-color:#eee;}&lt;br /&gt;
          ul{margin:0;padding:0;list-style-type:none;}&lt;br /&gt;
        &amp;lt;/style&amp;gt;&lt;br /&gt;
      &amp;lt;/head&amp;gt;&lt;br /&gt;
      &amp;lt;body&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;Menüü&amp;lt;/h1&amp;gt;&lt;br /&gt;
        &amp;lt;table width=&amp;quot;800&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;200&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;100&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col witdh=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;150&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;tr&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Nimetus&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Lisandid&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Tüüp&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Hind&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Hinne / Hindajaid&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Pilt&amp;lt;/th&amp;gt;&lt;br /&gt;
          &amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
          &amp;lt;xsl:for-each select=&amp;quot;menu/product&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:sort select=&amp;quot;type/id&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:sort select=&amp;quot;name&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;th&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;name&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/th&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;extras/node()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;ul&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:for-each select=&amp;quot;extras/item&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;li&amp;gt;&lt;br /&gt;
                          &amp;lt;xsl:value-of select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;/li&amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
                    &amp;lt;/ul&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;td&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;type/name&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;price/node()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    €&amp;lt;xsl:value-of select=&amp;quot;price/int&amp;quot;/&amp;gt;.&amp;lt;xsl:value-of select=&amp;quot;price/frac&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:if test=&amp;quot;price/discount/text()&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;span class=&amp;quot;discount&amp;quot;&amp;gt;&lt;br /&gt;
                        (-&amp;lt;xsl:value-of select=&amp;quot;price/discount&amp;quot;/&amp;gt;%)&lt;br /&gt;
                      &amp;lt;/span&amp;gt;&lt;br /&gt;
                    &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:variable name=&amp;quot;p&amp;quot; select=&amp;quot;vote/pos&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:variable name=&amp;quot;n&amp;quot; select=&amp;quot;vote/neg&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;td&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$p - $n&amp;quot;/&amp;gt; / &amp;lt;xsl:value-of select=&amp;quot;$p + $n&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;screenshot/text()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;img src=&amp;quot;{screenshot}&amp;quot; alt=&amp;quot;&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;img src=&amp;quot;screenshots/default.png&amp;quot; alt=&amp;quot;No image&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
      &amp;lt;/body&amp;gt;&lt;br /&gt;
    &amp;lt;/html&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
Sisu ja stiilifaili koostöö http://henri.kroosmann.ee/kool/xml/index.xml &amp;lt;!--[http://henri.kroosmann.ee/kool/xml/index.xml]--&amp;gt;&lt;br /&gt;
==VEEBITEENUSED==&lt;br /&gt;
&lt;br /&gt;
===8. aprill===&lt;br /&gt;
Otsustame teha teenused kõikide kohvikute menüüde kohta.&lt;br /&gt;
&lt;br /&gt;
===11.-12. aprill===&lt;br /&gt;
Henri koostab tabelite loogika&lt;br /&gt;
&lt;br /&gt;
===13. aprill===&lt;br /&gt;
Mailis otsustab veebiteenused teha asmx-is [webmethod]-itega&lt;br /&gt;
===14. aprill===&lt;br /&gt;
Mailis hakkab veebiteenuseid tegema&lt;br /&gt;
===17. aprill===&lt;br /&gt;
Veebiteenused on valmis:&lt;br /&gt;
&lt;br /&gt;
*AnnaJoogiliikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaJoogitabelirida_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*AnnaJookideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaK6igiKohvikuteAndmeteNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyyIDed_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyyRida_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyydeNimekiri_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaMenyyLiikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaMenyydeNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaPromillideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToiduliikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToitudeNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToitutabelirida_toiduIDjargi &lt;br /&gt;
&lt;br /&gt;
*AnnaYheKohvikuAndmed_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*KustutaJookMenyyst &lt;br /&gt;
&lt;br /&gt;
*KustutaMenyy &lt;br /&gt;
&lt;br /&gt;
*KustutaKohvik &lt;br /&gt;
&lt;br /&gt;
*KustutaToitMenyyst &lt;br /&gt;
&lt;br /&gt;
*KysiYheKohvikuYheMenyyToitudeIDeed_menyyIDjargi &lt;br /&gt;
&lt;br /&gt;
*LisaJoogiLiik &lt;br /&gt;
&lt;br /&gt;
*LisaMenyyLiik &lt;br /&gt;
&lt;br /&gt;
*LisaPromill &lt;br /&gt;
&lt;br /&gt;
*LisaToiduLiik &lt;br /&gt;
&lt;br /&gt;
*SecurityAuthenticateUser &lt;br /&gt;
&lt;br /&gt;
*TOITJOOKmenyysRida_menyyIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedJoogileMenyys &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedKohvikule &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedToiduleMenyys &lt;br /&gt;
&lt;br /&gt;
*annaJoogiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiKIRJELDUS_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiKOMM_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiID_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiNIMI_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKasOnTaimeT_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKasutajaNIMI_Guidjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuLahtiolekuAjad_kohvikuIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuTeated &lt;br /&gt;
&lt;br /&gt;
*annaLinnaID_LinnaNimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaLinnaNIMI_LinnaIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaLinnad_maakonnaNIMEjargi &lt;br /&gt;
&lt;br /&gt;
*annaMaakonnaID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaMenyyLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaMenyyLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaPromill_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaPromilliID_promilliNrJargi &lt;br /&gt;
&lt;br /&gt;
*annaPromilliNR_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduKIRJELDUS_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduKOMMENTAAR_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiNIMETUS_toiduIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaYheKohvikuMenyyd_kohvikuNIMEjargi &lt;br /&gt;
&lt;br /&gt;
*autendiKasutajaParooliJargi &lt;br /&gt;
&lt;br /&gt;
*k6igiKohvikuteMenyyd &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusJoogiKohta &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusKohvikuKohta &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusToiduKohta &lt;br /&gt;
&lt;br /&gt;
*lisaJookMenyysse &lt;br /&gt;
&lt;br /&gt;
*lisaToitMenyysse &lt;br /&gt;
&lt;br /&gt;
*lisaUusJook &lt;br /&gt;
&lt;br /&gt;
*lisaUusKohvik &lt;br /&gt;
&lt;br /&gt;
*lisaUusLahtiolekuAeg &lt;br /&gt;
&lt;br /&gt;
*lisaUusMenyy &lt;br /&gt;
&lt;br /&gt;
*lisaUusTeadaanne &lt;br /&gt;
&lt;br /&gt;
*lisaUusToit &lt;br /&gt;
&lt;br /&gt;
*nadalapaevaID_paevaNimetuseJargi &lt;br /&gt;
&lt;br /&gt;
*nadalapaevaNIMETUS_paevaIDjargi&lt;br /&gt;
&lt;br /&gt;
*Registreeru&lt;br /&gt;
&lt;br /&gt;
*LogiSisseTavakasutajana&lt;br /&gt;
&lt;br /&gt;
*LogiSisseKohvikuna&lt;br /&gt;
&lt;br /&gt;
===22.aprill===&lt;br /&gt;
Toimus koosolek&lt;br /&gt;
*Henri lubas meetodite turvamise teha.&lt;br /&gt;
*Heiki lubas statistika teha meetodite kohta.&lt;br /&gt;
&lt;br /&gt;
===Allikfail===&lt;br /&gt;
Allikfail: http://www.p2ike.com/CSharp/KohvikudVeebiteenus.rar&lt;br /&gt;
&lt;br /&gt;
Meetod &#039;k6igiKohvikuteMenyyd&#039; kuvab sellise xml struktuuri: http://www.p2ike.com/CSharp/k6igiKohvikuteMenyyd.xml&lt;br /&gt;
&lt;br /&gt;
Toidud ja joogid sorteeritakse liikide kaupa.&lt;br /&gt;
&lt;br /&gt;
===Andmetabelid===&lt;br /&gt;
[[File:andmetabelid.jpg|777px|thumb|left|andmemudel]]&lt;br /&gt;
===Statistika===&lt;br /&gt;
 using System;&lt;br /&gt;
using System.Web.Services;&lt;br /&gt;
using System.Web.Services.Protocols;&lt;br /&gt;
using System.IO;&lt;br /&gt;
using System.Net;&lt;br /&gt;
 &lt;br /&gt;
// Define a SOAP Extension that traces the SOAP request and SOAP&lt;br /&gt;
// response for the XML Web service method the SOAP extension is&lt;br /&gt;
// applied to. &lt;br /&gt;
 &lt;br /&gt;
namespace WebASPKohvikud&lt;br /&gt;
{&lt;br /&gt;
    public class TraceExtension : SoapExtension&lt;br /&gt;
    {&lt;br /&gt;
        Stream oldStream;&lt;br /&gt;
        Stream newStream;&lt;br /&gt;
        string filename;&lt;br /&gt;
 &lt;br /&gt;
        // Save the Stream representing the SOAP request or SOAP response into&lt;br /&gt;
        // a local memory buffer.&lt;br /&gt;
        public override Stream ChainStream(Stream stream)&lt;br /&gt;
        {&lt;br /&gt;
            oldStream = stream;&lt;br /&gt;
            newStream = new MemoryStream();&lt;br /&gt;
            return newStream;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        // When the SOAP extension is accessed for the first time, the XML Web&lt;br /&gt;
        // service method it is applied to is accessed to store the file&lt;br /&gt;
        // name passed in, using the corresponding SoapExtensionAttribute.	&lt;br /&gt;
        public override object GetInitializer(LogicalMethodInfo methodInfo, SoapExtensionAttribute attribute)&lt;br /&gt;
        {&lt;br /&gt;
            return ((TraceExtensionAttribute)attribute).Filename;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        // The SOAP extension was configured to run using a configuration file&lt;br /&gt;
        // instead of an attribute applied to a specific XML Web service&lt;br /&gt;
        // method.&lt;br /&gt;
        public override object GetInitializer(Type WebServiceType)&lt;br /&gt;
        {&lt;br /&gt;
            // Return a file name to log the trace information to, based on the&lt;br /&gt;
            // type.&lt;br /&gt;
            return &amp;quot;C:\\&amp;quot; + WebServiceType.FullName + &amp;quot;.log&amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        // Receive the file name stored by GetInitializer and store it in a&lt;br /&gt;
        // member variable for this specific instance.&lt;br /&gt;
        public override void Initialize(object initializer)&lt;br /&gt;
        {&lt;br /&gt;
            filename = (string)initializer;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        //  If the SoapMessageStage is such that the SoapRequest or&lt;br /&gt;
        //  SoapResponse is still in the SOAP format to be sent or received,&lt;br /&gt;
        //  save it out to a file.&lt;br /&gt;
        public override void ProcessMessage(SoapMessage message)&lt;br /&gt;
        {&lt;br /&gt;
            switch (message.Stage)&lt;br /&gt;
            {&lt;br /&gt;
                case SoapMessageStage.BeforeSerialize:&lt;br /&gt;
                    break;&lt;br /&gt;
                case SoapMessageStage.AfterSerialize:&lt;br /&gt;
                    WriteOutput(message);&lt;br /&gt;
                    break;&lt;br /&gt;
                case SoapMessageStage.BeforeDeserialize:&lt;br /&gt;
                    WriteInput(message);&lt;br /&gt;
                    break;&lt;br /&gt;
                case SoapMessageStage.AfterDeserialize:&lt;br /&gt;
                    break;&lt;br /&gt;
                default:&lt;br /&gt;
                    throw new Exception(&amp;quot;invalid stage&amp;quot;);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        public void WriteOutput(SoapMessage message)&lt;br /&gt;
        {&lt;br /&gt;
            newStream.Position = 0;&lt;br /&gt;
            FileStream fs = new FileStream(filename, FileMode.Append,&lt;br /&gt;
                FileAccess.Write);&lt;br /&gt;
            StreamWriter w = new StreamWriter(fs);&lt;br /&gt;
 &lt;br /&gt;
            string soapString = (message is SoapServerMessage) ? &amp;quot;SoapResponse&amp;quot; : &amp;quot;SoapRequest&amp;quot;;&lt;br /&gt;
            w.WriteLine(&amp;quot;-----&amp;quot; + soapString + &amp;quot; at &amp;quot; + DateTime.Now);&lt;br /&gt;
            w.Flush();&lt;br /&gt;
            Copy(newStream, fs);&lt;br /&gt;
            w.Close();&lt;br /&gt;
            newStream.Position = 0;&lt;br /&gt;
            Copy(newStream, oldStream);&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        public void WriteInput(SoapMessage message)&lt;br /&gt;
        {&lt;br /&gt;
            Copy(oldStream, newStream);&lt;br /&gt;
            FileStream fs = new FileStream(filename, FileMode.Append,&lt;br /&gt;
                FileAccess.Write);&lt;br /&gt;
            StreamWriter w = new StreamWriter(fs);&lt;br /&gt;
 &lt;br /&gt;
            string soapString = (message is SoapServerMessage) ?&lt;br /&gt;
                &amp;quot;SoapRequest&amp;quot; : &amp;quot;SoapResponse&amp;quot;;&lt;br /&gt;
            w.WriteLine(&amp;quot;-----&amp;quot; + soapString +&lt;br /&gt;
                &amp;quot; at &amp;quot; + DateTime.Now);&lt;br /&gt;
            w.Flush();&lt;br /&gt;
            newStream.Position = 0;&lt;br /&gt;
            Copy(newStream, fs);&lt;br /&gt;
            w.Close();&lt;br /&gt;
            newStream.Position = 0;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        void Copy(Stream from, Stream to)&lt;br /&gt;
        {&lt;br /&gt;
            TextReader reader = new StreamReader(from);&lt;br /&gt;
            TextWriter writer = new StreamWriter(to);&lt;br /&gt;
            writer.WriteLine(reader.ReadToEnd());&lt;br /&gt;
            writer.Flush();&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    // Create a SoapExtensionAttribute for the SOAP Extension that can be&lt;br /&gt;
    // applied to an XML Web service method.&lt;br /&gt;
    [AttributeUsage(AttributeTargets.Method)]&lt;br /&gt;
    public class TraceExtensionAttribute : SoapExtensionAttribute&lt;br /&gt;
    {&lt;br /&gt;
 &lt;br /&gt;
        private string filename = @&amp;quot;C:\Users\Heiki Tamm\Documents\Õppematerjalid_2011\WebASPKohvikud\WebASPKohvikud\SoapLog.txt&amp;quot;;&lt;br /&gt;
        private int priority;&lt;br /&gt;
 &lt;br /&gt;
        public override Type ExtensionType&lt;br /&gt;
        {&lt;br /&gt;
            get { return typeof(TraceExtension); }&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        public override int Priority&lt;br /&gt;
        {&lt;br /&gt;
            get { return priority; }&lt;br /&gt;
            set { priority = value; }&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        public string Filename&lt;br /&gt;
        {&lt;br /&gt;
            get&lt;br /&gt;
            {&lt;br /&gt;
                return filename;&lt;br /&gt;
            }&lt;br /&gt;
            set&lt;br /&gt;
            {&lt;br /&gt;
                filename = value;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
// todo: &lt;br /&gt;
// from each soap header record query content &lt;br /&gt;
// (containing client, date, time, query ) into a DB&lt;br /&gt;
// for later reference for conducting any kind of &lt;br /&gt;
// applicable statistics and then generate stats :D !&lt;br /&gt;
// Proovin selliselt, et on lihtne statistika tabel:&lt;br /&gt;
// 1) meetod // välja kutsutava meetodi nimi&lt;br /&gt;
// 2) kuupäev // timestamp&lt;br /&gt;
// 3) callide arv // meetodi väljakutsimiste hulk&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==KLIENTRAKENDUS==&lt;br /&gt;
&lt;br /&gt;
===23. mai===&lt;br /&gt;
Mailis tegi kohvikute kuvamise ASP.NET rakenduse.&lt;br /&gt;
Kohvikud kuvatakse TreeView&#039;s &lt;br /&gt;
menüüde ja andmetega ning arvamustega kohvikute ja toitude ja jookide kohta.&lt;br /&gt;
&lt;br /&gt;
Samal lehel on kohvikuhuvilistele registreerimisvõimalus&lt;br /&gt;
ja sisselogimine.&lt;br /&gt;
&lt;br /&gt;
Kui on sisselogitud, saab lisada arvamusi.&lt;br /&gt;
Arvamuste lisamine on Ajax Extended Toolkiti controli&#039;ga &#039;Allways Visible ...&#039; tehtud, &lt;br /&gt;
&lt;br /&gt;
nii et mööda pikka TreeViewd alla kerides saab &lt;br /&gt;
lisada arvamust ilma ülesserva tagasi minemata.&lt;br /&gt;
&lt;br /&gt;
Arvamused ilmuvad kohe peale lisamist TreeView&#039;sse.&lt;br /&gt;
&lt;br /&gt;
TreeView&#039;sse tulevad andmed xml-failist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pooleli on veel kohvikute-poolne rakendus, kus omanik saab lisada ja kustutada kohvikuid, menüüsid ja toite-jooke, lisada teadaandeid.&lt;br /&gt;
&lt;br /&gt;
Pooleli on veel admini-rakendus, kus admin saab kasutajale määrata rolli, mis annab õigused kohviku-rakendusse sisse logida.&lt;br /&gt;
===4. juuni===&lt;br /&gt;
Valmis sai Kohvikute omanikele mõeldud klientrakendus.&lt;br /&gt;
Tehtud ASP.NET&#039;i veebirakendusena.&lt;br /&gt;
Seal on sisselogimine, registreerumine ja adminile kirja saatmine kohvikuomaniku õiguste saamiseks.&lt;br /&gt;
Peale sisselogimist saab &lt;br /&gt;
*lisada ja kustutada kohvikut&lt;br /&gt;
*lisada kohvikule lahtiolekuaegu nädalapäevade kaupa ja neid kustutada&lt;br /&gt;
*lisada kohvikule teadaandeid ja neid kustutada&lt;br /&gt;
*lisada kohvikule menüüsid ja neid kustutada: menüül on nimetus, liik, nädalapäev,  lisamiskuupäev jne&lt;br /&gt;
*lisada menüüsse toite ja neid kustutada. Toitudel on nimetus, liik, hind, kas-on-või-ei-ole-taimetoit, kogus grammides, suurus, lisamise kuupäev. Eraldi listides on kõik lisatud toidud ja selle kohviku lisatud toidud.&lt;br /&gt;
*jookidele on sama, va. taimetoidu asemel on kas-on-või-ei-ole-alkohol.&lt;br /&gt;
&lt;br /&gt;
Lisamised on tehtud textboksidena, nimekirjadest valimine dropdown-listidena.&lt;br /&gt;
Kuvamised on tehtud GridViewdena, mis saavad andmeid meetoditest, mitte otse andmebaasitabelist.&lt;br /&gt;
&lt;br /&gt;
===5. juuni===&lt;br /&gt;
Valmis sai Kohvikute administraatori  ASP.NET-veebirakendus.&lt;br /&gt;
Admin saab registreeruda ja sisse logida.&lt;br /&gt;
Kui admin on sisse loginud, saab ta vaadata statistikat. Statistika-tabeleid on eraldi selle kohta, kui palju on mingit meetodit kasutatud ja selle kohta,kes millal mingit meetodit kasutas.&lt;br /&gt;
Sisseloginuna saab vaadata saabunud taotlusi ja nende järgi kasutajatele rolle määrata.&lt;br /&gt;
&lt;br /&gt;
Tabelid saavad andmeid otse andmebaasist, GridView&#039;dena, neid saab sorteerida tulpade&lt;br /&gt;
pealkirjadel klikkides.&lt;/div&gt;</summary>
		<author><name>Mtoompuu</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Meeskond_%22H2%22&amp;diff=33764</id>
		<title>Meeskond &quot;H2&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Meeskond_%22H2%22&amp;diff=33764"/>
		<updated>2011-06-05T21:53:00Z</updated>

		<summary type="html">&lt;p&gt;Mtoompuu: /* 5. juuni */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Kohviku menüüsüsteem==&lt;br /&gt;
===Projekt===&lt;br /&gt;
Kohvikute (esialgu ainult IT-Kohviku) menüüsüsteem, mis on jälgitav mobiilseadmetelt. Lisaväärtusena võimaldab anda pakutavale hinnanguid, otsuse langetamise hõlbustamiseks kommentaar:(see viimane funktsioon kipub vist &amp;quot;veebirakenduseks&amp;quot; muutuma)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Sihtplatvormid:&lt;br /&gt;
Windows Mobile, iOS, Android(kui leiame vabatahtlikud testijad)&lt;br /&gt;
&lt;br /&gt;
===Taustinfo===&lt;br /&gt;
Praegune IT-Kohviku menüü on käsitsi täidetav valge tahvel. Projekti eesmärgiks on parendada IT-Kohviku menüüsüsteemi ja teha see veebi kaudu kättesaadavaks, nii, et menüüsse saab lisada ka karniiri valiku. Standardmenüü puhul saab menüüs olla ka illustreeriv foto. Hetkemenüü ning hinnad ja lahtioleku ajad on samuti jälgitavad võrguühendust eviva mobiilseadme ekraanilt, hõlbustades sellega valikute tegemist.&lt;br /&gt;
&lt;br /&gt;
===Liikmed===&lt;br /&gt;
* Mailis Toompuu&lt;br /&gt;
* Henri Kroosmann&lt;br /&gt;
* Heiki Tamm&lt;br /&gt;
&lt;br /&gt;
==Sisu==&lt;br /&gt;
&lt;br /&gt;
===XML Data===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;menu&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name1&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;0&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name1&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item1&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item2&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item3&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;0&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;0&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount1&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;0&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;0&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot1&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name2&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;255&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name2&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item4&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item5&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item6&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;255&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;255&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount2&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;255&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;255&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot2&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name3&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;1&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name3&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item7&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item8&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item9&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;1&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;1&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount3&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;1&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;1&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot3&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
&amp;lt;/menu&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===XML Schema===&lt;br /&gt;
&lt;br /&gt;
Ülevaade Schema&#039;st. &amp;lt;br /&amp;gt;&lt;br /&gt;
[[File:XMLSchema_Capture_(optimized).png]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Ning sellele vastav kood.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xs:schema attributeFormDefault=&amp;quot;unqualified&amp;quot; elementFormDefault=&amp;quot;qualified&amp;quot; xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xs:element name=&amp;quot;menu&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;product&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;type&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;id&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;extras&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence minOccurs=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;item&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;price&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence minOccurs=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;int&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;frac&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element minOccurs=&amp;quot;0&amp;quot; name=&amp;quot;discount&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;vote&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;pos&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;neg&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;screenshot&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===XML Style===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;html&amp;gt;&lt;br /&gt;
      &amp;lt;head&amp;gt;&lt;br /&gt;
        &amp;lt;style type=&amp;quot;text/css&amp;quot;&amp;gt;&lt;br /&gt;
          html,body{margin:0;padding:0;font-family:Helvetica,Arial,sans-serif;font-size:14px;line-height:19px;color:#2c2c2c;}&lt;br /&gt;
          h1{margin:0;padding:25px 0 0;font-size:22px;line-height:25px;text-align:center;}&lt;br /&gt;
          h2{margin:0;padding:5px;font-size:16px;line-height:21px}&lt;br /&gt;
          span.discount{padding:0 0 0 5px;color:red;}&lt;br /&gt;
          table{margin:20px auto;padding:0;}&lt;br /&gt;
          th,td{padding:5px;border:1px solid #2c2c2c;vertical-align:top;text-align:left}&lt;br /&gt;
          th{font-weight:bold;background-color:#eee;}&lt;br /&gt;
          ul{margin:0;padding:0;list-style-type:none;}&lt;br /&gt;
        &amp;lt;/style&amp;gt;&lt;br /&gt;
      &amp;lt;/head&amp;gt;&lt;br /&gt;
      &amp;lt;body&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;Menüü&amp;lt;/h1&amp;gt;&lt;br /&gt;
        &amp;lt;table width=&amp;quot;800&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;200&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;100&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col witdh=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;150&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;tr&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Nimetus&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Lisandid&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Tüüp&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Hind&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Hinne / Hindajaid&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Pilt&amp;lt;/th&amp;gt;&lt;br /&gt;
          &amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
          &amp;lt;xsl:for-each select=&amp;quot;menu/product&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:sort select=&amp;quot;type/id&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:sort select=&amp;quot;name&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;th&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;name&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/th&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;extras/node()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;ul&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:for-each select=&amp;quot;extras/item&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;li&amp;gt;&lt;br /&gt;
                          &amp;lt;xsl:value-of select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;/li&amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
                    &amp;lt;/ul&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;td&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;type/name&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;price/node()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    €&amp;lt;xsl:value-of select=&amp;quot;price/int&amp;quot;/&amp;gt;.&amp;lt;xsl:value-of select=&amp;quot;price/frac&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:if test=&amp;quot;price/discount/text()&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;span class=&amp;quot;discount&amp;quot;&amp;gt;&lt;br /&gt;
                        (-&amp;lt;xsl:value-of select=&amp;quot;price/discount&amp;quot;/&amp;gt;%)&lt;br /&gt;
                      &amp;lt;/span&amp;gt;&lt;br /&gt;
                    &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:variable name=&amp;quot;p&amp;quot; select=&amp;quot;vote/pos&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:variable name=&amp;quot;n&amp;quot; select=&amp;quot;vote/neg&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;td&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$p - $n&amp;quot;/&amp;gt; / &amp;lt;xsl:value-of select=&amp;quot;$p + $n&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;screenshot/text()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;img src=&amp;quot;{screenshot}&amp;quot; alt=&amp;quot;&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;img src=&amp;quot;screenshots/default.png&amp;quot; alt=&amp;quot;No image&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
      &amp;lt;/body&amp;gt;&lt;br /&gt;
    &amp;lt;/html&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
Sisu ja stiilifaili koostöö http://henri.kroosmann.ee/kool/xml/index.xml &amp;lt;!--[http://henri.kroosmann.ee/kool/xml/index.xml]--&amp;gt;&lt;br /&gt;
==VEEBITEENUSED==&lt;br /&gt;
&lt;br /&gt;
===8. aprill===&lt;br /&gt;
Otsustame teha teenused kõikide kohvikute menüüde kohta.&lt;br /&gt;
&lt;br /&gt;
===11.-12. aprill===&lt;br /&gt;
Henri koostab tabelite loogika&lt;br /&gt;
&lt;br /&gt;
===13. aprill===&lt;br /&gt;
Mailis otsustab veebiteenused teha asmx-is [webmethod]-itega&lt;br /&gt;
===14. aprill===&lt;br /&gt;
Mailis hakkab veebiteenuseid tegema&lt;br /&gt;
===17. aprill===&lt;br /&gt;
Veebiteenused on valmis:&lt;br /&gt;
&lt;br /&gt;
*AnnaJoogiliikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaJoogitabelirida_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*AnnaJookideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaK6igiKohvikuteAndmeteNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyyIDed_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyyRida_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyydeNimekiri_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaMenyyLiikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaMenyydeNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaPromillideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToiduliikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToitudeNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToitutabelirida_toiduIDjargi &lt;br /&gt;
&lt;br /&gt;
*AnnaYheKohvikuAndmed_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*KustutaJookMenyyst &lt;br /&gt;
&lt;br /&gt;
*KustutaMenyy &lt;br /&gt;
&lt;br /&gt;
*KustutaKohvik &lt;br /&gt;
&lt;br /&gt;
*KustutaToitMenyyst &lt;br /&gt;
&lt;br /&gt;
*KysiYheKohvikuYheMenyyToitudeIDeed_menyyIDjargi &lt;br /&gt;
&lt;br /&gt;
*LisaJoogiLiik &lt;br /&gt;
&lt;br /&gt;
*LisaMenyyLiik &lt;br /&gt;
&lt;br /&gt;
*LisaPromill &lt;br /&gt;
&lt;br /&gt;
*LisaToiduLiik &lt;br /&gt;
&lt;br /&gt;
*SecurityAuthenticateUser &lt;br /&gt;
&lt;br /&gt;
*TOITJOOKmenyysRida_menyyIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedJoogileMenyys &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedKohvikule &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedToiduleMenyys &lt;br /&gt;
&lt;br /&gt;
*annaJoogiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiKIRJELDUS_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiKOMM_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiID_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiNIMI_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKasOnTaimeT_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKasutajaNIMI_Guidjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuLahtiolekuAjad_kohvikuIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuTeated &lt;br /&gt;
&lt;br /&gt;
*annaLinnaID_LinnaNimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaLinnaNIMI_LinnaIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaLinnad_maakonnaNIMEjargi &lt;br /&gt;
&lt;br /&gt;
*annaMaakonnaID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaMenyyLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaMenyyLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaPromill_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaPromilliID_promilliNrJargi &lt;br /&gt;
&lt;br /&gt;
*annaPromilliNR_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduKIRJELDUS_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduKOMMENTAAR_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiNIMETUS_toiduIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaYheKohvikuMenyyd_kohvikuNIMEjargi &lt;br /&gt;
&lt;br /&gt;
*autendiKasutajaParooliJargi &lt;br /&gt;
&lt;br /&gt;
*k6igiKohvikuteMenyyd &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusJoogiKohta &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusKohvikuKohta &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusToiduKohta &lt;br /&gt;
&lt;br /&gt;
*lisaJookMenyysse &lt;br /&gt;
&lt;br /&gt;
*lisaToitMenyysse &lt;br /&gt;
&lt;br /&gt;
*lisaUusJook &lt;br /&gt;
&lt;br /&gt;
*lisaUusKohvik &lt;br /&gt;
&lt;br /&gt;
*lisaUusLahtiolekuAeg &lt;br /&gt;
&lt;br /&gt;
*lisaUusMenyy &lt;br /&gt;
&lt;br /&gt;
*lisaUusTeadaanne &lt;br /&gt;
&lt;br /&gt;
*lisaUusToit &lt;br /&gt;
&lt;br /&gt;
*nadalapaevaID_paevaNimetuseJargi &lt;br /&gt;
&lt;br /&gt;
*nadalapaevaNIMETUS_paevaIDjargi&lt;br /&gt;
&lt;br /&gt;
*Registreeru&lt;br /&gt;
&lt;br /&gt;
*LogiSisseTavakasutajana&lt;br /&gt;
&lt;br /&gt;
*LogiSisseKohvikuna&lt;br /&gt;
&lt;br /&gt;
===22.aprill===&lt;br /&gt;
Toimus koosolek&lt;br /&gt;
*Henri lubas meetodite turvamise teha.&lt;br /&gt;
*Heiki lubas statistika teha meetodite kohta.&lt;br /&gt;
&lt;br /&gt;
===Allikfail===&lt;br /&gt;
Allikfail: http://www.p2ike.com/CSharp/KohvikudVeebiteenus.rar&lt;br /&gt;
&lt;br /&gt;
Meetod &#039;k6igiKohvikuteMenyyd&#039; kuvab sellise xml struktuuri: http://www.p2ike.com/CSharp/k6igiKohvikuteMenyyd.xml&lt;br /&gt;
&lt;br /&gt;
Toidud ja joogid sorteeritakse liikide kaupa.&lt;br /&gt;
&lt;br /&gt;
===Andmetabelid===&lt;br /&gt;
[[File:andmetabelid.jpg|777px|thumb|left|andmemudel]]&lt;br /&gt;
===Statistika===&lt;br /&gt;
 using System;&lt;br /&gt;
using System.Web.Services;&lt;br /&gt;
using System.Web.Services.Protocols;&lt;br /&gt;
using System.IO;&lt;br /&gt;
using System.Net;&lt;br /&gt;
 &lt;br /&gt;
// Define a SOAP Extension that traces the SOAP request and SOAP&lt;br /&gt;
// response for the XML Web service method the SOAP extension is&lt;br /&gt;
// applied to. &lt;br /&gt;
 &lt;br /&gt;
namespace WebASPKohvikud&lt;br /&gt;
{&lt;br /&gt;
    public class TraceExtension : SoapExtension&lt;br /&gt;
    {&lt;br /&gt;
        Stream oldStream;&lt;br /&gt;
        Stream newStream;&lt;br /&gt;
        string filename;&lt;br /&gt;
 &lt;br /&gt;
        // Save the Stream representing the SOAP request or SOAP response into&lt;br /&gt;
        // a local memory buffer.&lt;br /&gt;
        public override Stream ChainStream(Stream stream)&lt;br /&gt;
        {&lt;br /&gt;
            oldStream = stream;&lt;br /&gt;
            newStream = new MemoryStream();&lt;br /&gt;
            return newStream;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        // When the SOAP extension is accessed for the first time, the XML Web&lt;br /&gt;
        // service method it is applied to is accessed to store the file&lt;br /&gt;
        // name passed in, using the corresponding SoapExtensionAttribute.	&lt;br /&gt;
        public override object GetInitializer(LogicalMethodInfo methodInfo, SoapExtensionAttribute attribute)&lt;br /&gt;
        {&lt;br /&gt;
            return ((TraceExtensionAttribute)attribute).Filename;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        // The SOAP extension was configured to run using a configuration file&lt;br /&gt;
        // instead of an attribute applied to a specific XML Web service&lt;br /&gt;
        // method.&lt;br /&gt;
        public override object GetInitializer(Type WebServiceType)&lt;br /&gt;
        {&lt;br /&gt;
            // Return a file name to log the trace information to, based on the&lt;br /&gt;
            // type.&lt;br /&gt;
            return &amp;quot;C:\\&amp;quot; + WebServiceType.FullName + &amp;quot;.log&amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        // Receive the file name stored by GetInitializer and store it in a&lt;br /&gt;
        // member variable for this specific instance.&lt;br /&gt;
        public override void Initialize(object initializer)&lt;br /&gt;
        {&lt;br /&gt;
            filename = (string)initializer;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        //  If the SoapMessageStage is such that the SoapRequest or&lt;br /&gt;
        //  SoapResponse is still in the SOAP format to be sent or received,&lt;br /&gt;
        //  save it out to a file.&lt;br /&gt;
        public override void ProcessMessage(SoapMessage message)&lt;br /&gt;
        {&lt;br /&gt;
            switch (message.Stage)&lt;br /&gt;
            {&lt;br /&gt;
                case SoapMessageStage.BeforeSerialize:&lt;br /&gt;
                    break;&lt;br /&gt;
                case SoapMessageStage.AfterSerialize:&lt;br /&gt;
                    WriteOutput(message);&lt;br /&gt;
                    break;&lt;br /&gt;
                case SoapMessageStage.BeforeDeserialize:&lt;br /&gt;
                    WriteInput(message);&lt;br /&gt;
                    break;&lt;br /&gt;
                case SoapMessageStage.AfterDeserialize:&lt;br /&gt;
                    break;&lt;br /&gt;
                default:&lt;br /&gt;
                    throw new Exception(&amp;quot;invalid stage&amp;quot;);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        public void WriteOutput(SoapMessage message)&lt;br /&gt;
        {&lt;br /&gt;
            newStream.Position = 0;&lt;br /&gt;
            FileStream fs = new FileStream(filename, FileMode.Append,&lt;br /&gt;
                FileAccess.Write);&lt;br /&gt;
            StreamWriter w = new StreamWriter(fs);&lt;br /&gt;
 &lt;br /&gt;
            string soapString = (message is SoapServerMessage) ? &amp;quot;SoapResponse&amp;quot; : &amp;quot;SoapRequest&amp;quot;;&lt;br /&gt;
            w.WriteLine(&amp;quot;-----&amp;quot; + soapString + &amp;quot; at &amp;quot; + DateTime.Now);&lt;br /&gt;
            w.Flush();&lt;br /&gt;
            Copy(newStream, fs);&lt;br /&gt;
            w.Close();&lt;br /&gt;
            newStream.Position = 0;&lt;br /&gt;
            Copy(newStream, oldStream);&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        public void WriteInput(SoapMessage message)&lt;br /&gt;
        {&lt;br /&gt;
            Copy(oldStream, newStream);&lt;br /&gt;
            FileStream fs = new FileStream(filename, FileMode.Append,&lt;br /&gt;
                FileAccess.Write);&lt;br /&gt;
            StreamWriter w = new StreamWriter(fs);&lt;br /&gt;
 &lt;br /&gt;
            string soapString = (message is SoapServerMessage) ?&lt;br /&gt;
                &amp;quot;SoapRequest&amp;quot; : &amp;quot;SoapResponse&amp;quot;;&lt;br /&gt;
            w.WriteLine(&amp;quot;-----&amp;quot; + soapString +&lt;br /&gt;
                &amp;quot; at &amp;quot; + DateTime.Now);&lt;br /&gt;
            w.Flush();&lt;br /&gt;
            newStream.Position = 0;&lt;br /&gt;
            Copy(newStream, fs);&lt;br /&gt;
            w.Close();&lt;br /&gt;
            newStream.Position = 0;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        void Copy(Stream from, Stream to)&lt;br /&gt;
        {&lt;br /&gt;
            TextReader reader = new StreamReader(from);&lt;br /&gt;
            TextWriter writer = new StreamWriter(to);&lt;br /&gt;
            writer.WriteLine(reader.ReadToEnd());&lt;br /&gt;
            writer.Flush();&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    // Create a SoapExtensionAttribute for the SOAP Extension that can be&lt;br /&gt;
    // applied to an XML Web service method.&lt;br /&gt;
    [AttributeUsage(AttributeTargets.Method)]&lt;br /&gt;
    public class TraceExtensionAttribute : SoapExtensionAttribute&lt;br /&gt;
    {&lt;br /&gt;
 &lt;br /&gt;
        private string filename = @&amp;quot;C:\Users\Heiki Tamm\Documents\Õppematerjalid_2011\WebASPKohvikud\WebASPKohvikud\SoapLog.txt&amp;quot;;&lt;br /&gt;
        private int priority;&lt;br /&gt;
 &lt;br /&gt;
        public override Type ExtensionType&lt;br /&gt;
        {&lt;br /&gt;
            get { return typeof(TraceExtension); }&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        public override int Priority&lt;br /&gt;
        {&lt;br /&gt;
            get { return priority; }&lt;br /&gt;
            set { priority = value; }&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        public string Filename&lt;br /&gt;
        {&lt;br /&gt;
            get&lt;br /&gt;
            {&lt;br /&gt;
                return filename;&lt;br /&gt;
            }&lt;br /&gt;
            set&lt;br /&gt;
            {&lt;br /&gt;
                filename = value;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
// todo: &lt;br /&gt;
// from each soap header record query content &lt;br /&gt;
// (containing client, date, time, query ) into a DB&lt;br /&gt;
// for later reference for conducting any kind of &lt;br /&gt;
// applicable statistics and then generate stats :D !&lt;br /&gt;
// Proovin selliselt, et on lihtne statistika tabel:&lt;br /&gt;
// 1) meetod // välja kutsutava meetodi nimi&lt;br /&gt;
// 2) kuupäev // timestamp&lt;br /&gt;
// 3) callide arv // meetodi väljakutsimiste hulk&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==KLIENTRAKENDUS==&lt;br /&gt;
&lt;br /&gt;
===23. mai===&lt;br /&gt;
Mailis tegi kohvikute kuvamise ASP.NET rakenduse.&lt;br /&gt;
Kohvikud kuvatakse TreeView&#039;s &lt;br /&gt;
menüüde ja andmetega ning arvamustega kohvikute ja toitude ja jookide kohta.&lt;br /&gt;
&lt;br /&gt;
Samal lehel on kohvikuhuvilistele registreerimisvõimalus&lt;br /&gt;
ja sisselogimine.&lt;br /&gt;
&lt;br /&gt;
Kui on sisselogitud, saab lisada arvamusi.&lt;br /&gt;
Arvamuste lisamine on Ajax Extended Toolkiti controli&#039;ga &#039;Allways Visible ...&#039; tehtud, &lt;br /&gt;
&lt;br /&gt;
nii et mööda pikka TreeViewd alla kerides saab &lt;br /&gt;
lisada arvamust ilma ülesserva tagasi minemata.&lt;br /&gt;
&lt;br /&gt;
Arvamused ilmuvad kohe peale lisamist TreeView&#039;sse.&lt;br /&gt;
&lt;br /&gt;
TreeView&#039;sse tulevad andmed xml-failist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pooleli on veel kohvikute-poolne rakendus, kus omanik saab lisada ja kustutada kohvikuid, menüüsid ja toite-jooke, lisada teadaandeid.&lt;br /&gt;
&lt;br /&gt;
Pooleli on veel admini-rakendus, kus admin saab kasutajale määrata rolli, mis annab õigused kohviku-rakendusse sisse logida.&lt;br /&gt;
===4. juuni===&lt;br /&gt;
Valmis sai Kohvikute omanikele mõeldud klientrakendus.&lt;br /&gt;
Tehtud ASP.NET&#039;i veebirakendusena.&lt;br /&gt;
Seal on sisselogimine, registreerumine ja adminile kirja saatmine kohvikuomaniku õiguste saamiseks.&lt;br /&gt;
Peale sisselogimist saab &lt;br /&gt;
*lisada ja kustutada kohvikut&lt;br /&gt;
*lisada kohvikule lahtiolekuaegu nädalapäevade kaupa ja neid kustutada&lt;br /&gt;
*lisada kohvikule teadaandeid ja neid kustutada&lt;br /&gt;
*lisada kohvikule menüüsid ja neid kustutada: menüül on nimetus, liik, nädalapäev,  lisamiskuupäev jne&lt;br /&gt;
*lisada menüüsse toite ja neid kustutada. Toitudel on nimetus, liik, hind, kas-on-või-ei-ole-taimetoit, kogus grammides, suurus, lisamise kuupäev. Eraldi listides on kõik lisatud toidud ja selle kohviku lisatud toidud.&lt;br /&gt;
*jookidele on sama, va. taimetoidu asemel on kas-on-või-ei-ole-alkohol.&lt;br /&gt;
&lt;br /&gt;
Lisamised on tehtud textboksidena, nimekirjadest valimine dropdown-listidena.&lt;br /&gt;
Kuvamised on tehtud GridViewdena, mis saavad andmeid meetoditest, mitte otse andmebaasitabelist.&lt;br /&gt;
&lt;br /&gt;
===5. juuni===&lt;br /&gt;
Valmis sai KOhvikute administraatori  ASP.NET-veebirakendus.&lt;br /&gt;
Admin saab registreeruda ja sisse logida.&lt;br /&gt;
Kui admin on sisse loginud, saab ta vaadata statistikat. Statistika-tabeleid on eraldi sele kohta, kui palju on mingit meetodit kasutatud ja selekohta,kes millal mingit meetodit kasutas.&lt;br /&gt;
Sisseloginuna saab vaadata saabunud taotlusi ja nende järgi kasutajatele rolle määrata.&lt;br /&gt;
&lt;br /&gt;
Tabelid saavad andmeid otse andmebaasist, GridView&#039;dena, neid saab sorteerida tulpade&lt;br /&gt;
pealkirjadel klikkides.&lt;/div&gt;</summary>
		<author><name>Mtoompuu</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Meeskond_%22H2%22&amp;diff=33760</id>
		<title>Meeskond &quot;H2&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Meeskond_%22H2%22&amp;diff=33760"/>
		<updated>2011-06-05T21:38:37Z</updated>

		<summary type="html">&lt;p&gt;Mtoompuu: /* 23. mai */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Kohviku menüüsüsteem==&lt;br /&gt;
===Projekt===&lt;br /&gt;
Kohvikute (esialgu ainult IT-Kohviku) menüüsüsteem, mis on jälgitav mobiilseadmetelt. Lisaväärtusena võimaldab anda pakutavale hinnanguid, otsuse langetamise hõlbustamiseks kommentaar:(see viimane funktsioon kipub vist &amp;quot;veebirakenduseks&amp;quot; muutuma)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Sihtplatvormid:&lt;br /&gt;
Windows Mobile, iOS, Android(kui leiame vabatahtlikud testijad)&lt;br /&gt;
&lt;br /&gt;
===Taustinfo===&lt;br /&gt;
Praegune IT-Kohviku menüü on käsitsi täidetav valge tahvel. Projekti eesmärgiks on parendada IT-Kohviku menüüsüsteemi ja teha see veebi kaudu kättesaadavaks, nii, et menüüsse saab lisada ka karniiri valiku. Standardmenüü puhul saab menüüs olla ka illustreeriv foto. Hetkemenüü ning hinnad ja lahtioleku ajad on samuti jälgitavad võrguühendust eviva mobiilseadme ekraanilt, hõlbustades sellega valikute tegemist.&lt;br /&gt;
&lt;br /&gt;
===Liikmed===&lt;br /&gt;
* Mailis Toompuu&lt;br /&gt;
* Henri Kroosmann&lt;br /&gt;
* Heiki Tamm&lt;br /&gt;
&lt;br /&gt;
==Sisu==&lt;br /&gt;
&lt;br /&gt;
===XML Data===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;menu&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name1&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;0&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name1&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item1&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item2&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item3&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;0&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;0&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount1&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;0&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;0&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot1&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name2&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;255&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name2&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item4&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item5&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item6&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;255&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;255&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount2&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;255&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;255&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot2&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name3&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;1&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name3&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item7&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item8&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item9&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;1&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;1&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount3&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;1&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;1&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot3&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
&amp;lt;/menu&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===XML Schema===&lt;br /&gt;
&lt;br /&gt;
Ülevaade Schema&#039;st. &amp;lt;br /&amp;gt;&lt;br /&gt;
[[File:XMLSchema_Capture_(optimized).png]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Ning sellele vastav kood.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xs:schema attributeFormDefault=&amp;quot;unqualified&amp;quot; elementFormDefault=&amp;quot;qualified&amp;quot; xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xs:element name=&amp;quot;menu&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;product&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;type&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;id&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;extras&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence minOccurs=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;item&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;price&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence minOccurs=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;int&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;frac&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element minOccurs=&amp;quot;0&amp;quot; name=&amp;quot;discount&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;vote&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;pos&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;neg&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;screenshot&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===XML Style===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;html&amp;gt;&lt;br /&gt;
      &amp;lt;head&amp;gt;&lt;br /&gt;
        &amp;lt;style type=&amp;quot;text/css&amp;quot;&amp;gt;&lt;br /&gt;
          html,body{margin:0;padding:0;font-family:Helvetica,Arial,sans-serif;font-size:14px;line-height:19px;color:#2c2c2c;}&lt;br /&gt;
          h1{margin:0;padding:25px 0 0;font-size:22px;line-height:25px;text-align:center;}&lt;br /&gt;
          h2{margin:0;padding:5px;font-size:16px;line-height:21px}&lt;br /&gt;
          span.discount{padding:0 0 0 5px;color:red;}&lt;br /&gt;
          table{margin:20px auto;padding:0;}&lt;br /&gt;
          th,td{padding:5px;border:1px solid #2c2c2c;vertical-align:top;text-align:left}&lt;br /&gt;
          th{font-weight:bold;background-color:#eee;}&lt;br /&gt;
          ul{margin:0;padding:0;list-style-type:none;}&lt;br /&gt;
        &amp;lt;/style&amp;gt;&lt;br /&gt;
      &amp;lt;/head&amp;gt;&lt;br /&gt;
      &amp;lt;body&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;Menüü&amp;lt;/h1&amp;gt;&lt;br /&gt;
        &amp;lt;table width=&amp;quot;800&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;200&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;100&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col witdh=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;150&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;tr&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Nimetus&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Lisandid&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Tüüp&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Hind&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Hinne / Hindajaid&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Pilt&amp;lt;/th&amp;gt;&lt;br /&gt;
          &amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
          &amp;lt;xsl:for-each select=&amp;quot;menu/product&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:sort select=&amp;quot;type/id&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:sort select=&amp;quot;name&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;th&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;name&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/th&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;extras/node()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;ul&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:for-each select=&amp;quot;extras/item&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;li&amp;gt;&lt;br /&gt;
                          &amp;lt;xsl:value-of select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;/li&amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
                    &amp;lt;/ul&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;td&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;type/name&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;price/node()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    €&amp;lt;xsl:value-of select=&amp;quot;price/int&amp;quot;/&amp;gt;.&amp;lt;xsl:value-of select=&amp;quot;price/frac&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:if test=&amp;quot;price/discount/text()&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;span class=&amp;quot;discount&amp;quot;&amp;gt;&lt;br /&gt;
                        (-&amp;lt;xsl:value-of select=&amp;quot;price/discount&amp;quot;/&amp;gt;%)&lt;br /&gt;
                      &amp;lt;/span&amp;gt;&lt;br /&gt;
                    &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:variable name=&amp;quot;p&amp;quot; select=&amp;quot;vote/pos&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:variable name=&amp;quot;n&amp;quot; select=&amp;quot;vote/neg&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;td&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$p - $n&amp;quot;/&amp;gt; / &amp;lt;xsl:value-of select=&amp;quot;$p + $n&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;screenshot/text()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;img src=&amp;quot;{screenshot}&amp;quot; alt=&amp;quot;&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;img src=&amp;quot;screenshots/default.png&amp;quot; alt=&amp;quot;No image&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
      &amp;lt;/body&amp;gt;&lt;br /&gt;
    &amp;lt;/html&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
Sisu ja stiilifaili koostöö http://henri.kroosmann.ee/kool/xml/index.xml &amp;lt;!--[http://henri.kroosmann.ee/kool/xml/index.xml]--&amp;gt;&lt;br /&gt;
==VEEBITEENUSED==&lt;br /&gt;
&lt;br /&gt;
===8. aprill===&lt;br /&gt;
Otsustame teha teenused kõikide kohvikute menüüde kohta.&lt;br /&gt;
&lt;br /&gt;
===11.-12. aprill===&lt;br /&gt;
Henri koostab tabelite loogika&lt;br /&gt;
&lt;br /&gt;
===13. aprill===&lt;br /&gt;
Mailis otsustab veebiteenused teha asmx-is [webmethod]-itega&lt;br /&gt;
===14. aprill===&lt;br /&gt;
Mailis hakkab veebiteenuseid tegema&lt;br /&gt;
===17. aprill===&lt;br /&gt;
Veebiteenused on valmis:&lt;br /&gt;
&lt;br /&gt;
*AnnaJoogiliikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaJoogitabelirida_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*AnnaJookideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaK6igiKohvikuteAndmeteNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyyIDed_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyyRida_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyydeNimekiri_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaMenyyLiikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaMenyydeNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaPromillideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToiduliikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToitudeNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToitutabelirida_toiduIDjargi &lt;br /&gt;
&lt;br /&gt;
*AnnaYheKohvikuAndmed_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*KustutaJookMenyyst &lt;br /&gt;
&lt;br /&gt;
*KustutaMenyy &lt;br /&gt;
&lt;br /&gt;
*KustutaKohvik &lt;br /&gt;
&lt;br /&gt;
*KustutaToitMenyyst &lt;br /&gt;
&lt;br /&gt;
*KysiYheKohvikuYheMenyyToitudeIDeed_menyyIDjargi &lt;br /&gt;
&lt;br /&gt;
*LisaJoogiLiik &lt;br /&gt;
&lt;br /&gt;
*LisaMenyyLiik &lt;br /&gt;
&lt;br /&gt;
*LisaPromill &lt;br /&gt;
&lt;br /&gt;
*LisaToiduLiik &lt;br /&gt;
&lt;br /&gt;
*SecurityAuthenticateUser &lt;br /&gt;
&lt;br /&gt;
*TOITJOOKmenyysRida_menyyIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedJoogileMenyys &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedKohvikule &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedToiduleMenyys &lt;br /&gt;
&lt;br /&gt;
*annaJoogiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiKIRJELDUS_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiKOMM_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiID_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiNIMI_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKasOnTaimeT_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKasutajaNIMI_Guidjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuLahtiolekuAjad_kohvikuIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuTeated &lt;br /&gt;
&lt;br /&gt;
*annaLinnaID_LinnaNimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaLinnaNIMI_LinnaIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaLinnad_maakonnaNIMEjargi &lt;br /&gt;
&lt;br /&gt;
*annaMaakonnaID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaMenyyLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaMenyyLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaPromill_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaPromilliID_promilliNrJargi &lt;br /&gt;
&lt;br /&gt;
*annaPromilliNR_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduKIRJELDUS_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduKOMMENTAAR_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiNIMETUS_toiduIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaYheKohvikuMenyyd_kohvikuNIMEjargi &lt;br /&gt;
&lt;br /&gt;
*autendiKasutajaParooliJargi &lt;br /&gt;
&lt;br /&gt;
*k6igiKohvikuteMenyyd &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusJoogiKohta &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusKohvikuKohta &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusToiduKohta &lt;br /&gt;
&lt;br /&gt;
*lisaJookMenyysse &lt;br /&gt;
&lt;br /&gt;
*lisaToitMenyysse &lt;br /&gt;
&lt;br /&gt;
*lisaUusJook &lt;br /&gt;
&lt;br /&gt;
*lisaUusKohvik &lt;br /&gt;
&lt;br /&gt;
*lisaUusLahtiolekuAeg &lt;br /&gt;
&lt;br /&gt;
*lisaUusMenyy &lt;br /&gt;
&lt;br /&gt;
*lisaUusTeadaanne &lt;br /&gt;
&lt;br /&gt;
*lisaUusToit &lt;br /&gt;
&lt;br /&gt;
*nadalapaevaID_paevaNimetuseJargi &lt;br /&gt;
&lt;br /&gt;
*nadalapaevaNIMETUS_paevaIDjargi&lt;br /&gt;
&lt;br /&gt;
*Registreeru&lt;br /&gt;
&lt;br /&gt;
*LogiSisseTavakasutajana&lt;br /&gt;
&lt;br /&gt;
*LogiSisseKohvikuna&lt;br /&gt;
&lt;br /&gt;
===22.aprill===&lt;br /&gt;
Toimus koosolek&lt;br /&gt;
*Henri lubas meetodite turvamise teha.&lt;br /&gt;
*Heiki lubas statistika teha meetodite kohta.&lt;br /&gt;
&lt;br /&gt;
===Allikfail===&lt;br /&gt;
Allikfail: http://www.p2ike.com/CSharp/KohvikudVeebiteenus.rar&lt;br /&gt;
&lt;br /&gt;
Meetod &#039;k6igiKohvikuteMenyyd&#039; kuvab sellise xml struktuuri: http://www.p2ike.com/CSharp/k6igiKohvikuteMenyyd.xml&lt;br /&gt;
&lt;br /&gt;
Toidud ja joogid sorteeritakse liikide kaupa.&lt;br /&gt;
&lt;br /&gt;
===Andmetabelid===&lt;br /&gt;
[[File:andmetabelid.jpg|777px|thumb|left|andmemudel]]&lt;br /&gt;
===Statistika===&lt;br /&gt;
 using System;&lt;br /&gt;
using System.Web.Services;&lt;br /&gt;
using System.Web.Services.Protocols;&lt;br /&gt;
using System.IO;&lt;br /&gt;
using System.Net;&lt;br /&gt;
 &lt;br /&gt;
// Define a SOAP Extension that traces the SOAP request and SOAP&lt;br /&gt;
// response for the XML Web service method the SOAP extension is&lt;br /&gt;
// applied to. &lt;br /&gt;
 &lt;br /&gt;
namespace WebASPKohvikud&lt;br /&gt;
{&lt;br /&gt;
    public class TraceExtension : SoapExtension&lt;br /&gt;
    {&lt;br /&gt;
        Stream oldStream;&lt;br /&gt;
        Stream newStream;&lt;br /&gt;
        string filename;&lt;br /&gt;
 &lt;br /&gt;
        // Save the Stream representing the SOAP request or SOAP response into&lt;br /&gt;
        // a local memory buffer.&lt;br /&gt;
        public override Stream ChainStream(Stream stream)&lt;br /&gt;
        {&lt;br /&gt;
            oldStream = stream;&lt;br /&gt;
            newStream = new MemoryStream();&lt;br /&gt;
            return newStream;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        // When the SOAP extension is accessed for the first time, the XML Web&lt;br /&gt;
        // service method it is applied to is accessed to store the file&lt;br /&gt;
        // name passed in, using the corresponding SoapExtensionAttribute.	&lt;br /&gt;
        public override object GetInitializer(LogicalMethodInfo methodInfo, SoapExtensionAttribute attribute)&lt;br /&gt;
        {&lt;br /&gt;
            return ((TraceExtensionAttribute)attribute).Filename;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        // The SOAP extension was configured to run using a configuration file&lt;br /&gt;
        // instead of an attribute applied to a specific XML Web service&lt;br /&gt;
        // method.&lt;br /&gt;
        public override object GetInitializer(Type WebServiceType)&lt;br /&gt;
        {&lt;br /&gt;
            // Return a file name to log the trace information to, based on the&lt;br /&gt;
            // type.&lt;br /&gt;
            return &amp;quot;C:\\&amp;quot; + WebServiceType.FullName + &amp;quot;.log&amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        // Receive the file name stored by GetInitializer and store it in a&lt;br /&gt;
        // member variable for this specific instance.&lt;br /&gt;
        public override void Initialize(object initializer)&lt;br /&gt;
        {&lt;br /&gt;
            filename = (string)initializer;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        //  If the SoapMessageStage is such that the SoapRequest or&lt;br /&gt;
        //  SoapResponse is still in the SOAP format to be sent or received,&lt;br /&gt;
        //  save it out to a file.&lt;br /&gt;
        public override void ProcessMessage(SoapMessage message)&lt;br /&gt;
        {&lt;br /&gt;
            switch (message.Stage)&lt;br /&gt;
            {&lt;br /&gt;
                case SoapMessageStage.BeforeSerialize:&lt;br /&gt;
                    break;&lt;br /&gt;
                case SoapMessageStage.AfterSerialize:&lt;br /&gt;
                    WriteOutput(message);&lt;br /&gt;
                    break;&lt;br /&gt;
                case SoapMessageStage.BeforeDeserialize:&lt;br /&gt;
                    WriteInput(message);&lt;br /&gt;
                    break;&lt;br /&gt;
                case SoapMessageStage.AfterDeserialize:&lt;br /&gt;
                    break;&lt;br /&gt;
                default:&lt;br /&gt;
                    throw new Exception(&amp;quot;invalid stage&amp;quot;);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        public void WriteOutput(SoapMessage message)&lt;br /&gt;
        {&lt;br /&gt;
            newStream.Position = 0;&lt;br /&gt;
            FileStream fs = new FileStream(filename, FileMode.Append,&lt;br /&gt;
                FileAccess.Write);&lt;br /&gt;
            StreamWriter w = new StreamWriter(fs);&lt;br /&gt;
 &lt;br /&gt;
            string soapString = (message is SoapServerMessage) ? &amp;quot;SoapResponse&amp;quot; : &amp;quot;SoapRequest&amp;quot;;&lt;br /&gt;
            w.WriteLine(&amp;quot;-----&amp;quot; + soapString + &amp;quot; at &amp;quot; + DateTime.Now);&lt;br /&gt;
            w.Flush();&lt;br /&gt;
            Copy(newStream, fs);&lt;br /&gt;
            w.Close();&lt;br /&gt;
            newStream.Position = 0;&lt;br /&gt;
            Copy(newStream, oldStream);&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        public void WriteInput(SoapMessage message)&lt;br /&gt;
        {&lt;br /&gt;
            Copy(oldStream, newStream);&lt;br /&gt;
            FileStream fs = new FileStream(filename, FileMode.Append,&lt;br /&gt;
                FileAccess.Write);&lt;br /&gt;
            StreamWriter w = new StreamWriter(fs);&lt;br /&gt;
 &lt;br /&gt;
            string soapString = (message is SoapServerMessage) ?&lt;br /&gt;
                &amp;quot;SoapRequest&amp;quot; : &amp;quot;SoapResponse&amp;quot;;&lt;br /&gt;
            w.WriteLine(&amp;quot;-----&amp;quot; + soapString +&lt;br /&gt;
                &amp;quot; at &amp;quot; + DateTime.Now);&lt;br /&gt;
            w.Flush();&lt;br /&gt;
            newStream.Position = 0;&lt;br /&gt;
            Copy(newStream, fs);&lt;br /&gt;
            w.Close();&lt;br /&gt;
            newStream.Position = 0;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        void Copy(Stream from, Stream to)&lt;br /&gt;
        {&lt;br /&gt;
            TextReader reader = new StreamReader(from);&lt;br /&gt;
            TextWriter writer = new StreamWriter(to);&lt;br /&gt;
            writer.WriteLine(reader.ReadToEnd());&lt;br /&gt;
            writer.Flush();&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    // Create a SoapExtensionAttribute for the SOAP Extension that can be&lt;br /&gt;
    // applied to an XML Web service method.&lt;br /&gt;
    [AttributeUsage(AttributeTargets.Method)]&lt;br /&gt;
    public class TraceExtensionAttribute : SoapExtensionAttribute&lt;br /&gt;
    {&lt;br /&gt;
 &lt;br /&gt;
        private string filename = @&amp;quot;C:\Users\Heiki Tamm\Documents\Õppematerjalid_2011\WebASPKohvikud\WebASPKohvikud\SoapLog.txt&amp;quot;;&lt;br /&gt;
        private int priority;&lt;br /&gt;
 &lt;br /&gt;
        public override Type ExtensionType&lt;br /&gt;
        {&lt;br /&gt;
            get { return typeof(TraceExtension); }&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        public override int Priority&lt;br /&gt;
        {&lt;br /&gt;
            get { return priority; }&lt;br /&gt;
            set { priority = value; }&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        public string Filename&lt;br /&gt;
        {&lt;br /&gt;
            get&lt;br /&gt;
            {&lt;br /&gt;
                return filename;&lt;br /&gt;
            }&lt;br /&gt;
            set&lt;br /&gt;
            {&lt;br /&gt;
                filename = value;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
// todo: &lt;br /&gt;
// from each soap header record query content &lt;br /&gt;
// (containing client, date, time, query ) into a DB&lt;br /&gt;
// for later reference for conducting any kind of &lt;br /&gt;
// applicable statistics and then generate stats :D !&lt;br /&gt;
// Proovin selliselt, et on lihtne statistika tabel:&lt;br /&gt;
// 1) meetod // välja kutsutava meetodi nimi&lt;br /&gt;
// 2) kuupäev // timestamp&lt;br /&gt;
// 3) callide arv // meetodi väljakutsimiste hulk&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==KLIENTRAKENDUS==&lt;br /&gt;
&lt;br /&gt;
===23. mai===&lt;br /&gt;
Mailis tegi kohvikute kuvamise ASP.NET rakenduse.&lt;br /&gt;
Kohvikud kuvatakse TreeView&#039;s &lt;br /&gt;
menüüde ja andmetega ning arvamustega kohvikute ja toitude ja jookide kohta.&lt;br /&gt;
&lt;br /&gt;
Samal lehel on kohvikuhuvilistele registreerimisvõimalus&lt;br /&gt;
ja sisselogimine.&lt;br /&gt;
&lt;br /&gt;
Kui on sisselogitud, saab lisada arvamusi.&lt;br /&gt;
Arvamuste lisamine on Ajax Extended Toolkiti controli&#039;ga &#039;Allways Visible ...&#039; tehtud, &lt;br /&gt;
&lt;br /&gt;
nii et mööda pikka TreeViewd alla kerides saab &lt;br /&gt;
lisada arvamust ilma ülesserva tagasi minemata.&lt;br /&gt;
&lt;br /&gt;
Arvamused ilmuvad kohe peale lisamist TreeView&#039;sse.&lt;br /&gt;
&lt;br /&gt;
TreeView&#039;sse tulevad andmed xml-failist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pooleli on veel kohvikute-poolne rakendus, kus omanik saab lisada ja kustutada kohvikuid, menüüsid ja toite-jooke, lisada teadaandeid.&lt;br /&gt;
&lt;br /&gt;
Pooleli on veel admini-rakendus, kus admin saab kasutajale määrata rolli, mis annab õigused kohviku-rakendusse sisse logida.&lt;br /&gt;
===5. juuni===&lt;/div&gt;</summary>
		<author><name>Mtoompuu</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Meeskond_%22H2%22&amp;diff=32570</id>
		<title>Meeskond &quot;H2&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Meeskond_%22H2%22&amp;diff=32570"/>
		<updated>2011-05-23T06:21:17Z</updated>

		<summary type="html">&lt;p&gt;Mtoompuu: /* 23. mai */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Kohviku menüüsüsteem==&lt;br /&gt;
===Projekt===&lt;br /&gt;
Kohvikute (esialgu ainult IT-Kohviku) menüüsüsteem, mis on jälgitav mobiilseadmetelt. Lisaväärtusena võimaldab anda pakutavale hinnanguid, otsuse langetamise hõlbustamiseks kommentaar:(see viimane funktsioon kipub vist &amp;quot;veebirakenduseks&amp;quot; muutuma)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Sihtplatvormid:&lt;br /&gt;
Windows Mobile, iOS, Android(kui leiame vabatahtlikud testijad)&lt;br /&gt;
&lt;br /&gt;
===Taustinfo===&lt;br /&gt;
Praegune IT-Kohviku menüü on käsitsi täidetav valge tahvel. Projekti eesmärgiks on parendada IT-Kohviku menüüsüsteemi ja teha see veebi kaudu kättesaadavaks, nii, et menüüsse saab lisada ka karniiri valiku. Standardmenüü puhul saab menüüs olla ka illustreeriv foto. Hetkemenüü ning hinnad ja lahtioleku ajad on samuti jälgitavad võrguühendust eviva mobiilseadme ekraanilt, hõlbustades sellega valikute tegemist.&lt;br /&gt;
&lt;br /&gt;
===Liikmed===&lt;br /&gt;
* Mailis Toompuu&lt;br /&gt;
* Henri Kroosmann&lt;br /&gt;
* Heiki Tamm&lt;br /&gt;
&lt;br /&gt;
==Sisu==&lt;br /&gt;
&lt;br /&gt;
===XML Data===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;menu&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name1&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;0&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name1&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item1&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item2&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item3&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;0&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;0&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount1&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;0&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;0&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot1&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name2&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;255&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name2&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item4&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item5&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item6&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;255&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;255&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount2&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;255&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;255&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot2&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name3&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;1&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name3&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item7&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item8&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item9&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;1&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;1&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount3&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;1&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;1&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot3&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
&amp;lt;/menu&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===XML Schema===&lt;br /&gt;
&lt;br /&gt;
Ülevaade Schema&#039;st. &amp;lt;br /&amp;gt;&lt;br /&gt;
[[File:XMLSchema_Capture_(optimized).png]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Ning sellele vastav kood.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xs:schema attributeFormDefault=&amp;quot;unqualified&amp;quot; elementFormDefault=&amp;quot;qualified&amp;quot; xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xs:element name=&amp;quot;menu&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;product&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;type&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;id&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;extras&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence minOccurs=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;item&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;price&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence minOccurs=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;int&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;frac&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element minOccurs=&amp;quot;0&amp;quot; name=&amp;quot;discount&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;vote&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;pos&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;neg&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;screenshot&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===XML Style===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;html&amp;gt;&lt;br /&gt;
      &amp;lt;head&amp;gt;&lt;br /&gt;
        &amp;lt;style type=&amp;quot;text/css&amp;quot;&amp;gt;&lt;br /&gt;
          html,body{margin:0;padding:0;font-family:Helvetica,Arial,sans-serif;font-size:14px;line-height:19px;color:#2c2c2c;}&lt;br /&gt;
          h1{margin:0;padding:25px 0 0;font-size:22px;line-height:25px;text-align:center;}&lt;br /&gt;
          h2{margin:0;padding:5px;font-size:16px;line-height:21px}&lt;br /&gt;
          span.discount{padding:0 0 0 5px;color:red;}&lt;br /&gt;
          table{margin:20px auto;padding:0;}&lt;br /&gt;
          th,td{padding:5px;border:1px solid #2c2c2c;vertical-align:top;text-align:left}&lt;br /&gt;
          th{font-weight:bold;background-color:#eee;}&lt;br /&gt;
          ul{margin:0;padding:0;list-style-type:none;}&lt;br /&gt;
        &amp;lt;/style&amp;gt;&lt;br /&gt;
      &amp;lt;/head&amp;gt;&lt;br /&gt;
      &amp;lt;body&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;Menüü&amp;lt;/h1&amp;gt;&lt;br /&gt;
        &amp;lt;table width=&amp;quot;800&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;200&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;100&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col witdh=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;150&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;tr&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Nimetus&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Lisandid&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Tüüp&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Hind&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Hinne / Hindajaid&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Pilt&amp;lt;/th&amp;gt;&lt;br /&gt;
          &amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
          &amp;lt;xsl:for-each select=&amp;quot;menu/product&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:sort select=&amp;quot;type/id&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:sort select=&amp;quot;name&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;th&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;name&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/th&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;extras/node()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;ul&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:for-each select=&amp;quot;extras/item&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;li&amp;gt;&lt;br /&gt;
                          &amp;lt;xsl:value-of select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;/li&amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
                    &amp;lt;/ul&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;td&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;type/name&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;price/node()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    €&amp;lt;xsl:value-of select=&amp;quot;price/int&amp;quot;/&amp;gt;.&amp;lt;xsl:value-of select=&amp;quot;price/frac&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:if test=&amp;quot;price/discount/text()&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;span class=&amp;quot;discount&amp;quot;&amp;gt;&lt;br /&gt;
                        (-&amp;lt;xsl:value-of select=&amp;quot;price/discount&amp;quot;/&amp;gt;%)&lt;br /&gt;
                      &amp;lt;/span&amp;gt;&lt;br /&gt;
                    &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:variable name=&amp;quot;p&amp;quot; select=&amp;quot;vote/pos&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:variable name=&amp;quot;n&amp;quot; select=&amp;quot;vote/neg&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;td&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$p - $n&amp;quot;/&amp;gt; / &amp;lt;xsl:value-of select=&amp;quot;$p + $n&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;screenshot/text()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;img src=&amp;quot;{screenshot}&amp;quot; alt=&amp;quot;&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;img src=&amp;quot;screenshots/default.png&amp;quot; alt=&amp;quot;No image&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
      &amp;lt;/body&amp;gt;&lt;br /&gt;
    &amp;lt;/html&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
Sisu ja stiilifaili koostöö http://henri.kroosmann.ee/kool/xml/index.xml &amp;lt;!--[http://henri.kroosmann.ee/kool/xml/index.xml]--&amp;gt;&lt;br /&gt;
==VEEBITEENUSED==&lt;br /&gt;
&lt;br /&gt;
===8. aprill===&lt;br /&gt;
Otsustame teha teenused kõikide kohvikute menüüde kohta.&lt;br /&gt;
&lt;br /&gt;
===11.-12. aprill===&lt;br /&gt;
Henri koostab tabelite loogika&lt;br /&gt;
&lt;br /&gt;
===13. aprill===&lt;br /&gt;
Mailis otsustab veebiteenused teha asmx-is [webmethod]-itega&lt;br /&gt;
===14. aprill===&lt;br /&gt;
Mailis hakkab veebiteenuseid tegema&lt;br /&gt;
===17. aprill===&lt;br /&gt;
Veebiteenused on valmis:&lt;br /&gt;
&lt;br /&gt;
*AnnaJoogiliikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaJoogitabelirida_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*AnnaJookideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaK6igiKohvikuteAndmeteNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyyIDed_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyyRida_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyydeNimekiri_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaMenyyLiikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaMenyydeNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaPromillideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToiduliikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToitudeNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToitutabelirida_toiduIDjargi &lt;br /&gt;
&lt;br /&gt;
*AnnaYheKohvikuAndmed_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*KustutaJookMenyyst &lt;br /&gt;
&lt;br /&gt;
*KustutaMenyy &lt;br /&gt;
&lt;br /&gt;
*KustutaKohvik &lt;br /&gt;
&lt;br /&gt;
*KustutaToitMenyyst &lt;br /&gt;
&lt;br /&gt;
*KysiYheKohvikuYheMenyyToitudeIDeed_menyyIDjargi &lt;br /&gt;
&lt;br /&gt;
*LisaJoogiLiik &lt;br /&gt;
&lt;br /&gt;
*LisaMenyyLiik &lt;br /&gt;
&lt;br /&gt;
*LisaPromill &lt;br /&gt;
&lt;br /&gt;
*LisaToiduLiik &lt;br /&gt;
&lt;br /&gt;
*SecurityAuthenticateUser &lt;br /&gt;
&lt;br /&gt;
*TOITJOOKmenyysRida_menyyIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedJoogileMenyys &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedKohvikule &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedToiduleMenyys &lt;br /&gt;
&lt;br /&gt;
*annaJoogiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiKIRJELDUS_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiKOMM_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiID_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiNIMI_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKasOnTaimeT_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKasutajaNIMI_Guidjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuLahtiolekuAjad_kohvikuIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuTeated &lt;br /&gt;
&lt;br /&gt;
*annaLinnaID_LinnaNimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaLinnaNIMI_LinnaIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaLinnad_maakonnaNIMEjargi &lt;br /&gt;
&lt;br /&gt;
*annaMaakonnaID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaMenyyLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaMenyyLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaPromill_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaPromilliID_promilliNrJargi &lt;br /&gt;
&lt;br /&gt;
*annaPromilliNR_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduKIRJELDUS_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduKOMMENTAAR_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiNIMETUS_toiduIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaYheKohvikuMenyyd_kohvikuNIMEjargi &lt;br /&gt;
&lt;br /&gt;
*autendiKasutajaParooliJargi &lt;br /&gt;
&lt;br /&gt;
*k6igiKohvikuteMenyyd &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusJoogiKohta &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusKohvikuKohta &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusToiduKohta &lt;br /&gt;
&lt;br /&gt;
*lisaJookMenyysse &lt;br /&gt;
&lt;br /&gt;
*lisaToitMenyysse &lt;br /&gt;
&lt;br /&gt;
*lisaUusJook &lt;br /&gt;
&lt;br /&gt;
*lisaUusKohvik &lt;br /&gt;
&lt;br /&gt;
*lisaUusLahtiolekuAeg &lt;br /&gt;
&lt;br /&gt;
*lisaUusMenyy &lt;br /&gt;
&lt;br /&gt;
*lisaUusTeadaanne &lt;br /&gt;
&lt;br /&gt;
*lisaUusToit &lt;br /&gt;
&lt;br /&gt;
*nadalapaevaID_paevaNimetuseJargi &lt;br /&gt;
&lt;br /&gt;
*nadalapaevaNIMETUS_paevaIDjargi&lt;br /&gt;
&lt;br /&gt;
*Registreeru&lt;br /&gt;
&lt;br /&gt;
*LogiSisseTavakasutajana&lt;br /&gt;
&lt;br /&gt;
*LogiSisseKohvikuna&lt;br /&gt;
&lt;br /&gt;
===22.aprill===&lt;br /&gt;
Toimus koosolek&lt;br /&gt;
*Henri lubas meetodite turvamise teha.&lt;br /&gt;
*Heiki lubas statistika teha meetodite kohta.&lt;br /&gt;
&lt;br /&gt;
===Allikfail===&lt;br /&gt;
Allikfail: http://www.p2ike.com/CSharp/KohvikudVeebiteenus.rar&lt;br /&gt;
&lt;br /&gt;
Meetod &#039;k6igiKohvikuteMenyyd&#039; kuvab sellise xml struktuuri: http://www.p2ike.com/CSharp/k6igiKohvikuteMenyyd.xml&lt;br /&gt;
&lt;br /&gt;
Toidud ja joogid sorteeritakse liikide kaupa.&lt;br /&gt;
&lt;br /&gt;
===Andmetabelid===&lt;br /&gt;
[[File:andmetabelid.jpg|777px|thumb|left|andmemudel]]&lt;br /&gt;
===Statistika===&lt;br /&gt;
 using System;&lt;br /&gt;
using System.Web.Services;&lt;br /&gt;
using System.Web.Services.Protocols;&lt;br /&gt;
using System.IO;&lt;br /&gt;
using System.Net;&lt;br /&gt;
 &lt;br /&gt;
// Define a SOAP Extension that traces the SOAP request and SOAP&lt;br /&gt;
// response for the XML Web service method the SOAP extension is&lt;br /&gt;
// applied to. &lt;br /&gt;
 &lt;br /&gt;
namespace WebASPKohvikud&lt;br /&gt;
{&lt;br /&gt;
    public class TraceExtension : SoapExtension&lt;br /&gt;
    {&lt;br /&gt;
        Stream oldStream;&lt;br /&gt;
        Stream newStream;&lt;br /&gt;
        string filename;&lt;br /&gt;
 &lt;br /&gt;
        // Save the Stream representing the SOAP request or SOAP response into&lt;br /&gt;
        // a local memory buffer.&lt;br /&gt;
        public override Stream ChainStream(Stream stream)&lt;br /&gt;
        {&lt;br /&gt;
            oldStream = stream;&lt;br /&gt;
            newStream = new MemoryStream();&lt;br /&gt;
            return newStream;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        // When the SOAP extension is accessed for the first time, the XML Web&lt;br /&gt;
        // service method it is applied to is accessed to store the file&lt;br /&gt;
        // name passed in, using the corresponding SoapExtensionAttribute.	&lt;br /&gt;
        public override object GetInitializer(LogicalMethodInfo methodInfo, SoapExtensionAttribute attribute)&lt;br /&gt;
        {&lt;br /&gt;
            return ((TraceExtensionAttribute)attribute).Filename;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        // The SOAP extension was configured to run using a configuration file&lt;br /&gt;
        // instead of an attribute applied to a specific XML Web service&lt;br /&gt;
        // method.&lt;br /&gt;
        public override object GetInitializer(Type WebServiceType)&lt;br /&gt;
        {&lt;br /&gt;
            // Return a file name to log the trace information to, based on the&lt;br /&gt;
            // type.&lt;br /&gt;
            return &amp;quot;C:\\&amp;quot; + WebServiceType.FullName + &amp;quot;.log&amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        // Receive the file name stored by GetInitializer and store it in a&lt;br /&gt;
        // member variable for this specific instance.&lt;br /&gt;
        public override void Initialize(object initializer)&lt;br /&gt;
        {&lt;br /&gt;
            filename = (string)initializer;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        //  If the SoapMessageStage is such that the SoapRequest or&lt;br /&gt;
        //  SoapResponse is still in the SOAP format to be sent or received,&lt;br /&gt;
        //  save it out to a file.&lt;br /&gt;
        public override void ProcessMessage(SoapMessage message)&lt;br /&gt;
        {&lt;br /&gt;
            switch (message.Stage)&lt;br /&gt;
            {&lt;br /&gt;
                case SoapMessageStage.BeforeSerialize:&lt;br /&gt;
                    break;&lt;br /&gt;
                case SoapMessageStage.AfterSerialize:&lt;br /&gt;
                    WriteOutput(message);&lt;br /&gt;
                    break;&lt;br /&gt;
                case SoapMessageStage.BeforeDeserialize:&lt;br /&gt;
                    WriteInput(message);&lt;br /&gt;
                    break;&lt;br /&gt;
                case SoapMessageStage.AfterDeserialize:&lt;br /&gt;
                    break;&lt;br /&gt;
                default:&lt;br /&gt;
                    throw new Exception(&amp;quot;invalid stage&amp;quot;);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        public void WriteOutput(SoapMessage message)&lt;br /&gt;
        {&lt;br /&gt;
            newStream.Position = 0;&lt;br /&gt;
            FileStream fs = new FileStream(filename, FileMode.Append,&lt;br /&gt;
                FileAccess.Write);&lt;br /&gt;
            StreamWriter w = new StreamWriter(fs);&lt;br /&gt;
 &lt;br /&gt;
            string soapString = (message is SoapServerMessage) ? &amp;quot;SoapResponse&amp;quot; : &amp;quot;SoapRequest&amp;quot;;&lt;br /&gt;
            w.WriteLine(&amp;quot;-----&amp;quot; + soapString + &amp;quot; at &amp;quot; + DateTime.Now);&lt;br /&gt;
            w.Flush();&lt;br /&gt;
            Copy(newStream, fs);&lt;br /&gt;
            w.Close();&lt;br /&gt;
            newStream.Position = 0;&lt;br /&gt;
            Copy(newStream, oldStream);&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        public void WriteInput(SoapMessage message)&lt;br /&gt;
        {&lt;br /&gt;
            Copy(oldStream, newStream);&lt;br /&gt;
            FileStream fs = new FileStream(filename, FileMode.Append,&lt;br /&gt;
                FileAccess.Write);&lt;br /&gt;
            StreamWriter w = new StreamWriter(fs);&lt;br /&gt;
 &lt;br /&gt;
            string soapString = (message is SoapServerMessage) ?&lt;br /&gt;
                &amp;quot;SoapRequest&amp;quot; : &amp;quot;SoapResponse&amp;quot;;&lt;br /&gt;
            w.WriteLine(&amp;quot;-----&amp;quot; + soapString +&lt;br /&gt;
                &amp;quot; at &amp;quot; + DateTime.Now);&lt;br /&gt;
            w.Flush();&lt;br /&gt;
            newStream.Position = 0;&lt;br /&gt;
            Copy(newStream, fs);&lt;br /&gt;
            w.Close();&lt;br /&gt;
            newStream.Position = 0;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        void Copy(Stream from, Stream to)&lt;br /&gt;
        {&lt;br /&gt;
            TextReader reader = new StreamReader(from);&lt;br /&gt;
            TextWriter writer = new StreamWriter(to);&lt;br /&gt;
            writer.WriteLine(reader.ReadToEnd());&lt;br /&gt;
            writer.Flush();&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    // Create a SoapExtensionAttribute for the SOAP Extension that can be&lt;br /&gt;
    // applied to an XML Web service method.&lt;br /&gt;
    [AttributeUsage(AttributeTargets.Method)]&lt;br /&gt;
    public class TraceExtensionAttribute : SoapExtensionAttribute&lt;br /&gt;
    {&lt;br /&gt;
 &lt;br /&gt;
        private string filename = @&amp;quot;C:\Users\Heiki Tamm\Documents\Õppematerjalid_2011\WebASPKohvikud\WebASPKohvikud\SoapLog.txt&amp;quot;;&lt;br /&gt;
        private int priority;&lt;br /&gt;
 &lt;br /&gt;
        public override Type ExtensionType&lt;br /&gt;
        {&lt;br /&gt;
            get { return typeof(TraceExtension); }&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        public override int Priority&lt;br /&gt;
        {&lt;br /&gt;
            get { return priority; }&lt;br /&gt;
            set { priority = value; }&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        public string Filename&lt;br /&gt;
        {&lt;br /&gt;
            get&lt;br /&gt;
            {&lt;br /&gt;
                return filename;&lt;br /&gt;
            }&lt;br /&gt;
            set&lt;br /&gt;
            {&lt;br /&gt;
                filename = value;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
// todo: &lt;br /&gt;
// from each soap header record query content &lt;br /&gt;
// (containing client, date, time, query ) into a DB&lt;br /&gt;
// for later reference for conducting any kind of &lt;br /&gt;
// applicable statistics and then generate stats :D !&lt;br /&gt;
// Proovin selliselt, et on lihtne statistika tabel:&lt;br /&gt;
// 1) meetod // välja kutsutava meetodi nimi&lt;br /&gt;
// 2) kuupäev // timestamp&lt;br /&gt;
// 3) callide arv // meetodi väljakutsimiste hulk&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==KLIENTRAKENDUS==&lt;br /&gt;
&lt;br /&gt;
===23. mai===&lt;br /&gt;
Mailis tegi kohvikute kuvamise ASP.NET rakenduse.&lt;br /&gt;
Kohvikud kuvatakse TreeView&#039;s &lt;br /&gt;
menüüde ja andmetega ning arvamustega kohvikute ja toitude ja jookide kohta.&lt;br /&gt;
&lt;br /&gt;
Samal lehel on kohvikuhuvilistele registreerimisvõimalus&lt;br /&gt;
ja sisselogimine.&lt;br /&gt;
&lt;br /&gt;
Kui on sisselogitud, saab lisada arvamusi.&lt;br /&gt;
Arvamuste lisamine on Ajax Extended Toolkiti controli&#039;ga &#039;Allways Visible ...&#039; tehtud, &lt;br /&gt;
&lt;br /&gt;
nii et mööda pikka TreeViewd alla kerides saab &lt;br /&gt;
lisada arvamust ilma ülesserva tagasi minemata.&lt;br /&gt;
&lt;br /&gt;
Arvamused ilmuvad kohe peale lisamist TreeView&#039;sse.&lt;br /&gt;
&lt;br /&gt;
TreeView&#039;sse tulevad andmed xml-failist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pooleli on veel kohvikute-poolne rakendus, kus omanik saab lisada ja kustutada kohvikuid, menüüsid ja toite-jooke, lisada teadaandeid.&lt;br /&gt;
&lt;br /&gt;
Pooleli on veel admini-rakendus, kus admin saab kasutajale määrata rolli, mis annab õigused kohviku-rakendusse sisse logida.&lt;/div&gt;</summary>
		<author><name>Mtoompuu</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Meeskond_%22H2%22&amp;diff=32569</id>
		<title>Meeskond &quot;H2&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Meeskond_%22H2%22&amp;diff=32569"/>
		<updated>2011-05-23T06:21:01Z</updated>

		<summary type="html">&lt;p&gt;Mtoompuu: /* 23. mai */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Kohviku menüüsüsteem==&lt;br /&gt;
===Projekt===&lt;br /&gt;
Kohvikute (esialgu ainult IT-Kohviku) menüüsüsteem, mis on jälgitav mobiilseadmetelt. Lisaväärtusena võimaldab anda pakutavale hinnanguid, otsuse langetamise hõlbustamiseks kommentaar:(see viimane funktsioon kipub vist &amp;quot;veebirakenduseks&amp;quot; muutuma)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Sihtplatvormid:&lt;br /&gt;
Windows Mobile, iOS, Android(kui leiame vabatahtlikud testijad)&lt;br /&gt;
&lt;br /&gt;
===Taustinfo===&lt;br /&gt;
Praegune IT-Kohviku menüü on käsitsi täidetav valge tahvel. Projekti eesmärgiks on parendada IT-Kohviku menüüsüsteemi ja teha see veebi kaudu kättesaadavaks, nii, et menüüsse saab lisada ka karniiri valiku. Standardmenüü puhul saab menüüs olla ka illustreeriv foto. Hetkemenüü ning hinnad ja lahtioleku ajad on samuti jälgitavad võrguühendust eviva mobiilseadme ekraanilt, hõlbustades sellega valikute tegemist.&lt;br /&gt;
&lt;br /&gt;
===Liikmed===&lt;br /&gt;
* Mailis Toompuu&lt;br /&gt;
* Henri Kroosmann&lt;br /&gt;
* Heiki Tamm&lt;br /&gt;
&lt;br /&gt;
==Sisu==&lt;br /&gt;
&lt;br /&gt;
===XML Data===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;menu&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name1&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;0&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name1&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item1&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item2&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item3&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;0&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;0&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount1&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;0&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;0&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot1&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name2&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;255&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name2&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item4&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item5&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item6&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;255&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;255&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount2&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;255&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;255&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot2&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name3&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;1&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name3&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item7&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item8&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item9&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;1&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;1&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount3&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;1&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;1&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot3&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
&amp;lt;/menu&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===XML Schema===&lt;br /&gt;
&lt;br /&gt;
Ülevaade Schema&#039;st. &amp;lt;br /&amp;gt;&lt;br /&gt;
[[File:XMLSchema_Capture_(optimized).png]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Ning sellele vastav kood.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xs:schema attributeFormDefault=&amp;quot;unqualified&amp;quot; elementFormDefault=&amp;quot;qualified&amp;quot; xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xs:element name=&amp;quot;menu&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;product&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;type&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;id&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;extras&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence minOccurs=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;item&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;price&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence minOccurs=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;int&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;frac&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element minOccurs=&amp;quot;0&amp;quot; name=&amp;quot;discount&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;vote&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;pos&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;neg&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;screenshot&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===XML Style===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;html&amp;gt;&lt;br /&gt;
      &amp;lt;head&amp;gt;&lt;br /&gt;
        &amp;lt;style type=&amp;quot;text/css&amp;quot;&amp;gt;&lt;br /&gt;
          html,body{margin:0;padding:0;font-family:Helvetica,Arial,sans-serif;font-size:14px;line-height:19px;color:#2c2c2c;}&lt;br /&gt;
          h1{margin:0;padding:25px 0 0;font-size:22px;line-height:25px;text-align:center;}&lt;br /&gt;
          h2{margin:0;padding:5px;font-size:16px;line-height:21px}&lt;br /&gt;
          span.discount{padding:0 0 0 5px;color:red;}&lt;br /&gt;
          table{margin:20px auto;padding:0;}&lt;br /&gt;
          th,td{padding:5px;border:1px solid #2c2c2c;vertical-align:top;text-align:left}&lt;br /&gt;
          th{font-weight:bold;background-color:#eee;}&lt;br /&gt;
          ul{margin:0;padding:0;list-style-type:none;}&lt;br /&gt;
        &amp;lt;/style&amp;gt;&lt;br /&gt;
      &amp;lt;/head&amp;gt;&lt;br /&gt;
      &amp;lt;body&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;Menüü&amp;lt;/h1&amp;gt;&lt;br /&gt;
        &amp;lt;table width=&amp;quot;800&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;200&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;100&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col witdh=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;150&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;tr&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Nimetus&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Lisandid&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Tüüp&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Hind&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Hinne / Hindajaid&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Pilt&amp;lt;/th&amp;gt;&lt;br /&gt;
          &amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
          &amp;lt;xsl:for-each select=&amp;quot;menu/product&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:sort select=&amp;quot;type/id&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:sort select=&amp;quot;name&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;th&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;name&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/th&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;extras/node()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;ul&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:for-each select=&amp;quot;extras/item&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;li&amp;gt;&lt;br /&gt;
                          &amp;lt;xsl:value-of select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;/li&amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
                    &amp;lt;/ul&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;td&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;type/name&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;price/node()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    €&amp;lt;xsl:value-of select=&amp;quot;price/int&amp;quot;/&amp;gt;.&amp;lt;xsl:value-of select=&amp;quot;price/frac&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:if test=&amp;quot;price/discount/text()&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;span class=&amp;quot;discount&amp;quot;&amp;gt;&lt;br /&gt;
                        (-&amp;lt;xsl:value-of select=&amp;quot;price/discount&amp;quot;/&amp;gt;%)&lt;br /&gt;
                      &amp;lt;/span&amp;gt;&lt;br /&gt;
                    &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:variable name=&amp;quot;p&amp;quot; select=&amp;quot;vote/pos&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:variable name=&amp;quot;n&amp;quot; select=&amp;quot;vote/neg&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;td&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$p - $n&amp;quot;/&amp;gt; / &amp;lt;xsl:value-of select=&amp;quot;$p + $n&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;screenshot/text()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;img src=&amp;quot;{screenshot}&amp;quot; alt=&amp;quot;&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;img src=&amp;quot;screenshots/default.png&amp;quot; alt=&amp;quot;No image&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
      &amp;lt;/body&amp;gt;&lt;br /&gt;
    &amp;lt;/html&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
Sisu ja stiilifaili koostöö http://henri.kroosmann.ee/kool/xml/index.xml &amp;lt;!--[http://henri.kroosmann.ee/kool/xml/index.xml]--&amp;gt;&lt;br /&gt;
==VEEBITEENUSED==&lt;br /&gt;
&lt;br /&gt;
===8. aprill===&lt;br /&gt;
Otsustame teha teenused kõikide kohvikute menüüde kohta.&lt;br /&gt;
&lt;br /&gt;
===11.-12. aprill===&lt;br /&gt;
Henri koostab tabelite loogika&lt;br /&gt;
&lt;br /&gt;
===13. aprill===&lt;br /&gt;
Mailis otsustab veebiteenused teha asmx-is [webmethod]-itega&lt;br /&gt;
===14. aprill===&lt;br /&gt;
Mailis hakkab veebiteenuseid tegema&lt;br /&gt;
===17. aprill===&lt;br /&gt;
Veebiteenused on valmis:&lt;br /&gt;
&lt;br /&gt;
*AnnaJoogiliikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaJoogitabelirida_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*AnnaJookideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaK6igiKohvikuteAndmeteNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyyIDed_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyyRida_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyydeNimekiri_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaMenyyLiikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaMenyydeNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaPromillideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToiduliikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToitudeNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToitutabelirida_toiduIDjargi &lt;br /&gt;
&lt;br /&gt;
*AnnaYheKohvikuAndmed_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*KustutaJookMenyyst &lt;br /&gt;
&lt;br /&gt;
*KustutaMenyy &lt;br /&gt;
&lt;br /&gt;
*KustutaKohvik &lt;br /&gt;
&lt;br /&gt;
*KustutaToitMenyyst &lt;br /&gt;
&lt;br /&gt;
*KysiYheKohvikuYheMenyyToitudeIDeed_menyyIDjargi &lt;br /&gt;
&lt;br /&gt;
*LisaJoogiLiik &lt;br /&gt;
&lt;br /&gt;
*LisaMenyyLiik &lt;br /&gt;
&lt;br /&gt;
*LisaPromill &lt;br /&gt;
&lt;br /&gt;
*LisaToiduLiik &lt;br /&gt;
&lt;br /&gt;
*SecurityAuthenticateUser &lt;br /&gt;
&lt;br /&gt;
*TOITJOOKmenyysRida_menyyIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedJoogileMenyys &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedKohvikule &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedToiduleMenyys &lt;br /&gt;
&lt;br /&gt;
*annaJoogiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiKIRJELDUS_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiKOMM_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiID_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiNIMI_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKasOnTaimeT_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKasutajaNIMI_Guidjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuLahtiolekuAjad_kohvikuIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuTeated &lt;br /&gt;
&lt;br /&gt;
*annaLinnaID_LinnaNimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaLinnaNIMI_LinnaIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaLinnad_maakonnaNIMEjargi &lt;br /&gt;
&lt;br /&gt;
*annaMaakonnaID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaMenyyLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaMenyyLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaPromill_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaPromilliID_promilliNrJargi &lt;br /&gt;
&lt;br /&gt;
*annaPromilliNR_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduKIRJELDUS_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduKOMMENTAAR_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiNIMETUS_toiduIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaYheKohvikuMenyyd_kohvikuNIMEjargi &lt;br /&gt;
&lt;br /&gt;
*autendiKasutajaParooliJargi &lt;br /&gt;
&lt;br /&gt;
*k6igiKohvikuteMenyyd &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusJoogiKohta &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusKohvikuKohta &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusToiduKohta &lt;br /&gt;
&lt;br /&gt;
*lisaJookMenyysse &lt;br /&gt;
&lt;br /&gt;
*lisaToitMenyysse &lt;br /&gt;
&lt;br /&gt;
*lisaUusJook &lt;br /&gt;
&lt;br /&gt;
*lisaUusKohvik &lt;br /&gt;
&lt;br /&gt;
*lisaUusLahtiolekuAeg &lt;br /&gt;
&lt;br /&gt;
*lisaUusMenyy &lt;br /&gt;
&lt;br /&gt;
*lisaUusTeadaanne &lt;br /&gt;
&lt;br /&gt;
*lisaUusToit &lt;br /&gt;
&lt;br /&gt;
*nadalapaevaID_paevaNimetuseJargi &lt;br /&gt;
&lt;br /&gt;
*nadalapaevaNIMETUS_paevaIDjargi&lt;br /&gt;
&lt;br /&gt;
*Registreeru&lt;br /&gt;
&lt;br /&gt;
*LogiSisseTavakasutajana&lt;br /&gt;
&lt;br /&gt;
*LogiSisseKohvikuna&lt;br /&gt;
&lt;br /&gt;
===22.aprill===&lt;br /&gt;
Toimus koosolek&lt;br /&gt;
*Henri lubas meetodite turvamise teha.&lt;br /&gt;
*Heiki lubas statistika teha meetodite kohta.&lt;br /&gt;
&lt;br /&gt;
===Allikfail===&lt;br /&gt;
Allikfail: http://www.p2ike.com/CSharp/KohvikudVeebiteenus.rar&lt;br /&gt;
&lt;br /&gt;
Meetod &#039;k6igiKohvikuteMenyyd&#039; kuvab sellise xml struktuuri: http://www.p2ike.com/CSharp/k6igiKohvikuteMenyyd.xml&lt;br /&gt;
&lt;br /&gt;
Toidud ja joogid sorteeritakse liikide kaupa.&lt;br /&gt;
&lt;br /&gt;
===Andmetabelid===&lt;br /&gt;
[[File:andmetabelid.jpg|777px|thumb|left|andmemudel]]&lt;br /&gt;
===Statistika===&lt;br /&gt;
 using System;&lt;br /&gt;
using System.Web.Services;&lt;br /&gt;
using System.Web.Services.Protocols;&lt;br /&gt;
using System.IO;&lt;br /&gt;
using System.Net;&lt;br /&gt;
 &lt;br /&gt;
// Define a SOAP Extension that traces the SOAP request and SOAP&lt;br /&gt;
// response for the XML Web service method the SOAP extension is&lt;br /&gt;
// applied to. &lt;br /&gt;
 &lt;br /&gt;
namespace WebASPKohvikud&lt;br /&gt;
{&lt;br /&gt;
    public class TraceExtension : SoapExtension&lt;br /&gt;
    {&lt;br /&gt;
        Stream oldStream;&lt;br /&gt;
        Stream newStream;&lt;br /&gt;
        string filename;&lt;br /&gt;
 &lt;br /&gt;
        // Save the Stream representing the SOAP request or SOAP response into&lt;br /&gt;
        // a local memory buffer.&lt;br /&gt;
        public override Stream ChainStream(Stream stream)&lt;br /&gt;
        {&lt;br /&gt;
            oldStream = stream;&lt;br /&gt;
            newStream = new MemoryStream();&lt;br /&gt;
            return newStream;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        // When the SOAP extension is accessed for the first time, the XML Web&lt;br /&gt;
        // service method it is applied to is accessed to store the file&lt;br /&gt;
        // name passed in, using the corresponding SoapExtensionAttribute.	&lt;br /&gt;
        public override object GetInitializer(LogicalMethodInfo methodInfo, SoapExtensionAttribute attribute)&lt;br /&gt;
        {&lt;br /&gt;
            return ((TraceExtensionAttribute)attribute).Filename;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        // The SOAP extension was configured to run using a configuration file&lt;br /&gt;
        // instead of an attribute applied to a specific XML Web service&lt;br /&gt;
        // method.&lt;br /&gt;
        public override object GetInitializer(Type WebServiceType)&lt;br /&gt;
        {&lt;br /&gt;
            // Return a file name to log the trace information to, based on the&lt;br /&gt;
            // type.&lt;br /&gt;
            return &amp;quot;C:\\&amp;quot; + WebServiceType.FullName + &amp;quot;.log&amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        // Receive the file name stored by GetInitializer and store it in a&lt;br /&gt;
        // member variable for this specific instance.&lt;br /&gt;
        public override void Initialize(object initializer)&lt;br /&gt;
        {&lt;br /&gt;
            filename = (string)initializer;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        //  If the SoapMessageStage is such that the SoapRequest or&lt;br /&gt;
        //  SoapResponse is still in the SOAP format to be sent or received,&lt;br /&gt;
        //  save it out to a file.&lt;br /&gt;
        public override void ProcessMessage(SoapMessage message)&lt;br /&gt;
        {&lt;br /&gt;
            switch (message.Stage)&lt;br /&gt;
            {&lt;br /&gt;
                case SoapMessageStage.BeforeSerialize:&lt;br /&gt;
                    break;&lt;br /&gt;
                case SoapMessageStage.AfterSerialize:&lt;br /&gt;
                    WriteOutput(message);&lt;br /&gt;
                    break;&lt;br /&gt;
                case SoapMessageStage.BeforeDeserialize:&lt;br /&gt;
                    WriteInput(message);&lt;br /&gt;
                    break;&lt;br /&gt;
                case SoapMessageStage.AfterDeserialize:&lt;br /&gt;
                    break;&lt;br /&gt;
                default:&lt;br /&gt;
                    throw new Exception(&amp;quot;invalid stage&amp;quot;);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        public void WriteOutput(SoapMessage message)&lt;br /&gt;
        {&lt;br /&gt;
            newStream.Position = 0;&lt;br /&gt;
            FileStream fs = new FileStream(filename, FileMode.Append,&lt;br /&gt;
                FileAccess.Write);&lt;br /&gt;
            StreamWriter w = new StreamWriter(fs);&lt;br /&gt;
 &lt;br /&gt;
            string soapString = (message is SoapServerMessage) ? &amp;quot;SoapResponse&amp;quot; : &amp;quot;SoapRequest&amp;quot;;&lt;br /&gt;
            w.WriteLine(&amp;quot;-----&amp;quot; + soapString + &amp;quot; at &amp;quot; + DateTime.Now);&lt;br /&gt;
            w.Flush();&lt;br /&gt;
            Copy(newStream, fs);&lt;br /&gt;
            w.Close();&lt;br /&gt;
            newStream.Position = 0;&lt;br /&gt;
            Copy(newStream, oldStream);&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        public void WriteInput(SoapMessage message)&lt;br /&gt;
        {&lt;br /&gt;
            Copy(oldStream, newStream);&lt;br /&gt;
            FileStream fs = new FileStream(filename, FileMode.Append,&lt;br /&gt;
                FileAccess.Write);&lt;br /&gt;
            StreamWriter w = new StreamWriter(fs);&lt;br /&gt;
 &lt;br /&gt;
            string soapString = (message is SoapServerMessage) ?&lt;br /&gt;
                &amp;quot;SoapRequest&amp;quot; : &amp;quot;SoapResponse&amp;quot;;&lt;br /&gt;
            w.WriteLine(&amp;quot;-----&amp;quot; + soapString +&lt;br /&gt;
                &amp;quot; at &amp;quot; + DateTime.Now);&lt;br /&gt;
            w.Flush();&lt;br /&gt;
            newStream.Position = 0;&lt;br /&gt;
            Copy(newStream, fs);&lt;br /&gt;
            w.Close();&lt;br /&gt;
            newStream.Position = 0;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        void Copy(Stream from, Stream to)&lt;br /&gt;
        {&lt;br /&gt;
            TextReader reader = new StreamReader(from);&lt;br /&gt;
            TextWriter writer = new StreamWriter(to);&lt;br /&gt;
            writer.WriteLine(reader.ReadToEnd());&lt;br /&gt;
            writer.Flush();&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    // Create a SoapExtensionAttribute for the SOAP Extension that can be&lt;br /&gt;
    // applied to an XML Web service method.&lt;br /&gt;
    [AttributeUsage(AttributeTargets.Method)]&lt;br /&gt;
    public class TraceExtensionAttribute : SoapExtensionAttribute&lt;br /&gt;
    {&lt;br /&gt;
 &lt;br /&gt;
        private string filename = @&amp;quot;C:\Users\Heiki Tamm\Documents\Õppematerjalid_2011\WebASPKohvikud\WebASPKohvikud\SoapLog.txt&amp;quot;;&lt;br /&gt;
        private int priority;&lt;br /&gt;
 &lt;br /&gt;
        public override Type ExtensionType&lt;br /&gt;
        {&lt;br /&gt;
            get { return typeof(TraceExtension); }&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        public override int Priority&lt;br /&gt;
        {&lt;br /&gt;
            get { return priority; }&lt;br /&gt;
            set { priority = value; }&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        public string Filename&lt;br /&gt;
        {&lt;br /&gt;
            get&lt;br /&gt;
            {&lt;br /&gt;
                return filename;&lt;br /&gt;
            }&lt;br /&gt;
            set&lt;br /&gt;
            {&lt;br /&gt;
                filename = value;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
// todo: &lt;br /&gt;
// from each soap header record query content &lt;br /&gt;
// (containing client, date, time, query ) into a DB&lt;br /&gt;
// for later reference for conducting any kind of &lt;br /&gt;
// applicable statistics and then generate stats :D !&lt;br /&gt;
// Proovin selliselt, et on lihtne statistika tabel:&lt;br /&gt;
// 1) meetod // välja kutsutava meetodi nimi&lt;br /&gt;
// 2) kuupäev // timestamp&lt;br /&gt;
// 3) callide arv // meetodi väljakutsimiste hulk&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==KLIENTRAKENDUS==&lt;br /&gt;
&lt;br /&gt;
===23. mai===&lt;br /&gt;
Mailis tegi kohvikute kuvamise ASP.NET rakenduse.&lt;br /&gt;
Kohvikud kuvatakse TreeView&#039;s &lt;br /&gt;
menüüde ja andmetega ning arvamustega kohvikute ja toitude ja jookide kohta.&lt;br /&gt;
&lt;br /&gt;
Samal lehel on kohvikuhuvilistele registreerimisvõimalus&lt;br /&gt;
ja sisselogimine.&lt;br /&gt;
&lt;br /&gt;
Kui on sisselogitud, saab lisada arvamusi.&lt;br /&gt;
Arvamuste lisamine on Ajax Extended Toolkiti controli&#039;ga &#039;Allways Visible ...&#039; tehtud, &lt;br /&gt;
&lt;br /&gt;
nii et mööda pikka TreeViewd alla kerides saab &lt;br /&gt;
lisada arvamust ilma ülesserva tagasi minemata.&lt;br /&gt;
&lt;br /&gt;
Arvamused ilmuvad kohe peale lisamist TreeView&#039;sse.&lt;br /&gt;
&lt;br /&gt;
TreeView&#039;sse tulevad andmed xml-failist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pooleli on veel kohvikute-poolne rakendus, kus omanik saab lisada ja kustutada kohvikuid, menüüsid ja toite-joke, lisada teadaandeid.&lt;br /&gt;
&lt;br /&gt;
Pooleli on veel admini-rakendus, kus admin saab kasutajale määrata rolli, mis annab õigused kohviku-rakendusse sisse logida.&lt;/div&gt;</summary>
		<author><name>Mtoompuu</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Meeskond_%22H2%22&amp;diff=32568</id>
		<title>Meeskond &quot;H2&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Meeskond_%22H2%22&amp;diff=32568"/>
		<updated>2011-05-23T06:18:20Z</updated>

		<summary type="html">&lt;p&gt;Mtoompuu: /* 23. mai */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Kohviku menüüsüsteem==&lt;br /&gt;
===Projekt===&lt;br /&gt;
Kohvikute (esialgu ainult IT-Kohviku) menüüsüsteem, mis on jälgitav mobiilseadmetelt. Lisaväärtusena võimaldab anda pakutavale hinnanguid, otsuse langetamise hõlbustamiseks kommentaar:(see viimane funktsioon kipub vist &amp;quot;veebirakenduseks&amp;quot; muutuma)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Sihtplatvormid:&lt;br /&gt;
Windows Mobile, iOS, Android(kui leiame vabatahtlikud testijad)&lt;br /&gt;
&lt;br /&gt;
===Taustinfo===&lt;br /&gt;
Praegune IT-Kohviku menüü on käsitsi täidetav valge tahvel. Projekti eesmärgiks on parendada IT-Kohviku menüüsüsteemi ja teha see veebi kaudu kättesaadavaks, nii, et menüüsse saab lisada ka karniiri valiku. Standardmenüü puhul saab menüüs olla ka illustreeriv foto. Hetkemenüü ning hinnad ja lahtioleku ajad on samuti jälgitavad võrguühendust eviva mobiilseadme ekraanilt, hõlbustades sellega valikute tegemist.&lt;br /&gt;
&lt;br /&gt;
===Liikmed===&lt;br /&gt;
* Mailis Toompuu&lt;br /&gt;
* Henri Kroosmann&lt;br /&gt;
* Heiki Tamm&lt;br /&gt;
&lt;br /&gt;
==Sisu==&lt;br /&gt;
&lt;br /&gt;
===XML Data===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;menu&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name1&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;0&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name1&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item1&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item2&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item3&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;0&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;0&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount1&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;0&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;0&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot1&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name2&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;255&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name2&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item4&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item5&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item6&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;255&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;255&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount2&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;255&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;255&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot2&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name3&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;1&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name3&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item7&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item8&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item9&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;1&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;1&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount3&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;1&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;1&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot3&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
&amp;lt;/menu&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===XML Schema===&lt;br /&gt;
&lt;br /&gt;
Ülevaade Schema&#039;st. &amp;lt;br /&amp;gt;&lt;br /&gt;
[[File:XMLSchema_Capture_(optimized).png]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Ning sellele vastav kood.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xs:schema attributeFormDefault=&amp;quot;unqualified&amp;quot; elementFormDefault=&amp;quot;qualified&amp;quot; xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xs:element name=&amp;quot;menu&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;product&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;type&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;id&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;extras&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence minOccurs=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;item&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;price&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence minOccurs=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;int&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;frac&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element minOccurs=&amp;quot;0&amp;quot; name=&amp;quot;discount&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;vote&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;pos&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;neg&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;screenshot&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===XML Style===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;html&amp;gt;&lt;br /&gt;
      &amp;lt;head&amp;gt;&lt;br /&gt;
        &amp;lt;style type=&amp;quot;text/css&amp;quot;&amp;gt;&lt;br /&gt;
          html,body{margin:0;padding:0;font-family:Helvetica,Arial,sans-serif;font-size:14px;line-height:19px;color:#2c2c2c;}&lt;br /&gt;
          h1{margin:0;padding:25px 0 0;font-size:22px;line-height:25px;text-align:center;}&lt;br /&gt;
          h2{margin:0;padding:5px;font-size:16px;line-height:21px}&lt;br /&gt;
          span.discount{padding:0 0 0 5px;color:red;}&lt;br /&gt;
          table{margin:20px auto;padding:0;}&lt;br /&gt;
          th,td{padding:5px;border:1px solid #2c2c2c;vertical-align:top;text-align:left}&lt;br /&gt;
          th{font-weight:bold;background-color:#eee;}&lt;br /&gt;
          ul{margin:0;padding:0;list-style-type:none;}&lt;br /&gt;
        &amp;lt;/style&amp;gt;&lt;br /&gt;
      &amp;lt;/head&amp;gt;&lt;br /&gt;
      &amp;lt;body&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;Menüü&amp;lt;/h1&amp;gt;&lt;br /&gt;
        &amp;lt;table width=&amp;quot;800&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;200&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;100&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col witdh=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;150&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;tr&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Nimetus&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Lisandid&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Tüüp&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Hind&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Hinne / Hindajaid&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Pilt&amp;lt;/th&amp;gt;&lt;br /&gt;
          &amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
          &amp;lt;xsl:for-each select=&amp;quot;menu/product&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:sort select=&amp;quot;type/id&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:sort select=&amp;quot;name&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;th&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;name&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/th&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;extras/node()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;ul&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:for-each select=&amp;quot;extras/item&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;li&amp;gt;&lt;br /&gt;
                          &amp;lt;xsl:value-of select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;/li&amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
                    &amp;lt;/ul&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;td&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;type/name&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;price/node()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    €&amp;lt;xsl:value-of select=&amp;quot;price/int&amp;quot;/&amp;gt;.&amp;lt;xsl:value-of select=&amp;quot;price/frac&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:if test=&amp;quot;price/discount/text()&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;span class=&amp;quot;discount&amp;quot;&amp;gt;&lt;br /&gt;
                        (-&amp;lt;xsl:value-of select=&amp;quot;price/discount&amp;quot;/&amp;gt;%)&lt;br /&gt;
                      &amp;lt;/span&amp;gt;&lt;br /&gt;
                    &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:variable name=&amp;quot;p&amp;quot; select=&amp;quot;vote/pos&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:variable name=&amp;quot;n&amp;quot; select=&amp;quot;vote/neg&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;td&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$p - $n&amp;quot;/&amp;gt; / &amp;lt;xsl:value-of select=&amp;quot;$p + $n&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;screenshot/text()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;img src=&amp;quot;{screenshot}&amp;quot; alt=&amp;quot;&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;img src=&amp;quot;screenshots/default.png&amp;quot; alt=&amp;quot;No image&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
      &amp;lt;/body&amp;gt;&lt;br /&gt;
    &amp;lt;/html&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
Sisu ja stiilifaili koostöö http://henri.kroosmann.ee/kool/xml/index.xml &amp;lt;!--[http://henri.kroosmann.ee/kool/xml/index.xml]--&amp;gt;&lt;br /&gt;
==VEEBITEENUSED==&lt;br /&gt;
&lt;br /&gt;
===8. aprill===&lt;br /&gt;
Otsustame teha teenused kõikide kohvikute menüüde kohta.&lt;br /&gt;
&lt;br /&gt;
===11.-12. aprill===&lt;br /&gt;
Henri koostab tabelite loogika&lt;br /&gt;
&lt;br /&gt;
===13. aprill===&lt;br /&gt;
Mailis otsustab veebiteenused teha asmx-is [webmethod]-itega&lt;br /&gt;
===14. aprill===&lt;br /&gt;
Mailis hakkab veebiteenuseid tegema&lt;br /&gt;
===17. aprill===&lt;br /&gt;
Veebiteenused on valmis:&lt;br /&gt;
&lt;br /&gt;
*AnnaJoogiliikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaJoogitabelirida_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*AnnaJookideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaK6igiKohvikuteAndmeteNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyyIDed_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyyRida_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyydeNimekiri_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaMenyyLiikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaMenyydeNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaPromillideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToiduliikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToitudeNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToitutabelirida_toiduIDjargi &lt;br /&gt;
&lt;br /&gt;
*AnnaYheKohvikuAndmed_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*KustutaJookMenyyst &lt;br /&gt;
&lt;br /&gt;
*KustutaMenyy &lt;br /&gt;
&lt;br /&gt;
*KustutaKohvik &lt;br /&gt;
&lt;br /&gt;
*KustutaToitMenyyst &lt;br /&gt;
&lt;br /&gt;
*KysiYheKohvikuYheMenyyToitudeIDeed_menyyIDjargi &lt;br /&gt;
&lt;br /&gt;
*LisaJoogiLiik &lt;br /&gt;
&lt;br /&gt;
*LisaMenyyLiik &lt;br /&gt;
&lt;br /&gt;
*LisaPromill &lt;br /&gt;
&lt;br /&gt;
*LisaToiduLiik &lt;br /&gt;
&lt;br /&gt;
*SecurityAuthenticateUser &lt;br /&gt;
&lt;br /&gt;
*TOITJOOKmenyysRida_menyyIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedJoogileMenyys &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedKohvikule &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedToiduleMenyys &lt;br /&gt;
&lt;br /&gt;
*annaJoogiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiKIRJELDUS_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiKOMM_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiID_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiNIMI_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKasOnTaimeT_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKasutajaNIMI_Guidjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuLahtiolekuAjad_kohvikuIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuTeated &lt;br /&gt;
&lt;br /&gt;
*annaLinnaID_LinnaNimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaLinnaNIMI_LinnaIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaLinnad_maakonnaNIMEjargi &lt;br /&gt;
&lt;br /&gt;
*annaMaakonnaID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaMenyyLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaMenyyLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaPromill_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaPromilliID_promilliNrJargi &lt;br /&gt;
&lt;br /&gt;
*annaPromilliNR_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduKIRJELDUS_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduKOMMENTAAR_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiNIMETUS_toiduIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaYheKohvikuMenyyd_kohvikuNIMEjargi &lt;br /&gt;
&lt;br /&gt;
*autendiKasutajaParooliJargi &lt;br /&gt;
&lt;br /&gt;
*k6igiKohvikuteMenyyd &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusJoogiKohta &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusKohvikuKohta &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusToiduKohta &lt;br /&gt;
&lt;br /&gt;
*lisaJookMenyysse &lt;br /&gt;
&lt;br /&gt;
*lisaToitMenyysse &lt;br /&gt;
&lt;br /&gt;
*lisaUusJook &lt;br /&gt;
&lt;br /&gt;
*lisaUusKohvik &lt;br /&gt;
&lt;br /&gt;
*lisaUusLahtiolekuAeg &lt;br /&gt;
&lt;br /&gt;
*lisaUusMenyy &lt;br /&gt;
&lt;br /&gt;
*lisaUusTeadaanne &lt;br /&gt;
&lt;br /&gt;
*lisaUusToit &lt;br /&gt;
&lt;br /&gt;
*nadalapaevaID_paevaNimetuseJargi &lt;br /&gt;
&lt;br /&gt;
*nadalapaevaNIMETUS_paevaIDjargi&lt;br /&gt;
&lt;br /&gt;
*Registreeru&lt;br /&gt;
&lt;br /&gt;
*LogiSisseTavakasutajana&lt;br /&gt;
&lt;br /&gt;
*LogiSisseKohvikuna&lt;br /&gt;
&lt;br /&gt;
===22.aprill===&lt;br /&gt;
Toimus koosolek&lt;br /&gt;
*Henri lubas meetodite turvamise teha.&lt;br /&gt;
*Heiki lubas statistika teha meetodite kohta.&lt;br /&gt;
&lt;br /&gt;
===Allikfail===&lt;br /&gt;
Allikfail: http://www.p2ike.com/CSharp/KohvikudVeebiteenus.rar&lt;br /&gt;
&lt;br /&gt;
Meetod &#039;k6igiKohvikuteMenyyd&#039; kuvab sellise xml struktuuri: http://www.p2ike.com/CSharp/k6igiKohvikuteMenyyd.xml&lt;br /&gt;
&lt;br /&gt;
Toidud ja joogid sorteeritakse liikide kaupa.&lt;br /&gt;
&lt;br /&gt;
===Andmetabelid===&lt;br /&gt;
[[File:andmetabelid.jpg|777px|thumb|left|andmemudel]]&lt;br /&gt;
===Statistika===&lt;br /&gt;
 using System;&lt;br /&gt;
using System.Web.Services;&lt;br /&gt;
using System.Web.Services.Protocols;&lt;br /&gt;
using System.IO;&lt;br /&gt;
using System.Net;&lt;br /&gt;
 &lt;br /&gt;
// Define a SOAP Extension that traces the SOAP request and SOAP&lt;br /&gt;
// response for the XML Web service method the SOAP extension is&lt;br /&gt;
// applied to. &lt;br /&gt;
 &lt;br /&gt;
namespace WebASPKohvikud&lt;br /&gt;
{&lt;br /&gt;
    public class TraceExtension : SoapExtension&lt;br /&gt;
    {&lt;br /&gt;
        Stream oldStream;&lt;br /&gt;
        Stream newStream;&lt;br /&gt;
        string filename;&lt;br /&gt;
 &lt;br /&gt;
        // Save the Stream representing the SOAP request or SOAP response into&lt;br /&gt;
        // a local memory buffer.&lt;br /&gt;
        public override Stream ChainStream(Stream stream)&lt;br /&gt;
        {&lt;br /&gt;
            oldStream = stream;&lt;br /&gt;
            newStream = new MemoryStream();&lt;br /&gt;
            return newStream;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        // When the SOAP extension is accessed for the first time, the XML Web&lt;br /&gt;
        // service method it is applied to is accessed to store the file&lt;br /&gt;
        // name passed in, using the corresponding SoapExtensionAttribute.	&lt;br /&gt;
        public override object GetInitializer(LogicalMethodInfo methodInfo, SoapExtensionAttribute attribute)&lt;br /&gt;
        {&lt;br /&gt;
            return ((TraceExtensionAttribute)attribute).Filename;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        // The SOAP extension was configured to run using a configuration file&lt;br /&gt;
        // instead of an attribute applied to a specific XML Web service&lt;br /&gt;
        // method.&lt;br /&gt;
        public override object GetInitializer(Type WebServiceType)&lt;br /&gt;
        {&lt;br /&gt;
            // Return a file name to log the trace information to, based on the&lt;br /&gt;
            // type.&lt;br /&gt;
            return &amp;quot;C:\\&amp;quot; + WebServiceType.FullName + &amp;quot;.log&amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        // Receive the file name stored by GetInitializer and store it in a&lt;br /&gt;
        // member variable for this specific instance.&lt;br /&gt;
        public override void Initialize(object initializer)&lt;br /&gt;
        {&lt;br /&gt;
            filename = (string)initializer;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        //  If the SoapMessageStage is such that the SoapRequest or&lt;br /&gt;
        //  SoapResponse is still in the SOAP format to be sent or received,&lt;br /&gt;
        //  save it out to a file.&lt;br /&gt;
        public override void ProcessMessage(SoapMessage message)&lt;br /&gt;
        {&lt;br /&gt;
            switch (message.Stage)&lt;br /&gt;
            {&lt;br /&gt;
                case SoapMessageStage.BeforeSerialize:&lt;br /&gt;
                    break;&lt;br /&gt;
                case SoapMessageStage.AfterSerialize:&lt;br /&gt;
                    WriteOutput(message);&lt;br /&gt;
                    break;&lt;br /&gt;
                case SoapMessageStage.BeforeDeserialize:&lt;br /&gt;
                    WriteInput(message);&lt;br /&gt;
                    break;&lt;br /&gt;
                case SoapMessageStage.AfterDeserialize:&lt;br /&gt;
                    break;&lt;br /&gt;
                default:&lt;br /&gt;
                    throw new Exception(&amp;quot;invalid stage&amp;quot;);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        public void WriteOutput(SoapMessage message)&lt;br /&gt;
        {&lt;br /&gt;
            newStream.Position = 0;&lt;br /&gt;
            FileStream fs = new FileStream(filename, FileMode.Append,&lt;br /&gt;
                FileAccess.Write);&lt;br /&gt;
            StreamWriter w = new StreamWriter(fs);&lt;br /&gt;
 &lt;br /&gt;
            string soapString = (message is SoapServerMessage) ? &amp;quot;SoapResponse&amp;quot; : &amp;quot;SoapRequest&amp;quot;;&lt;br /&gt;
            w.WriteLine(&amp;quot;-----&amp;quot; + soapString + &amp;quot; at &amp;quot; + DateTime.Now);&lt;br /&gt;
            w.Flush();&lt;br /&gt;
            Copy(newStream, fs);&lt;br /&gt;
            w.Close();&lt;br /&gt;
            newStream.Position = 0;&lt;br /&gt;
            Copy(newStream, oldStream);&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        public void WriteInput(SoapMessage message)&lt;br /&gt;
        {&lt;br /&gt;
            Copy(oldStream, newStream);&lt;br /&gt;
            FileStream fs = new FileStream(filename, FileMode.Append,&lt;br /&gt;
                FileAccess.Write);&lt;br /&gt;
            StreamWriter w = new StreamWriter(fs);&lt;br /&gt;
 &lt;br /&gt;
            string soapString = (message is SoapServerMessage) ?&lt;br /&gt;
                &amp;quot;SoapRequest&amp;quot; : &amp;quot;SoapResponse&amp;quot;;&lt;br /&gt;
            w.WriteLine(&amp;quot;-----&amp;quot; + soapString +&lt;br /&gt;
                &amp;quot; at &amp;quot; + DateTime.Now);&lt;br /&gt;
            w.Flush();&lt;br /&gt;
            newStream.Position = 0;&lt;br /&gt;
            Copy(newStream, fs);&lt;br /&gt;
            w.Close();&lt;br /&gt;
            newStream.Position = 0;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        void Copy(Stream from, Stream to)&lt;br /&gt;
        {&lt;br /&gt;
            TextReader reader = new StreamReader(from);&lt;br /&gt;
            TextWriter writer = new StreamWriter(to);&lt;br /&gt;
            writer.WriteLine(reader.ReadToEnd());&lt;br /&gt;
            writer.Flush();&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    // Create a SoapExtensionAttribute for the SOAP Extension that can be&lt;br /&gt;
    // applied to an XML Web service method.&lt;br /&gt;
    [AttributeUsage(AttributeTargets.Method)]&lt;br /&gt;
    public class TraceExtensionAttribute : SoapExtensionAttribute&lt;br /&gt;
    {&lt;br /&gt;
 &lt;br /&gt;
        private string filename = @&amp;quot;C:\Users\Heiki Tamm\Documents\Õppematerjalid_2011\WebASPKohvikud\WebASPKohvikud\SoapLog.txt&amp;quot;;&lt;br /&gt;
        private int priority;&lt;br /&gt;
 &lt;br /&gt;
        public override Type ExtensionType&lt;br /&gt;
        {&lt;br /&gt;
            get { return typeof(TraceExtension); }&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        public override int Priority&lt;br /&gt;
        {&lt;br /&gt;
            get { return priority; }&lt;br /&gt;
            set { priority = value; }&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        public string Filename&lt;br /&gt;
        {&lt;br /&gt;
            get&lt;br /&gt;
            {&lt;br /&gt;
                return filename;&lt;br /&gt;
            }&lt;br /&gt;
            set&lt;br /&gt;
            {&lt;br /&gt;
                filename = value;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
// todo: &lt;br /&gt;
// from each soap header record query content &lt;br /&gt;
// (containing client, date, time, query ) into a DB&lt;br /&gt;
// for later reference for conducting any kind of &lt;br /&gt;
// applicable statistics and then generate stats :D !&lt;br /&gt;
// Proovin selliselt, et on lihtne statistika tabel:&lt;br /&gt;
// 1) meetod // välja kutsutava meetodi nimi&lt;br /&gt;
// 2) kuupäev // timestamp&lt;br /&gt;
// 3) callide arv // meetodi väljakutsimiste hulk&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==KLIENTRAKENDUS==&lt;br /&gt;
&lt;br /&gt;
===23. mai===&lt;br /&gt;
Mailis tegi kohvikute kuvamise ASP.NET rakenduse.&lt;br /&gt;
Kohvikud kuvatakse TreeView&#039;s &lt;br /&gt;
menüüde ja andmetega ning arvamustega kohvikute ja toitude ja jookide kohta.&lt;br /&gt;
&lt;br /&gt;
Samal lehel on kohvikuhuvilistele registreerimisvõimalus&lt;br /&gt;
ja sisselogimine.&lt;br /&gt;
&lt;br /&gt;
Kui on sisselogitud, saab lisada arvamusi.&lt;br /&gt;
Arvamuste lisamine on Ajax Extended Toolkiti controli&#039;ga &#039;Allways Visible ...&#039; tehtud, &lt;br /&gt;
&lt;br /&gt;
nii et mööda pikka TreeViewd alla kerides saab &lt;br /&gt;
lisada arvamust ilma ülesserva tagasi minemata.&lt;br /&gt;
&lt;br /&gt;
Arvamused ilmuvad kohe peale lisamist TreeView&#039;sse.&lt;br /&gt;
&lt;br /&gt;
TreeView&#039;sse tulevad andmed xml-failist.&lt;/div&gt;</summary>
		<author><name>Mtoompuu</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Meeskond_%22H2%22&amp;diff=32567</id>
		<title>Meeskond &quot;H2&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Meeskond_%22H2%22&amp;diff=32567"/>
		<updated>2011-05-23T06:13:51Z</updated>

		<summary type="html">&lt;p&gt;Mtoompuu: /* 23. mai */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Kohviku menüüsüsteem==&lt;br /&gt;
===Projekt===&lt;br /&gt;
Kohvikute (esialgu ainult IT-Kohviku) menüüsüsteem, mis on jälgitav mobiilseadmetelt. Lisaväärtusena võimaldab anda pakutavale hinnanguid, otsuse langetamise hõlbustamiseks kommentaar:(see viimane funktsioon kipub vist &amp;quot;veebirakenduseks&amp;quot; muutuma)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Sihtplatvormid:&lt;br /&gt;
Windows Mobile, iOS, Android(kui leiame vabatahtlikud testijad)&lt;br /&gt;
&lt;br /&gt;
===Taustinfo===&lt;br /&gt;
Praegune IT-Kohviku menüü on käsitsi täidetav valge tahvel. Projekti eesmärgiks on parendada IT-Kohviku menüüsüsteemi ja teha see veebi kaudu kättesaadavaks, nii, et menüüsse saab lisada ka karniiri valiku. Standardmenüü puhul saab menüüs olla ka illustreeriv foto. Hetkemenüü ning hinnad ja lahtioleku ajad on samuti jälgitavad võrguühendust eviva mobiilseadme ekraanilt, hõlbustades sellega valikute tegemist.&lt;br /&gt;
&lt;br /&gt;
===Liikmed===&lt;br /&gt;
* Mailis Toompuu&lt;br /&gt;
* Henri Kroosmann&lt;br /&gt;
* Heiki Tamm&lt;br /&gt;
&lt;br /&gt;
==Sisu==&lt;br /&gt;
&lt;br /&gt;
===XML Data===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;menu&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name1&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;0&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name1&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item1&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item2&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item3&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;0&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;0&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount1&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;0&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;0&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot1&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name2&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;255&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name2&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item4&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item5&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item6&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;255&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;255&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount2&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;255&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;255&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot2&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name3&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;1&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name3&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item7&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item8&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item9&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;1&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;1&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount3&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;1&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;1&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot3&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
&amp;lt;/menu&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===XML Schema===&lt;br /&gt;
&lt;br /&gt;
Ülevaade Schema&#039;st. &amp;lt;br /&amp;gt;&lt;br /&gt;
[[File:XMLSchema_Capture_(optimized).png]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Ning sellele vastav kood.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xs:schema attributeFormDefault=&amp;quot;unqualified&amp;quot; elementFormDefault=&amp;quot;qualified&amp;quot; xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xs:element name=&amp;quot;menu&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;product&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;type&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;id&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;extras&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence minOccurs=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;item&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;price&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence minOccurs=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;int&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;frac&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element minOccurs=&amp;quot;0&amp;quot; name=&amp;quot;discount&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;vote&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;pos&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;neg&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;screenshot&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===XML Style===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;html&amp;gt;&lt;br /&gt;
      &amp;lt;head&amp;gt;&lt;br /&gt;
        &amp;lt;style type=&amp;quot;text/css&amp;quot;&amp;gt;&lt;br /&gt;
          html,body{margin:0;padding:0;font-family:Helvetica,Arial,sans-serif;font-size:14px;line-height:19px;color:#2c2c2c;}&lt;br /&gt;
          h1{margin:0;padding:25px 0 0;font-size:22px;line-height:25px;text-align:center;}&lt;br /&gt;
          h2{margin:0;padding:5px;font-size:16px;line-height:21px}&lt;br /&gt;
          span.discount{padding:0 0 0 5px;color:red;}&lt;br /&gt;
          table{margin:20px auto;padding:0;}&lt;br /&gt;
          th,td{padding:5px;border:1px solid #2c2c2c;vertical-align:top;text-align:left}&lt;br /&gt;
          th{font-weight:bold;background-color:#eee;}&lt;br /&gt;
          ul{margin:0;padding:0;list-style-type:none;}&lt;br /&gt;
        &amp;lt;/style&amp;gt;&lt;br /&gt;
      &amp;lt;/head&amp;gt;&lt;br /&gt;
      &amp;lt;body&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;Menüü&amp;lt;/h1&amp;gt;&lt;br /&gt;
        &amp;lt;table width=&amp;quot;800&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;200&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;100&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col witdh=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;150&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;tr&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Nimetus&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Lisandid&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Tüüp&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Hind&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Hinne / Hindajaid&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Pilt&amp;lt;/th&amp;gt;&lt;br /&gt;
          &amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
          &amp;lt;xsl:for-each select=&amp;quot;menu/product&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:sort select=&amp;quot;type/id&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:sort select=&amp;quot;name&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;th&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;name&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/th&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;extras/node()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;ul&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:for-each select=&amp;quot;extras/item&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;li&amp;gt;&lt;br /&gt;
                          &amp;lt;xsl:value-of select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;/li&amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
                    &amp;lt;/ul&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;td&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;type/name&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;price/node()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    €&amp;lt;xsl:value-of select=&amp;quot;price/int&amp;quot;/&amp;gt;.&amp;lt;xsl:value-of select=&amp;quot;price/frac&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:if test=&amp;quot;price/discount/text()&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;span class=&amp;quot;discount&amp;quot;&amp;gt;&lt;br /&gt;
                        (-&amp;lt;xsl:value-of select=&amp;quot;price/discount&amp;quot;/&amp;gt;%)&lt;br /&gt;
                      &amp;lt;/span&amp;gt;&lt;br /&gt;
                    &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:variable name=&amp;quot;p&amp;quot; select=&amp;quot;vote/pos&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:variable name=&amp;quot;n&amp;quot; select=&amp;quot;vote/neg&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;td&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$p - $n&amp;quot;/&amp;gt; / &amp;lt;xsl:value-of select=&amp;quot;$p + $n&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;screenshot/text()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;img src=&amp;quot;{screenshot}&amp;quot; alt=&amp;quot;&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;img src=&amp;quot;screenshots/default.png&amp;quot; alt=&amp;quot;No image&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
      &amp;lt;/body&amp;gt;&lt;br /&gt;
    &amp;lt;/html&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
Sisu ja stiilifaili koostöö http://henri.kroosmann.ee/kool/xml/index.xml &amp;lt;!--[http://henri.kroosmann.ee/kool/xml/index.xml]--&amp;gt;&lt;br /&gt;
==VEEBITEENUSED==&lt;br /&gt;
&lt;br /&gt;
===8. aprill===&lt;br /&gt;
Otsustame teha teenused kõikide kohvikute menüüde kohta.&lt;br /&gt;
&lt;br /&gt;
===11.-12. aprill===&lt;br /&gt;
Henri koostab tabelite loogika&lt;br /&gt;
&lt;br /&gt;
===13. aprill===&lt;br /&gt;
Mailis otsustab veebiteenused teha asmx-is [webmethod]-itega&lt;br /&gt;
===14. aprill===&lt;br /&gt;
Mailis hakkab veebiteenuseid tegema&lt;br /&gt;
===17. aprill===&lt;br /&gt;
Veebiteenused on valmis:&lt;br /&gt;
&lt;br /&gt;
*AnnaJoogiliikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaJoogitabelirida_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*AnnaJookideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaK6igiKohvikuteAndmeteNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyyIDed_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyyRida_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyydeNimekiri_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaMenyyLiikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaMenyydeNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaPromillideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToiduliikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToitudeNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToitutabelirida_toiduIDjargi &lt;br /&gt;
&lt;br /&gt;
*AnnaYheKohvikuAndmed_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*KustutaJookMenyyst &lt;br /&gt;
&lt;br /&gt;
*KustutaMenyy &lt;br /&gt;
&lt;br /&gt;
*KustutaKohvik &lt;br /&gt;
&lt;br /&gt;
*KustutaToitMenyyst &lt;br /&gt;
&lt;br /&gt;
*KysiYheKohvikuYheMenyyToitudeIDeed_menyyIDjargi &lt;br /&gt;
&lt;br /&gt;
*LisaJoogiLiik &lt;br /&gt;
&lt;br /&gt;
*LisaMenyyLiik &lt;br /&gt;
&lt;br /&gt;
*LisaPromill &lt;br /&gt;
&lt;br /&gt;
*LisaToiduLiik &lt;br /&gt;
&lt;br /&gt;
*SecurityAuthenticateUser &lt;br /&gt;
&lt;br /&gt;
*TOITJOOKmenyysRida_menyyIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedJoogileMenyys &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedKohvikule &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedToiduleMenyys &lt;br /&gt;
&lt;br /&gt;
*annaJoogiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiKIRJELDUS_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiKOMM_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiID_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiNIMI_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKasOnTaimeT_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKasutajaNIMI_Guidjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuLahtiolekuAjad_kohvikuIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuTeated &lt;br /&gt;
&lt;br /&gt;
*annaLinnaID_LinnaNimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaLinnaNIMI_LinnaIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaLinnad_maakonnaNIMEjargi &lt;br /&gt;
&lt;br /&gt;
*annaMaakonnaID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaMenyyLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaMenyyLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaPromill_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaPromilliID_promilliNrJargi &lt;br /&gt;
&lt;br /&gt;
*annaPromilliNR_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduKIRJELDUS_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduKOMMENTAAR_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiNIMETUS_toiduIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaYheKohvikuMenyyd_kohvikuNIMEjargi &lt;br /&gt;
&lt;br /&gt;
*autendiKasutajaParooliJargi &lt;br /&gt;
&lt;br /&gt;
*k6igiKohvikuteMenyyd &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusJoogiKohta &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusKohvikuKohta &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusToiduKohta &lt;br /&gt;
&lt;br /&gt;
*lisaJookMenyysse &lt;br /&gt;
&lt;br /&gt;
*lisaToitMenyysse &lt;br /&gt;
&lt;br /&gt;
*lisaUusJook &lt;br /&gt;
&lt;br /&gt;
*lisaUusKohvik &lt;br /&gt;
&lt;br /&gt;
*lisaUusLahtiolekuAeg &lt;br /&gt;
&lt;br /&gt;
*lisaUusMenyy &lt;br /&gt;
&lt;br /&gt;
*lisaUusTeadaanne &lt;br /&gt;
&lt;br /&gt;
*lisaUusToit &lt;br /&gt;
&lt;br /&gt;
*nadalapaevaID_paevaNimetuseJargi &lt;br /&gt;
&lt;br /&gt;
*nadalapaevaNIMETUS_paevaIDjargi&lt;br /&gt;
&lt;br /&gt;
*Registreeru&lt;br /&gt;
&lt;br /&gt;
*LogiSisseTavakasutajana&lt;br /&gt;
&lt;br /&gt;
*LogiSisseKohvikuna&lt;br /&gt;
&lt;br /&gt;
===22.aprill===&lt;br /&gt;
Toimus koosolek&lt;br /&gt;
*Henri lubas meetodite turvamise teha.&lt;br /&gt;
*Heiki lubas statistika teha meetodite kohta.&lt;br /&gt;
&lt;br /&gt;
===Allikfail===&lt;br /&gt;
Allikfail: http://www.p2ike.com/CSharp/KohvikudVeebiteenus.rar&lt;br /&gt;
&lt;br /&gt;
Meetod &#039;k6igiKohvikuteMenyyd&#039; kuvab sellise xml struktuuri: http://www.p2ike.com/CSharp/k6igiKohvikuteMenyyd.xml&lt;br /&gt;
&lt;br /&gt;
Toidud ja joogid sorteeritakse liikide kaupa.&lt;br /&gt;
&lt;br /&gt;
===Andmetabelid===&lt;br /&gt;
[[File:andmetabelid.jpg|777px|thumb|left|andmemudel]]&lt;br /&gt;
===Statistika===&lt;br /&gt;
 using System;&lt;br /&gt;
using System.Web.Services;&lt;br /&gt;
using System.Web.Services.Protocols;&lt;br /&gt;
using System.IO;&lt;br /&gt;
using System.Net;&lt;br /&gt;
 &lt;br /&gt;
// Define a SOAP Extension that traces the SOAP request and SOAP&lt;br /&gt;
// response for the XML Web service method the SOAP extension is&lt;br /&gt;
// applied to. &lt;br /&gt;
 &lt;br /&gt;
namespace WebASPKohvikud&lt;br /&gt;
{&lt;br /&gt;
    public class TraceExtension : SoapExtension&lt;br /&gt;
    {&lt;br /&gt;
        Stream oldStream;&lt;br /&gt;
        Stream newStream;&lt;br /&gt;
        string filename;&lt;br /&gt;
 &lt;br /&gt;
        // Save the Stream representing the SOAP request or SOAP response into&lt;br /&gt;
        // a local memory buffer.&lt;br /&gt;
        public override Stream ChainStream(Stream stream)&lt;br /&gt;
        {&lt;br /&gt;
            oldStream = stream;&lt;br /&gt;
            newStream = new MemoryStream();&lt;br /&gt;
            return newStream;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        // When the SOAP extension is accessed for the first time, the XML Web&lt;br /&gt;
        // service method it is applied to is accessed to store the file&lt;br /&gt;
        // name passed in, using the corresponding SoapExtensionAttribute.	&lt;br /&gt;
        public override object GetInitializer(LogicalMethodInfo methodInfo, SoapExtensionAttribute attribute)&lt;br /&gt;
        {&lt;br /&gt;
            return ((TraceExtensionAttribute)attribute).Filename;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        // The SOAP extension was configured to run using a configuration file&lt;br /&gt;
        // instead of an attribute applied to a specific XML Web service&lt;br /&gt;
        // method.&lt;br /&gt;
        public override object GetInitializer(Type WebServiceType)&lt;br /&gt;
        {&lt;br /&gt;
            // Return a file name to log the trace information to, based on the&lt;br /&gt;
            // type.&lt;br /&gt;
            return &amp;quot;C:\\&amp;quot; + WebServiceType.FullName + &amp;quot;.log&amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        // Receive the file name stored by GetInitializer and store it in a&lt;br /&gt;
        // member variable for this specific instance.&lt;br /&gt;
        public override void Initialize(object initializer)&lt;br /&gt;
        {&lt;br /&gt;
            filename = (string)initializer;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        //  If the SoapMessageStage is such that the SoapRequest or&lt;br /&gt;
        //  SoapResponse is still in the SOAP format to be sent or received,&lt;br /&gt;
        //  save it out to a file.&lt;br /&gt;
        public override void ProcessMessage(SoapMessage message)&lt;br /&gt;
        {&lt;br /&gt;
            switch (message.Stage)&lt;br /&gt;
            {&lt;br /&gt;
                case SoapMessageStage.BeforeSerialize:&lt;br /&gt;
                    break;&lt;br /&gt;
                case SoapMessageStage.AfterSerialize:&lt;br /&gt;
                    WriteOutput(message);&lt;br /&gt;
                    break;&lt;br /&gt;
                case SoapMessageStage.BeforeDeserialize:&lt;br /&gt;
                    WriteInput(message);&lt;br /&gt;
                    break;&lt;br /&gt;
                case SoapMessageStage.AfterDeserialize:&lt;br /&gt;
                    break;&lt;br /&gt;
                default:&lt;br /&gt;
                    throw new Exception(&amp;quot;invalid stage&amp;quot;);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        public void WriteOutput(SoapMessage message)&lt;br /&gt;
        {&lt;br /&gt;
            newStream.Position = 0;&lt;br /&gt;
            FileStream fs = new FileStream(filename, FileMode.Append,&lt;br /&gt;
                FileAccess.Write);&lt;br /&gt;
            StreamWriter w = new StreamWriter(fs);&lt;br /&gt;
 &lt;br /&gt;
            string soapString = (message is SoapServerMessage) ? &amp;quot;SoapResponse&amp;quot; : &amp;quot;SoapRequest&amp;quot;;&lt;br /&gt;
            w.WriteLine(&amp;quot;-----&amp;quot; + soapString + &amp;quot; at &amp;quot; + DateTime.Now);&lt;br /&gt;
            w.Flush();&lt;br /&gt;
            Copy(newStream, fs);&lt;br /&gt;
            w.Close();&lt;br /&gt;
            newStream.Position = 0;&lt;br /&gt;
            Copy(newStream, oldStream);&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        public void WriteInput(SoapMessage message)&lt;br /&gt;
        {&lt;br /&gt;
            Copy(oldStream, newStream);&lt;br /&gt;
            FileStream fs = new FileStream(filename, FileMode.Append,&lt;br /&gt;
                FileAccess.Write);&lt;br /&gt;
            StreamWriter w = new StreamWriter(fs);&lt;br /&gt;
 &lt;br /&gt;
            string soapString = (message is SoapServerMessage) ?&lt;br /&gt;
                &amp;quot;SoapRequest&amp;quot; : &amp;quot;SoapResponse&amp;quot;;&lt;br /&gt;
            w.WriteLine(&amp;quot;-----&amp;quot; + soapString +&lt;br /&gt;
                &amp;quot; at &amp;quot; + DateTime.Now);&lt;br /&gt;
            w.Flush();&lt;br /&gt;
            newStream.Position = 0;&lt;br /&gt;
            Copy(newStream, fs);&lt;br /&gt;
            w.Close();&lt;br /&gt;
            newStream.Position = 0;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        void Copy(Stream from, Stream to)&lt;br /&gt;
        {&lt;br /&gt;
            TextReader reader = new StreamReader(from);&lt;br /&gt;
            TextWriter writer = new StreamWriter(to);&lt;br /&gt;
            writer.WriteLine(reader.ReadToEnd());&lt;br /&gt;
            writer.Flush();&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    // Create a SoapExtensionAttribute for the SOAP Extension that can be&lt;br /&gt;
    // applied to an XML Web service method.&lt;br /&gt;
    [AttributeUsage(AttributeTargets.Method)]&lt;br /&gt;
    public class TraceExtensionAttribute : SoapExtensionAttribute&lt;br /&gt;
    {&lt;br /&gt;
 &lt;br /&gt;
        private string filename = @&amp;quot;C:\Users\Heiki Tamm\Documents\Õppematerjalid_2011\WebASPKohvikud\WebASPKohvikud\SoapLog.txt&amp;quot;;&lt;br /&gt;
        private int priority;&lt;br /&gt;
 &lt;br /&gt;
        public override Type ExtensionType&lt;br /&gt;
        {&lt;br /&gt;
            get { return typeof(TraceExtension); }&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        public override int Priority&lt;br /&gt;
        {&lt;br /&gt;
            get { return priority; }&lt;br /&gt;
            set { priority = value; }&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        public string Filename&lt;br /&gt;
        {&lt;br /&gt;
            get&lt;br /&gt;
            {&lt;br /&gt;
                return filename;&lt;br /&gt;
            }&lt;br /&gt;
            set&lt;br /&gt;
            {&lt;br /&gt;
                filename = value;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
// todo: &lt;br /&gt;
// from each soap header record query content &lt;br /&gt;
// (containing client, date, time, query ) into a DB&lt;br /&gt;
// for later reference for conducting any kind of &lt;br /&gt;
// applicable statistics and then generate stats :D !&lt;br /&gt;
// Proovin selliselt, et on lihtne statistika tabel:&lt;br /&gt;
// 1) meetod // välja kutsutava meetodi nimi&lt;br /&gt;
// 2) kuupäev // timestamp&lt;br /&gt;
// 3) callide arv // meetodi väljakutsimiste hulk&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==KLIENTRAKENDUS==&lt;br /&gt;
&lt;br /&gt;
===23. mai===&lt;br /&gt;
Mailis tegi kohvikute kuvamise ASP.NET rakenduse.&lt;br /&gt;
Kohvikud kuvatakse TreeView&#039;s &lt;br /&gt;
menüüde ja andmetega ning arvamustega kohvikute ja toitude ja jookide kohta.&lt;br /&gt;
&lt;br /&gt;
Samal lehel on kohvikuhuvilistele registreerimisvõimalus&lt;br /&gt;
ja sisselogimine.&lt;br /&gt;
&lt;br /&gt;
Kui on sisselogitud, saab lisada arvamusi.&lt;br /&gt;
Arvamuste lisamine on Ajax Extended Toolkiti controli&#039;ga &#039;Allways Visible ...&#039; tehtud, &lt;br /&gt;
&lt;br /&gt;
nii et mööda pikka TreeViewd alla kerides saab &lt;br /&gt;
lisada arvamust ilma ülesserva tagasi minemata.&lt;/div&gt;</summary>
		<author><name>Mtoompuu</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Meeskond_%22H2%22&amp;diff=32566</id>
		<title>Meeskond &quot;H2&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Meeskond_%22H2%22&amp;diff=32566"/>
		<updated>2011-05-23T06:13:04Z</updated>

		<summary type="html">&lt;p&gt;Mtoompuu: /* 23. mai */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Kohviku menüüsüsteem==&lt;br /&gt;
===Projekt===&lt;br /&gt;
Kohvikute (esialgu ainult IT-Kohviku) menüüsüsteem, mis on jälgitav mobiilseadmetelt. Lisaväärtusena võimaldab anda pakutavale hinnanguid, otsuse langetamise hõlbustamiseks kommentaar:(see viimane funktsioon kipub vist &amp;quot;veebirakenduseks&amp;quot; muutuma)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Sihtplatvormid:&lt;br /&gt;
Windows Mobile, iOS, Android(kui leiame vabatahtlikud testijad)&lt;br /&gt;
&lt;br /&gt;
===Taustinfo===&lt;br /&gt;
Praegune IT-Kohviku menüü on käsitsi täidetav valge tahvel. Projekti eesmärgiks on parendada IT-Kohviku menüüsüsteemi ja teha see veebi kaudu kättesaadavaks, nii, et menüüsse saab lisada ka karniiri valiku. Standardmenüü puhul saab menüüs olla ka illustreeriv foto. Hetkemenüü ning hinnad ja lahtioleku ajad on samuti jälgitavad võrguühendust eviva mobiilseadme ekraanilt, hõlbustades sellega valikute tegemist.&lt;br /&gt;
&lt;br /&gt;
===Liikmed===&lt;br /&gt;
* Mailis Toompuu&lt;br /&gt;
* Henri Kroosmann&lt;br /&gt;
* Heiki Tamm&lt;br /&gt;
&lt;br /&gt;
==Sisu==&lt;br /&gt;
&lt;br /&gt;
===XML Data===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;menu&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name1&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;0&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name1&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item1&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item2&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item3&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;0&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;0&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount1&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;0&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;0&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot1&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name2&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;255&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name2&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item4&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item5&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item6&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;255&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;255&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount2&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;255&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;255&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot2&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name3&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;1&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name3&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item7&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item8&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item9&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;1&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;1&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount3&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;1&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;1&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot3&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
&amp;lt;/menu&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===XML Schema===&lt;br /&gt;
&lt;br /&gt;
Ülevaade Schema&#039;st. &amp;lt;br /&amp;gt;&lt;br /&gt;
[[File:XMLSchema_Capture_(optimized).png]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Ning sellele vastav kood.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xs:schema attributeFormDefault=&amp;quot;unqualified&amp;quot; elementFormDefault=&amp;quot;qualified&amp;quot; xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xs:element name=&amp;quot;menu&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;product&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;type&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;id&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;extras&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence minOccurs=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;item&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;price&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence minOccurs=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;int&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;frac&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element minOccurs=&amp;quot;0&amp;quot; name=&amp;quot;discount&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;vote&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;pos&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;neg&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;screenshot&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===XML Style===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;html&amp;gt;&lt;br /&gt;
      &amp;lt;head&amp;gt;&lt;br /&gt;
        &amp;lt;style type=&amp;quot;text/css&amp;quot;&amp;gt;&lt;br /&gt;
          html,body{margin:0;padding:0;font-family:Helvetica,Arial,sans-serif;font-size:14px;line-height:19px;color:#2c2c2c;}&lt;br /&gt;
          h1{margin:0;padding:25px 0 0;font-size:22px;line-height:25px;text-align:center;}&lt;br /&gt;
          h2{margin:0;padding:5px;font-size:16px;line-height:21px}&lt;br /&gt;
          span.discount{padding:0 0 0 5px;color:red;}&lt;br /&gt;
          table{margin:20px auto;padding:0;}&lt;br /&gt;
          th,td{padding:5px;border:1px solid #2c2c2c;vertical-align:top;text-align:left}&lt;br /&gt;
          th{font-weight:bold;background-color:#eee;}&lt;br /&gt;
          ul{margin:0;padding:0;list-style-type:none;}&lt;br /&gt;
        &amp;lt;/style&amp;gt;&lt;br /&gt;
      &amp;lt;/head&amp;gt;&lt;br /&gt;
      &amp;lt;body&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;Menüü&amp;lt;/h1&amp;gt;&lt;br /&gt;
        &amp;lt;table width=&amp;quot;800&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;200&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;100&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col witdh=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;150&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;tr&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Nimetus&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Lisandid&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Tüüp&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Hind&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Hinne / Hindajaid&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Pilt&amp;lt;/th&amp;gt;&lt;br /&gt;
          &amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
          &amp;lt;xsl:for-each select=&amp;quot;menu/product&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:sort select=&amp;quot;type/id&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:sort select=&amp;quot;name&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;th&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;name&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/th&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;extras/node()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;ul&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:for-each select=&amp;quot;extras/item&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;li&amp;gt;&lt;br /&gt;
                          &amp;lt;xsl:value-of select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;/li&amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
                    &amp;lt;/ul&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;td&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;type/name&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;price/node()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    €&amp;lt;xsl:value-of select=&amp;quot;price/int&amp;quot;/&amp;gt;.&amp;lt;xsl:value-of select=&amp;quot;price/frac&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:if test=&amp;quot;price/discount/text()&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;span class=&amp;quot;discount&amp;quot;&amp;gt;&lt;br /&gt;
                        (-&amp;lt;xsl:value-of select=&amp;quot;price/discount&amp;quot;/&amp;gt;%)&lt;br /&gt;
                      &amp;lt;/span&amp;gt;&lt;br /&gt;
                    &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:variable name=&amp;quot;p&amp;quot; select=&amp;quot;vote/pos&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:variable name=&amp;quot;n&amp;quot; select=&amp;quot;vote/neg&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;td&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$p - $n&amp;quot;/&amp;gt; / &amp;lt;xsl:value-of select=&amp;quot;$p + $n&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;screenshot/text()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;img src=&amp;quot;{screenshot}&amp;quot; alt=&amp;quot;&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;img src=&amp;quot;screenshots/default.png&amp;quot; alt=&amp;quot;No image&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
      &amp;lt;/body&amp;gt;&lt;br /&gt;
    &amp;lt;/html&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
Sisu ja stiilifaili koostöö http://henri.kroosmann.ee/kool/xml/index.xml &amp;lt;!--[http://henri.kroosmann.ee/kool/xml/index.xml]--&amp;gt;&lt;br /&gt;
==VEEBITEENUSED==&lt;br /&gt;
&lt;br /&gt;
===8. aprill===&lt;br /&gt;
Otsustame teha teenused kõikide kohvikute menüüde kohta.&lt;br /&gt;
&lt;br /&gt;
===11.-12. aprill===&lt;br /&gt;
Henri koostab tabelite loogika&lt;br /&gt;
&lt;br /&gt;
===13. aprill===&lt;br /&gt;
Mailis otsustab veebiteenused teha asmx-is [webmethod]-itega&lt;br /&gt;
===14. aprill===&lt;br /&gt;
Mailis hakkab veebiteenuseid tegema&lt;br /&gt;
===17. aprill===&lt;br /&gt;
Veebiteenused on valmis:&lt;br /&gt;
&lt;br /&gt;
*AnnaJoogiliikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaJoogitabelirida_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*AnnaJookideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaK6igiKohvikuteAndmeteNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyyIDed_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyyRida_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyydeNimekiri_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaMenyyLiikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaMenyydeNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaPromillideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToiduliikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToitudeNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToitutabelirida_toiduIDjargi &lt;br /&gt;
&lt;br /&gt;
*AnnaYheKohvikuAndmed_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*KustutaJookMenyyst &lt;br /&gt;
&lt;br /&gt;
*KustutaMenyy &lt;br /&gt;
&lt;br /&gt;
*KustutaKohvik &lt;br /&gt;
&lt;br /&gt;
*KustutaToitMenyyst &lt;br /&gt;
&lt;br /&gt;
*KysiYheKohvikuYheMenyyToitudeIDeed_menyyIDjargi &lt;br /&gt;
&lt;br /&gt;
*LisaJoogiLiik &lt;br /&gt;
&lt;br /&gt;
*LisaMenyyLiik &lt;br /&gt;
&lt;br /&gt;
*LisaPromill &lt;br /&gt;
&lt;br /&gt;
*LisaToiduLiik &lt;br /&gt;
&lt;br /&gt;
*SecurityAuthenticateUser &lt;br /&gt;
&lt;br /&gt;
*TOITJOOKmenyysRida_menyyIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedJoogileMenyys &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedKohvikule &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedToiduleMenyys &lt;br /&gt;
&lt;br /&gt;
*annaJoogiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiKIRJELDUS_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiKOMM_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiID_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiNIMI_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKasOnTaimeT_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKasutajaNIMI_Guidjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuLahtiolekuAjad_kohvikuIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuTeated &lt;br /&gt;
&lt;br /&gt;
*annaLinnaID_LinnaNimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaLinnaNIMI_LinnaIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaLinnad_maakonnaNIMEjargi &lt;br /&gt;
&lt;br /&gt;
*annaMaakonnaID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaMenyyLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaMenyyLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaPromill_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaPromilliID_promilliNrJargi &lt;br /&gt;
&lt;br /&gt;
*annaPromilliNR_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduKIRJELDUS_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduKOMMENTAAR_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiNIMETUS_toiduIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaYheKohvikuMenyyd_kohvikuNIMEjargi &lt;br /&gt;
&lt;br /&gt;
*autendiKasutajaParooliJargi &lt;br /&gt;
&lt;br /&gt;
*k6igiKohvikuteMenyyd &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusJoogiKohta &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusKohvikuKohta &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusToiduKohta &lt;br /&gt;
&lt;br /&gt;
*lisaJookMenyysse &lt;br /&gt;
&lt;br /&gt;
*lisaToitMenyysse &lt;br /&gt;
&lt;br /&gt;
*lisaUusJook &lt;br /&gt;
&lt;br /&gt;
*lisaUusKohvik &lt;br /&gt;
&lt;br /&gt;
*lisaUusLahtiolekuAeg &lt;br /&gt;
&lt;br /&gt;
*lisaUusMenyy &lt;br /&gt;
&lt;br /&gt;
*lisaUusTeadaanne &lt;br /&gt;
&lt;br /&gt;
*lisaUusToit &lt;br /&gt;
&lt;br /&gt;
*nadalapaevaID_paevaNimetuseJargi &lt;br /&gt;
&lt;br /&gt;
*nadalapaevaNIMETUS_paevaIDjargi&lt;br /&gt;
&lt;br /&gt;
*Registreeru&lt;br /&gt;
&lt;br /&gt;
*LogiSisseTavakasutajana&lt;br /&gt;
&lt;br /&gt;
*LogiSisseKohvikuna&lt;br /&gt;
&lt;br /&gt;
===22.aprill===&lt;br /&gt;
Toimus koosolek&lt;br /&gt;
*Henri lubas meetodite turvamise teha.&lt;br /&gt;
*Heiki lubas statistika teha meetodite kohta.&lt;br /&gt;
&lt;br /&gt;
===Allikfail===&lt;br /&gt;
Allikfail: http://www.p2ike.com/CSharp/KohvikudVeebiteenus.rar&lt;br /&gt;
&lt;br /&gt;
Meetod &#039;k6igiKohvikuteMenyyd&#039; kuvab sellise xml struktuuri: http://www.p2ike.com/CSharp/k6igiKohvikuteMenyyd.xml&lt;br /&gt;
&lt;br /&gt;
Toidud ja joogid sorteeritakse liikide kaupa.&lt;br /&gt;
&lt;br /&gt;
===Andmetabelid===&lt;br /&gt;
[[File:andmetabelid.jpg|777px|thumb|left|andmemudel]]&lt;br /&gt;
===Statistika===&lt;br /&gt;
 using System;&lt;br /&gt;
using System.Web.Services;&lt;br /&gt;
using System.Web.Services.Protocols;&lt;br /&gt;
using System.IO;&lt;br /&gt;
using System.Net;&lt;br /&gt;
 &lt;br /&gt;
// Define a SOAP Extension that traces the SOAP request and SOAP&lt;br /&gt;
// response for the XML Web service method the SOAP extension is&lt;br /&gt;
// applied to. &lt;br /&gt;
 &lt;br /&gt;
namespace WebASPKohvikud&lt;br /&gt;
{&lt;br /&gt;
    public class TraceExtension : SoapExtension&lt;br /&gt;
    {&lt;br /&gt;
        Stream oldStream;&lt;br /&gt;
        Stream newStream;&lt;br /&gt;
        string filename;&lt;br /&gt;
 &lt;br /&gt;
        // Save the Stream representing the SOAP request or SOAP response into&lt;br /&gt;
        // a local memory buffer.&lt;br /&gt;
        public override Stream ChainStream(Stream stream)&lt;br /&gt;
        {&lt;br /&gt;
            oldStream = stream;&lt;br /&gt;
            newStream = new MemoryStream();&lt;br /&gt;
            return newStream;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        // When the SOAP extension is accessed for the first time, the XML Web&lt;br /&gt;
        // service method it is applied to is accessed to store the file&lt;br /&gt;
        // name passed in, using the corresponding SoapExtensionAttribute.	&lt;br /&gt;
        public override object GetInitializer(LogicalMethodInfo methodInfo, SoapExtensionAttribute attribute)&lt;br /&gt;
        {&lt;br /&gt;
            return ((TraceExtensionAttribute)attribute).Filename;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        // The SOAP extension was configured to run using a configuration file&lt;br /&gt;
        // instead of an attribute applied to a specific XML Web service&lt;br /&gt;
        // method.&lt;br /&gt;
        public override object GetInitializer(Type WebServiceType)&lt;br /&gt;
        {&lt;br /&gt;
            // Return a file name to log the trace information to, based on the&lt;br /&gt;
            // type.&lt;br /&gt;
            return &amp;quot;C:\\&amp;quot; + WebServiceType.FullName + &amp;quot;.log&amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        // Receive the file name stored by GetInitializer and store it in a&lt;br /&gt;
        // member variable for this specific instance.&lt;br /&gt;
        public override void Initialize(object initializer)&lt;br /&gt;
        {&lt;br /&gt;
            filename = (string)initializer;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        //  If the SoapMessageStage is such that the SoapRequest or&lt;br /&gt;
        //  SoapResponse is still in the SOAP format to be sent or received,&lt;br /&gt;
        //  save it out to a file.&lt;br /&gt;
        public override void ProcessMessage(SoapMessage message)&lt;br /&gt;
        {&lt;br /&gt;
            switch (message.Stage)&lt;br /&gt;
            {&lt;br /&gt;
                case SoapMessageStage.BeforeSerialize:&lt;br /&gt;
                    break;&lt;br /&gt;
                case SoapMessageStage.AfterSerialize:&lt;br /&gt;
                    WriteOutput(message);&lt;br /&gt;
                    break;&lt;br /&gt;
                case SoapMessageStage.BeforeDeserialize:&lt;br /&gt;
                    WriteInput(message);&lt;br /&gt;
                    break;&lt;br /&gt;
                case SoapMessageStage.AfterDeserialize:&lt;br /&gt;
                    break;&lt;br /&gt;
                default:&lt;br /&gt;
                    throw new Exception(&amp;quot;invalid stage&amp;quot;);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        public void WriteOutput(SoapMessage message)&lt;br /&gt;
        {&lt;br /&gt;
            newStream.Position = 0;&lt;br /&gt;
            FileStream fs = new FileStream(filename, FileMode.Append,&lt;br /&gt;
                FileAccess.Write);&lt;br /&gt;
            StreamWriter w = new StreamWriter(fs);&lt;br /&gt;
 &lt;br /&gt;
            string soapString = (message is SoapServerMessage) ? &amp;quot;SoapResponse&amp;quot; : &amp;quot;SoapRequest&amp;quot;;&lt;br /&gt;
            w.WriteLine(&amp;quot;-----&amp;quot; + soapString + &amp;quot; at &amp;quot; + DateTime.Now);&lt;br /&gt;
            w.Flush();&lt;br /&gt;
            Copy(newStream, fs);&lt;br /&gt;
            w.Close();&lt;br /&gt;
            newStream.Position = 0;&lt;br /&gt;
            Copy(newStream, oldStream);&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        public void WriteInput(SoapMessage message)&lt;br /&gt;
        {&lt;br /&gt;
            Copy(oldStream, newStream);&lt;br /&gt;
            FileStream fs = new FileStream(filename, FileMode.Append,&lt;br /&gt;
                FileAccess.Write);&lt;br /&gt;
            StreamWriter w = new StreamWriter(fs);&lt;br /&gt;
 &lt;br /&gt;
            string soapString = (message is SoapServerMessage) ?&lt;br /&gt;
                &amp;quot;SoapRequest&amp;quot; : &amp;quot;SoapResponse&amp;quot;;&lt;br /&gt;
            w.WriteLine(&amp;quot;-----&amp;quot; + soapString +&lt;br /&gt;
                &amp;quot; at &amp;quot; + DateTime.Now);&lt;br /&gt;
            w.Flush();&lt;br /&gt;
            newStream.Position = 0;&lt;br /&gt;
            Copy(newStream, fs);&lt;br /&gt;
            w.Close();&lt;br /&gt;
            newStream.Position = 0;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        void Copy(Stream from, Stream to)&lt;br /&gt;
        {&lt;br /&gt;
            TextReader reader = new StreamReader(from);&lt;br /&gt;
            TextWriter writer = new StreamWriter(to);&lt;br /&gt;
            writer.WriteLine(reader.ReadToEnd());&lt;br /&gt;
            writer.Flush();&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    // Create a SoapExtensionAttribute for the SOAP Extension that can be&lt;br /&gt;
    // applied to an XML Web service method.&lt;br /&gt;
    [AttributeUsage(AttributeTargets.Method)]&lt;br /&gt;
    public class TraceExtensionAttribute : SoapExtensionAttribute&lt;br /&gt;
    {&lt;br /&gt;
 &lt;br /&gt;
        private string filename = @&amp;quot;C:\Users\Heiki Tamm\Documents\Õppematerjalid_2011\WebASPKohvikud\WebASPKohvikud\SoapLog.txt&amp;quot;;&lt;br /&gt;
        private int priority;&lt;br /&gt;
 &lt;br /&gt;
        public override Type ExtensionType&lt;br /&gt;
        {&lt;br /&gt;
            get { return typeof(TraceExtension); }&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        public override int Priority&lt;br /&gt;
        {&lt;br /&gt;
            get { return priority; }&lt;br /&gt;
            set { priority = value; }&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        public string Filename&lt;br /&gt;
        {&lt;br /&gt;
            get&lt;br /&gt;
            {&lt;br /&gt;
                return filename;&lt;br /&gt;
            }&lt;br /&gt;
            set&lt;br /&gt;
            {&lt;br /&gt;
                filename = value;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
// todo: &lt;br /&gt;
// from each soap header record query content &lt;br /&gt;
// (containing client, date, time, query ) into a DB&lt;br /&gt;
// for later reference for conducting any kind of &lt;br /&gt;
// applicable statistics and then generate stats :D !&lt;br /&gt;
// Proovin selliselt, et on lihtne statistika tabel:&lt;br /&gt;
// 1) meetod // välja kutsutava meetodi nimi&lt;br /&gt;
// 2) kuupäev // timestamp&lt;br /&gt;
// 3) callide arv // meetodi väljakutsimiste hulk&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==KLIENTRAKENDUS==&lt;br /&gt;
&lt;br /&gt;
===23. mai===&lt;br /&gt;
Mailis tegi kohvikute kuvamise ASP.NET rakenduse.&lt;br /&gt;
Kohvikud kuvatakse TreeView&#039;s &lt;br /&gt;
menüüde ja andmetega ning arvamustega kohvikute ja toitude ja jookide kohta.&lt;br /&gt;
&lt;br /&gt;
Samal lehel on kohvikuhuvilistele registreerimisvõimalus&lt;br /&gt;
ja sisselogimine.&lt;br /&gt;
&lt;br /&gt;
Kui on sisselogitud, saab lisada arvamusi.&lt;br /&gt;
Arvamuste lisamine on Ajax Extended Toolkiti controli Allways Visible ... tehtud, &lt;br /&gt;
&lt;br /&gt;
nii et mööda pikka TreeViewd alla kerides saab &lt;br /&gt;
lisada arvamust ilma ülesserva tagasi minemata.&lt;/div&gt;</summary>
		<author><name>Mtoompuu</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Meeskond_%22H2%22&amp;diff=32564</id>
		<title>Meeskond &quot;H2&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Meeskond_%22H2%22&amp;diff=32564"/>
		<updated>2011-05-23T06:12:22Z</updated>

		<summary type="html">&lt;p&gt;Mtoompuu: /* 23. mai */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Kohviku menüüsüsteem==&lt;br /&gt;
===Projekt===&lt;br /&gt;
Kohvikute (esialgu ainult IT-Kohviku) menüüsüsteem, mis on jälgitav mobiilseadmetelt. Lisaväärtusena võimaldab anda pakutavale hinnanguid, otsuse langetamise hõlbustamiseks kommentaar:(see viimane funktsioon kipub vist &amp;quot;veebirakenduseks&amp;quot; muutuma)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Sihtplatvormid:&lt;br /&gt;
Windows Mobile, iOS, Android(kui leiame vabatahtlikud testijad)&lt;br /&gt;
&lt;br /&gt;
===Taustinfo===&lt;br /&gt;
Praegune IT-Kohviku menüü on käsitsi täidetav valge tahvel. Projekti eesmärgiks on parendada IT-Kohviku menüüsüsteemi ja teha see veebi kaudu kättesaadavaks, nii, et menüüsse saab lisada ka karniiri valiku. Standardmenüü puhul saab menüüs olla ka illustreeriv foto. Hetkemenüü ning hinnad ja lahtioleku ajad on samuti jälgitavad võrguühendust eviva mobiilseadme ekraanilt, hõlbustades sellega valikute tegemist.&lt;br /&gt;
&lt;br /&gt;
===Liikmed===&lt;br /&gt;
* Mailis Toompuu&lt;br /&gt;
* Henri Kroosmann&lt;br /&gt;
* Heiki Tamm&lt;br /&gt;
&lt;br /&gt;
==Sisu==&lt;br /&gt;
&lt;br /&gt;
===XML Data===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;menu&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name1&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;0&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name1&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item1&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item2&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item3&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;0&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;0&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount1&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;0&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;0&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot1&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name2&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;255&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name2&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item4&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item5&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item6&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;255&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;255&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount2&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;255&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;255&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot2&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name3&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;1&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name3&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item7&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item8&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item9&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;1&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;1&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount3&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;1&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;1&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot3&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
&amp;lt;/menu&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===XML Schema===&lt;br /&gt;
&lt;br /&gt;
Ülevaade Schema&#039;st. &amp;lt;br /&amp;gt;&lt;br /&gt;
[[File:XMLSchema_Capture_(optimized).png]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Ning sellele vastav kood.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xs:schema attributeFormDefault=&amp;quot;unqualified&amp;quot; elementFormDefault=&amp;quot;qualified&amp;quot; xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xs:element name=&amp;quot;menu&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;product&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;type&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;id&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;extras&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence minOccurs=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;item&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;price&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence minOccurs=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;int&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;frac&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element minOccurs=&amp;quot;0&amp;quot; name=&amp;quot;discount&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;vote&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;pos&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;neg&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;screenshot&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===XML Style===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;html&amp;gt;&lt;br /&gt;
      &amp;lt;head&amp;gt;&lt;br /&gt;
        &amp;lt;style type=&amp;quot;text/css&amp;quot;&amp;gt;&lt;br /&gt;
          html,body{margin:0;padding:0;font-family:Helvetica,Arial,sans-serif;font-size:14px;line-height:19px;color:#2c2c2c;}&lt;br /&gt;
          h1{margin:0;padding:25px 0 0;font-size:22px;line-height:25px;text-align:center;}&lt;br /&gt;
          h2{margin:0;padding:5px;font-size:16px;line-height:21px}&lt;br /&gt;
          span.discount{padding:0 0 0 5px;color:red;}&lt;br /&gt;
          table{margin:20px auto;padding:0;}&lt;br /&gt;
          th,td{padding:5px;border:1px solid #2c2c2c;vertical-align:top;text-align:left}&lt;br /&gt;
          th{font-weight:bold;background-color:#eee;}&lt;br /&gt;
          ul{margin:0;padding:0;list-style-type:none;}&lt;br /&gt;
        &amp;lt;/style&amp;gt;&lt;br /&gt;
      &amp;lt;/head&amp;gt;&lt;br /&gt;
      &amp;lt;body&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;Menüü&amp;lt;/h1&amp;gt;&lt;br /&gt;
        &amp;lt;table width=&amp;quot;800&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;200&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;100&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col witdh=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;150&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;tr&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Nimetus&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Lisandid&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Tüüp&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Hind&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Hinne / Hindajaid&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Pilt&amp;lt;/th&amp;gt;&lt;br /&gt;
          &amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
          &amp;lt;xsl:for-each select=&amp;quot;menu/product&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:sort select=&amp;quot;type/id&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:sort select=&amp;quot;name&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;th&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;name&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/th&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;extras/node()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;ul&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:for-each select=&amp;quot;extras/item&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;li&amp;gt;&lt;br /&gt;
                          &amp;lt;xsl:value-of select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;/li&amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
                    &amp;lt;/ul&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;td&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;type/name&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;price/node()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    €&amp;lt;xsl:value-of select=&amp;quot;price/int&amp;quot;/&amp;gt;.&amp;lt;xsl:value-of select=&amp;quot;price/frac&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:if test=&amp;quot;price/discount/text()&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;span class=&amp;quot;discount&amp;quot;&amp;gt;&lt;br /&gt;
                        (-&amp;lt;xsl:value-of select=&amp;quot;price/discount&amp;quot;/&amp;gt;%)&lt;br /&gt;
                      &amp;lt;/span&amp;gt;&lt;br /&gt;
                    &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:variable name=&amp;quot;p&amp;quot; select=&amp;quot;vote/pos&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:variable name=&amp;quot;n&amp;quot; select=&amp;quot;vote/neg&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;td&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$p - $n&amp;quot;/&amp;gt; / &amp;lt;xsl:value-of select=&amp;quot;$p + $n&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;screenshot/text()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;img src=&amp;quot;{screenshot}&amp;quot; alt=&amp;quot;&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;img src=&amp;quot;screenshots/default.png&amp;quot; alt=&amp;quot;No image&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
      &amp;lt;/body&amp;gt;&lt;br /&gt;
    &amp;lt;/html&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
Sisu ja stiilifaili koostöö http://henri.kroosmann.ee/kool/xml/index.xml &amp;lt;!--[http://henri.kroosmann.ee/kool/xml/index.xml]--&amp;gt;&lt;br /&gt;
==VEEBITEENUSED==&lt;br /&gt;
&lt;br /&gt;
===8. aprill===&lt;br /&gt;
Otsustame teha teenused kõikide kohvikute menüüde kohta.&lt;br /&gt;
&lt;br /&gt;
===11.-12. aprill===&lt;br /&gt;
Henri koostab tabelite loogika&lt;br /&gt;
&lt;br /&gt;
===13. aprill===&lt;br /&gt;
Mailis otsustab veebiteenused teha asmx-is [webmethod]-itega&lt;br /&gt;
===14. aprill===&lt;br /&gt;
Mailis hakkab veebiteenuseid tegema&lt;br /&gt;
===17. aprill===&lt;br /&gt;
Veebiteenused on valmis:&lt;br /&gt;
&lt;br /&gt;
*AnnaJoogiliikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaJoogitabelirida_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*AnnaJookideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaK6igiKohvikuteAndmeteNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyyIDed_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyyRida_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyydeNimekiri_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaMenyyLiikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaMenyydeNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaPromillideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToiduliikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToitudeNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToitutabelirida_toiduIDjargi &lt;br /&gt;
&lt;br /&gt;
*AnnaYheKohvikuAndmed_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*KustutaJookMenyyst &lt;br /&gt;
&lt;br /&gt;
*KustutaMenyy &lt;br /&gt;
&lt;br /&gt;
*KustutaKohvik &lt;br /&gt;
&lt;br /&gt;
*KustutaToitMenyyst &lt;br /&gt;
&lt;br /&gt;
*KysiYheKohvikuYheMenyyToitudeIDeed_menyyIDjargi &lt;br /&gt;
&lt;br /&gt;
*LisaJoogiLiik &lt;br /&gt;
&lt;br /&gt;
*LisaMenyyLiik &lt;br /&gt;
&lt;br /&gt;
*LisaPromill &lt;br /&gt;
&lt;br /&gt;
*LisaToiduLiik &lt;br /&gt;
&lt;br /&gt;
*SecurityAuthenticateUser &lt;br /&gt;
&lt;br /&gt;
*TOITJOOKmenyysRida_menyyIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedJoogileMenyys &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedKohvikule &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedToiduleMenyys &lt;br /&gt;
&lt;br /&gt;
*annaJoogiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiKIRJELDUS_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiKOMM_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiID_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiNIMI_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKasOnTaimeT_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKasutajaNIMI_Guidjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuLahtiolekuAjad_kohvikuIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuTeated &lt;br /&gt;
&lt;br /&gt;
*annaLinnaID_LinnaNimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaLinnaNIMI_LinnaIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaLinnad_maakonnaNIMEjargi &lt;br /&gt;
&lt;br /&gt;
*annaMaakonnaID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaMenyyLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaMenyyLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaPromill_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaPromilliID_promilliNrJargi &lt;br /&gt;
&lt;br /&gt;
*annaPromilliNR_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduKIRJELDUS_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduKOMMENTAAR_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiNIMETUS_toiduIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaYheKohvikuMenyyd_kohvikuNIMEjargi &lt;br /&gt;
&lt;br /&gt;
*autendiKasutajaParooliJargi &lt;br /&gt;
&lt;br /&gt;
*k6igiKohvikuteMenyyd &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusJoogiKohta &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusKohvikuKohta &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusToiduKohta &lt;br /&gt;
&lt;br /&gt;
*lisaJookMenyysse &lt;br /&gt;
&lt;br /&gt;
*lisaToitMenyysse &lt;br /&gt;
&lt;br /&gt;
*lisaUusJook &lt;br /&gt;
&lt;br /&gt;
*lisaUusKohvik &lt;br /&gt;
&lt;br /&gt;
*lisaUusLahtiolekuAeg &lt;br /&gt;
&lt;br /&gt;
*lisaUusMenyy &lt;br /&gt;
&lt;br /&gt;
*lisaUusTeadaanne &lt;br /&gt;
&lt;br /&gt;
*lisaUusToit &lt;br /&gt;
&lt;br /&gt;
*nadalapaevaID_paevaNimetuseJargi &lt;br /&gt;
&lt;br /&gt;
*nadalapaevaNIMETUS_paevaIDjargi&lt;br /&gt;
&lt;br /&gt;
*Registreeru&lt;br /&gt;
&lt;br /&gt;
*LogiSisseTavakasutajana&lt;br /&gt;
&lt;br /&gt;
*LogiSisseKohvikuna&lt;br /&gt;
&lt;br /&gt;
===22.aprill===&lt;br /&gt;
Toimus koosolek&lt;br /&gt;
*Henri lubas meetodite turvamise teha.&lt;br /&gt;
*Heiki lubas statistika teha meetodite kohta.&lt;br /&gt;
&lt;br /&gt;
===Allikfail===&lt;br /&gt;
Allikfail: http://www.p2ike.com/CSharp/KohvikudVeebiteenus.rar&lt;br /&gt;
&lt;br /&gt;
Meetod &#039;k6igiKohvikuteMenyyd&#039; kuvab sellise xml struktuuri: http://www.p2ike.com/CSharp/k6igiKohvikuteMenyyd.xml&lt;br /&gt;
&lt;br /&gt;
Toidud ja joogid sorteeritakse liikide kaupa.&lt;br /&gt;
&lt;br /&gt;
===Andmetabelid===&lt;br /&gt;
[[File:andmetabelid.jpg|777px|thumb|left|andmemudel]]&lt;br /&gt;
===Statistika===&lt;br /&gt;
 using System;&lt;br /&gt;
using System.Web.Services;&lt;br /&gt;
using System.Web.Services.Protocols;&lt;br /&gt;
using System.IO;&lt;br /&gt;
using System.Net;&lt;br /&gt;
 &lt;br /&gt;
// Define a SOAP Extension that traces the SOAP request and SOAP&lt;br /&gt;
// response for the XML Web service method the SOAP extension is&lt;br /&gt;
// applied to. &lt;br /&gt;
 &lt;br /&gt;
namespace WebASPKohvikud&lt;br /&gt;
{&lt;br /&gt;
    public class TraceExtension : SoapExtension&lt;br /&gt;
    {&lt;br /&gt;
        Stream oldStream;&lt;br /&gt;
        Stream newStream;&lt;br /&gt;
        string filename;&lt;br /&gt;
 &lt;br /&gt;
        // Save the Stream representing the SOAP request or SOAP response into&lt;br /&gt;
        // a local memory buffer.&lt;br /&gt;
        public override Stream ChainStream(Stream stream)&lt;br /&gt;
        {&lt;br /&gt;
            oldStream = stream;&lt;br /&gt;
            newStream = new MemoryStream();&lt;br /&gt;
            return newStream;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        // When the SOAP extension is accessed for the first time, the XML Web&lt;br /&gt;
        // service method it is applied to is accessed to store the file&lt;br /&gt;
        // name passed in, using the corresponding SoapExtensionAttribute.	&lt;br /&gt;
        public override object GetInitializer(LogicalMethodInfo methodInfo, SoapExtensionAttribute attribute)&lt;br /&gt;
        {&lt;br /&gt;
            return ((TraceExtensionAttribute)attribute).Filename;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        // The SOAP extension was configured to run using a configuration file&lt;br /&gt;
        // instead of an attribute applied to a specific XML Web service&lt;br /&gt;
        // method.&lt;br /&gt;
        public override object GetInitializer(Type WebServiceType)&lt;br /&gt;
        {&lt;br /&gt;
            // Return a file name to log the trace information to, based on the&lt;br /&gt;
            // type.&lt;br /&gt;
            return &amp;quot;C:\\&amp;quot; + WebServiceType.FullName + &amp;quot;.log&amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        // Receive the file name stored by GetInitializer and store it in a&lt;br /&gt;
        // member variable for this specific instance.&lt;br /&gt;
        public override void Initialize(object initializer)&lt;br /&gt;
        {&lt;br /&gt;
            filename = (string)initializer;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        //  If the SoapMessageStage is such that the SoapRequest or&lt;br /&gt;
        //  SoapResponse is still in the SOAP format to be sent or received,&lt;br /&gt;
        //  save it out to a file.&lt;br /&gt;
        public override void ProcessMessage(SoapMessage message)&lt;br /&gt;
        {&lt;br /&gt;
            switch (message.Stage)&lt;br /&gt;
            {&lt;br /&gt;
                case SoapMessageStage.BeforeSerialize:&lt;br /&gt;
                    break;&lt;br /&gt;
                case SoapMessageStage.AfterSerialize:&lt;br /&gt;
                    WriteOutput(message);&lt;br /&gt;
                    break;&lt;br /&gt;
                case SoapMessageStage.BeforeDeserialize:&lt;br /&gt;
                    WriteInput(message);&lt;br /&gt;
                    break;&lt;br /&gt;
                case SoapMessageStage.AfterDeserialize:&lt;br /&gt;
                    break;&lt;br /&gt;
                default:&lt;br /&gt;
                    throw new Exception(&amp;quot;invalid stage&amp;quot;);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        public void WriteOutput(SoapMessage message)&lt;br /&gt;
        {&lt;br /&gt;
            newStream.Position = 0;&lt;br /&gt;
            FileStream fs = new FileStream(filename, FileMode.Append,&lt;br /&gt;
                FileAccess.Write);&lt;br /&gt;
            StreamWriter w = new StreamWriter(fs);&lt;br /&gt;
 &lt;br /&gt;
            string soapString = (message is SoapServerMessage) ? &amp;quot;SoapResponse&amp;quot; : &amp;quot;SoapRequest&amp;quot;;&lt;br /&gt;
            w.WriteLine(&amp;quot;-----&amp;quot; + soapString + &amp;quot; at &amp;quot; + DateTime.Now);&lt;br /&gt;
            w.Flush();&lt;br /&gt;
            Copy(newStream, fs);&lt;br /&gt;
            w.Close();&lt;br /&gt;
            newStream.Position = 0;&lt;br /&gt;
            Copy(newStream, oldStream);&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        public void WriteInput(SoapMessage message)&lt;br /&gt;
        {&lt;br /&gt;
            Copy(oldStream, newStream);&lt;br /&gt;
            FileStream fs = new FileStream(filename, FileMode.Append,&lt;br /&gt;
                FileAccess.Write);&lt;br /&gt;
            StreamWriter w = new StreamWriter(fs);&lt;br /&gt;
 &lt;br /&gt;
            string soapString = (message is SoapServerMessage) ?&lt;br /&gt;
                &amp;quot;SoapRequest&amp;quot; : &amp;quot;SoapResponse&amp;quot;;&lt;br /&gt;
            w.WriteLine(&amp;quot;-----&amp;quot; + soapString +&lt;br /&gt;
                &amp;quot; at &amp;quot; + DateTime.Now);&lt;br /&gt;
            w.Flush();&lt;br /&gt;
            newStream.Position = 0;&lt;br /&gt;
            Copy(newStream, fs);&lt;br /&gt;
            w.Close();&lt;br /&gt;
            newStream.Position = 0;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        void Copy(Stream from, Stream to)&lt;br /&gt;
        {&lt;br /&gt;
            TextReader reader = new StreamReader(from);&lt;br /&gt;
            TextWriter writer = new StreamWriter(to);&lt;br /&gt;
            writer.WriteLine(reader.ReadToEnd());&lt;br /&gt;
            writer.Flush();&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    // Create a SoapExtensionAttribute for the SOAP Extension that can be&lt;br /&gt;
    // applied to an XML Web service method.&lt;br /&gt;
    [AttributeUsage(AttributeTargets.Method)]&lt;br /&gt;
    public class TraceExtensionAttribute : SoapExtensionAttribute&lt;br /&gt;
    {&lt;br /&gt;
 &lt;br /&gt;
        private string filename = @&amp;quot;C:\Users\Heiki Tamm\Documents\Õppematerjalid_2011\WebASPKohvikud\WebASPKohvikud\SoapLog.txt&amp;quot;;&lt;br /&gt;
        private int priority;&lt;br /&gt;
 &lt;br /&gt;
        public override Type ExtensionType&lt;br /&gt;
        {&lt;br /&gt;
            get { return typeof(TraceExtension); }&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        public override int Priority&lt;br /&gt;
        {&lt;br /&gt;
            get { return priority; }&lt;br /&gt;
            set { priority = value; }&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        public string Filename&lt;br /&gt;
        {&lt;br /&gt;
            get&lt;br /&gt;
            {&lt;br /&gt;
                return filename;&lt;br /&gt;
            }&lt;br /&gt;
            set&lt;br /&gt;
            {&lt;br /&gt;
                filename = value;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
// todo: &lt;br /&gt;
// from each soap header record query content &lt;br /&gt;
// (containing client, date, time, query ) into a DB&lt;br /&gt;
// for later reference for conducting any kind of &lt;br /&gt;
// applicable statistics and then generate stats :D !&lt;br /&gt;
// Proovin selliselt, et on lihtne statistika tabel:&lt;br /&gt;
// 1) meetod // välja kutsutava meetodi nimi&lt;br /&gt;
// 2) kuupäev // timestamp&lt;br /&gt;
// 3) callide arv // meetodi väljakutsimiste hulk&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==KLIENTRAKENDUS==&lt;br /&gt;
&lt;br /&gt;
===23. mai===&lt;br /&gt;
Mailis tegi kohvikute kuvamise ASP.NET rakenduse.&lt;br /&gt;
Kohvikud kuvatakse TReeView&#039;s &lt;br /&gt;
menüüde ja andmetega ning arvamustega kohvikute ja toitude ja jookide kohta.&lt;br /&gt;
&lt;br /&gt;
Samal lehel on kohvikuhuvilistele registreerimisvõimalus&lt;br /&gt;
ja sisselogimine.&lt;br /&gt;
&lt;br /&gt;
Kui on sisselogitud, saab lisada arvamusi.&lt;br /&gt;
Arvamuste lisamine on Ajax Extended Toolkiti controli Allways Visible ... tehtud, &lt;br /&gt;
nii et mööda pikka TreeViewd alla kerides saab &lt;br /&gt;
lisada arvamust ilma ülesserva tagasi minemata.&lt;/div&gt;</summary>
		<author><name>Mtoompuu</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Meeskond_%22H2%22&amp;diff=32563</id>
		<title>Meeskond &quot;H2&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Meeskond_%22H2%22&amp;diff=32563"/>
		<updated>2011-05-23T06:06:35Z</updated>

		<summary type="html">&lt;p&gt;Mtoompuu: /* Statistika */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Kohviku menüüsüsteem==&lt;br /&gt;
===Projekt===&lt;br /&gt;
Kohvikute (esialgu ainult IT-Kohviku) menüüsüsteem, mis on jälgitav mobiilseadmetelt. Lisaväärtusena võimaldab anda pakutavale hinnanguid, otsuse langetamise hõlbustamiseks kommentaar:(see viimane funktsioon kipub vist &amp;quot;veebirakenduseks&amp;quot; muutuma)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Sihtplatvormid:&lt;br /&gt;
Windows Mobile, iOS, Android(kui leiame vabatahtlikud testijad)&lt;br /&gt;
&lt;br /&gt;
===Taustinfo===&lt;br /&gt;
Praegune IT-Kohviku menüü on käsitsi täidetav valge tahvel. Projekti eesmärgiks on parendada IT-Kohviku menüüsüsteemi ja teha see veebi kaudu kättesaadavaks, nii, et menüüsse saab lisada ka karniiri valiku. Standardmenüü puhul saab menüüs olla ka illustreeriv foto. Hetkemenüü ning hinnad ja lahtioleku ajad on samuti jälgitavad võrguühendust eviva mobiilseadme ekraanilt, hõlbustades sellega valikute tegemist.&lt;br /&gt;
&lt;br /&gt;
===Liikmed===&lt;br /&gt;
* Mailis Toompuu&lt;br /&gt;
* Henri Kroosmann&lt;br /&gt;
* Heiki Tamm&lt;br /&gt;
&lt;br /&gt;
==Sisu==&lt;br /&gt;
&lt;br /&gt;
===XML Data===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;menu&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name1&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;0&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name1&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item1&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item2&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item3&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;0&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;0&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount1&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;0&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;0&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot1&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name2&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;255&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name2&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item4&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item5&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item6&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;255&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;255&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount2&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;255&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;255&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot2&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name3&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;1&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name3&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item7&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item8&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item9&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;1&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;1&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount3&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;1&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;1&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot3&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
&amp;lt;/menu&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===XML Schema===&lt;br /&gt;
&lt;br /&gt;
Ülevaade Schema&#039;st. &amp;lt;br /&amp;gt;&lt;br /&gt;
[[File:XMLSchema_Capture_(optimized).png]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Ning sellele vastav kood.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xs:schema attributeFormDefault=&amp;quot;unqualified&amp;quot; elementFormDefault=&amp;quot;qualified&amp;quot; xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xs:element name=&amp;quot;menu&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;product&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;type&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;id&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;extras&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence minOccurs=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;item&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;price&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence minOccurs=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;int&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;frac&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element minOccurs=&amp;quot;0&amp;quot; name=&amp;quot;discount&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;vote&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;pos&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;neg&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;screenshot&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===XML Style===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;html&amp;gt;&lt;br /&gt;
      &amp;lt;head&amp;gt;&lt;br /&gt;
        &amp;lt;style type=&amp;quot;text/css&amp;quot;&amp;gt;&lt;br /&gt;
          html,body{margin:0;padding:0;font-family:Helvetica,Arial,sans-serif;font-size:14px;line-height:19px;color:#2c2c2c;}&lt;br /&gt;
          h1{margin:0;padding:25px 0 0;font-size:22px;line-height:25px;text-align:center;}&lt;br /&gt;
          h2{margin:0;padding:5px;font-size:16px;line-height:21px}&lt;br /&gt;
          span.discount{padding:0 0 0 5px;color:red;}&lt;br /&gt;
          table{margin:20px auto;padding:0;}&lt;br /&gt;
          th,td{padding:5px;border:1px solid #2c2c2c;vertical-align:top;text-align:left}&lt;br /&gt;
          th{font-weight:bold;background-color:#eee;}&lt;br /&gt;
          ul{margin:0;padding:0;list-style-type:none;}&lt;br /&gt;
        &amp;lt;/style&amp;gt;&lt;br /&gt;
      &amp;lt;/head&amp;gt;&lt;br /&gt;
      &amp;lt;body&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;Menüü&amp;lt;/h1&amp;gt;&lt;br /&gt;
        &amp;lt;table width=&amp;quot;800&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;200&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;100&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col witdh=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;150&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;tr&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Nimetus&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Lisandid&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Tüüp&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Hind&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Hinne / Hindajaid&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Pilt&amp;lt;/th&amp;gt;&lt;br /&gt;
          &amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
          &amp;lt;xsl:for-each select=&amp;quot;menu/product&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:sort select=&amp;quot;type/id&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:sort select=&amp;quot;name&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;th&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;name&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/th&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;extras/node()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;ul&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:for-each select=&amp;quot;extras/item&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;li&amp;gt;&lt;br /&gt;
                          &amp;lt;xsl:value-of select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;/li&amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
                    &amp;lt;/ul&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;td&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;type/name&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;price/node()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    €&amp;lt;xsl:value-of select=&amp;quot;price/int&amp;quot;/&amp;gt;.&amp;lt;xsl:value-of select=&amp;quot;price/frac&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:if test=&amp;quot;price/discount/text()&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;span class=&amp;quot;discount&amp;quot;&amp;gt;&lt;br /&gt;
                        (-&amp;lt;xsl:value-of select=&amp;quot;price/discount&amp;quot;/&amp;gt;%)&lt;br /&gt;
                      &amp;lt;/span&amp;gt;&lt;br /&gt;
                    &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:variable name=&amp;quot;p&amp;quot; select=&amp;quot;vote/pos&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:variable name=&amp;quot;n&amp;quot; select=&amp;quot;vote/neg&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;td&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$p - $n&amp;quot;/&amp;gt; / &amp;lt;xsl:value-of select=&amp;quot;$p + $n&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;screenshot/text()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;img src=&amp;quot;{screenshot}&amp;quot; alt=&amp;quot;&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;img src=&amp;quot;screenshots/default.png&amp;quot; alt=&amp;quot;No image&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
      &amp;lt;/body&amp;gt;&lt;br /&gt;
    &amp;lt;/html&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
Sisu ja stiilifaili koostöö http://henri.kroosmann.ee/kool/xml/index.xml &amp;lt;!--[http://henri.kroosmann.ee/kool/xml/index.xml]--&amp;gt;&lt;br /&gt;
==VEEBITEENUSED==&lt;br /&gt;
&lt;br /&gt;
===8. aprill===&lt;br /&gt;
Otsustame teha teenused kõikide kohvikute menüüde kohta.&lt;br /&gt;
&lt;br /&gt;
===11.-12. aprill===&lt;br /&gt;
Henri koostab tabelite loogika&lt;br /&gt;
&lt;br /&gt;
===13. aprill===&lt;br /&gt;
Mailis otsustab veebiteenused teha asmx-is [webmethod]-itega&lt;br /&gt;
===14. aprill===&lt;br /&gt;
Mailis hakkab veebiteenuseid tegema&lt;br /&gt;
===17. aprill===&lt;br /&gt;
Veebiteenused on valmis:&lt;br /&gt;
&lt;br /&gt;
*AnnaJoogiliikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaJoogitabelirida_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*AnnaJookideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaK6igiKohvikuteAndmeteNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyyIDed_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyyRida_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyydeNimekiri_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaMenyyLiikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaMenyydeNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaPromillideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToiduliikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToitudeNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToitutabelirida_toiduIDjargi &lt;br /&gt;
&lt;br /&gt;
*AnnaYheKohvikuAndmed_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*KustutaJookMenyyst &lt;br /&gt;
&lt;br /&gt;
*KustutaMenyy &lt;br /&gt;
&lt;br /&gt;
*KustutaKohvik &lt;br /&gt;
&lt;br /&gt;
*KustutaToitMenyyst &lt;br /&gt;
&lt;br /&gt;
*KysiYheKohvikuYheMenyyToitudeIDeed_menyyIDjargi &lt;br /&gt;
&lt;br /&gt;
*LisaJoogiLiik &lt;br /&gt;
&lt;br /&gt;
*LisaMenyyLiik &lt;br /&gt;
&lt;br /&gt;
*LisaPromill &lt;br /&gt;
&lt;br /&gt;
*LisaToiduLiik &lt;br /&gt;
&lt;br /&gt;
*SecurityAuthenticateUser &lt;br /&gt;
&lt;br /&gt;
*TOITJOOKmenyysRida_menyyIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedJoogileMenyys &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedKohvikule &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedToiduleMenyys &lt;br /&gt;
&lt;br /&gt;
*annaJoogiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiKIRJELDUS_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiKOMM_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiID_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiNIMI_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKasOnTaimeT_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKasutajaNIMI_Guidjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuLahtiolekuAjad_kohvikuIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuTeated &lt;br /&gt;
&lt;br /&gt;
*annaLinnaID_LinnaNimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaLinnaNIMI_LinnaIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaLinnad_maakonnaNIMEjargi &lt;br /&gt;
&lt;br /&gt;
*annaMaakonnaID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaMenyyLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaMenyyLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaPromill_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaPromilliID_promilliNrJargi &lt;br /&gt;
&lt;br /&gt;
*annaPromilliNR_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduKIRJELDUS_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduKOMMENTAAR_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiNIMETUS_toiduIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaYheKohvikuMenyyd_kohvikuNIMEjargi &lt;br /&gt;
&lt;br /&gt;
*autendiKasutajaParooliJargi &lt;br /&gt;
&lt;br /&gt;
*k6igiKohvikuteMenyyd &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusJoogiKohta &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusKohvikuKohta &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusToiduKohta &lt;br /&gt;
&lt;br /&gt;
*lisaJookMenyysse &lt;br /&gt;
&lt;br /&gt;
*lisaToitMenyysse &lt;br /&gt;
&lt;br /&gt;
*lisaUusJook &lt;br /&gt;
&lt;br /&gt;
*lisaUusKohvik &lt;br /&gt;
&lt;br /&gt;
*lisaUusLahtiolekuAeg &lt;br /&gt;
&lt;br /&gt;
*lisaUusMenyy &lt;br /&gt;
&lt;br /&gt;
*lisaUusTeadaanne &lt;br /&gt;
&lt;br /&gt;
*lisaUusToit &lt;br /&gt;
&lt;br /&gt;
*nadalapaevaID_paevaNimetuseJargi &lt;br /&gt;
&lt;br /&gt;
*nadalapaevaNIMETUS_paevaIDjargi&lt;br /&gt;
&lt;br /&gt;
*Registreeru&lt;br /&gt;
&lt;br /&gt;
*LogiSisseTavakasutajana&lt;br /&gt;
&lt;br /&gt;
*LogiSisseKohvikuna&lt;br /&gt;
&lt;br /&gt;
===22.aprill===&lt;br /&gt;
Toimus koosolek&lt;br /&gt;
*Henri lubas meetodite turvamise teha.&lt;br /&gt;
*Heiki lubas statistika teha meetodite kohta.&lt;br /&gt;
&lt;br /&gt;
===Allikfail===&lt;br /&gt;
Allikfail: http://www.p2ike.com/CSharp/KohvikudVeebiteenus.rar&lt;br /&gt;
&lt;br /&gt;
Meetod &#039;k6igiKohvikuteMenyyd&#039; kuvab sellise xml struktuuri: http://www.p2ike.com/CSharp/k6igiKohvikuteMenyyd.xml&lt;br /&gt;
&lt;br /&gt;
Toidud ja joogid sorteeritakse liikide kaupa.&lt;br /&gt;
&lt;br /&gt;
===Andmetabelid===&lt;br /&gt;
[[File:andmetabelid.jpg|777px|thumb|left|andmemudel]]&lt;br /&gt;
===Statistika===&lt;br /&gt;
 using System;&lt;br /&gt;
using System.Web.Services;&lt;br /&gt;
using System.Web.Services.Protocols;&lt;br /&gt;
using System.IO;&lt;br /&gt;
using System.Net;&lt;br /&gt;
 &lt;br /&gt;
// Define a SOAP Extension that traces the SOAP request and SOAP&lt;br /&gt;
// response for the XML Web service method the SOAP extension is&lt;br /&gt;
// applied to. &lt;br /&gt;
 &lt;br /&gt;
namespace WebASPKohvikud&lt;br /&gt;
{&lt;br /&gt;
    public class TraceExtension : SoapExtension&lt;br /&gt;
    {&lt;br /&gt;
        Stream oldStream;&lt;br /&gt;
        Stream newStream;&lt;br /&gt;
        string filename;&lt;br /&gt;
 &lt;br /&gt;
        // Save the Stream representing the SOAP request or SOAP response into&lt;br /&gt;
        // a local memory buffer.&lt;br /&gt;
        public override Stream ChainStream(Stream stream)&lt;br /&gt;
        {&lt;br /&gt;
            oldStream = stream;&lt;br /&gt;
            newStream = new MemoryStream();&lt;br /&gt;
            return newStream;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        // When the SOAP extension is accessed for the first time, the XML Web&lt;br /&gt;
        // service method it is applied to is accessed to store the file&lt;br /&gt;
        // name passed in, using the corresponding SoapExtensionAttribute.	&lt;br /&gt;
        public override object GetInitializer(LogicalMethodInfo methodInfo, SoapExtensionAttribute attribute)&lt;br /&gt;
        {&lt;br /&gt;
            return ((TraceExtensionAttribute)attribute).Filename;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        // The SOAP extension was configured to run using a configuration file&lt;br /&gt;
        // instead of an attribute applied to a specific XML Web service&lt;br /&gt;
        // method.&lt;br /&gt;
        public override object GetInitializer(Type WebServiceType)&lt;br /&gt;
        {&lt;br /&gt;
            // Return a file name to log the trace information to, based on the&lt;br /&gt;
            // type.&lt;br /&gt;
            return &amp;quot;C:\\&amp;quot; + WebServiceType.FullName + &amp;quot;.log&amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        // Receive the file name stored by GetInitializer and store it in a&lt;br /&gt;
        // member variable for this specific instance.&lt;br /&gt;
        public override void Initialize(object initializer)&lt;br /&gt;
        {&lt;br /&gt;
            filename = (string)initializer;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        //  If the SoapMessageStage is such that the SoapRequest or&lt;br /&gt;
        //  SoapResponse is still in the SOAP format to be sent or received,&lt;br /&gt;
        //  save it out to a file.&lt;br /&gt;
        public override void ProcessMessage(SoapMessage message)&lt;br /&gt;
        {&lt;br /&gt;
            switch (message.Stage)&lt;br /&gt;
            {&lt;br /&gt;
                case SoapMessageStage.BeforeSerialize:&lt;br /&gt;
                    break;&lt;br /&gt;
                case SoapMessageStage.AfterSerialize:&lt;br /&gt;
                    WriteOutput(message);&lt;br /&gt;
                    break;&lt;br /&gt;
                case SoapMessageStage.BeforeDeserialize:&lt;br /&gt;
                    WriteInput(message);&lt;br /&gt;
                    break;&lt;br /&gt;
                case SoapMessageStage.AfterDeserialize:&lt;br /&gt;
                    break;&lt;br /&gt;
                default:&lt;br /&gt;
                    throw new Exception(&amp;quot;invalid stage&amp;quot;);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        public void WriteOutput(SoapMessage message)&lt;br /&gt;
        {&lt;br /&gt;
            newStream.Position = 0;&lt;br /&gt;
            FileStream fs = new FileStream(filename, FileMode.Append,&lt;br /&gt;
                FileAccess.Write);&lt;br /&gt;
            StreamWriter w = new StreamWriter(fs);&lt;br /&gt;
 &lt;br /&gt;
            string soapString = (message is SoapServerMessage) ? &amp;quot;SoapResponse&amp;quot; : &amp;quot;SoapRequest&amp;quot;;&lt;br /&gt;
            w.WriteLine(&amp;quot;-----&amp;quot; + soapString + &amp;quot; at &amp;quot; + DateTime.Now);&lt;br /&gt;
            w.Flush();&lt;br /&gt;
            Copy(newStream, fs);&lt;br /&gt;
            w.Close();&lt;br /&gt;
            newStream.Position = 0;&lt;br /&gt;
            Copy(newStream, oldStream);&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        public void WriteInput(SoapMessage message)&lt;br /&gt;
        {&lt;br /&gt;
            Copy(oldStream, newStream);&lt;br /&gt;
            FileStream fs = new FileStream(filename, FileMode.Append,&lt;br /&gt;
                FileAccess.Write);&lt;br /&gt;
            StreamWriter w = new StreamWriter(fs);&lt;br /&gt;
 &lt;br /&gt;
            string soapString = (message is SoapServerMessage) ?&lt;br /&gt;
                &amp;quot;SoapRequest&amp;quot; : &amp;quot;SoapResponse&amp;quot;;&lt;br /&gt;
            w.WriteLine(&amp;quot;-----&amp;quot; + soapString +&lt;br /&gt;
                &amp;quot; at &amp;quot; + DateTime.Now);&lt;br /&gt;
            w.Flush();&lt;br /&gt;
            newStream.Position = 0;&lt;br /&gt;
            Copy(newStream, fs);&lt;br /&gt;
            w.Close();&lt;br /&gt;
            newStream.Position = 0;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        void Copy(Stream from, Stream to)&lt;br /&gt;
        {&lt;br /&gt;
            TextReader reader = new StreamReader(from);&lt;br /&gt;
            TextWriter writer = new StreamWriter(to);&lt;br /&gt;
            writer.WriteLine(reader.ReadToEnd());&lt;br /&gt;
            writer.Flush();&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    // Create a SoapExtensionAttribute for the SOAP Extension that can be&lt;br /&gt;
    // applied to an XML Web service method.&lt;br /&gt;
    [AttributeUsage(AttributeTargets.Method)]&lt;br /&gt;
    public class TraceExtensionAttribute : SoapExtensionAttribute&lt;br /&gt;
    {&lt;br /&gt;
 &lt;br /&gt;
        private string filename = @&amp;quot;C:\Users\Heiki Tamm\Documents\Õppematerjalid_2011\WebASPKohvikud\WebASPKohvikud\SoapLog.txt&amp;quot;;&lt;br /&gt;
        private int priority;&lt;br /&gt;
 &lt;br /&gt;
        public override Type ExtensionType&lt;br /&gt;
        {&lt;br /&gt;
            get { return typeof(TraceExtension); }&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        public override int Priority&lt;br /&gt;
        {&lt;br /&gt;
            get { return priority; }&lt;br /&gt;
            set { priority = value; }&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        public string Filename&lt;br /&gt;
        {&lt;br /&gt;
            get&lt;br /&gt;
            {&lt;br /&gt;
                return filename;&lt;br /&gt;
            }&lt;br /&gt;
            set&lt;br /&gt;
            {&lt;br /&gt;
                filename = value;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
// todo: &lt;br /&gt;
// from each soap header record query content &lt;br /&gt;
// (containing client, date, time, query ) into a DB&lt;br /&gt;
// for later reference for conducting any kind of &lt;br /&gt;
// applicable statistics and then generate stats :D !&lt;br /&gt;
// Proovin selliselt, et on lihtne statistika tabel:&lt;br /&gt;
// 1) meetod // välja kutsutava meetodi nimi&lt;br /&gt;
// 2) kuupäev // timestamp&lt;br /&gt;
// 3) callide arv // meetodi väljakutsimiste hulk&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==KLIENTRAKENDUS==&lt;br /&gt;
&lt;br /&gt;
===23. mai===&lt;/div&gt;</summary>
		<author><name>Mtoompuu</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Meeskond_%22H2%22&amp;diff=30007</id>
		<title>Meeskond &quot;H2&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Meeskond_%22H2%22&amp;diff=30007"/>
		<updated>2011-05-03T07:18:17Z</updated>

		<summary type="html">&lt;p&gt;Mtoompuu: /* Andmetabelid */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Kohviku menüüsüsteem==&lt;br /&gt;
===Projekt===&lt;br /&gt;
Kohvikute (esialgu ainult IT-Kohviku) menüüsüsteem, mis on jälgitav mobiilseadmetelt. Lisaväärtusena võimaldab anda pakutavale hinnanguid, otsuse langetamise hõlbustamiseks kommentaar:(see viimane funktsioon kipub vist &amp;quot;veebirakenduseks&amp;quot; muutuma)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Sihtplatvormid:&lt;br /&gt;
Windows Mobile, iOS, Android(kui leiame vabatahtlikud testijad)&lt;br /&gt;
&lt;br /&gt;
===Taustinfo===&lt;br /&gt;
Praegune IT-Kohviku menüü on käsitsi täidetav valge tahvel. Projekti eesmärgiks on parendada IT-Kohviku menüüsüsteemi ja teha see veebi kaudu kättesaadavaks, nii, et menüüsse saab lisada ka karniiri valiku. Standardmenüü puhul saab menüüs olla ka illustreeriv foto. Hetkemenüü ning hinnad ja lahtioleku ajad on samuti jälgitavad võrguühendust eviva mobiilseadme ekraanilt, hõlbustades sellega valikute tegemist.&lt;br /&gt;
&lt;br /&gt;
===Liikmed===&lt;br /&gt;
* Mailis Toompuu&lt;br /&gt;
* Henri Kroosmann&lt;br /&gt;
* Heiki Tamm&lt;br /&gt;
&lt;br /&gt;
==Sisu==&lt;br /&gt;
&lt;br /&gt;
===XML Data===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;menu&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name1&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;0&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name1&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item1&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item2&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item3&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;0&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;0&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount1&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;0&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;0&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot1&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name2&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;255&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name2&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item4&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item5&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item6&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;255&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;255&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount2&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;255&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;255&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot2&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name3&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;1&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name3&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item7&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item8&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item9&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;1&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;1&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount3&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;1&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;1&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot3&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
&amp;lt;/menu&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===XML Schema===&lt;br /&gt;
&lt;br /&gt;
Ülevaade Schema&#039;st. &amp;lt;br /&amp;gt;&lt;br /&gt;
[[File:XMLSchema_Capture_(optimized).png]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Ning sellele vastav kood.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xs:schema attributeFormDefault=&amp;quot;unqualified&amp;quot; elementFormDefault=&amp;quot;qualified&amp;quot; xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xs:element name=&amp;quot;menu&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;product&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;type&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;id&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;extras&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence minOccurs=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;item&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;price&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence minOccurs=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;int&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;frac&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element minOccurs=&amp;quot;0&amp;quot; name=&amp;quot;discount&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;vote&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;pos&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;neg&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;screenshot&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===XML Style===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;html&amp;gt;&lt;br /&gt;
      &amp;lt;head&amp;gt;&lt;br /&gt;
        &amp;lt;style type=&amp;quot;text/css&amp;quot;&amp;gt;&lt;br /&gt;
          html,body{margin:0;padding:0;font-family:Helvetica,Arial,sans-serif;font-size:14px;line-height:19px;color:#2c2c2c;}&lt;br /&gt;
          h1{margin:0;padding:25px 0 0;font-size:22px;line-height:25px;text-align:center;}&lt;br /&gt;
          h2{margin:0;padding:5px;font-size:16px;line-height:21px}&lt;br /&gt;
          span.discount{padding:0 0 0 5px;color:red;}&lt;br /&gt;
          table{margin:20px auto;padding:0;}&lt;br /&gt;
          th,td{padding:5px;border:1px solid #2c2c2c;vertical-align:top;text-align:left}&lt;br /&gt;
          th{font-weight:bold;background-color:#eee;}&lt;br /&gt;
          ul{margin:0;padding:0;list-style-type:none;}&lt;br /&gt;
        &amp;lt;/style&amp;gt;&lt;br /&gt;
      &amp;lt;/head&amp;gt;&lt;br /&gt;
      &amp;lt;body&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;Menüü&amp;lt;/h1&amp;gt;&lt;br /&gt;
        &amp;lt;table width=&amp;quot;800&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;200&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;100&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col witdh=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;150&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;tr&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Nimetus&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Lisandid&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Tüüp&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Hind&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Hinne / Hindajaid&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Pilt&amp;lt;/th&amp;gt;&lt;br /&gt;
          &amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
          &amp;lt;xsl:for-each select=&amp;quot;menu/product&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:sort select=&amp;quot;type/id&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:sort select=&amp;quot;name&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;th&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;name&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/th&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;extras/node()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;ul&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:for-each select=&amp;quot;extras/item&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;li&amp;gt;&lt;br /&gt;
                          &amp;lt;xsl:value-of select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;/li&amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
                    &amp;lt;/ul&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;td&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;type/name&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;price/node()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    €&amp;lt;xsl:value-of select=&amp;quot;price/int&amp;quot;/&amp;gt;.&amp;lt;xsl:value-of select=&amp;quot;price/frac&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:if test=&amp;quot;price/discount/text()&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;span class=&amp;quot;discount&amp;quot;&amp;gt;&lt;br /&gt;
                        (-&amp;lt;xsl:value-of select=&amp;quot;price/discount&amp;quot;/&amp;gt;%)&lt;br /&gt;
                      &amp;lt;/span&amp;gt;&lt;br /&gt;
                    &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:variable name=&amp;quot;p&amp;quot; select=&amp;quot;vote/pos&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:variable name=&amp;quot;n&amp;quot; select=&amp;quot;vote/neg&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;td&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$p - $n&amp;quot;/&amp;gt; / &amp;lt;xsl:value-of select=&amp;quot;$p + $n&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;screenshot/text()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;img src=&amp;quot;{screenshot}&amp;quot; alt=&amp;quot;&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;img src=&amp;quot;screenshots/default.png&amp;quot; alt=&amp;quot;No image&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
      &amp;lt;/body&amp;gt;&lt;br /&gt;
    &amp;lt;/html&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
Sisu ja stiilifaili koostöö http://henri.kroosmann.ee/kool/xml/index.xml &amp;lt;!--[http://henri.kroosmann.ee/kool/xml/index.xml]--&amp;gt;&lt;br /&gt;
==VEEBITEENUSED==&lt;br /&gt;
&lt;br /&gt;
===8. aprill===&lt;br /&gt;
Otsustame teha teenused kõikide kohvikute menüüde kohta.&lt;br /&gt;
&lt;br /&gt;
===11.-12. aprill===&lt;br /&gt;
Henri koostab tabelite loogika&lt;br /&gt;
&lt;br /&gt;
===13. aprill===&lt;br /&gt;
Mailis otsustab veebiteenused teha asmx-is [webmethod]-itega&lt;br /&gt;
===14. aprill===&lt;br /&gt;
Mailis hakkab veebiteenuseid tegema&lt;br /&gt;
===17. aprill===&lt;br /&gt;
Veebiteenused on valmis:&lt;br /&gt;
&lt;br /&gt;
*AnnaJoogiliikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaJoogitabelirida_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*AnnaJookideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaK6igiKohvikuteAndmeteNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyyIDed_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyyRida_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyydeNimekiri_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaMenyyLiikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaMenyydeNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaPromillideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToiduliikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToitudeNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToitutabelirida_toiduIDjargi &lt;br /&gt;
&lt;br /&gt;
*AnnaYheKohvikuAndmed_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*KustutaJookMenyyst &lt;br /&gt;
&lt;br /&gt;
*KustutaMenyy &lt;br /&gt;
&lt;br /&gt;
*KustutaKohvik &lt;br /&gt;
&lt;br /&gt;
*KustutaToitMenyyst &lt;br /&gt;
&lt;br /&gt;
*KysiYheKohvikuYheMenyyToitudeIDeed_menyyIDjargi &lt;br /&gt;
&lt;br /&gt;
*LisaJoogiLiik &lt;br /&gt;
&lt;br /&gt;
*LisaMenyyLiik &lt;br /&gt;
&lt;br /&gt;
*LisaPromill &lt;br /&gt;
&lt;br /&gt;
*LisaToiduLiik &lt;br /&gt;
&lt;br /&gt;
*SecurityAuthenticateUser &lt;br /&gt;
&lt;br /&gt;
*TOITJOOKmenyysRida_menyyIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedJoogileMenyys &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedKohvikule &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedToiduleMenyys &lt;br /&gt;
&lt;br /&gt;
*annaJoogiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiKIRJELDUS_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiKOMM_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiID_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiNIMI_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKasOnTaimeT_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKasutajaNIMI_Guidjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuLahtiolekuAjad_kohvikuIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuTeated &lt;br /&gt;
&lt;br /&gt;
*annaLinnaID_LinnaNimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaLinnaNIMI_LinnaIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaLinnad_maakonnaNIMEjargi &lt;br /&gt;
&lt;br /&gt;
*annaMaakonnaID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaMenyyLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaMenyyLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaPromill_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaPromilliID_promilliNrJargi &lt;br /&gt;
&lt;br /&gt;
*annaPromilliNR_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduKIRJELDUS_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduKOMMENTAAR_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiNIMETUS_toiduIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaYheKohvikuMenyyd_kohvikuNIMEjargi &lt;br /&gt;
&lt;br /&gt;
*autendiKasutajaParooliJargi &lt;br /&gt;
&lt;br /&gt;
*k6igiKohvikuteMenyyd &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusJoogiKohta &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusKohvikuKohta &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusToiduKohta &lt;br /&gt;
&lt;br /&gt;
*lisaJookMenyysse &lt;br /&gt;
&lt;br /&gt;
*lisaToitMenyysse &lt;br /&gt;
&lt;br /&gt;
*lisaUusJook &lt;br /&gt;
&lt;br /&gt;
*lisaUusKohvik &lt;br /&gt;
&lt;br /&gt;
*lisaUusLahtiolekuAeg &lt;br /&gt;
&lt;br /&gt;
*lisaUusMenyy &lt;br /&gt;
&lt;br /&gt;
*lisaUusTeadaanne &lt;br /&gt;
&lt;br /&gt;
*lisaUusToit &lt;br /&gt;
&lt;br /&gt;
*nadalapaevaID_paevaNimetuseJargi &lt;br /&gt;
&lt;br /&gt;
*nadalapaevaNIMETUS_paevaIDjargi&lt;br /&gt;
&lt;br /&gt;
*Registreeru&lt;br /&gt;
&lt;br /&gt;
*LogiSisseTavakasutajana&lt;br /&gt;
&lt;br /&gt;
*LogiSisseKohvikuna&lt;br /&gt;
&lt;br /&gt;
===22.aprill===&lt;br /&gt;
Toimus koosolek&lt;br /&gt;
*Henri lubas meetodite turvamise teha.&lt;br /&gt;
*Heiki lubas statistika teha meetodite kohta.&lt;br /&gt;
&lt;br /&gt;
===Allikfail===&lt;br /&gt;
Allikfail: http://www.p2ike.com/CSharp/KohvikudVeebiteenus.rar&lt;br /&gt;
&lt;br /&gt;
Meetod &#039;k6igiKohvikuteMenyyd&#039; kuvab sellise xml struktuuri: http://www.p2ike.com/CSharp/k6igiKohvikuteMenyyd.xml&lt;br /&gt;
&lt;br /&gt;
Toidud ja joogid sorteeritakse liikide kaupa.&lt;br /&gt;
&lt;br /&gt;
===Andmetabelid===&lt;br /&gt;
[[File:andmetabelid.jpg|777px|thumb|left|andmemudel]]&lt;br /&gt;
===Statistika===&lt;br /&gt;
 using System;&lt;br /&gt;
using System.Web.Services;&lt;br /&gt;
using System.Web.Services.Protocols;&lt;br /&gt;
using System.IO;&lt;br /&gt;
using System.Net;&lt;br /&gt;
 &lt;br /&gt;
// Define a SOAP Extension that traces the SOAP request and SOAP&lt;br /&gt;
// response for the XML Web service method the SOAP extension is&lt;br /&gt;
// applied to. &lt;br /&gt;
 &lt;br /&gt;
namespace WebASPKohvikud&lt;br /&gt;
{&lt;br /&gt;
    public class TraceExtension : SoapExtension&lt;br /&gt;
    {&lt;br /&gt;
        Stream oldStream;&lt;br /&gt;
        Stream newStream;&lt;br /&gt;
        string filename;&lt;br /&gt;
 &lt;br /&gt;
        // Save the Stream representing the SOAP request or SOAP response into&lt;br /&gt;
        // a local memory buffer.&lt;br /&gt;
        public override Stream ChainStream(Stream stream)&lt;br /&gt;
        {&lt;br /&gt;
            oldStream = stream;&lt;br /&gt;
            newStream = new MemoryStream();&lt;br /&gt;
            return newStream;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        // When the SOAP extension is accessed for the first time, the XML Web&lt;br /&gt;
        // service method it is applied to is accessed to store the file&lt;br /&gt;
        // name passed in, using the corresponding SoapExtensionAttribute.	&lt;br /&gt;
        public override object GetInitializer(LogicalMethodInfo methodInfo, SoapExtensionAttribute attribute)&lt;br /&gt;
        {&lt;br /&gt;
            return ((TraceExtensionAttribute)attribute).Filename;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        // The SOAP extension was configured to run using a configuration file&lt;br /&gt;
        // instead of an attribute applied to a specific XML Web service&lt;br /&gt;
        // method.&lt;br /&gt;
        public override object GetInitializer(Type WebServiceType)&lt;br /&gt;
        {&lt;br /&gt;
            // Return a file name to log the trace information to, based on the&lt;br /&gt;
            // type.&lt;br /&gt;
            return &amp;quot;C:\\&amp;quot; + WebServiceType.FullName + &amp;quot;.log&amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        // Receive the file name stored by GetInitializer and store it in a&lt;br /&gt;
        // member variable for this specific instance.&lt;br /&gt;
        public override void Initialize(object initializer)&lt;br /&gt;
        {&lt;br /&gt;
            filename = (string)initializer;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        //  If the SoapMessageStage is such that the SoapRequest or&lt;br /&gt;
        //  SoapResponse is still in the SOAP format to be sent or received,&lt;br /&gt;
        //  save it out to a file.&lt;br /&gt;
        public override void ProcessMessage(SoapMessage message)&lt;br /&gt;
        {&lt;br /&gt;
            switch (message.Stage)&lt;br /&gt;
            {&lt;br /&gt;
                case SoapMessageStage.BeforeSerialize:&lt;br /&gt;
                    break;&lt;br /&gt;
                case SoapMessageStage.AfterSerialize:&lt;br /&gt;
                    WriteOutput(message);&lt;br /&gt;
                    break;&lt;br /&gt;
                case SoapMessageStage.BeforeDeserialize:&lt;br /&gt;
                    WriteInput(message);&lt;br /&gt;
                    break;&lt;br /&gt;
                case SoapMessageStage.AfterDeserialize:&lt;br /&gt;
                    break;&lt;br /&gt;
                default:&lt;br /&gt;
                    throw new Exception(&amp;quot;invalid stage&amp;quot;);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        public void WriteOutput(SoapMessage message)&lt;br /&gt;
        {&lt;br /&gt;
            newStream.Position = 0;&lt;br /&gt;
            FileStream fs = new FileStream(filename, FileMode.Append,&lt;br /&gt;
                FileAccess.Write);&lt;br /&gt;
            StreamWriter w = new StreamWriter(fs);&lt;br /&gt;
 &lt;br /&gt;
            string soapString = (message is SoapServerMessage) ? &amp;quot;SoapResponse&amp;quot; : &amp;quot;SoapRequest&amp;quot;;&lt;br /&gt;
            w.WriteLine(&amp;quot;-----&amp;quot; + soapString + &amp;quot; at &amp;quot; + DateTime.Now);&lt;br /&gt;
            w.Flush();&lt;br /&gt;
            Copy(newStream, fs);&lt;br /&gt;
            w.Close();&lt;br /&gt;
            newStream.Position = 0;&lt;br /&gt;
            Copy(newStream, oldStream);&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        public void WriteInput(SoapMessage message)&lt;br /&gt;
        {&lt;br /&gt;
            Copy(oldStream, newStream);&lt;br /&gt;
            FileStream fs = new FileStream(filename, FileMode.Append,&lt;br /&gt;
                FileAccess.Write);&lt;br /&gt;
            StreamWriter w = new StreamWriter(fs);&lt;br /&gt;
 &lt;br /&gt;
            string soapString = (message is SoapServerMessage) ?&lt;br /&gt;
                &amp;quot;SoapRequest&amp;quot; : &amp;quot;SoapResponse&amp;quot;;&lt;br /&gt;
            w.WriteLine(&amp;quot;-----&amp;quot; + soapString +&lt;br /&gt;
                &amp;quot; at &amp;quot; + DateTime.Now);&lt;br /&gt;
            w.Flush();&lt;br /&gt;
            newStream.Position = 0;&lt;br /&gt;
            Copy(newStream, fs);&lt;br /&gt;
            w.Close();&lt;br /&gt;
            newStream.Position = 0;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        void Copy(Stream from, Stream to)&lt;br /&gt;
        {&lt;br /&gt;
            TextReader reader = new StreamReader(from);&lt;br /&gt;
            TextWriter writer = new StreamWriter(to);&lt;br /&gt;
            writer.WriteLine(reader.ReadToEnd());&lt;br /&gt;
            writer.Flush();&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    // Create a SoapExtensionAttribute for the SOAP Extension that can be&lt;br /&gt;
    // applied to an XML Web service method.&lt;br /&gt;
    [AttributeUsage(AttributeTargets.Method)]&lt;br /&gt;
    public class TraceExtensionAttribute : SoapExtensionAttribute&lt;br /&gt;
    {&lt;br /&gt;
 &lt;br /&gt;
        private string filename = @&amp;quot;C:\Users\Heiki Tamm\Documents\Õppematerjalid_2011\WebASPKohvikud\WebASPKohvikud\SoapLog.txt&amp;quot;;&lt;br /&gt;
        private int priority;&lt;br /&gt;
 &lt;br /&gt;
        public override Type ExtensionType&lt;br /&gt;
        {&lt;br /&gt;
            get { return typeof(TraceExtension); }&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        public override int Priority&lt;br /&gt;
        {&lt;br /&gt;
            get { return priority; }&lt;br /&gt;
            set { priority = value; }&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        public string Filename&lt;br /&gt;
        {&lt;br /&gt;
            get&lt;br /&gt;
            {&lt;br /&gt;
                return filename;&lt;br /&gt;
            }&lt;br /&gt;
            set&lt;br /&gt;
            {&lt;br /&gt;
                filename = value;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
// todo: &lt;br /&gt;
// from each soap header record query content &lt;br /&gt;
// (containing client, date, time, query ) into a DB&lt;br /&gt;
// for later reference for conducting any kind of &lt;br /&gt;
// applicable statistics and then generate stats :D !&lt;br /&gt;
// Proovin selliselt, et on lihtne statistika tabel:&lt;br /&gt;
// 1) meetod // välja kutsutava meetodi nimi&lt;br /&gt;
// 2) kuupäev // timestamp&lt;br /&gt;
// 3) callide arv // meetodi väljakutsimiste hulk&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mtoompuu</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Meeskond_%22H2%22&amp;diff=30006</id>
		<title>Meeskond &quot;H2&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Meeskond_%22H2%22&amp;diff=30006"/>
		<updated>2011-05-03T07:12:52Z</updated>

		<summary type="html">&lt;p&gt;Mtoompuu: /* 17. aprill */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Kohviku menüüsüsteem==&lt;br /&gt;
===Projekt===&lt;br /&gt;
Kohvikute (esialgu ainult IT-Kohviku) menüüsüsteem, mis on jälgitav mobiilseadmetelt. Lisaväärtusena võimaldab anda pakutavale hinnanguid, otsuse langetamise hõlbustamiseks kommentaar:(see viimane funktsioon kipub vist &amp;quot;veebirakenduseks&amp;quot; muutuma)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Sihtplatvormid:&lt;br /&gt;
Windows Mobile, iOS, Android(kui leiame vabatahtlikud testijad)&lt;br /&gt;
&lt;br /&gt;
===Taustinfo===&lt;br /&gt;
Praegune IT-Kohviku menüü on käsitsi täidetav valge tahvel. Projekti eesmärgiks on parendada IT-Kohviku menüüsüsteemi ja teha see veebi kaudu kättesaadavaks, nii, et menüüsse saab lisada ka karniiri valiku. Standardmenüü puhul saab menüüs olla ka illustreeriv foto. Hetkemenüü ning hinnad ja lahtioleku ajad on samuti jälgitavad võrguühendust eviva mobiilseadme ekraanilt, hõlbustades sellega valikute tegemist.&lt;br /&gt;
&lt;br /&gt;
===Liikmed===&lt;br /&gt;
* Mailis Toompuu&lt;br /&gt;
* Henri Kroosmann&lt;br /&gt;
* Heiki Tamm&lt;br /&gt;
&lt;br /&gt;
==Sisu==&lt;br /&gt;
&lt;br /&gt;
===XML Data===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;menu&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name1&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;0&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name1&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item1&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item2&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item3&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;0&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;0&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount1&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;0&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;0&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot1&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name2&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;255&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name2&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item4&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item5&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item6&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;255&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;255&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount2&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;255&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;255&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot2&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name3&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;1&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name3&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item7&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item8&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item9&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;1&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;1&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount3&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;1&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;1&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot3&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
&amp;lt;/menu&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===XML Schema===&lt;br /&gt;
&lt;br /&gt;
Ülevaade Schema&#039;st. &amp;lt;br /&amp;gt;&lt;br /&gt;
[[File:XMLSchema_Capture_(optimized).png]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Ning sellele vastav kood.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xs:schema attributeFormDefault=&amp;quot;unqualified&amp;quot; elementFormDefault=&amp;quot;qualified&amp;quot; xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xs:element name=&amp;quot;menu&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;product&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;type&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;id&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;extras&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence minOccurs=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;item&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;price&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence minOccurs=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;int&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;frac&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element minOccurs=&amp;quot;0&amp;quot; name=&amp;quot;discount&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;vote&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;pos&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;neg&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;screenshot&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===XML Style===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;html&amp;gt;&lt;br /&gt;
      &amp;lt;head&amp;gt;&lt;br /&gt;
        &amp;lt;style type=&amp;quot;text/css&amp;quot;&amp;gt;&lt;br /&gt;
          html,body{margin:0;padding:0;font-family:Helvetica,Arial,sans-serif;font-size:14px;line-height:19px;color:#2c2c2c;}&lt;br /&gt;
          h1{margin:0;padding:25px 0 0;font-size:22px;line-height:25px;text-align:center;}&lt;br /&gt;
          h2{margin:0;padding:5px;font-size:16px;line-height:21px}&lt;br /&gt;
          span.discount{padding:0 0 0 5px;color:red;}&lt;br /&gt;
          table{margin:20px auto;padding:0;}&lt;br /&gt;
          th,td{padding:5px;border:1px solid #2c2c2c;vertical-align:top;text-align:left}&lt;br /&gt;
          th{font-weight:bold;background-color:#eee;}&lt;br /&gt;
          ul{margin:0;padding:0;list-style-type:none;}&lt;br /&gt;
        &amp;lt;/style&amp;gt;&lt;br /&gt;
      &amp;lt;/head&amp;gt;&lt;br /&gt;
      &amp;lt;body&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;Menüü&amp;lt;/h1&amp;gt;&lt;br /&gt;
        &amp;lt;table width=&amp;quot;800&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;200&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;100&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col witdh=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;150&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;tr&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Nimetus&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Lisandid&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Tüüp&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Hind&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Hinne / Hindajaid&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Pilt&amp;lt;/th&amp;gt;&lt;br /&gt;
          &amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
          &amp;lt;xsl:for-each select=&amp;quot;menu/product&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:sort select=&amp;quot;type/id&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:sort select=&amp;quot;name&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;th&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;name&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/th&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;extras/node()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;ul&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:for-each select=&amp;quot;extras/item&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;li&amp;gt;&lt;br /&gt;
                          &amp;lt;xsl:value-of select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;/li&amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
                    &amp;lt;/ul&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;td&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;type/name&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;price/node()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    €&amp;lt;xsl:value-of select=&amp;quot;price/int&amp;quot;/&amp;gt;.&amp;lt;xsl:value-of select=&amp;quot;price/frac&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:if test=&amp;quot;price/discount/text()&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;span class=&amp;quot;discount&amp;quot;&amp;gt;&lt;br /&gt;
                        (-&amp;lt;xsl:value-of select=&amp;quot;price/discount&amp;quot;/&amp;gt;%)&lt;br /&gt;
                      &amp;lt;/span&amp;gt;&lt;br /&gt;
                    &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:variable name=&amp;quot;p&amp;quot; select=&amp;quot;vote/pos&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:variable name=&amp;quot;n&amp;quot; select=&amp;quot;vote/neg&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;td&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$p - $n&amp;quot;/&amp;gt; / &amp;lt;xsl:value-of select=&amp;quot;$p + $n&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;screenshot/text()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;img src=&amp;quot;{screenshot}&amp;quot; alt=&amp;quot;&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;img src=&amp;quot;screenshots/default.png&amp;quot; alt=&amp;quot;No image&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
      &amp;lt;/body&amp;gt;&lt;br /&gt;
    &amp;lt;/html&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
Sisu ja stiilifaili koostöö http://henri.kroosmann.ee/kool/xml/index.xml &amp;lt;!--[http://henri.kroosmann.ee/kool/xml/index.xml]--&amp;gt;&lt;br /&gt;
==VEEBITEENUSED==&lt;br /&gt;
&lt;br /&gt;
===8. aprill===&lt;br /&gt;
Otsustame teha teenused kõikide kohvikute menüüde kohta.&lt;br /&gt;
&lt;br /&gt;
===11.-12. aprill===&lt;br /&gt;
Henri koostab tabelite loogika&lt;br /&gt;
&lt;br /&gt;
===13. aprill===&lt;br /&gt;
Mailis otsustab veebiteenused teha asmx-is [webmethod]-itega&lt;br /&gt;
===14. aprill===&lt;br /&gt;
Mailis hakkab veebiteenuseid tegema&lt;br /&gt;
===17. aprill===&lt;br /&gt;
Veebiteenused on valmis:&lt;br /&gt;
&lt;br /&gt;
*AnnaJoogiliikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaJoogitabelirida_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*AnnaJookideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaK6igiKohvikuteAndmeteNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyyIDed_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyyRida_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyydeNimekiri_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaMenyyLiikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaMenyydeNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaPromillideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToiduliikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToitudeNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToitutabelirida_toiduIDjargi &lt;br /&gt;
&lt;br /&gt;
*AnnaYheKohvikuAndmed_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*KustutaJookMenyyst &lt;br /&gt;
&lt;br /&gt;
*KustutaMenyy &lt;br /&gt;
&lt;br /&gt;
*KustutaKohvik &lt;br /&gt;
&lt;br /&gt;
*KustutaToitMenyyst &lt;br /&gt;
&lt;br /&gt;
*KysiYheKohvikuYheMenyyToitudeIDeed_menyyIDjargi &lt;br /&gt;
&lt;br /&gt;
*LisaJoogiLiik &lt;br /&gt;
&lt;br /&gt;
*LisaMenyyLiik &lt;br /&gt;
&lt;br /&gt;
*LisaPromill &lt;br /&gt;
&lt;br /&gt;
*LisaToiduLiik &lt;br /&gt;
&lt;br /&gt;
*SecurityAuthenticateUser &lt;br /&gt;
&lt;br /&gt;
*TOITJOOKmenyysRida_menyyIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedJoogileMenyys &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedKohvikule &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedToiduleMenyys &lt;br /&gt;
&lt;br /&gt;
*annaJoogiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiKIRJELDUS_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiKOMM_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiID_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiNIMI_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKasOnTaimeT_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKasutajaNIMI_Guidjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuLahtiolekuAjad_kohvikuIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuTeated &lt;br /&gt;
&lt;br /&gt;
*annaLinnaID_LinnaNimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaLinnaNIMI_LinnaIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaLinnad_maakonnaNIMEjargi &lt;br /&gt;
&lt;br /&gt;
*annaMaakonnaID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaMenyyLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaMenyyLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaPromill_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaPromilliID_promilliNrJargi &lt;br /&gt;
&lt;br /&gt;
*annaPromilliNR_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduKIRJELDUS_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduKOMMENTAAR_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiNIMETUS_toiduIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaYheKohvikuMenyyd_kohvikuNIMEjargi &lt;br /&gt;
&lt;br /&gt;
*autendiKasutajaParooliJargi &lt;br /&gt;
&lt;br /&gt;
*k6igiKohvikuteMenyyd &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusJoogiKohta &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusKohvikuKohta &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusToiduKohta &lt;br /&gt;
&lt;br /&gt;
*lisaJookMenyysse &lt;br /&gt;
&lt;br /&gt;
*lisaToitMenyysse &lt;br /&gt;
&lt;br /&gt;
*lisaUusJook &lt;br /&gt;
&lt;br /&gt;
*lisaUusKohvik &lt;br /&gt;
&lt;br /&gt;
*lisaUusLahtiolekuAeg &lt;br /&gt;
&lt;br /&gt;
*lisaUusMenyy &lt;br /&gt;
&lt;br /&gt;
*lisaUusTeadaanne &lt;br /&gt;
&lt;br /&gt;
*lisaUusToit &lt;br /&gt;
&lt;br /&gt;
*nadalapaevaID_paevaNimetuseJargi &lt;br /&gt;
&lt;br /&gt;
*nadalapaevaNIMETUS_paevaIDjargi&lt;br /&gt;
&lt;br /&gt;
*Registreeru&lt;br /&gt;
&lt;br /&gt;
*LogiSisseTavakasutajana&lt;br /&gt;
&lt;br /&gt;
*LogiSisseKohvikuna&lt;br /&gt;
&lt;br /&gt;
===22.aprill===&lt;br /&gt;
Toimus koosolek&lt;br /&gt;
*Henri lubas meetodite turvamise teha.&lt;br /&gt;
*Heiki lubas statistika teha meetodite kohta.&lt;br /&gt;
&lt;br /&gt;
===Allikfail===&lt;br /&gt;
Allikfail: http://www.p2ike.com/CSharp/KohvikudVeebiteenus.rar&lt;br /&gt;
&lt;br /&gt;
Meetod &#039;k6igiKohvikuteMenyyd&#039; kuvab sellise xml struktuuri: http://www.p2ike.com/CSharp/k6igiKohvikuteMenyyd.xml&lt;br /&gt;
&lt;br /&gt;
Toidud ja joogid sorteeritakse liikide kaupa.&lt;br /&gt;
&lt;br /&gt;
===Andmetabelid===&lt;br /&gt;
[[File:andmetabelid.jpg|777px|thumb|left|andmemudel]]&lt;/div&gt;</summary>
		<author><name>Mtoompuu</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Meeskond_%22H2%22&amp;diff=29677</id>
		<title>Meeskond &quot;H2&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Meeskond_%22H2%22&amp;diff=29677"/>
		<updated>2011-05-02T16:42:23Z</updated>

		<summary type="html">&lt;p&gt;Mtoompuu: /* Andmetabelid */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Kohviku menüüsüsteem==&lt;br /&gt;
===Projekt===&lt;br /&gt;
Kohvikute (esialgu ainult IT-Kohviku) menüüsüsteem, mis on jälgitav mobiilseadmetelt. Lisaväärtusena võimaldab anda pakutavale hinnanguid, otsuse langetamise hõlbustamiseks kommentaar:(see viimane funktsioon kipub vist &amp;quot;veebirakenduseks&amp;quot; muutuma)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Sihtplatvormid:&lt;br /&gt;
Windows Mobile, iOS, Android(kui leiame vabatahtlikud testijad)&lt;br /&gt;
&lt;br /&gt;
===Taustinfo===&lt;br /&gt;
Praegune IT-Kohviku menüü on käsitsi täidetav valge tahvel. Projekti eesmärgiks on parendada IT-Kohviku menüüsüsteemi ja teha see veebi kaudu kättesaadavaks, nii, et menüüsse saab lisada ka karniiri valiku. Standardmenüü puhul saab menüüs olla ka illustreeriv foto. Hetkemenüü ning hinnad ja lahtioleku ajad on samuti jälgitavad võrguühendust eviva mobiilseadme ekraanilt, hõlbustades sellega valikute tegemist.&lt;br /&gt;
&lt;br /&gt;
===Liikmed===&lt;br /&gt;
* Mailis Toompuu&lt;br /&gt;
* Henri Kroosmann&lt;br /&gt;
* Heiki Tamm&lt;br /&gt;
&lt;br /&gt;
==Sisu==&lt;br /&gt;
&lt;br /&gt;
===XML Data===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;menu&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name1&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;0&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name1&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item1&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item2&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item3&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;0&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;0&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount1&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;0&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;0&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot1&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name2&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;255&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name2&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item4&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item5&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item6&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;255&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;255&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount2&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;255&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;255&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot2&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name3&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;1&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name3&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item7&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item8&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item9&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;1&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;1&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount3&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;1&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;1&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot3&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
&amp;lt;/menu&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===XML Schema===&lt;br /&gt;
&lt;br /&gt;
Ülevaade Schema&#039;st. &amp;lt;br /&amp;gt;&lt;br /&gt;
[[File:XMLSchema_Capture_(optimized).png]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Ning sellele vastav kood.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xs:schema attributeFormDefault=&amp;quot;unqualified&amp;quot; elementFormDefault=&amp;quot;qualified&amp;quot; xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xs:element name=&amp;quot;menu&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;product&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;type&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;id&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;extras&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence minOccurs=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;item&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;price&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence minOccurs=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;int&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;frac&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element minOccurs=&amp;quot;0&amp;quot; name=&amp;quot;discount&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;vote&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;pos&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;neg&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;screenshot&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===XML Style===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;html&amp;gt;&lt;br /&gt;
      &amp;lt;head&amp;gt;&lt;br /&gt;
        &amp;lt;style type=&amp;quot;text/css&amp;quot;&amp;gt;&lt;br /&gt;
          html,body{margin:0;padding:0;font-family:Helvetica,Arial,sans-serif;font-size:14px;line-height:19px;color:#2c2c2c;}&lt;br /&gt;
          h1{margin:0;padding:25px 0 0;font-size:22px;line-height:25px;text-align:center;}&lt;br /&gt;
          h2{margin:0;padding:5px;font-size:16px;line-height:21px}&lt;br /&gt;
          span.discount{padding:0 0 0 5px;color:red;}&lt;br /&gt;
          table{margin:20px auto;padding:0;}&lt;br /&gt;
          th,td{padding:5px;border:1px solid #2c2c2c;vertical-align:top;text-align:left}&lt;br /&gt;
          th{font-weight:bold;background-color:#eee;}&lt;br /&gt;
          ul{margin:0;padding:0;list-style-type:none;}&lt;br /&gt;
        &amp;lt;/style&amp;gt;&lt;br /&gt;
      &amp;lt;/head&amp;gt;&lt;br /&gt;
      &amp;lt;body&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;Menüü&amp;lt;/h1&amp;gt;&lt;br /&gt;
        &amp;lt;table width=&amp;quot;800&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;200&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;100&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col witdh=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;150&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;tr&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Nimetus&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Lisandid&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Tüüp&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Hind&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Hinne / Hindajaid&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Pilt&amp;lt;/th&amp;gt;&lt;br /&gt;
          &amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
          &amp;lt;xsl:for-each select=&amp;quot;menu/product&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:sort select=&amp;quot;type/id&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:sort select=&amp;quot;name&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;th&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;name&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/th&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;extras/node()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;ul&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:for-each select=&amp;quot;extras/item&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;li&amp;gt;&lt;br /&gt;
                          &amp;lt;xsl:value-of select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;/li&amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
                    &amp;lt;/ul&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;td&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;type/name&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;price/node()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    €&amp;lt;xsl:value-of select=&amp;quot;price/int&amp;quot;/&amp;gt;.&amp;lt;xsl:value-of select=&amp;quot;price/frac&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:if test=&amp;quot;price/discount/text()&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;span class=&amp;quot;discount&amp;quot;&amp;gt;&lt;br /&gt;
                        (-&amp;lt;xsl:value-of select=&amp;quot;price/discount&amp;quot;/&amp;gt;%)&lt;br /&gt;
                      &amp;lt;/span&amp;gt;&lt;br /&gt;
                    &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:variable name=&amp;quot;p&amp;quot; select=&amp;quot;vote/pos&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:variable name=&amp;quot;n&amp;quot; select=&amp;quot;vote/neg&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;td&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$p - $n&amp;quot;/&amp;gt; / &amp;lt;xsl:value-of select=&amp;quot;$p + $n&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;screenshot/text()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;img src=&amp;quot;{screenshot}&amp;quot; alt=&amp;quot;&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;img src=&amp;quot;screenshots/default.png&amp;quot; alt=&amp;quot;No image&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
      &amp;lt;/body&amp;gt;&lt;br /&gt;
    &amp;lt;/html&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
Sisu ja stiilifaili koostöö http://henri.kroosmann.ee/kool/xml/index.xml &amp;lt;!--[http://henri.kroosmann.ee/kool/xml/index.xml]--&amp;gt;&lt;br /&gt;
==VEEBITEENUSED==&lt;br /&gt;
&lt;br /&gt;
===8. aprill===&lt;br /&gt;
Otsustame teha teenused kõikide kohvikute menüüde kohta.&lt;br /&gt;
&lt;br /&gt;
===11.-12. aprill===&lt;br /&gt;
Henri koostab tabelite loogika&lt;br /&gt;
&lt;br /&gt;
===13. aprill===&lt;br /&gt;
Mailis otsustab veebiteenused teha asmx-is [webmethod]-itega&lt;br /&gt;
===14. aprill===&lt;br /&gt;
Mailis hakkab veebiteenuseid tegema&lt;br /&gt;
===17. aprill===&lt;br /&gt;
Veebiteenused on valmis:&lt;br /&gt;
&lt;br /&gt;
*AnnaJoogiliikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaJoogitabelirida_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*AnnaJookideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaK6igiKohvikuteAndmeteNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyyIDed_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyyRida_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyydeNimekiri_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaMenyyLiikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaMenyydeNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaPromillideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToiduliikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToitudeNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToitutabelirida_toiduIDjargi &lt;br /&gt;
&lt;br /&gt;
*AnnaYheKohvikuAndmed_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*KustutaJookMenyyst &lt;br /&gt;
&lt;br /&gt;
*KustutaMenyy &lt;br /&gt;
&lt;br /&gt;
*KustutaKohvik &lt;br /&gt;
&lt;br /&gt;
*KustutaToitMenyyst &lt;br /&gt;
&lt;br /&gt;
*KysiYheKohvikuYheMenyyToitudeIDeed_menyyIDjargi &lt;br /&gt;
&lt;br /&gt;
*LisaJoogiLiik &lt;br /&gt;
&lt;br /&gt;
*LisaMenyyLiik &lt;br /&gt;
&lt;br /&gt;
*LisaPromill &lt;br /&gt;
&lt;br /&gt;
*LisaToiduLiik &lt;br /&gt;
&lt;br /&gt;
*SecurityAuthenticateUser &lt;br /&gt;
&lt;br /&gt;
*TOITJOOKmenyysRida_menyyIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedJoogileMenyys &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedKohvikule &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedToiduleMenyys &lt;br /&gt;
&lt;br /&gt;
*annaJoogiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiKIRJELDUS_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiKOMM_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiID_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiNIMI_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKasOnTaimeT_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKasutajaNIMI_Guidjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuLahtiolekuAjad_kohvikuIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuTeated &lt;br /&gt;
&lt;br /&gt;
*annaLinnaID_LinnaNimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaLinnaNIMI_LinnaIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaLinnad_maakonnaNIMEjargi &lt;br /&gt;
&lt;br /&gt;
*annaMaakonnaID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaMenyyLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaMenyyLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaPromill_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaPromilliID_promilliNrJargi &lt;br /&gt;
&lt;br /&gt;
*annaPromilliNR_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduKIRJELDUS_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduKOMMENTAAR_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiNIMETUS_toiduIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaYheKohvikuMenyyd_kohvikuNIMEjargi &lt;br /&gt;
&lt;br /&gt;
*autendiKasutajaParooliJargi &lt;br /&gt;
&lt;br /&gt;
*k6igiKohvikuteMenyyd &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusJoogiKohta &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusKohvikuKohta &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusToiduKohta &lt;br /&gt;
&lt;br /&gt;
*lisaJookMenyysse &lt;br /&gt;
&lt;br /&gt;
*lisaToitMenyysse &lt;br /&gt;
&lt;br /&gt;
*lisaUusJook &lt;br /&gt;
&lt;br /&gt;
*lisaUusKohvik &lt;br /&gt;
&lt;br /&gt;
*lisaUusLahtiolekuAeg &lt;br /&gt;
&lt;br /&gt;
*lisaUusMenyy &lt;br /&gt;
&lt;br /&gt;
*lisaUusTeadaanne &lt;br /&gt;
&lt;br /&gt;
*lisaUusToit &lt;br /&gt;
&lt;br /&gt;
*nadalapaevaID_paevaNimetuseJargi &lt;br /&gt;
&lt;br /&gt;
*nadalapaevaNIMETUS_paevaIDjargi&lt;br /&gt;
&lt;br /&gt;
*Registreeru&lt;br /&gt;
&lt;br /&gt;
*LogiSisseTavakasutajana&lt;br /&gt;
&lt;br /&gt;
*LogiSisseKohvikuna&lt;br /&gt;
&lt;br /&gt;
===Allikfail===&lt;br /&gt;
Allikfail: http://www.p2ike.com/CSharp/KohvikudVeebiteenus.rar&lt;br /&gt;
&lt;br /&gt;
Meetod &#039;k6igiKohvikuteMenyyd&#039; kuvab sellise xml struktuuri: http://www.p2ike.com/CSharp/k6igiKohvikuteMenyyd.xml&lt;br /&gt;
&lt;br /&gt;
Toidud ja joogid sorteeritakse liikide kaupa.&lt;br /&gt;
&lt;br /&gt;
===Andmetabelid===&lt;br /&gt;
[[File:andmetabelid.jpg|777px|thumb|left|andmemudel]]&lt;/div&gt;</summary>
		<author><name>Mtoompuu</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Meeskond_%22H2%22&amp;diff=29674</id>
		<title>Meeskond &quot;H2&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Meeskond_%22H2%22&amp;diff=29674"/>
		<updated>2011-05-02T16:42:07Z</updated>

		<summary type="html">&lt;p&gt;Mtoompuu: /* Andmetabelid */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Kohviku menüüsüsteem==&lt;br /&gt;
===Projekt===&lt;br /&gt;
Kohvikute (esialgu ainult IT-Kohviku) menüüsüsteem, mis on jälgitav mobiilseadmetelt. Lisaväärtusena võimaldab anda pakutavale hinnanguid, otsuse langetamise hõlbustamiseks kommentaar:(see viimane funktsioon kipub vist &amp;quot;veebirakenduseks&amp;quot; muutuma)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Sihtplatvormid:&lt;br /&gt;
Windows Mobile, iOS, Android(kui leiame vabatahtlikud testijad)&lt;br /&gt;
&lt;br /&gt;
===Taustinfo===&lt;br /&gt;
Praegune IT-Kohviku menüü on käsitsi täidetav valge tahvel. Projekti eesmärgiks on parendada IT-Kohviku menüüsüsteemi ja teha see veebi kaudu kättesaadavaks, nii, et menüüsse saab lisada ka karniiri valiku. Standardmenüü puhul saab menüüs olla ka illustreeriv foto. Hetkemenüü ning hinnad ja lahtioleku ajad on samuti jälgitavad võrguühendust eviva mobiilseadme ekraanilt, hõlbustades sellega valikute tegemist.&lt;br /&gt;
&lt;br /&gt;
===Liikmed===&lt;br /&gt;
* Mailis Toompuu&lt;br /&gt;
* Henri Kroosmann&lt;br /&gt;
* Heiki Tamm&lt;br /&gt;
&lt;br /&gt;
==Sisu==&lt;br /&gt;
&lt;br /&gt;
===XML Data===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;menu&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name1&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;0&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name1&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item1&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item2&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item3&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;0&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;0&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount1&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;0&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;0&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot1&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name2&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;255&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name2&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item4&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item5&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item6&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;255&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;255&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount2&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;255&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;255&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot2&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name3&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;1&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name3&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item7&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item8&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item9&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;1&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;1&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount3&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;1&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;1&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot3&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
&amp;lt;/menu&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===XML Schema===&lt;br /&gt;
&lt;br /&gt;
Ülevaade Schema&#039;st. &amp;lt;br /&amp;gt;&lt;br /&gt;
[[File:XMLSchema_Capture_(optimized).png]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Ning sellele vastav kood.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xs:schema attributeFormDefault=&amp;quot;unqualified&amp;quot; elementFormDefault=&amp;quot;qualified&amp;quot; xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xs:element name=&amp;quot;menu&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;product&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;type&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;id&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;extras&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence minOccurs=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;item&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;price&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence minOccurs=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;int&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;frac&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element minOccurs=&amp;quot;0&amp;quot; name=&amp;quot;discount&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;vote&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;pos&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;neg&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;screenshot&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===XML Style===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;html&amp;gt;&lt;br /&gt;
      &amp;lt;head&amp;gt;&lt;br /&gt;
        &amp;lt;style type=&amp;quot;text/css&amp;quot;&amp;gt;&lt;br /&gt;
          html,body{margin:0;padding:0;font-family:Helvetica,Arial,sans-serif;font-size:14px;line-height:19px;color:#2c2c2c;}&lt;br /&gt;
          h1{margin:0;padding:25px 0 0;font-size:22px;line-height:25px;text-align:center;}&lt;br /&gt;
          h2{margin:0;padding:5px;font-size:16px;line-height:21px}&lt;br /&gt;
          span.discount{padding:0 0 0 5px;color:red;}&lt;br /&gt;
          table{margin:20px auto;padding:0;}&lt;br /&gt;
          th,td{padding:5px;border:1px solid #2c2c2c;vertical-align:top;text-align:left}&lt;br /&gt;
          th{font-weight:bold;background-color:#eee;}&lt;br /&gt;
          ul{margin:0;padding:0;list-style-type:none;}&lt;br /&gt;
        &amp;lt;/style&amp;gt;&lt;br /&gt;
      &amp;lt;/head&amp;gt;&lt;br /&gt;
      &amp;lt;body&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;Menüü&amp;lt;/h1&amp;gt;&lt;br /&gt;
        &amp;lt;table width=&amp;quot;800&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;200&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;100&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col witdh=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;150&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;tr&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Nimetus&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Lisandid&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Tüüp&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Hind&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Hinne / Hindajaid&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Pilt&amp;lt;/th&amp;gt;&lt;br /&gt;
          &amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
          &amp;lt;xsl:for-each select=&amp;quot;menu/product&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:sort select=&amp;quot;type/id&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:sort select=&amp;quot;name&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;th&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;name&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/th&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;extras/node()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;ul&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:for-each select=&amp;quot;extras/item&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;li&amp;gt;&lt;br /&gt;
                          &amp;lt;xsl:value-of select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;/li&amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
                    &amp;lt;/ul&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;td&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;type/name&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;price/node()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    €&amp;lt;xsl:value-of select=&amp;quot;price/int&amp;quot;/&amp;gt;.&amp;lt;xsl:value-of select=&amp;quot;price/frac&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:if test=&amp;quot;price/discount/text()&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;span class=&amp;quot;discount&amp;quot;&amp;gt;&lt;br /&gt;
                        (-&amp;lt;xsl:value-of select=&amp;quot;price/discount&amp;quot;/&amp;gt;%)&lt;br /&gt;
                      &amp;lt;/span&amp;gt;&lt;br /&gt;
                    &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:variable name=&amp;quot;p&amp;quot; select=&amp;quot;vote/pos&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:variable name=&amp;quot;n&amp;quot; select=&amp;quot;vote/neg&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;td&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$p - $n&amp;quot;/&amp;gt; / &amp;lt;xsl:value-of select=&amp;quot;$p + $n&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;screenshot/text()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;img src=&amp;quot;{screenshot}&amp;quot; alt=&amp;quot;&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;img src=&amp;quot;screenshots/default.png&amp;quot; alt=&amp;quot;No image&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
      &amp;lt;/body&amp;gt;&lt;br /&gt;
    &amp;lt;/html&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
Sisu ja stiilifaili koostöö http://henri.kroosmann.ee/kool/xml/index.xml &amp;lt;!--[http://henri.kroosmann.ee/kool/xml/index.xml]--&amp;gt;&lt;br /&gt;
==VEEBITEENUSED==&lt;br /&gt;
&lt;br /&gt;
===8. aprill===&lt;br /&gt;
Otsustame teha teenused kõikide kohvikute menüüde kohta.&lt;br /&gt;
&lt;br /&gt;
===11.-12. aprill===&lt;br /&gt;
Henri koostab tabelite loogika&lt;br /&gt;
&lt;br /&gt;
===13. aprill===&lt;br /&gt;
Mailis otsustab veebiteenused teha asmx-is [webmethod]-itega&lt;br /&gt;
===14. aprill===&lt;br /&gt;
Mailis hakkab veebiteenuseid tegema&lt;br /&gt;
===17. aprill===&lt;br /&gt;
Veebiteenused on valmis:&lt;br /&gt;
&lt;br /&gt;
*AnnaJoogiliikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaJoogitabelirida_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*AnnaJookideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaK6igiKohvikuteAndmeteNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyyIDed_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyyRida_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyydeNimekiri_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaMenyyLiikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaMenyydeNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaPromillideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToiduliikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToitudeNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToitutabelirida_toiduIDjargi &lt;br /&gt;
&lt;br /&gt;
*AnnaYheKohvikuAndmed_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*KustutaJookMenyyst &lt;br /&gt;
&lt;br /&gt;
*KustutaMenyy &lt;br /&gt;
&lt;br /&gt;
*KustutaKohvik &lt;br /&gt;
&lt;br /&gt;
*KustutaToitMenyyst &lt;br /&gt;
&lt;br /&gt;
*KysiYheKohvikuYheMenyyToitudeIDeed_menyyIDjargi &lt;br /&gt;
&lt;br /&gt;
*LisaJoogiLiik &lt;br /&gt;
&lt;br /&gt;
*LisaMenyyLiik &lt;br /&gt;
&lt;br /&gt;
*LisaPromill &lt;br /&gt;
&lt;br /&gt;
*LisaToiduLiik &lt;br /&gt;
&lt;br /&gt;
*SecurityAuthenticateUser &lt;br /&gt;
&lt;br /&gt;
*TOITJOOKmenyysRida_menyyIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedJoogileMenyys &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedKohvikule &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedToiduleMenyys &lt;br /&gt;
&lt;br /&gt;
*annaJoogiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiKIRJELDUS_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiKOMM_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiID_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiNIMI_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKasOnTaimeT_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKasutajaNIMI_Guidjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuLahtiolekuAjad_kohvikuIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuTeated &lt;br /&gt;
&lt;br /&gt;
*annaLinnaID_LinnaNimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaLinnaNIMI_LinnaIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaLinnad_maakonnaNIMEjargi &lt;br /&gt;
&lt;br /&gt;
*annaMaakonnaID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaMenyyLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaMenyyLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaPromill_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaPromilliID_promilliNrJargi &lt;br /&gt;
&lt;br /&gt;
*annaPromilliNR_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduKIRJELDUS_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduKOMMENTAAR_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiNIMETUS_toiduIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaYheKohvikuMenyyd_kohvikuNIMEjargi &lt;br /&gt;
&lt;br /&gt;
*autendiKasutajaParooliJargi &lt;br /&gt;
&lt;br /&gt;
*k6igiKohvikuteMenyyd &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusJoogiKohta &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusKohvikuKohta &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusToiduKohta &lt;br /&gt;
&lt;br /&gt;
*lisaJookMenyysse &lt;br /&gt;
&lt;br /&gt;
*lisaToitMenyysse &lt;br /&gt;
&lt;br /&gt;
*lisaUusJook &lt;br /&gt;
&lt;br /&gt;
*lisaUusKohvik &lt;br /&gt;
&lt;br /&gt;
*lisaUusLahtiolekuAeg &lt;br /&gt;
&lt;br /&gt;
*lisaUusMenyy &lt;br /&gt;
&lt;br /&gt;
*lisaUusTeadaanne &lt;br /&gt;
&lt;br /&gt;
*lisaUusToit &lt;br /&gt;
&lt;br /&gt;
*nadalapaevaID_paevaNimetuseJargi &lt;br /&gt;
&lt;br /&gt;
*nadalapaevaNIMETUS_paevaIDjargi&lt;br /&gt;
&lt;br /&gt;
*Registreeru&lt;br /&gt;
&lt;br /&gt;
*LogiSisseTavakasutajana&lt;br /&gt;
&lt;br /&gt;
*LogiSisseKohvikuna&lt;br /&gt;
&lt;br /&gt;
===Allikfail===&lt;br /&gt;
Allikfail: http://www.p2ike.com/CSharp/KohvikudVeebiteenus.rar&lt;br /&gt;
&lt;br /&gt;
Meetod &#039;k6igiKohvikuteMenyyd&#039; kuvab sellise xml struktuuri: http://www.p2ike.com/CSharp/k6igiKohvikuteMenyyd.xml&lt;br /&gt;
&lt;br /&gt;
Toidud ja joogid sorteeritakse liikide kaupa.&lt;br /&gt;
&lt;br /&gt;
===Andmetabelid===&lt;br /&gt;
[[File:andmetabelid.jpg|700px|thumb|left|andmemudel]]&lt;/div&gt;</summary>
		<author><name>Mtoompuu</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Meeskond_%22H2%22&amp;diff=29673</id>
		<title>Meeskond &quot;H2&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Meeskond_%22H2%22&amp;diff=29673"/>
		<updated>2011-05-02T16:41:51Z</updated>

		<summary type="html">&lt;p&gt;Mtoompuu: /* Andmetabelid */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Kohviku menüüsüsteem==&lt;br /&gt;
===Projekt===&lt;br /&gt;
Kohvikute (esialgu ainult IT-Kohviku) menüüsüsteem, mis on jälgitav mobiilseadmetelt. Lisaväärtusena võimaldab anda pakutavale hinnanguid, otsuse langetamise hõlbustamiseks kommentaar:(see viimane funktsioon kipub vist &amp;quot;veebirakenduseks&amp;quot; muutuma)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Sihtplatvormid:&lt;br /&gt;
Windows Mobile, iOS, Android(kui leiame vabatahtlikud testijad)&lt;br /&gt;
&lt;br /&gt;
===Taustinfo===&lt;br /&gt;
Praegune IT-Kohviku menüü on käsitsi täidetav valge tahvel. Projekti eesmärgiks on parendada IT-Kohviku menüüsüsteemi ja teha see veebi kaudu kättesaadavaks, nii, et menüüsse saab lisada ka karniiri valiku. Standardmenüü puhul saab menüüs olla ka illustreeriv foto. Hetkemenüü ning hinnad ja lahtioleku ajad on samuti jälgitavad võrguühendust eviva mobiilseadme ekraanilt, hõlbustades sellega valikute tegemist.&lt;br /&gt;
&lt;br /&gt;
===Liikmed===&lt;br /&gt;
* Mailis Toompuu&lt;br /&gt;
* Henri Kroosmann&lt;br /&gt;
* Heiki Tamm&lt;br /&gt;
&lt;br /&gt;
==Sisu==&lt;br /&gt;
&lt;br /&gt;
===XML Data===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;menu&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name1&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;0&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name1&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item1&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item2&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item3&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;0&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;0&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount1&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;0&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;0&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot1&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name2&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;255&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name2&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item4&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item5&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item6&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;255&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;255&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount2&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;255&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;255&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot2&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name3&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;1&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name3&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item7&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item8&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item9&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;1&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;1&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount3&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;1&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;1&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot3&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
&amp;lt;/menu&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===XML Schema===&lt;br /&gt;
&lt;br /&gt;
Ülevaade Schema&#039;st. &amp;lt;br /&amp;gt;&lt;br /&gt;
[[File:XMLSchema_Capture_(optimized).png]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Ning sellele vastav kood.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xs:schema attributeFormDefault=&amp;quot;unqualified&amp;quot; elementFormDefault=&amp;quot;qualified&amp;quot; xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xs:element name=&amp;quot;menu&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;product&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;type&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;id&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;extras&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence minOccurs=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;item&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;price&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence minOccurs=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;int&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;frac&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element minOccurs=&amp;quot;0&amp;quot; name=&amp;quot;discount&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;vote&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;pos&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;neg&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;screenshot&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===XML Style===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;html&amp;gt;&lt;br /&gt;
      &amp;lt;head&amp;gt;&lt;br /&gt;
        &amp;lt;style type=&amp;quot;text/css&amp;quot;&amp;gt;&lt;br /&gt;
          html,body{margin:0;padding:0;font-family:Helvetica,Arial,sans-serif;font-size:14px;line-height:19px;color:#2c2c2c;}&lt;br /&gt;
          h1{margin:0;padding:25px 0 0;font-size:22px;line-height:25px;text-align:center;}&lt;br /&gt;
          h2{margin:0;padding:5px;font-size:16px;line-height:21px}&lt;br /&gt;
          span.discount{padding:0 0 0 5px;color:red;}&lt;br /&gt;
          table{margin:20px auto;padding:0;}&lt;br /&gt;
          th,td{padding:5px;border:1px solid #2c2c2c;vertical-align:top;text-align:left}&lt;br /&gt;
          th{font-weight:bold;background-color:#eee;}&lt;br /&gt;
          ul{margin:0;padding:0;list-style-type:none;}&lt;br /&gt;
        &amp;lt;/style&amp;gt;&lt;br /&gt;
      &amp;lt;/head&amp;gt;&lt;br /&gt;
      &amp;lt;body&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;Menüü&amp;lt;/h1&amp;gt;&lt;br /&gt;
        &amp;lt;table width=&amp;quot;800&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;200&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;100&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col witdh=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;150&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;tr&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Nimetus&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Lisandid&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Tüüp&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Hind&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Hinne / Hindajaid&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Pilt&amp;lt;/th&amp;gt;&lt;br /&gt;
          &amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
          &amp;lt;xsl:for-each select=&amp;quot;menu/product&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:sort select=&amp;quot;type/id&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:sort select=&amp;quot;name&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;th&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;name&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/th&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;extras/node()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;ul&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:for-each select=&amp;quot;extras/item&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;li&amp;gt;&lt;br /&gt;
                          &amp;lt;xsl:value-of select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;/li&amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
                    &amp;lt;/ul&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;td&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;type/name&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;price/node()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    €&amp;lt;xsl:value-of select=&amp;quot;price/int&amp;quot;/&amp;gt;.&amp;lt;xsl:value-of select=&amp;quot;price/frac&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:if test=&amp;quot;price/discount/text()&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;span class=&amp;quot;discount&amp;quot;&amp;gt;&lt;br /&gt;
                        (-&amp;lt;xsl:value-of select=&amp;quot;price/discount&amp;quot;/&amp;gt;%)&lt;br /&gt;
                      &amp;lt;/span&amp;gt;&lt;br /&gt;
                    &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:variable name=&amp;quot;p&amp;quot; select=&amp;quot;vote/pos&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:variable name=&amp;quot;n&amp;quot; select=&amp;quot;vote/neg&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;td&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$p - $n&amp;quot;/&amp;gt; / &amp;lt;xsl:value-of select=&amp;quot;$p + $n&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;screenshot/text()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;img src=&amp;quot;{screenshot}&amp;quot; alt=&amp;quot;&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;img src=&amp;quot;screenshots/default.png&amp;quot; alt=&amp;quot;No image&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
      &amp;lt;/body&amp;gt;&lt;br /&gt;
    &amp;lt;/html&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
Sisu ja stiilifaili koostöö http://henri.kroosmann.ee/kool/xml/index.xml &amp;lt;!--[http://henri.kroosmann.ee/kool/xml/index.xml]--&amp;gt;&lt;br /&gt;
==VEEBITEENUSED==&lt;br /&gt;
&lt;br /&gt;
===8. aprill===&lt;br /&gt;
Otsustame teha teenused kõikide kohvikute menüüde kohta.&lt;br /&gt;
&lt;br /&gt;
===11.-12. aprill===&lt;br /&gt;
Henri koostab tabelite loogika&lt;br /&gt;
&lt;br /&gt;
===13. aprill===&lt;br /&gt;
Mailis otsustab veebiteenused teha asmx-is [webmethod]-itega&lt;br /&gt;
===14. aprill===&lt;br /&gt;
Mailis hakkab veebiteenuseid tegema&lt;br /&gt;
===17. aprill===&lt;br /&gt;
Veebiteenused on valmis:&lt;br /&gt;
&lt;br /&gt;
*AnnaJoogiliikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaJoogitabelirida_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*AnnaJookideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaK6igiKohvikuteAndmeteNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyyIDed_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyyRida_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyydeNimekiri_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaMenyyLiikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaMenyydeNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaPromillideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToiduliikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToitudeNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToitutabelirida_toiduIDjargi &lt;br /&gt;
&lt;br /&gt;
*AnnaYheKohvikuAndmed_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*KustutaJookMenyyst &lt;br /&gt;
&lt;br /&gt;
*KustutaMenyy &lt;br /&gt;
&lt;br /&gt;
*KustutaKohvik &lt;br /&gt;
&lt;br /&gt;
*KustutaToitMenyyst &lt;br /&gt;
&lt;br /&gt;
*KysiYheKohvikuYheMenyyToitudeIDeed_menyyIDjargi &lt;br /&gt;
&lt;br /&gt;
*LisaJoogiLiik &lt;br /&gt;
&lt;br /&gt;
*LisaMenyyLiik &lt;br /&gt;
&lt;br /&gt;
*LisaPromill &lt;br /&gt;
&lt;br /&gt;
*LisaToiduLiik &lt;br /&gt;
&lt;br /&gt;
*SecurityAuthenticateUser &lt;br /&gt;
&lt;br /&gt;
*TOITJOOKmenyysRida_menyyIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedJoogileMenyys &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedKohvikule &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedToiduleMenyys &lt;br /&gt;
&lt;br /&gt;
*annaJoogiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiKIRJELDUS_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiKOMM_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiID_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiNIMI_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKasOnTaimeT_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKasutajaNIMI_Guidjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuLahtiolekuAjad_kohvikuIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuTeated &lt;br /&gt;
&lt;br /&gt;
*annaLinnaID_LinnaNimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaLinnaNIMI_LinnaIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaLinnad_maakonnaNIMEjargi &lt;br /&gt;
&lt;br /&gt;
*annaMaakonnaID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaMenyyLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaMenyyLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaPromill_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaPromilliID_promilliNrJargi &lt;br /&gt;
&lt;br /&gt;
*annaPromilliNR_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduKIRJELDUS_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduKOMMENTAAR_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiNIMETUS_toiduIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaYheKohvikuMenyyd_kohvikuNIMEjargi &lt;br /&gt;
&lt;br /&gt;
*autendiKasutajaParooliJargi &lt;br /&gt;
&lt;br /&gt;
*k6igiKohvikuteMenyyd &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusJoogiKohta &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusKohvikuKohta &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusToiduKohta &lt;br /&gt;
&lt;br /&gt;
*lisaJookMenyysse &lt;br /&gt;
&lt;br /&gt;
*lisaToitMenyysse &lt;br /&gt;
&lt;br /&gt;
*lisaUusJook &lt;br /&gt;
&lt;br /&gt;
*lisaUusKohvik &lt;br /&gt;
&lt;br /&gt;
*lisaUusLahtiolekuAeg &lt;br /&gt;
&lt;br /&gt;
*lisaUusMenyy &lt;br /&gt;
&lt;br /&gt;
*lisaUusTeadaanne &lt;br /&gt;
&lt;br /&gt;
*lisaUusToit &lt;br /&gt;
&lt;br /&gt;
*nadalapaevaID_paevaNimetuseJargi &lt;br /&gt;
&lt;br /&gt;
*nadalapaevaNIMETUS_paevaIDjargi&lt;br /&gt;
&lt;br /&gt;
*Registreeru&lt;br /&gt;
&lt;br /&gt;
*LogiSisseTavakasutajana&lt;br /&gt;
&lt;br /&gt;
*LogiSisseKohvikuna&lt;br /&gt;
&lt;br /&gt;
===Allikfail===&lt;br /&gt;
Allikfail: http://www.p2ike.com/CSharp/KohvikudVeebiteenus.rar&lt;br /&gt;
&lt;br /&gt;
Meetod &#039;k6igiKohvikuteMenyyd&#039; kuvab sellise xml struktuuri: http://www.p2ike.com/CSharp/k6igiKohvikuteMenyyd.xml&lt;br /&gt;
&lt;br /&gt;
Toidud ja joogid sorteeritakse liikide kaupa.&lt;br /&gt;
&lt;br /&gt;
===Andmetabelid===&lt;br /&gt;
[[File:andmetabelid.jpg|900px|thumb|left|andmemudel]]&lt;/div&gt;</summary>
		<author><name>Mtoompuu</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Meeskond_%22H2%22&amp;diff=29671</id>
		<title>Meeskond &quot;H2&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Meeskond_%22H2%22&amp;diff=29671"/>
		<updated>2011-05-02T16:41:19Z</updated>

		<summary type="html">&lt;p&gt;Mtoompuu: /* Allikfail */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Kohviku menüüsüsteem==&lt;br /&gt;
===Projekt===&lt;br /&gt;
Kohvikute (esialgu ainult IT-Kohviku) menüüsüsteem, mis on jälgitav mobiilseadmetelt. Lisaväärtusena võimaldab anda pakutavale hinnanguid, otsuse langetamise hõlbustamiseks kommentaar:(see viimane funktsioon kipub vist &amp;quot;veebirakenduseks&amp;quot; muutuma)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Sihtplatvormid:&lt;br /&gt;
Windows Mobile, iOS, Android(kui leiame vabatahtlikud testijad)&lt;br /&gt;
&lt;br /&gt;
===Taustinfo===&lt;br /&gt;
Praegune IT-Kohviku menüü on käsitsi täidetav valge tahvel. Projekti eesmärgiks on parendada IT-Kohviku menüüsüsteemi ja teha see veebi kaudu kättesaadavaks, nii, et menüüsse saab lisada ka karniiri valiku. Standardmenüü puhul saab menüüs olla ka illustreeriv foto. Hetkemenüü ning hinnad ja lahtioleku ajad on samuti jälgitavad võrguühendust eviva mobiilseadme ekraanilt, hõlbustades sellega valikute tegemist.&lt;br /&gt;
&lt;br /&gt;
===Liikmed===&lt;br /&gt;
* Mailis Toompuu&lt;br /&gt;
* Henri Kroosmann&lt;br /&gt;
* Heiki Tamm&lt;br /&gt;
&lt;br /&gt;
==Sisu==&lt;br /&gt;
&lt;br /&gt;
===XML Data===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;menu&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name1&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;0&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name1&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item1&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item2&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item3&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;0&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;0&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount1&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;0&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;0&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot1&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name2&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;255&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name2&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item4&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item5&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item6&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;255&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;255&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount2&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;255&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;255&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot2&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name3&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;1&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name3&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item7&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item8&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item9&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;1&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;1&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount3&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;1&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;1&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot3&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
&amp;lt;/menu&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===XML Schema===&lt;br /&gt;
&lt;br /&gt;
Ülevaade Schema&#039;st. &amp;lt;br /&amp;gt;&lt;br /&gt;
[[File:XMLSchema_Capture_(optimized).png]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Ning sellele vastav kood.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xs:schema attributeFormDefault=&amp;quot;unqualified&amp;quot; elementFormDefault=&amp;quot;qualified&amp;quot; xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xs:element name=&amp;quot;menu&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;product&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;type&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;id&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;extras&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence minOccurs=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;item&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;price&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence minOccurs=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;int&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;frac&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element minOccurs=&amp;quot;0&amp;quot; name=&amp;quot;discount&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;vote&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;pos&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;neg&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;screenshot&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===XML Style===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;html&amp;gt;&lt;br /&gt;
      &amp;lt;head&amp;gt;&lt;br /&gt;
        &amp;lt;style type=&amp;quot;text/css&amp;quot;&amp;gt;&lt;br /&gt;
          html,body{margin:0;padding:0;font-family:Helvetica,Arial,sans-serif;font-size:14px;line-height:19px;color:#2c2c2c;}&lt;br /&gt;
          h1{margin:0;padding:25px 0 0;font-size:22px;line-height:25px;text-align:center;}&lt;br /&gt;
          h2{margin:0;padding:5px;font-size:16px;line-height:21px}&lt;br /&gt;
          span.discount{padding:0 0 0 5px;color:red;}&lt;br /&gt;
          table{margin:20px auto;padding:0;}&lt;br /&gt;
          th,td{padding:5px;border:1px solid #2c2c2c;vertical-align:top;text-align:left}&lt;br /&gt;
          th{font-weight:bold;background-color:#eee;}&lt;br /&gt;
          ul{margin:0;padding:0;list-style-type:none;}&lt;br /&gt;
        &amp;lt;/style&amp;gt;&lt;br /&gt;
      &amp;lt;/head&amp;gt;&lt;br /&gt;
      &amp;lt;body&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;Menüü&amp;lt;/h1&amp;gt;&lt;br /&gt;
        &amp;lt;table width=&amp;quot;800&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;200&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;100&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col witdh=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;150&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;tr&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Nimetus&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Lisandid&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Tüüp&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Hind&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Hinne / Hindajaid&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Pilt&amp;lt;/th&amp;gt;&lt;br /&gt;
          &amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
          &amp;lt;xsl:for-each select=&amp;quot;menu/product&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:sort select=&amp;quot;type/id&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:sort select=&amp;quot;name&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;th&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;name&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/th&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;extras/node()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;ul&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:for-each select=&amp;quot;extras/item&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;li&amp;gt;&lt;br /&gt;
                          &amp;lt;xsl:value-of select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;/li&amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
                    &amp;lt;/ul&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;td&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;type/name&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;price/node()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    €&amp;lt;xsl:value-of select=&amp;quot;price/int&amp;quot;/&amp;gt;.&amp;lt;xsl:value-of select=&amp;quot;price/frac&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:if test=&amp;quot;price/discount/text()&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;span class=&amp;quot;discount&amp;quot;&amp;gt;&lt;br /&gt;
                        (-&amp;lt;xsl:value-of select=&amp;quot;price/discount&amp;quot;/&amp;gt;%)&lt;br /&gt;
                      &amp;lt;/span&amp;gt;&lt;br /&gt;
                    &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:variable name=&amp;quot;p&amp;quot; select=&amp;quot;vote/pos&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:variable name=&amp;quot;n&amp;quot; select=&amp;quot;vote/neg&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;td&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$p - $n&amp;quot;/&amp;gt; / &amp;lt;xsl:value-of select=&amp;quot;$p + $n&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;screenshot/text()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;img src=&amp;quot;{screenshot}&amp;quot; alt=&amp;quot;&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;img src=&amp;quot;screenshots/default.png&amp;quot; alt=&amp;quot;No image&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
      &amp;lt;/body&amp;gt;&lt;br /&gt;
    &amp;lt;/html&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
Sisu ja stiilifaili koostöö http://henri.kroosmann.ee/kool/xml/index.xml &amp;lt;!--[http://henri.kroosmann.ee/kool/xml/index.xml]--&amp;gt;&lt;br /&gt;
==VEEBITEENUSED==&lt;br /&gt;
&lt;br /&gt;
===8. aprill===&lt;br /&gt;
Otsustame teha teenused kõikide kohvikute menüüde kohta.&lt;br /&gt;
&lt;br /&gt;
===11.-12. aprill===&lt;br /&gt;
Henri koostab tabelite loogika&lt;br /&gt;
&lt;br /&gt;
===13. aprill===&lt;br /&gt;
Mailis otsustab veebiteenused teha asmx-is [webmethod]-itega&lt;br /&gt;
===14. aprill===&lt;br /&gt;
Mailis hakkab veebiteenuseid tegema&lt;br /&gt;
===17. aprill===&lt;br /&gt;
Veebiteenused on valmis:&lt;br /&gt;
&lt;br /&gt;
*AnnaJoogiliikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaJoogitabelirida_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*AnnaJookideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaK6igiKohvikuteAndmeteNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyyIDed_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyyRida_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyydeNimekiri_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaMenyyLiikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaMenyydeNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaPromillideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToiduliikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToitudeNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToitutabelirida_toiduIDjargi &lt;br /&gt;
&lt;br /&gt;
*AnnaYheKohvikuAndmed_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*KustutaJookMenyyst &lt;br /&gt;
&lt;br /&gt;
*KustutaMenyy &lt;br /&gt;
&lt;br /&gt;
*KustutaKohvik &lt;br /&gt;
&lt;br /&gt;
*KustutaToitMenyyst &lt;br /&gt;
&lt;br /&gt;
*KysiYheKohvikuYheMenyyToitudeIDeed_menyyIDjargi &lt;br /&gt;
&lt;br /&gt;
*LisaJoogiLiik &lt;br /&gt;
&lt;br /&gt;
*LisaMenyyLiik &lt;br /&gt;
&lt;br /&gt;
*LisaPromill &lt;br /&gt;
&lt;br /&gt;
*LisaToiduLiik &lt;br /&gt;
&lt;br /&gt;
*SecurityAuthenticateUser &lt;br /&gt;
&lt;br /&gt;
*TOITJOOKmenyysRida_menyyIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedJoogileMenyys &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedKohvikule &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedToiduleMenyys &lt;br /&gt;
&lt;br /&gt;
*annaJoogiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiKIRJELDUS_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiKOMM_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiID_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiNIMI_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKasOnTaimeT_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKasutajaNIMI_Guidjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuLahtiolekuAjad_kohvikuIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuTeated &lt;br /&gt;
&lt;br /&gt;
*annaLinnaID_LinnaNimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaLinnaNIMI_LinnaIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaLinnad_maakonnaNIMEjargi &lt;br /&gt;
&lt;br /&gt;
*annaMaakonnaID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaMenyyLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaMenyyLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaPromill_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaPromilliID_promilliNrJargi &lt;br /&gt;
&lt;br /&gt;
*annaPromilliNR_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduKIRJELDUS_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduKOMMENTAAR_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiNIMETUS_toiduIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaYheKohvikuMenyyd_kohvikuNIMEjargi &lt;br /&gt;
&lt;br /&gt;
*autendiKasutajaParooliJargi &lt;br /&gt;
&lt;br /&gt;
*k6igiKohvikuteMenyyd &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusJoogiKohta &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusKohvikuKohta &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusToiduKohta &lt;br /&gt;
&lt;br /&gt;
*lisaJookMenyysse &lt;br /&gt;
&lt;br /&gt;
*lisaToitMenyysse &lt;br /&gt;
&lt;br /&gt;
*lisaUusJook &lt;br /&gt;
&lt;br /&gt;
*lisaUusKohvik &lt;br /&gt;
&lt;br /&gt;
*lisaUusLahtiolekuAeg &lt;br /&gt;
&lt;br /&gt;
*lisaUusMenyy &lt;br /&gt;
&lt;br /&gt;
*lisaUusTeadaanne &lt;br /&gt;
&lt;br /&gt;
*lisaUusToit &lt;br /&gt;
&lt;br /&gt;
*nadalapaevaID_paevaNimetuseJargi &lt;br /&gt;
&lt;br /&gt;
*nadalapaevaNIMETUS_paevaIDjargi&lt;br /&gt;
&lt;br /&gt;
*Registreeru&lt;br /&gt;
&lt;br /&gt;
*LogiSisseTavakasutajana&lt;br /&gt;
&lt;br /&gt;
*LogiSisseKohvikuna&lt;br /&gt;
&lt;br /&gt;
===Allikfail===&lt;br /&gt;
Allikfail: http://www.p2ike.com/CSharp/KohvikudVeebiteenus.rar&lt;br /&gt;
&lt;br /&gt;
Meetod &#039;k6igiKohvikuteMenyyd&#039; kuvab sellise xml struktuuri: http://www.p2ike.com/CSharp/k6igiKohvikuteMenyyd.xml&lt;br /&gt;
&lt;br /&gt;
Toidud ja joogid sorteeritakse liikide kaupa.&lt;br /&gt;
&lt;br /&gt;
===Andmetabelid===&lt;br /&gt;
[[File:andmetabelid.jpg|500px|thumb|left|andmemudel]]&lt;/div&gt;</summary>
		<author><name>Mtoompuu</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=File:Andmetabelid.jpg&amp;diff=29669</id>
		<title>File:Andmetabelid.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=File:Andmetabelid.jpg&amp;diff=29669"/>
		<updated>2011-05-02T16:37:19Z</updated>

		<summary type="html">&lt;p&gt;Mtoompuu: Andmebaas&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Andmebaas&lt;/div&gt;</summary>
		<author><name>Mtoompuu</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Meeskond_%22H2%22&amp;diff=29655</id>
		<title>Meeskond &quot;H2&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Meeskond_%22H2%22&amp;diff=29655"/>
		<updated>2011-05-02T16:16:11Z</updated>

		<summary type="html">&lt;p&gt;Mtoompuu: /* 24. aprill */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Kohviku menüüsüsteem==&lt;br /&gt;
===Projekt===&lt;br /&gt;
Kohvikute (esialgu ainult IT-Kohviku) menüüsüsteem, mis on jälgitav mobiilseadmetelt. Lisaväärtusena võimaldab anda pakutavale hinnanguid, otsuse langetamise hõlbustamiseks kommentaar:(see viimane funktsioon kipub vist &amp;quot;veebirakenduseks&amp;quot; muutuma)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Sihtplatvormid:&lt;br /&gt;
Windows Mobile, iOS, Android(kui leiame vabatahtlikud testijad)&lt;br /&gt;
&lt;br /&gt;
===Taustinfo===&lt;br /&gt;
Praegune IT-Kohviku menüü on käsitsi täidetav valge tahvel. Projekti eesmärgiks on parendada IT-Kohviku menüüsüsteemi ja teha see veebi kaudu kättesaadavaks, nii, et menüüsse saab lisada ka karniiri valiku. Standardmenüü puhul saab menüüs olla ka illustreeriv foto. Hetkemenüü ning hinnad ja lahtioleku ajad on samuti jälgitavad võrguühendust eviva mobiilseadme ekraanilt, hõlbustades sellega valikute tegemist.&lt;br /&gt;
&lt;br /&gt;
===Liikmed===&lt;br /&gt;
* Mailis Toompuu&lt;br /&gt;
* Henri Kroosmann&lt;br /&gt;
* Heiki Tamm&lt;br /&gt;
&lt;br /&gt;
==Sisu==&lt;br /&gt;
&lt;br /&gt;
===XML Data===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;menu&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name1&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;0&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name1&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item1&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item2&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item3&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;0&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;0&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount1&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;0&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;0&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot1&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name2&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;255&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name2&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item4&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item5&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item6&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;255&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;255&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount2&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;255&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;255&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot2&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name3&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;1&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name3&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item7&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item8&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item9&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;1&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;1&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount3&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;1&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;1&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot3&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
&amp;lt;/menu&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===XML Schema===&lt;br /&gt;
&lt;br /&gt;
Ülevaade Schema&#039;st. &amp;lt;br /&amp;gt;&lt;br /&gt;
[[File:XMLSchema_Capture_(optimized).png]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Ning sellele vastav kood.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xs:schema attributeFormDefault=&amp;quot;unqualified&amp;quot; elementFormDefault=&amp;quot;qualified&amp;quot; xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xs:element name=&amp;quot;menu&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;product&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;type&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;id&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;extras&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence minOccurs=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;item&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;price&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence minOccurs=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;int&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;frac&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element minOccurs=&amp;quot;0&amp;quot; name=&amp;quot;discount&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;vote&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;pos&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;neg&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;screenshot&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===XML Style===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;html&amp;gt;&lt;br /&gt;
      &amp;lt;head&amp;gt;&lt;br /&gt;
        &amp;lt;style type=&amp;quot;text/css&amp;quot;&amp;gt;&lt;br /&gt;
          html,body{margin:0;padding:0;font-family:Helvetica,Arial,sans-serif;font-size:14px;line-height:19px;color:#2c2c2c;}&lt;br /&gt;
          h1{margin:0;padding:25px 0 0;font-size:22px;line-height:25px;text-align:center;}&lt;br /&gt;
          h2{margin:0;padding:5px;font-size:16px;line-height:21px}&lt;br /&gt;
          span.discount{padding:0 0 0 5px;color:red;}&lt;br /&gt;
          table{margin:20px auto;padding:0;}&lt;br /&gt;
          th,td{padding:5px;border:1px solid #2c2c2c;vertical-align:top;text-align:left}&lt;br /&gt;
          th{font-weight:bold;background-color:#eee;}&lt;br /&gt;
          ul{margin:0;padding:0;list-style-type:none;}&lt;br /&gt;
        &amp;lt;/style&amp;gt;&lt;br /&gt;
      &amp;lt;/head&amp;gt;&lt;br /&gt;
      &amp;lt;body&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;Menüü&amp;lt;/h1&amp;gt;&lt;br /&gt;
        &amp;lt;table width=&amp;quot;800&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;200&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;100&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col witdh=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;150&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;tr&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Nimetus&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Lisandid&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Tüüp&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Hind&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Hinne / Hindajaid&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Pilt&amp;lt;/th&amp;gt;&lt;br /&gt;
          &amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
          &amp;lt;xsl:for-each select=&amp;quot;menu/product&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:sort select=&amp;quot;type/id&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:sort select=&amp;quot;name&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;th&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;name&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/th&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;extras/node()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;ul&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:for-each select=&amp;quot;extras/item&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;li&amp;gt;&lt;br /&gt;
                          &amp;lt;xsl:value-of select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;/li&amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
                    &amp;lt;/ul&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;td&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;type/name&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;price/node()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    €&amp;lt;xsl:value-of select=&amp;quot;price/int&amp;quot;/&amp;gt;.&amp;lt;xsl:value-of select=&amp;quot;price/frac&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:if test=&amp;quot;price/discount/text()&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;span class=&amp;quot;discount&amp;quot;&amp;gt;&lt;br /&gt;
                        (-&amp;lt;xsl:value-of select=&amp;quot;price/discount&amp;quot;/&amp;gt;%)&lt;br /&gt;
                      &amp;lt;/span&amp;gt;&lt;br /&gt;
                    &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:variable name=&amp;quot;p&amp;quot; select=&amp;quot;vote/pos&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:variable name=&amp;quot;n&amp;quot; select=&amp;quot;vote/neg&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;td&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$p - $n&amp;quot;/&amp;gt; / &amp;lt;xsl:value-of select=&amp;quot;$p + $n&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;screenshot/text()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;img src=&amp;quot;{screenshot}&amp;quot; alt=&amp;quot;&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;img src=&amp;quot;screenshots/default.png&amp;quot; alt=&amp;quot;No image&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
      &amp;lt;/body&amp;gt;&lt;br /&gt;
    &amp;lt;/html&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
Sisu ja stiilifaili koostöö http://henri.kroosmann.ee/kool/xml/index.xml &amp;lt;!--[http://henri.kroosmann.ee/kool/xml/index.xml]--&amp;gt;&lt;br /&gt;
==VEEBITEENUSED==&lt;br /&gt;
&lt;br /&gt;
===8. aprill===&lt;br /&gt;
Otsustame teha teenused kõikide kohvikute menüüde kohta.&lt;br /&gt;
&lt;br /&gt;
===11.-12. aprill===&lt;br /&gt;
Henri koostab tabelite loogika&lt;br /&gt;
&lt;br /&gt;
===13. aprill===&lt;br /&gt;
Mailis otsustab veebiteenused teha asmx-is [webmethod]-itega&lt;br /&gt;
===14. aprill===&lt;br /&gt;
Mailis hakkab veebiteenuseid tegema&lt;br /&gt;
===17. aprill===&lt;br /&gt;
Veebiteenused on valmis:&lt;br /&gt;
&lt;br /&gt;
*AnnaJoogiliikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaJoogitabelirida_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*AnnaJookideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaK6igiKohvikuteAndmeteNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyyIDed_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyyRida_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyydeNimekiri_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaMenyyLiikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaMenyydeNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaPromillideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToiduliikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToitudeNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToitutabelirida_toiduIDjargi &lt;br /&gt;
&lt;br /&gt;
*AnnaYheKohvikuAndmed_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*KustutaJookMenyyst &lt;br /&gt;
&lt;br /&gt;
*KustutaMenyy &lt;br /&gt;
&lt;br /&gt;
*KustutaKohvik &lt;br /&gt;
&lt;br /&gt;
*KustutaToitMenyyst &lt;br /&gt;
&lt;br /&gt;
*KysiYheKohvikuYheMenyyToitudeIDeed_menyyIDjargi &lt;br /&gt;
&lt;br /&gt;
*LisaJoogiLiik &lt;br /&gt;
&lt;br /&gt;
*LisaMenyyLiik &lt;br /&gt;
&lt;br /&gt;
*LisaPromill &lt;br /&gt;
&lt;br /&gt;
*LisaToiduLiik &lt;br /&gt;
&lt;br /&gt;
*SecurityAuthenticateUser &lt;br /&gt;
&lt;br /&gt;
*TOITJOOKmenyysRida_menyyIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedJoogileMenyys &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedKohvikule &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedToiduleMenyys &lt;br /&gt;
&lt;br /&gt;
*annaJoogiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiKIRJELDUS_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiKOMM_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiID_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiNIMI_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKasOnTaimeT_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKasutajaNIMI_Guidjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuLahtiolekuAjad_kohvikuIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuTeated &lt;br /&gt;
&lt;br /&gt;
*annaLinnaID_LinnaNimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaLinnaNIMI_LinnaIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaLinnad_maakonnaNIMEjargi &lt;br /&gt;
&lt;br /&gt;
*annaMaakonnaID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaMenyyLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaMenyyLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaPromill_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaPromilliID_promilliNrJargi &lt;br /&gt;
&lt;br /&gt;
*annaPromilliNR_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduKIRJELDUS_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduKOMMENTAAR_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiNIMETUS_toiduIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaYheKohvikuMenyyd_kohvikuNIMEjargi &lt;br /&gt;
&lt;br /&gt;
*autendiKasutajaParooliJargi &lt;br /&gt;
&lt;br /&gt;
*k6igiKohvikuteMenyyd &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusJoogiKohta &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusKohvikuKohta &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusToiduKohta &lt;br /&gt;
&lt;br /&gt;
*lisaJookMenyysse &lt;br /&gt;
&lt;br /&gt;
*lisaToitMenyysse &lt;br /&gt;
&lt;br /&gt;
*lisaUusJook &lt;br /&gt;
&lt;br /&gt;
*lisaUusKohvik &lt;br /&gt;
&lt;br /&gt;
*lisaUusLahtiolekuAeg &lt;br /&gt;
&lt;br /&gt;
*lisaUusMenyy &lt;br /&gt;
&lt;br /&gt;
*lisaUusTeadaanne &lt;br /&gt;
&lt;br /&gt;
*lisaUusToit &lt;br /&gt;
&lt;br /&gt;
*nadalapaevaID_paevaNimetuseJargi &lt;br /&gt;
&lt;br /&gt;
*nadalapaevaNIMETUS_paevaIDjargi&lt;br /&gt;
&lt;br /&gt;
*Registreeru&lt;br /&gt;
&lt;br /&gt;
*LogiSisseTavakasutajana&lt;br /&gt;
&lt;br /&gt;
*LogiSisseKohvikuna&lt;br /&gt;
&lt;br /&gt;
===Allikfail===&lt;br /&gt;
Allikfail: http://www.p2ike.com/CSharp/KohvikudVeebiteenus.rar&lt;br /&gt;
&lt;br /&gt;
Meetod &#039;k6igiKohvikuteMenyyd&#039; kuvab sellise xml struktuuri: http://www.p2ike.com/CSharp/k6igiKohvikuteMenyyd.xml&lt;br /&gt;
&lt;br /&gt;
Toidud ja joogid sorteeritakse liikide kaupa.&lt;/div&gt;</summary>
		<author><name>Mtoompuu</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Meeskond_%22H2%22&amp;diff=29646</id>
		<title>Meeskond &quot;H2&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Meeskond_%22H2%22&amp;diff=29646"/>
		<updated>2011-05-02T16:11:47Z</updated>

		<summary type="html">&lt;p&gt;Mtoompuu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Kohviku menüüsüsteem==&lt;br /&gt;
===Projekt===&lt;br /&gt;
Kohvikute (esialgu ainult IT-Kohviku) menüüsüsteem, mis on jälgitav mobiilseadmetelt. Lisaväärtusena võimaldab anda pakutavale hinnanguid, otsuse langetamise hõlbustamiseks kommentaar:(see viimane funktsioon kipub vist &amp;quot;veebirakenduseks&amp;quot; muutuma)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Sihtplatvormid:&lt;br /&gt;
Windows Mobile, iOS, Android(kui leiame vabatahtlikud testijad)&lt;br /&gt;
&lt;br /&gt;
===Taustinfo===&lt;br /&gt;
Praegune IT-Kohviku menüü on käsitsi täidetav valge tahvel. Projekti eesmärgiks on parendada IT-Kohviku menüüsüsteemi ja teha see veebi kaudu kättesaadavaks, nii, et menüüsse saab lisada ka karniiri valiku. Standardmenüü puhul saab menüüs olla ka illustreeriv foto. Hetkemenüü ning hinnad ja lahtioleku ajad on samuti jälgitavad võrguühendust eviva mobiilseadme ekraanilt, hõlbustades sellega valikute tegemist.&lt;br /&gt;
&lt;br /&gt;
===Liikmed===&lt;br /&gt;
* Mailis Toompuu&lt;br /&gt;
* Henri Kroosmann&lt;br /&gt;
* Heiki Tamm&lt;br /&gt;
&lt;br /&gt;
==Sisu==&lt;br /&gt;
&lt;br /&gt;
===XML Data===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;menu&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name1&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;0&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name1&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item1&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item2&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item3&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;0&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;0&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount1&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;0&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;0&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot1&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name2&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;255&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name2&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item4&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item5&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item6&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;255&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;255&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount2&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;255&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;255&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot2&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name3&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;1&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name3&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item7&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item8&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item9&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;1&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;1&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount3&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;1&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;1&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot3&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
&amp;lt;/menu&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===XML Schema===&lt;br /&gt;
&lt;br /&gt;
Ülevaade Schema&#039;st. &amp;lt;br /&amp;gt;&lt;br /&gt;
[[File:XMLSchema_Capture_(optimized).png]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Ning sellele vastav kood.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xs:schema attributeFormDefault=&amp;quot;unqualified&amp;quot; elementFormDefault=&amp;quot;qualified&amp;quot; xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xs:element name=&amp;quot;menu&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;product&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;type&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;id&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;extras&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence minOccurs=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;item&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;price&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence minOccurs=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;int&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;frac&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element minOccurs=&amp;quot;0&amp;quot; name=&amp;quot;discount&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;vote&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;pos&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;neg&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;screenshot&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===XML Style===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;html&amp;gt;&lt;br /&gt;
      &amp;lt;head&amp;gt;&lt;br /&gt;
        &amp;lt;style type=&amp;quot;text/css&amp;quot;&amp;gt;&lt;br /&gt;
          html,body{margin:0;padding:0;font-family:Helvetica,Arial,sans-serif;font-size:14px;line-height:19px;color:#2c2c2c;}&lt;br /&gt;
          h1{margin:0;padding:25px 0 0;font-size:22px;line-height:25px;text-align:center;}&lt;br /&gt;
          h2{margin:0;padding:5px;font-size:16px;line-height:21px}&lt;br /&gt;
          span.discount{padding:0 0 0 5px;color:red;}&lt;br /&gt;
          table{margin:20px auto;padding:0;}&lt;br /&gt;
          th,td{padding:5px;border:1px solid #2c2c2c;vertical-align:top;text-align:left}&lt;br /&gt;
          th{font-weight:bold;background-color:#eee;}&lt;br /&gt;
          ul{margin:0;padding:0;list-style-type:none;}&lt;br /&gt;
        &amp;lt;/style&amp;gt;&lt;br /&gt;
      &amp;lt;/head&amp;gt;&lt;br /&gt;
      &amp;lt;body&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;Menüü&amp;lt;/h1&amp;gt;&lt;br /&gt;
        &amp;lt;table width=&amp;quot;800&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;200&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;100&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col witdh=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;150&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;tr&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Nimetus&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Lisandid&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Tüüp&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Hind&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Hinne / Hindajaid&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Pilt&amp;lt;/th&amp;gt;&lt;br /&gt;
          &amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
          &amp;lt;xsl:for-each select=&amp;quot;menu/product&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:sort select=&amp;quot;type/id&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:sort select=&amp;quot;name&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;th&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;name&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/th&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;extras/node()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;ul&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:for-each select=&amp;quot;extras/item&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;li&amp;gt;&lt;br /&gt;
                          &amp;lt;xsl:value-of select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;/li&amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
                    &amp;lt;/ul&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;td&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;type/name&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;price/node()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    €&amp;lt;xsl:value-of select=&amp;quot;price/int&amp;quot;/&amp;gt;.&amp;lt;xsl:value-of select=&amp;quot;price/frac&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:if test=&amp;quot;price/discount/text()&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;span class=&amp;quot;discount&amp;quot;&amp;gt;&lt;br /&gt;
                        (-&amp;lt;xsl:value-of select=&amp;quot;price/discount&amp;quot;/&amp;gt;%)&lt;br /&gt;
                      &amp;lt;/span&amp;gt;&lt;br /&gt;
                    &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:variable name=&amp;quot;p&amp;quot; select=&amp;quot;vote/pos&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:variable name=&amp;quot;n&amp;quot; select=&amp;quot;vote/neg&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;td&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$p - $n&amp;quot;/&amp;gt; / &amp;lt;xsl:value-of select=&amp;quot;$p + $n&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;screenshot/text()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;img src=&amp;quot;{screenshot}&amp;quot; alt=&amp;quot;&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;img src=&amp;quot;screenshots/default.png&amp;quot; alt=&amp;quot;No image&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
      &amp;lt;/body&amp;gt;&lt;br /&gt;
    &amp;lt;/html&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
Sisu ja stiilifaili koostöö http://henri.kroosmann.ee/kool/xml/index.xml &amp;lt;!--[http://henri.kroosmann.ee/kool/xml/index.xml]--&amp;gt;&lt;br /&gt;
==VEEBITEENUSED==&lt;br /&gt;
&lt;br /&gt;
===8. aprill===&lt;br /&gt;
Otsustame teha teenused kõikide kohvikute menüüde kohta.&lt;br /&gt;
&lt;br /&gt;
===11.-12. aprill===&lt;br /&gt;
Henri koostab tabelite loogika&lt;br /&gt;
&lt;br /&gt;
===13. aprill===&lt;br /&gt;
Mailis otsustab veebiteenused teha asmx-is [webmethod]-itega&lt;br /&gt;
===14. aprill===&lt;br /&gt;
Mailis hakkab veebiteenuseid tegema&lt;br /&gt;
===17. aprill===&lt;br /&gt;
Veebiteenused on valmis:&lt;br /&gt;
&lt;br /&gt;
*AnnaJoogiliikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaJoogitabelirida_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*AnnaJookideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaK6igiKohvikuteAndmeteNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyyIDed_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyyRida_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyydeNimekiri_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaMenyyLiikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaMenyydeNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaPromillideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToiduliikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToitudeNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToitutabelirida_toiduIDjargi &lt;br /&gt;
&lt;br /&gt;
*AnnaYheKohvikuAndmed_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*KustutaJookMenyyst &lt;br /&gt;
&lt;br /&gt;
*KustutaMenyy &lt;br /&gt;
&lt;br /&gt;
*KustutaKohvik &lt;br /&gt;
&lt;br /&gt;
*KustutaToitMenyyst &lt;br /&gt;
&lt;br /&gt;
*KysiYheKohvikuYheMenyyToitudeIDeed_menyyIDjargi &lt;br /&gt;
&lt;br /&gt;
*LisaJoogiLiik &lt;br /&gt;
&lt;br /&gt;
*LisaMenyyLiik &lt;br /&gt;
&lt;br /&gt;
*LisaPromill &lt;br /&gt;
&lt;br /&gt;
*LisaToiduLiik &lt;br /&gt;
&lt;br /&gt;
*SecurityAuthenticateUser &lt;br /&gt;
&lt;br /&gt;
*TOITJOOKmenyysRida_menyyIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedJoogileMenyys &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedKohvikule &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedToiduleMenyys &lt;br /&gt;
&lt;br /&gt;
*annaJoogiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiKIRJELDUS_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiKOMM_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiID_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiNIMI_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKasOnTaimeT_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKasutajaNIMI_Guidjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuLahtiolekuAjad_kohvikuIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuTeated &lt;br /&gt;
&lt;br /&gt;
*annaLinnaID_LinnaNimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaLinnaNIMI_LinnaIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaLinnad_maakonnaNIMEjargi &lt;br /&gt;
&lt;br /&gt;
*annaMaakonnaID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaMenyyLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaMenyyLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaPromill_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaPromilliID_promilliNrJargi &lt;br /&gt;
&lt;br /&gt;
*annaPromilliNR_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduKIRJELDUS_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduKOMMENTAAR_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiNIMETUS_toiduIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaYheKohvikuMenyyd_kohvikuNIMEjargi &lt;br /&gt;
&lt;br /&gt;
*autendiKasutajaParooliJargi &lt;br /&gt;
&lt;br /&gt;
*k6igiKohvikuteMenyyd &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusJoogiKohta &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusKohvikuKohta &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusToiduKohta &lt;br /&gt;
&lt;br /&gt;
*lisaJookMenyysse &lt;br /&gt;
&lt;br /&gt;
*lisaToitMenyysse &lt;br /&gt;
&lt;br /&gt;
*lisaUusJook &lt;br /&gt;
&lt;br /&gt;
*lisaUusKohvik &lt;br /&gt;
&lt;br /&gt;
*lisaUusLahtiolekuAeg &lt;br /&gt;
&lt;br /&gt;
*lisaUusMenyy &lt;br /&gt;
&lt;br /&gt;
*lisaUusTeadaanne &lt;br /&gt;
&lt;br /&gt;
*lisaUusToit &lt;br /&gt;
&lt;br /&gt;
*nadalapaevaID_paevaNimetuseJargi &lt;br /&gt;
&lt;br /&gt;
*nadalapaevaNIMETUS_paevaIDjargi&lt;br /&gt;
&lt;br /&gt;
*Registreeru&lt;br /&gt;
&lt;br /&gt;
*LogiSisseTavakasutajana&lt;br /&gt;
&lt;br /&gt;
*LogiSisseKohvikuna&lt;br /&gt;
&lt;br /&gt;
===24. aprill===&lt;br /&gt;
Allikfail: http://www.p2ike.com/CSharp/KohvikudVeebiteenus.rar&lt;br /&gt;
&lt;br /&gt;
Meetod &#039;k6igiKohvikuteMenyyd&#039; kuvab sellise xml struktuuri: http://www.p2ike.com/CSharp/k6igiKohvikuteMenyyd.xml&lt;br /&gt;
&lt;br /&gt;
Toidud ja joogid sorteeritakse liikide kaupa.&lt;/div&gt;</summary>
		<author><name>Mtoompuu</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Meeskond_%22H2%22&amp;diff=29645</id>
		<title>Meeskond &quot;H2&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Meeskond_%22H2%22&amp;diff=29645"/>
		<updated>2011-05-02T16:11:30Z</updated>

		<summary type="html">&lt;p&gt;Mtoompuu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Kohviku menüüsüsteem==&lt;br /&gt;
===Projekt===&lt;br /&gt;
Kohvikute (esialgu ainult IT-Kohviku) menüüsüsteem, mis on jälgitav mobiilseadmetelt. Lisaväärtusena võimaldab anda pakutavale hinnanguid, otsuse langetamise hõlbustamiseks kommentaar:(see viimane funktsioon kipub vist &amp;quot;veebirakenduseks&amp;quot; muutuma)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Sihtplatvormid:&lt;br /&gt;
Windows Mobile, iOS, Android(kui leiame vabatahtlikud testijad)&lt;br /&gt;
&lt;br /&gt;
===Taustinfo===&lt;br /&gt;
Praegune IT-Kohviku menüü on käsitsi täidetav valge tahvel. Projekti eesmärgiks on parendada IT-Kohviku menüüsüsteemi ja teha see veebi kaudu kättesaadavaks, nii, et menüüsse saab lisada ka karniiri valiku. Standardmenüü puhul saab menüüs olla ka illustreeriv foto. Hetkemenüü ning hinnad ja lahtioleku ajad on samuti jälgitavad võrguühendust eviva mobiilseadme ekraanilt, hõlbustades sellega valikute tegemist.&lt;br /&gt;
&lt;br /&gt;
===Liikmed===&lt;br /&gt;
* Mailis Toompuu&lt;br /&gt;
* Henri Kroosmann&lt;br /&gt;
* Heiki Tamm&lt;br /&gt;
&lt;br /&gt;
==Sisu==&lt;br /&gt;
&lt;br /&gt;
===XML Data===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;menu&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name1&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;0&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name1&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item1&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item2&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item3&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;0&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;0&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount1&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;0&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;0&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot1&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name2&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;255&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name2&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item4&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item5&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item6&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;255&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;255&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount2&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;255&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;255&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot2&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name3&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;1&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name3&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item7&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item8&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item9&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;1&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;1&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount3&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;1&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;1&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot3&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
&amp;lt;/menu&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===XML Schema===&lt;br /&gt;
&lt;br /&gt;
Ülevaade Schema&#039;st. &amp;lt;br /&amp;gt;&lt;br /&gt;
[[File:XMLSchema_Capture_(optimized).png]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Ning sellele vastav kood.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xs:schema attributeFormDefault=&amp;quot;unqualified&amp;quot; elementFormDefault=&amp;quot;qualified&amp;quot; xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xs:element name=&amp;quot;menu&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;product&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;type&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;id&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;extras&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence minOccurs=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;item&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;price&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence minOccurs=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;int&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;frac&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element minOccurs=&amp;quot;0&amp;quot; name=&amp;quot;discount&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;vote&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;pos&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;neg&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;screenshot&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===XML Style===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;html&amp;gt;&lt;br /&gt;
      &amp;lt;head&amp;gt;&lt;br /&gt;
        &amp;lt;style type=&amp;quot;text/css&amp;quot;&amp;gt;&lt;br /&gt;
          html,body{margin:0;padding:0;font-family:Helvetica,Arial,sans-serif;font-size:14px;line-height:19px;color:#2c2c2c;}&lt;br /&gt;
          h1{margin:0;padding:25px 0 0;font-size:22px;line-height:25px;text-align:center;}&lt;br /&gt;
          h2{margin:0;padding:5px;font-size:16px;line-height:21px}&lt;br /&gt;
          span.discount{padding:0 0 0 5px;color:red;}&lt;br /&gt;
          table{margin:20px auto;padding:0;}&lt;br /&gt;
          th,td{padding:5px;border:1px solid #2c2c2c;vertical-align:top;text-align:left}&lt;br /&gt;
          th{font-weight:bold;background-color:#eee;}&lt;br /&gt;
          ul{margin:0;padding:0;list-style-type:none;}&lt;br /&gt;
        &amp;lt;/style&amp;gt;&lt;br /&gt;
      &amp;lt;/head&amp;gt;&lt;br /&gt;
      &amp;lt;body&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;Menüü&amp;lt;/h1&amp;gt;&lt;br /&gt;
        &amp;lt;table width=&amp;quot;800&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;200&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;100&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col witdh=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;150&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;tr&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Nimetus&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Lisandid&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Tüüp&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Hind&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Hinne / Hindajaid&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Pilt&amp;lt;/th&amp;gt;&lt;br /&gt;
          &amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
          &amp;lt;xsl:for-each select=&amp;quot;menu/product&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:sort select=&amp;quot;type/id&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:sort select=&amp;quot;name&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;th&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;name&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/th&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;extras/node()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;ul&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:for-each select=&amp;quot;extras/item&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;li&amp;gt;&lt;br /&gt;
                          &amp;lt;xsl:value-of select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;/li&amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
                    &amp;lt;/ul&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;td&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;type/name&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;price/node()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    €&amp;lt;xsl:value-of select=&amp;quot;price/int&amp;quot;/&amp;gt;.&amp;lt;xsl:value-of select=&amp;quot;price/frac&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:if test=&amp;quot;price/discount/text()&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;span class=&amp;quot;discount&amp;quot;&amp;gt;&lt;br /&gt;
                        (-&amp;lt;xsl:value-of select=&amp;quot;price/discount&amp;quot;/&amp;gt;%)&lt;br /&gt;
                      &amp;lt;/span&amp;gt;&lt;br /&gt;
                    &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:variable name=&amp;quot;p&amp;quot; select=&amp;quot;vote/pos&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:variable name=&amp;quot;n&amp;quot; select=&amp;quot;vote/neg&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;td&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$p - $n&amp;quot;/&amp;gt; / &amp;lt;xsl:value-of select=&amp;quot;$p + $n&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;screenshot/text()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;img src=&amp;quot;{screenshot}&amp;quot; alt=&amp;quot;&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;img src=&amp;quot;screenshots/default.png&amp;quot; alt=&amp;quot;No image&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
      &amp;lt;/body&amp;gt;&lt;br /&gt;
    &amp;lt;/html&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
Sisu ja stiilifaili koostöö http://henri.kroosmann.ee/kool/xml/index.xml &amp;lt;!--[http://henri.kroosmann.ee/kool/xml/index.xml]--&amp;gt;&lt;br /&gt;
==VEEBITEENUSED==&lt;br /&gt;
&lt;br /&gt;
===8. aprill===&lt;br /&gt;
Otsustame teha teenused kõikide kohvikute menüüde kohta.&lt;br /&gt;
&lt;br /&gt;
===11.-12. aprill===&lt;br /&gt;
Henri koostab tabelite loogika&lt;br /&gt;
&lt;br /&gt;
===13. aprill===&lt;br /&gt;
Mailis otsustab veebiteenused teha asmx-is [webmethod]-itega&lt;br /&gt;
===14. aprill===&lt;br /&gt;
Mailis hakkab veebiteenuseid tegema&lt;br /&gt;
===17. aprill===&lt;br /&gt;
Veebiteenused on valmis:&lt;br /&gt;
&lt;br /&gt;
*AnnaJoogiliikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaJoogitabelirida_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*AnnaJookideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaK6igiKohvikuteAndmeteNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyyIDed_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyyRida_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyydeNimekiri_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaMenyyLiikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaMenyydeNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaPromillideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToiduliikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToitudeNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToitutabelirida_toiduIDjargi &lt;br /&gt;
&lt;br /&gt;
*AnnaYheKohvikuAndmed_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*KustutaJookMenyyst &lt;br /&gt;
&lt;br /&gt;
*KustutaMenyy &lt;br /&gt;
&lt;br /&gt;
*KustutaKohvik &lt;br /&gt;
&lt;br /&gt;
*KustutaToitMenyyst &lt;br /&gt;
&lt;br /&gt;
*KysiYheKohvikuYheMenyyToitudeIDeed_menyyIDjargi &lt;br /&gt;
&lt;br /&gt;
*LisaJoogiLiik &lt;br /&gt;
&lt;br /&gt;
*LisaMenyyLiik &lt;br /&gt;
&lt;br /&gt;
*LisaPromill &lt;br /&gt;
&lt;br /&gt;
*LisaToiduLiik &lt;br /&gt;
&lt;br /&gt;
*SecurityAuthenticateUser &lt;br /&gt;
&lt;br /&gt;
*TOITJOOKmenyysRida_menyyIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedJoogileMenyys &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedKohvikule &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedToiduleMenyys &lt;br /&gt;
&lt;br /&gt;
*annaJoogiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiKIRJELDUS_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiKOMM_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiID_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiNIMI_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKasOnTaimeT_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKasutajaNIMI_Guidjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuLahtiolekuAjad_kohvikuIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuTeated &lt;br /&gt;
&lt;br /&gt;
*annaLinnaID_LinnaNimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaLinnaNIMI_LinnaIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaLinnad_maakonnaNIMEjargi &lt;br /&gt;
&lt;br /&gt;
*annaMaakonnaID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaMenyyLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaMenyyLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaPromill_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaPromilliID_promilliNrJargi &lt;br /&gt;
&lt;br /&gt;
*annaPromilliNR_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduKIRJELDUS_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduKOMMENTAAR_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiNIMETUS_toiduIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaYheKohvikuMenyyd_kohvikuNIMEjargi &lt;br /&gt;
&lt;br /&gt;
*autendiKasutajaParooliJargi &lt;br /&gt;
&lt;br /&gt;
*k6igiKohvikuteMenyyd &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusJoogiKohta &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusKohvikuKohta &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusToiduKohta &lt;br /&gt;
&lt;br /&gt;
*lisaJookMenyysse &lt;br /&gt;
&lt;br /&gt;
*lisaToitMenyysse &lt;br /&gt;
&lt;br /&gt;
*lisaUusJook &lt;br /&gt;
&lt;br /&gt;
*lisaUusKohvik &lt;br /&gt;
&lt;br /&gt;
*lisaUusLahtiolekuAeg &lt;br /&gt;
&lt;br /&gt;
*lisaUusMenyy &lt;br /&gt;
&lt;br /&gt;
*lisaUusTeadaanne &lt;br /&gt;
&lt;br /&gt;
*lisaUusToit &lt;br /&gt;
&lt;br /&gt;
*nadalapaevaID_paevaNimetuseJargi &lt;br /&gt;
&lt;br /&gt;
*nadalapaevaNIMETUS_paevaIDjargi&lt;br /&gt;
&lt;br /&gt;
*Registreeru&lt;br /&gt;
&lt;br /&gt;
*LogiSisseTavakasutajana&lt;br /&gt;
&lt;br /&gt;
*LogiSisseKohvikuna&lt;br /&gt;
&lt;br /&gt;
===24. aprill===&lt;br /&gt;
Allikfail: http://www.p2ike.com/CSharp/KohvikudVeebiteenus.rar&lt;br /&gt;
&lt;br /&gt;
Meetod &#039;k6igiKohvikuteMenyyd&#039; kuvab sellise xml struktuuri: http://www.p2ike.com/CSharp/k6igiKohvikuteMenyyd.xml&lt;br /&gt;
&lt;br /&gt;
Toidud ja joogid sorteeritakse liikide kaupa.&lt;br /&gt;
&lt;br /&gt;
=Allikfail=&lt;br /&gt;
http://www.p2ike.com/CSharp/KohvikudVeebiteenus.rar&lt;br /&gt;
&lt;br /&gt;
===Meetod *k6igiKohvikuteMenyyd kuvab sellise xml struktuuri:===&lt;br /&gt;
Toidud ja joogid sorteeritakse liikide kaupa.&lt;br /&gt;
http://www.p2ike.com/CSharp/k6igiKohvikuteMenyyd.xml&lt;br /&gt;
&amp;lt;!--[http://www.p2ike.com/CSharp/k6igiKohvikuteMenyyd.xml]--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ANDMEMUDEL ==&lt;br /&gt;
&amp;lt;!--http://www.p2ike.com/CSharp/kohvikuTabelid.pdf --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--[[File:http://www.p2ike.com/CSharp/kohvikuTabelid.pdf|thumb|550px|visuaalne ülevaade tabelitest andmebaasis]] --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--[[File:KohvikuTabelid.jpg]] --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:KohvikuTabelid.jpg|thumb|left|1000px|alt=Andmebaasiskeem.|Visuaalne ülevaade tabelitest andmebaasis.]]&lt;/div&gt;</summary>
		<author><name>Mtoompuu</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Meeskond_%22H2%22&amp;diff=29643</id>
		<title>Meeskond &quot;H2&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Meeskond_%22H2%22&amp;diff=29643"/>
		<updated>2011-05-02T16:10:48Z</updated>

		<summary type="html">&lt;p&gt;Mtoompuu: /* 24. aprill */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Kohviku menüüsüsteem==&lt;br /&gt;
===Projekt===&lt;br /&gt;
Kohvikute (esialgu ainult IT-Kohviku) menüüsüsteem, mis on jälgitav mobiilseadmetelt. Lisaväärtusena võimaldab anda pakutavale hinnanguid, otsuse langetamise hõlbustamiseks kommentaar:(see viimane funktsioon kipub vist &amp;quot;veebirakenduseks&amp;quot; muutuma)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Sihtplatvormid:&lt;br /&gt;
Windows Mobile, iOS, Android(kui leiame vabatahtlikud testijad)&lt;br /&gt;
&lt;br /&gt;
===Taustinfo===&lt;br /&gt;
Praegune IT-Kohviku menüü on käsitsi täidetav valge tahvel. Projekti eesmärgiks on parendada IT-Kohviku menüüsüsteemi ja teha see veebi kaudu kättesaadavaks, nii, et menüüsse saab lisada ka karniiri valiku. Standardmenüü puhul saab menüüs olla ka illustreeriv foto. Hetkemenüü ning hinnad ja lahtioleku ajad on samuti jälgitavad võrguühendust eviva mobiilseadme ekraanilt, hõlbustades sellega valikute tegemist.&lt;br /&gt;
&lt;br /&gt;
===Liikmed===&lt;br /&gt;
* Mailis Toompuu&lt;br /&gt;
* Henri Kroosmann&lt;br /&gt;
* Heiki Tamm&lt;br /&gt;
&lt;br /&gt;
==Sisu==&lt;br /&gt;
&lt;br /&gt;
===XML Data===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;menu&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name1&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;0&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name1&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item1&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item2&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item3&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;0&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;0&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount1&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;0&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;0&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot1&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name2&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;255&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name2&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item4&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item5&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item6&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;255&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;255&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount2&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;255&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;255&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot2&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name3&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;1&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name3&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item7&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item8&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item9&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;1&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;1&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount3&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;1&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;1&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot3&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
&amp;lt;/menu&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===XML Schema===&lt;br /&gt;
&lt;br /&gt;
Ülevaade Schema&#039;st. &amp;lt;br /&amp;gt;&lt;br /&gt;
[[File:XMLSchema_Capture_(optimized).png]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Ning sellele vastav kood.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xs:schema attributeFormDefault=&amp;quot;unqualified&amp;quot; elementFormDefault=&amp;quot;qualified&amp;quot; xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xs:element name=&amp;quot;menu&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;product&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;type&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;id&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;extras&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence minOccurs=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;item&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;price&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence minOccurs=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;int&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;frac&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element minOccurs=&amp;quot;0&amp;quot; name=&amp;quot;discount&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;vote&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;pos&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;neg&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;screenshot&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===XML Style===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;html&amp;gt;&lt;br /&gt;
      &amp;lt;head&amp;gt;&lt;br /&gt;
        &amp;lt;style type=&amp;quot;text/css&amp;quot;&amp;gt;&lt;br /&gt;
          html,body{margin:0;padding:0;font-family:Helvetica,Arial,sans-serif;font-size:14px;line-height:19px;color:#2c2c2c;}&lt;br /&gt;
          h1{margin:0;padding:25px 0 0;font-size:22px;line-height:25px;text-align:center;}&lt;br /&gt;
          h2{margin:0;padding:5px;font-size:16px;line-height:21px}&lt;br /&gt;
          span.discount{padding:0 0 0 5px;color:red;}&lt;br /&gt;
          table{margin:20px auto;padding:0;}&lt;br /&gt;
          th,td{padding:5px;border:1px solid #2c2c2c;vertical-align:top;text-align:left}&lt;br /&gt;
          th{font-weight:bold;background-color:#eee;}&lt;br /&gt;
          ul{margin:0;padding:0;list-style-type:none;}&lt;br /&gt;
        &amp;lt;/style&amp;gt;&lt;br /&gt;
      &amp;lt;/head&amp;gt;&lt;br /&gt;
      &amp;lt;body&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;Menüü&amp;lt;/h1&amp;gt;&lt;br /&gt;
        &amp;lt;table width=&amp;quot;800&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;200&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;100&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col witdh=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;150&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;tr&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Nimetus&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Lisandid&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Tüüp&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Hind&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Hinne / Hindajaid&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Pilt&amp;lt;/th&amp;gt;&lt;br /&gt;
          &amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
          &amp;lt;xsl:for-each select=&amp;quot;menu/product&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:sort select=&amp;quot;type/id&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:sort select=&amp;quot;name&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;th&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;name&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/th&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;extras/node()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;ul&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:for-each select=&amp;quot;extras/item&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;li&amp;gt;&lt;br /&gt;
                          &amp;lt;xsl:value-of select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;/li&amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
                    &amp;lt;/ul&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;td&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;type/name&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;price/node()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    €&amp;lt;xsl:value-of select=&amp;quot;price/int&amp;quot;/&amp;gt;.&amp;lt;xsl:value-of select=&amp;quot;price/frac&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:if test=&amp;quot;price/discount/text()&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;span class=&amp;quot;discount&amp;quot;&amp;gt;&lt;br /&gt;
                        (-&amp;lt;xsl:value-of select=&amp;quot;price/discount&amp;quot;/&amp;gt;%)&lt;br /&gt;
                      &amp;lt;/span&amp;gt;&lt;br /&gt;
                    &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:variable name=&amp;quot;p&amp;quot; select=&amp;quot;vote/pos&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:variable name=&amp;quot;n&amp;quot; select=&amp;quot;vote/neg&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;td&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$p - $n&amp;quot;/&amp;gt; / &amp;lt;xsl:value-of select=&amp;quot;$p + $n&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;screenshot/text()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;img src=&amp;quot;{screenshot}&amp;quot; alt=&amp;quot;&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;img src=&amp;quot;screenshots/default.png&amp;quot; alt=&amp;quot;No image&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
      &amp;lt;/body&amp;gt;&lt;br /&gt;
    &amp;lt;/html&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
Sisu ja stiilifaili koostöö http://henri.kroosmann.ee/kool/xml/index.xml &amp;lt;!--[http://henri.kroosmann.ee/kool/xml/index.xml]--&amp;gt;&lt;br /&gt;
==VEEBITEENUSED==&lt;br /&gt;
&lt;br /&gt;
===8. aprill===&lt;br /&gt;
Otsustame teha teenused kõikide kohvikute menüüde kohta.&lt;br /&gt;
&lt;br /&gt;
===11.-12. aprill===&lt;br /&gt;
Henri koostab tabelite loogika&lt;br /&gt;
&lt;br /&gt;
===13. aprill===&lt;br /&gt;
Mailis otsustab veebiteenused teha asmx-is [webmethod]-itega&lt;br /&gt;
===14. aprill===&lt;br /&gt;
Mailis hakkab veebiteenuseid tegema&lt;br /&gt;
===17. aprill===&lt;br /&gt;
Veebiteenused on valmis:&lt;br /&gt;
&lt;br /&gt;
*AnnaJoogiliikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaJoogitabelirida_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*AnnaJookideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaK6igiKohvikuteAndmeteNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyyIDed_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyyRida_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyydeNimekiri_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaMenyyLiikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaMenyydeNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaPromillideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToiduliikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToitudeNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToitutabelirida_toiduIDjargi &lt;br /&gt;
&lt;br /&gt;
*AnnaYheKohvikuAndmed_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*KustutaJookMenyyst &lt;br /&gt;
&lt;br /&gt;
*KustutaMenyy &lt;br /&gt;
&lt;br /&gt;
*KustutaKohvik &lt;br /&gt;
&lt;br /&gt;
*KustutaToitMenyyst &lt;br /&gt;
&lt;br /&gt;
*KysiYheKohvikuYheMenyyToitudeIDeed_menyyIDjargi &lt;br /&gt;
&lt;br /&gt;
*LisaJoogiLiik &lt;br /&gt;
&lt;br /&gt;
*LisaMenyyLiik &lt;br /&gt;
&lt;br /&gt;
*LisaPromill &lt;br /&gt;
&lt;br /&gt;
*LisaToiduLiik &lt;br /&gt;
&lt;br /&gt;
*SecurityAuthenticateUser &lt;br /&gt;
&lt;br /&gt;
*TOITJOOKmenyysRida_menyyIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedJoogileMenyys &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedKohvikule &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedToiduleMenyys &lt;br /&gt;
&lt;br /&gt;
*annaJoogiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiKIRJELDUS_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiKOMM_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiID_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiNIMI_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKasOnTaimeT_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKasutajaNIMI_Guidjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuLahtiolekuAjad_kohvikuIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuTeated &lt;br /&gt;
&lt;br /&gt;
*annaLinnaID_LinnaNimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaLinnaNIMI_LinnaIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaLinnad_maakonnaNIMEjargi &lt;br /&gt;
&lt;br /&gt;
*annaMaakonnaID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaMenyyLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaMenyyLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaPromill_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaPromilliID_promilliNrJargi &lt;br /&gt;
&lt;br /&gt;
*annaPromilliNR_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduKIRJELDUS_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduKOMMENTAAR_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiNIMETUS_toiduIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaYheKohvikuMenyyd_kohvikuNIMEjargi &lt;br /&gt;
&lt;br /&gt;
*autendiKasutajaParooliJargi &lt;br /&gt;
&lt;br /&gt;
*k6igiKohvikuteMenyyd &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusJoogiKohta &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusKohvikuKohta &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusToiduKohta &lt;br /&gt;
&lt;br /&gt;
*lisaJookMenyysse &lt;br /&gt;
&lt;br /&gt;
*lisaToitMenyysse &lt;br /&gt;
&lt;br /&gt;
*lisaUusJook &lt;br /&gt;
&lt;br /&gt;
*lisaUusKohvik &lt;br /&gt;
&lt;br /&gt;
*lisaUusLahtiolekuAeg &lt;br /&gt;
&lt;br /&gt;
*lisaUusMenyy &lt;br /&gt;
&lt;br /&gt;
*lisaUusTeadaanne &lt;br /&gt;
&lt;br /&gt;
*lisaUusToit &lt;br /&gt;
&lt;br /&gt;
*nadalapaevaID_paevaNimetuseJargi &lt;br /&gt;
&lt;br /&gt;
*nadalapaevaNIMETUS_paevaIDjargi&lt;br /&gt;
&lt;br /&gt;
*Registreeru&lt;br /&gt;
&lt;br /&gt;
*LogiSisseTavakasutajana&lt;br /&gt;
&lt;br /&gt;
*LogiSisseKohvikuna&lt;br /&gt;
&lt;br /&gt;
===24. aprill===&lt;br /&gt;
Allikfail: http://www.p2ike.com/CSharp/KohvikudVeebiteenus.rar&lt;br /&gt;
&lt;br /&gt;
Meetod &#039;k6igiKohvikuteMenyyd&#039; kuvab sellise xml struktuuri: http://www.p2ike.com/CSharp/k6igiKohvikuteMenyyd.xml&lt;br /&gt;
&lt;br /&gt;
Toidud ja joogid sorteeritakse liikide kaupa.&lt;br /&gt;
&lt;br /&gt;
=Allikfail=&lt;br /&gt;
http://www.p2ike.com/CSharp/KohvikudVeebiteenus.rar&lt;br /&gt;
&lt;br /&gt;
===Meetod *k6igiKohvikuteMenyyd kuvab sellise xml struktuuri:===&lt;br /&gt;
Toidud ja joogid sorteeritakse liikide kaupa.&lt;br /&gt;
http://www.p2ike.com/CSharp/k6igiKohvikuteMenyyd.xml&lt;br /&gt;
&amp;lt;!--[http://www.p2ike.com/CSharp/k6igiKohvikuteMenyyd.xml]--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Allikfail=&lt;br /&gt;
http://www.p2ike.com/CSharp/KohvikudVeebiteenus.rar&lt;br /&gt;
&lt;br /&gt;
===Meetod *k6igiKohvikuteMenyyd kuvab sellise xml struktuuri:===&lt;br /&gt;
Toidud ja joogid sorteeritakse liikide kaupa.&lt;br /&gt;
http://www.p2ike.com/CSharp/k6igiKohvikuteMenyyd.xml&lt;br /&gt;
&amp;lt;!--[http://www.p2ike.com/CSharp/k6igiKohvikuteMenyyd.xml]--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ANDMEMUDEL ==&lt;br /&gt;
&amp;lt;!--http://www.p2ike.com/CSharp/kohvikuTabelid.pdf --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--[[File:http://www.p2ike.com/CSharp/kohvikuTabelid.pdf|thumb|550px|visuaalne ülevaade tabelitest andmebaasis]] --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--[[File:KohvikuTabelid.jpg]] --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:KohvikuTabelid.jpg|thumb|left|1000px|alt=Andmebaasiskeem.|Visuaalne ülevaade tabelitest andmebaasis.]]&lt;/div&gt;</summary>
		<author><name>Mtoompuu</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Meeskond_%22H2%22&amp;diff=29641</id>
		<title>Meeskond &quot;H2&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Meeskond_%22H2%22&amp;diff=29641"/>
		<updated>2011-05-02T16:10:25Z</updated>

		<summary type="html">&lt;p&gt;Mtoompuu: /* 24. aprill */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Kohviku menüüsüsteem==&lt;br /&gt;
===Projekt===&lt;br /&gt;
Kohvikute (esialgu ainult IT-Kohviku) menüüsüsteem, mis on jälgitav mobiilseadmetelt. Lisaväärtusena võimaldab anda pakutavale hinnanguid, otsuse langetamise hõlbustamiseks kommentaar:(see viimane funktsioon kipub vist &amp;quot;veebirakenduseks&amp;quot; muutuma)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Sihtplatvormid:&lt;br /&gt;
Windows Mobile, iOS, Android(kui leiame vabatahtlikud testijad)&lt;br /&gt;
&lt;br /&gt;
===Taustinfo===&lt;br /&gt;
Praegune IT-Kohviku menüü on käsitsi täidetav valge tahvel. Projekti eesmärgiks on parendada IT-Kohviku menüüsüsteemi ja teha see veebi kaudu kättesaadavaks, nii, et menüüsse saab lisada ka karniiri valiku. Standardmenüü puhul saab menüüs olla ka illustreeriv foto. Hetkemenüü ning hinnad ja lahtioleku ajad on samuti jälgitavad võrguühendust eviva mobiilseadme ekraanilt, hõlbustades sellega valikute tegemist.&lt;br /&gt;
&lt;br /&gt;
===Liikmed===&lt;br /&gt;
* Mailis Toompuu&lt;br /&gt;
* Henri Kroosmann&lt;br /&gt;
* Heiki Tamm&lt;br /&gt;
&lt;br /&gt;
==Sisu==&lt;br /&gt;
&lt;br /&gt;
===XML Data===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;menu&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name1&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;0&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name1&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item1&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item2&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item3&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;0&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;0&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount1&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;0&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;0&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot1&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name2&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;255&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name2&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item4&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item5&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item6&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;255&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;255&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount2&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;255&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;255&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot2&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name3&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;1&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name3&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item7&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item8&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item9&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;1&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;1&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount3&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;1&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;1&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot3&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
&amp;lt;/menu&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===XML Schema===&lt;br /&gt;
&lt;br /&gt;
Ülevaade Schema&#039;st. &amp;lt;br /&amp;gt;&lt;br /&gt;
[[File:XMLSchema_Capture_(optimized).png]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Ning sellele vastav kood.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xs:schema attributeFormDefault=&amp;quot;unqualified&amp;quot; elementFormDefault=&amp;quot;qualified&amp;quot; xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xs:element name=&amp;quot;menu&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;product&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;type&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;id&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;extras&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence minOccurs=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;item&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;price&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence minOccurs=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;int&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;frac&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element minOccurs=&amp;quot;0&amp;quot; name=&amp;quot;discount&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;vote&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;pos&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;neg&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;screenshot&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===XML Style===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;html&amp;gt;&lt;br /&gt;
      &amp;lt;head&amp;gt;&lt;br /&gt;
        &amp;lt;style type=&amp;quot;text/css&amp;quot;&amp;gt;&lt;br /&gt;
          html,body{margin:0;padding:0;font-family:Helvetica,Arial,sans-serif;font-size:14px;line-height:19px;color:#2c2c2c;}&lt;br /&gt;
          h1{margin:0;padding:25px 0 0;font-size:22px;line-height:25px;text-align:center;}&lt;br /&gt;
          h2{margin:0;padding:5px;font-size:16px;line-height:21px}&lt;br /&gt;
          span.discount{padding:0 0 0 5px;color:red;}&lt;br /&gt;
          table{margin:20px auto;padding:0;}&lt;br /&gt;
          th,td{padding:5px;border:1px solid #2c2c2c;vertical-align:top;text-align:left}&lt;br /&gt;
          th{font-weight:bold;background-color:#eee;}&lt;br /&gt;
          ul{margin:0;padding:0;list-style-type:none;}&lt;br /&gt;
        &amp;lt;/style&amp;gt;&lt;br /&gt;
      &amp;lt;/head&amp;gt;&lt;br /&gt;
      &amp;lt;body&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;Menüü&amp;lt;/h1&amp;gt;&lt;br /&gt;
        &amp;lt;table width=&amp;quot;800&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;200&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;100&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col witdh=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;150&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;tr&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Nimetus&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Lisandid&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Tüüp&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Hind&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Hinne / Hindajaid&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Pilt&amp;lt;/th&amp;gt;&lt;br /&gt;
          &amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
          &amp;lt;xsl:for-each select=&amp;quot;menu/product&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:sort select=&amp;quot;type/id&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:sort select=&amp;quot;name&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;th&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;name&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/th&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;extras/node()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;ul&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:for-each select=&amp;quot;extras/item&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;li&amp;gt;&lt;br /&gt;
                          &amp;lt;xsl:value-of select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;/li&amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
                    &amp;lt;/ul&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;td&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;type/name&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;price/node()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    €&amp;lt;xsl:value-of select=&amp;quot;price/int&amp;quot;/&amp;gt;.&amp;lt;xsl:value-of select=&amp;quot;price/frac&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:if test=&amp;quot;price/discount/text()&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;span class=&amp;quot;discount&amp;quot;&amp;gt;&lt;br /&gt;
                        (-&amp;lt;xsl:value-of select=&amp;quot;price/discount&amp;quot;/&amp;gt;%)&lt;br /&gt;
                      &amp;lt;/span&amp;gt;&lt;br /&gt;
                    &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:variable name=&amp;quot;p&amp;quot; select=&amp;quot;vote/pos&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:variable name=&amp;quot;n&amp;quot; select=&amp;quot;vote/neg&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;td&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$p - $n&amp;quot;/&amp;gt; / &amp;lt;xsl:value-of select=&amp;quot;$p + $n&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;screenshot/text()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;img src=&amp;quot;{screenshot}&amp;quot; alt=&amp;quot;&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;img src=&amp;quot;screenshots/default.png&amp;quot; alt=&amp;quot;No image&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
      &amp;lt;/body&amp;gt;&lt;br /&gt;
    &amp;lt;/html&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
Sisu ja stiilifaili koostöö http://henri.kroosmann.ee/kool/xml/index.xml &amp;lt;!--[http://henri.kroosmann.ee/kool/xml/index.xml]--&amp;gt;&lt;br /&gt;
==VEEBITEENUSED==&lt;br /&gt;
&lt;br /&gt;
===8. aprill===&lt;br /&gt;
Otsustame teha teenused kõikide kohvikute menüüde kohta.&lt;br /&gt;
&lt;br /&gt;
===11.-12. aprill===&lt;br /&gt;
Henri koostab tabelite loogika&lt;br /&gt;
&lt;br /&gt;
===13. aprill===&lt;br /&gt;
Mailis otsustab veebiteenused teha asmx-is [webmethod]-itega&lt;br /&gt;
===14. aprill===&lt;br /&gt;
Mailis hakkab veebiteenuseid tegema&lt;br /&gt;
===17. aprill===&lt;br /&gt;
Veebiteenused on valmis:&lt;br /&gt;
&lt;br /&gt;
*AnnaJoogiliikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaJoogitabelirida_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*AnnaJookideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaK6igiKohvikuteAndmeteNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyyIDed_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyyRida_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyydeNimekiri_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaMenyyLiikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaMenyydeNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaPromillideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToiduliikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToitudeNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToitutabelirida_toiduIDjargi &lt;br /&gt;
&lt;br /&gt;
*AnnaYheKohvikuAndmed_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*KustutaJookMenyyst &lt;br /&gt;
&lt;br /&gt;
*KustutaMenyy &lt;br /&gt;
&lt;br /&gt;
*KustutaKohvik &lt;br /&gt;
&lt;br /&gt;
*KustutaToitMenyyst &lt;br /&gt;
&lt;br /&gt;
*KysiYheKohvikuYheMenyyToitudeIDeed_menyyIDjargi &lt;br /&gt;
&lt;br /&gt;
*LisaJoogiLiik &lt;br /&gt;
&lt;br /&gt;
*LisaMenyyLiik &lt;br /&gt;
&lt;br /&gt;
*LisaPromill &lt;br /&gt;
&lt;br /&gt;
*LisaToiduLiik &lt;br /&gt;
&lt;br /&gt;
*SecurityAuthenticateUser &lt;br /&gt;
&lt;br /&gt;
*TOITJOOKmenyysRida_menyyIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedJoogileMenyys &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedKohvikule &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedToiduleMenyys &lt;br /&gt;
&lt;br /&gt;
*annaJoogiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiKIRJELDUS_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiKOMM_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiID_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiNIMI_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKasOnTaimeT_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKasutajaNIMI_Guidjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuLahtiolekuAjad_kohvikuIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuTeated &lt;br /&gt;
&lt;br /&gt;
*annaLinnaID_LinnaNimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaLinnaNIMI_LinnaIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaLinnad_maakonnaNIMEjargi &lt;br /&gt;
&lt;br /&gt;
*annaMaakonnaID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaMenyyLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaMenyyLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaPromill_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaPromilliID_promilliNrJargi &lt;br /&gt;
&lt;br /&gt;
*annaPromilliNR_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduKIRJELDUS_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduKOMMENTAAR_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiNIMETUS_toiduIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaYheKohvikuMenyyd_kohvikuNIMEjargi &lt;br /&gt;
&lt;br /&gt;
*autendiKasutajaParooliJargi &lt;br /&gt;
&lt;br /&gt;
*k6igiKohvikuteMenyyd &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusJoogiKohta &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusKohvikuKohta &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusToiduKohta &lt;br /&gt;
&lt;br /&gt;
*lisaJookMenyysse &lt;br /&gt;
&lt;br /&gt;
*lisaToitMenyysse &lt;br /&gt;
&lt;br /&gt;
*lisaUusJook &lt;br /&gt;
&lt;br /&gt;
*lisaUusKohvik &lt;br /&gt;
&lt;br /&gt;
*lisaUusLahtiolekuAeg &lt;br /&gt;
&lt;br /&gt;
*lisaUusMenyy &lt;br /&gt;
&lt;br /&gt;
*lisaUusTeadaanne &lt;br /&gt;
&lt;br /&gt;
*lisaUusToit &lt;br /&gt;
&lt;br /&gt;
*nadalapaevaID_paevaNimetuseJargi &lt;br /&gt;
&lt;br /&gt;
*nadalapaevaNIMETUS_paevaIDjargi&lt;br /&gt;
&lt;br /&gt;
*Registreeru&lt;br /&gt;
&lt;br /&gt;
*LogiSisseTavakasutajana&lt;br /&gt;
&lt;br /&gt;
*LogiSisseKohvikuna&lt;br /&gt;
&lt;br /&gt;
===24. aprill===&lt;br /&gt;
Allikfail: http://www.p2ike.com/CSharp/KohvikudVeebiteenus.rar&lt;br /&gt;
&lt;br /&gt;
Meetod &#039;k6igiKohvikuteMenyyd&#039; kuvab sellise xml struktuuri: http://www.p2ike.com/CSharp/k6igiKohvikuteMenyyd.xml&lt;br /&gt;
Toidud ja joogid sorteeritakse liikide kaupa.&lt;br /&gt;
&lt;br /&gt;
=Allikfail=&lt;br /&gt;
http://www.p2ike.com/CSharp/KohvikudVeebiteenus.rar&lt;br /&gt;
&lt;br /&gt;
===Meetod *k6igiKohvikuteMenyyd kuvab sellise xml struktuuri:===&lt;br /&gt;
Toidud ja joogid sorteeritakse liikide kaupa.&lt;br /&gt;
http://www.p2ike.com/CSharp/k6igiKohvikuteMenyyd.xml&lt;br /&gt;
&amp;lt;!--[http://www.p2ike.com/CSharp/k6igiKohvikuteMenyyd.xml]--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Allikfail=&lt;br /&gt;
http://www.p2ike.com/CSharp/KohvikudVeebiteenus.rar&lt;br /&gt;
&lt;br /&gt;
===Meetod *k6igiKohvikuteMenyyd kuvab sellise xml struktuuri:===&lt;br /&gt;
Toidud ja joogid sorteeritakse liikide kaupa.&lt;br /&gt;
http://www.p2ike.com/CSharp/k6igiKohvikuteMenyyd.xml&lt;br /&gt;
&amp;lt;!--[http://www.p2ike.com/CSharp/k6igiKohvikuteMenyyd.xml]--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ANDMEMUDEL ==&lt;br /&gt;
&amp;lt;!--http://www.p2ike.com/CSharp/kohvikuTabelid.pdf --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--[[File:http://www.p2ike.com/CSharp/kohvikuTabelid.pdf|thumb|550px|visuaalne ülevaade tabelitest andmebaasis]] --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--[[File:KohvikuTabelid.jpg]] --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:KohvikuTabelid.jpg|thumb|left|1000px|alt=Andmebaasiskeem.|Visuaalne ülevaade tabelitest andmebaasis.]]&lt;/div&gt;</summary>
		<author><name>Mtoompuu</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Meeskond_%22H2%22&amp;diff=29640</id>
		<title>Meeskond &quot;H2&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Meeskond_%22H2%22&amp;diff=29640"/>
		<updated>2011-05-02T16:10:10Z</updated>

		<summary type="html">&lt;p&gt;Mtoompuu: /* 24. aprill */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Kohviku menüüsüsteem==&lt;br /&gt;
===Projekt===&lt;br /&gt;
Kohvikute (esialgu ainult IT-Kohviku) menüüsüsteem, mis on jälgitav mobiilseadmetelt. Lisaväärtusena võimaldab anda pakutavale hinnanguid, otsuse langetamise hõlbustamiseks kommentaar:(see viimane funktsioon kipub vist &amp;quot;veebirakenduseks&amp;quot; muutuma)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Sihtplatvormid:&lt;br /&gt;
Windows Mobile, iOS, Android(kui leiame vabatahtlikud testijad)&lt;br /&gt;
&lt;br /&gt;
===Taustinfo===&lt;br /&gt;
Praegune IT-Kohviku menüü on käsitsi täidetav valge tahvel. Projekti eesmärgiks on parendada IT-Kohviku menüüsüsteemi ja teha see veebi kaudu kättesaadavaks, nii, et menüüsse saab lisada ka karniiri valiku. Standardmenüü puhul saab menüüs olla ka illustreeriv foto. Hetkemenüü ning hinnad ja lahtioleku ajad on samuti jälgitavad võrguühendust eviva mobiilseadme ekraanilt, hõlbustades sellega valikute tegemist.&lt;br /&gt;
&lt;br /&gt;
===Liikmed===&lt;br /&gt;
* Mailis Toompuu&lt;br /&gt;
* Henri Kroosmann&lt;br /&gt;
* Heiki Tamm&lt;br /&gt;
&lt;br /&gt;
==Sisu==&lt;br /&gt;
&lt;br /&gt;
===XML Data===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;menu&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name1&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;0&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name1&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item1&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item2&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item3&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;0&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;0&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount1&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;0&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;0&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot1&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name2&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;255&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name2&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item4&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item5&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item6&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;255&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;255&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount2&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;255&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;255&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot2&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name3&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;1&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name3&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item7&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item8&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item9&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;1&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;1&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount3&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;1&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;1&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot3&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
&amp;lt;/menu&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===XML Schema===&lt;br /&gt;
&lt;br /&gt;
Ülevaade Schema&#039;st. &amp;lt;br /&amp;gt;&lt;br /&gt;
[[File:XMLSchema_Capture_(optimized).png]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Ning sellele vastav kood.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xs:schema attributeFormDefault=&amp;quot;unqualified&amp;quot; elementFormDefault=&amp;quot;qualified&amp;quot; xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xs:element name=&amp;quot;menu&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;product&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;type&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;id&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;extras&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence minOccurs=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;item&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;price&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence minOccurs=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;int&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;frac&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element minOccurs=&amp;quot;0&amp;quot; name=&amp;quot;discount&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;vote&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;pos&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;neg&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;screenshot&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===XML Style===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;html&amp;gt;&lt;br /&gt;
      &amp;lt;head&amp;gt;&lt;br /&gt;
        &amp;lt;style type=&amp;quot;text/css&amp;quot;&amp;gt;&lt;br /&gt;
          html,body{margin:0;padding:0;font-family:Helvetica,Arial,sans-serif;font-size:14px;line-height:19px;color:#2c2c2c;}&lt;br /&gt;
          h1{margin:0;padding:25px 0 0;font-size:22px;line-height:25px;text-align:center;}&lt;br /&gt;
          h2{margin:0;padding:5px;font-size:16px;line-height:21px}&lt;br /&gt;
          span.discount{padding:0 0 0 5px;color:red;}&lt;br /&gt;
          table{margin:20px auto;padding:0;}&lt;br /&gt;
          th,td{padding:5px;border:1px solid #2c2c2c;vertical-align:top;text-align:left}&lt;br /&gt;
          th{font-weight:bold;background-color:#eee;}&lt;br /&gt;
          ul{margin:0;padding:0;list-style-type:none;}&lt;br /&gt;
        &amp;lt;/style&amp;gt;&lt;br /&gt;
      &amp;lt;/head&amp;gt;&lt;br /&gt;
      &amp;lt;body&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;Menüü&amp;lt;/h1&amp;gt;&lt;br /&gt;
        &amp;lt;table width=&amp;quot;800&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;200&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;100&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col witdh=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;150&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;tr&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Nimetus&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Lisandid&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Tüüp&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Hind&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Hinne / Hindajaid&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Pilt&amp;lt;/th&amp;gt;&lt;br /&gt;
          &amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
          &amp;lt;xsl:for-each select=&amp;quot;menu/product&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:sort select=&amp;quot;type/id&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:sort select=&amp;quot;name&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;th&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;name&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/th&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;extras/node()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;ul&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:for-each select=&amp;quot;extras/item&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;li&amp;gt;&lt;br /&gt;
                          &amp;lt;xsl:value-of select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;/li&amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
                    &amp;lt;/ul&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;td&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;type/name&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;price/node()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    €&amp;lt;xsl:value-of select=&amp;quot;price/int&amp;quot;/&amp;gt;.&amp;lt;xsl:value-of select=&amp;quot;price/frac&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:if test=&amp;quot;price/discount/text()&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;span class=&amp;quot;discount&amp;quot;&amp;gt;&lt;br /&gt;
                        (-&amp;lt;xsl:value-of select=&amp;quot;price/discount&amp;quot;/&amp;gt;%)&lt;br /&gt;
                      &amp;lt;/span&amp;gt;&lt;br /&gt;
                    &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:variable name=&amp;quot;p&amp;quot; select=&amp;quot;vote/pos&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:variable name=&amp;quot;n&amp;quot; select=&amp;quot;vote/neg&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;td&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$p - $n&amp;quot;/&amp;gt; / &amp;lt;xsl:value-of select=&amp;quot;$p + $n&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;screenshot/text()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;img src=&amp;quot;{screenshot}&amp;quot; alt=&amp;quot;&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;img src=&amp;quot;screenshots/default.png&amp;quot; alt=&amp;quot;No image&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
      &amp;lt;/body&amp;gt;&lt;br /&gt;
    &amp;lt;/html&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
Sisu ja stiilifaili koostöö http://henri.kroosmann.ee/kool/xml/index.xml &amp;lt;!--[http://henri.kroosmann.ee/kool/xml/index.xml]--&amp;gt;&lt;br /&gt;
==VEEBITEENUSED==&lt;br /&gt;
&lt;br /&gt;
===8. aprill===&lt;br /&gt;
Otsustame teha teenused kõikide kohvikute menüüde kohta.&lt;br /&gt;
&lt;br /&gt;
===11.-12. aprill===&lt;br /&gt;
Henri koostab tabelite loogika&lt;br /&gt;
&lt;br /&gt;
===13. aprill===&lt;br /&gt;
Mailis otsustab veebiteenused teha asmx-is [webmethod]-itega&lt;br /&gt;
===14. aprill===&lt;br /&gt;
Mailis hakkab veebiteenuseid tegema&lt;br /&gt;
===17. aprill===&lt;br /&gt;
Veebiteenused on valmis:&lt;br /&gt;
&lt;br /&gt;
*AnnaJoogiliikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaJoogitabelirida_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*AnnaJookideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaK6igiKohvikuteAndmeteNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyyIDed_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyyRida_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyydeNimekiri_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaMenyyLiikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaMenyydeNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaPromillideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToiduliikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToitudeNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToitutabelirida_toiduIDjargi &lt;br /&gt;
&lt;br /&gt;
*AnnaYheKohvikuAndmed_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*KustutaJookMenyyst &lt;br /&gt;
&lt;br /&gt;
*KustutaMenyy &lt;br /&gt;
&lt;br /&gt;
*KustutaKohvik &lt;br /&gt;
&lt;br /&gt;
*KustutaToitMenyyst &lt;br /&gt;
&lt;br /&gt;
*KysiYheKohvikuYheMenyyToitudeIDeed_menyyIDjargi &lt;br /&gt;
&lt;br /&gt;
*LisaJoogiLiik &lt;br /&gt;
&lt;br /&gt;
*LisaMenyyLiik &lt;br /&gt;
&lt;br /&gt;
*LisaPromill &lt;br /&gt;
&lt;br /&gt;
*LisaToiduLiik &lt;br /&gt;
&lt;br /&gt;
*SecurityAuthenticateUser &lt;br /&gt;
&lt;br /&gt;
*TOITJOOKmenyysRida_menyyIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedJoogileMenyys &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedKohvikule &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedToiduleMenyys &lt;br /&gt;
&lt;br /&gt;
*annaJoogiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiKIRJELDUS_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiKOMM_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiID_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiNIMI_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKasOnTaimeT_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKasutajaNIMI_Guidjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuLahtiolekuAjad_kohvikuIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuTeated &lt;br /&gt;
&lt;br /&gt;
*annaLinnaID_LinnaNimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaLinnaNIMI_LinnaIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaLinnad_maakonnaNIMEjargi &lt;br /&gt;
&lt;br /&gt;
*annaMaakonnaID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaMenyyLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaMenyyLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaPromill_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaPromilliID_promilliNrJargi &lt;br /&gt;
&lt;br /&gt;
*annaPromilliNR_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduKIRJELDUS_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduKOMMENTAAR_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiNIMETUS_toiduIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaYheKohvikuMenyyd_kohvikuNIMEjargi &lt;br /&gt;
&lt;br /&gt;
*autendiKasutajaParooliJargi &lt;br /&gt;
&lt;br /&gt;
*k6igiKohvikuteMenyyd &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusJoogiKohta &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusKohvikuKohta &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusToiduKohta &lt;br /&gt;
&lt;br /&gt;
*lisaJookMenyysse &lt;br /&gt;
&lt;br /&gt;
*lisaToitMenyysse &lt;br /&gt;
&lt;br /&gt;
*lisaUusJook &lt;br /&gt;
&lt;br /&gt;
*lisaUusKohvik &lt;br /&gt;
&lt;br /&gt;
*lisaUusLahtiolekuAeg &lt;br /&gt;
&lt;br /&gt;
*lisaUusMenyy &lt;br /&gt;
&lt;br /&gt;
*lisaUusTeadaanne &lt;br /&gt;
&lt;br /&gt;
*lisaUusToit &lt;br /&gt;
&lt;br /&gt;
*nadalapaevaID_paevaNimetuseJargi &lt;br /&gt;
&lt;br /&gt;
*nadalapaevaNIMETUS_paevaIDjargi&lt;br /&gt;
&lt;br /&gt;
*Registreeru&lt;br /&gt;
&lt;br /&gt;
*LogiSisseTavakasutajana&lt;br /&gt;
&lt;br /&gt;
*LogiSisseKohvikuna&lt;br /&gt;
&lt;br /&gt;
===24. aprill===&lt;br /&gt;
Allikfail: http://www.p2ike.com/CSharp/KohvikudVeebiteenus.rar&lt;br /&gt;
Meetod &#039;k6igiKohvikuteMenyyd&#039; kuvab sellise xml struktuuri: http://www.p2ike.com/CSharp/k6igiKohvikuteMenyyd.xml&lt;br /&gt;
Toidud ja joogid sorteeritakse liikide kaupa.&lt;br /&gt;
&lt;br /&gt;
=Allikfail=&lt;br /&gt;
http://www.p2ike.com/CSharp/KohvikudVeebiteenus.rar&lt;br /&gt;
&lt;br /&gt;
===Meetod *k6igiKohvikuteMenyyd kuvab sellise xml struktuuri:===&lt;br /&gt;
Toidud ja joogid sorteeritakse liikide kaupa.&lt;br /&gt;
http://www.p2ike.com/CSharp/k6igiKohvikuteMenyyd.xml&lt;br /&gt;
&amp;lt;!--[http://www.p2ike.com/CSharp/k6igiKohvikuteMenyyd.xml]--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Allikfail=&lt;br /&gt;
http://www.p2ike.com/CSharp/KohvikudVeebiteenus.rar&lt;br /&gt;
&lt;br /&gt;
===Meetod *k6igiKohvikuteMenyyd kuvab sellise xml struktuuri:===&lt;br /&gt;
Toidud ja joogid sorteeritakse liikide kaupa.&lt;br /&gt;
http://www.p2ike.com/CSharp/k6igiKohvikuteMenyyd.xml&lt;br /&gt;
&amp;lt;!--[http://www.p2ike.com/CSharp/k6igiKohvikuteMenyyd.xml]--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ANDMEMUDEL ==&lt;br /&gt;
&amp;lt;!--http://www.p2ike.com/CSharp/kohvikuTabelid.pdf --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--[[File:http://www.p2ike.com/CSharp/kohvikuTabelid.pdf|thumb|550px|visuaalne ülevaade tabelitest andmebaasis]] --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--[[File:KohvikuTabelid.jpg]] --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:KohvikuTabelid.jpg|thumb|left|1000px|alt=Andmebaasiskeem.|Visuaalne ülevaade tabelitest andmebaasis.]]&lt;/div&gt;</summary>
		<author><name>Mtoompuu</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Meeskond_%22H2%22&amp;diff=29639</id>
		<title>Meeskond &quot;H2&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Meeskond_%22H2%22&amp;diff=29639"/>
		<updated>2011-05-02T16:09:05Z</updated>

		<summary type="html">&lt;p&gt;Mtoompuu: /* 24. aprill */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Kohviku menüüsüsteem==&lt;br /&gt;
===Projekt===&lt;br /&gt;
Kohvikute (esialgu ainult IT-Kohviku) menüüsüsteem, mis on jälgitav mobiilseadmetelt. Lisaväärtusena võimaldab anda pakutavale hinnanguid, otsuse langetamise hõlbustamiseks kommentaar:(see viimane funktsioon kipub vist &amp;quot;veebirakenduseks&amp;quot; muutuma)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Sihtplatvormid:&lt;br /&gt;
Windows Mobile, iOS, Android(kui leiame vabatahtlikud testijad)&lt;br /&gt;
&lt;br /&gt;
===Taustinfo===&lt;br /&gt;
Praegune IT-Kohviku menüü on käsitsi täidetav valge tahvel. Projekti eesmärgiks on parendada IT-Kohviku menüüsüsteemi ja teha see veebi kaudu kättesaadavaks, nii, et menüüsse saab lisada ka karniiri valiku. Standardmenüü puhul saab menüüs olla ka illustreeriv foto. Hetkemenüü ning hinnad ja lahtioleku ajad on samuti jälgitavad võrguühendust eviva mobiilseadme ekraanilt, hõlbustades sellega valikute tegemist.&lt;br /&gt;
&lt;br /&gt;
===Liikmed===&lt;br /&gt;
* Mailis Toompuu&lt;br /&gt;
* Henri Kroosmann&lt;br /&gt;
* Heiki Tamm&lt;br /&gt;
&lt;br /&gt;
==Sisu==&lt;br /&gt;
&lt;br /&gt;
===XML Data===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;menu&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name1&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;0&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name1&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item1&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item2&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item3&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;0&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;0&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount1&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;0&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;0&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot1&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name2&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;255&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name2&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item4&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item5&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item6&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;255&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;255&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount2&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;255&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;255&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot2&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
  &amp;lt;product&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;name3&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;1&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;name3&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;extras&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item7&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item8&amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;item9&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/extras&amp;gt;&lt;br /&gt;
    &amp;lt;price&amp;gt;&lt;br /&gt;
      &amp;lt;int&amp;gt;1&amp;lt;/int&amp;gt;&lt;br /&gt;
      &amp;lt;frac&amp;gt;1&amp;lt;/frac&amp;gt;&lt;br /&gt;
      &amp;lt;discount&amp;gt;discount3&amp;lt;/discount&amp;gt;&lt;br /&gt;
    &amp;lt;/price&amp;gt;&lt;br /&gt;
    &amp;lt;vote&amp;gt;&lt;br /&gt;
      &amp;lt;pos&amp;gt;1&amp;lt;/pos&amp;gt;&lt;br /&gt;
      &amp;lt;neg&amp;gt;1&amp;lt;/neg&amp;gt;&lt;br /&gt;
    &amp;lt;/vote&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;screenshot3&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/product&amp;gt;&lt;br /&gt;
&amp;lt;/menu&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===XML Schema===&lt;br /&gt;
&lt;br /&gt;
Ülevaade Schema&#039;st. &amp;lt;br /&amp;gt;&lt;br /&gt;
[[File:XMLSchema_Capture_(optimized).png]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Ning sellele vastav kood.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xs:schema attributeFormDefault=&amp;quot;unqualified&amp;quot; elementFormDefault=&amp;quot;qualified&amp;quot; xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xs:element name=&amp;quot;menu&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;product&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;type&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;id&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;name&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;extras&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence minOccurs=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;item&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;price&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence minOccurs=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;int&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;frac&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element minOccurs=&amp;quot;0&amp;quot; name=&amp;quot;discount&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;vote&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;pos&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;neg&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;screenshot&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===XML Style===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;html&amp;gt;&lt;br /&gt;
      &amp;lt;head&amp;gt;&lt;br /&gt;
        &amp;lt;style type=&amp;quot;text/css&amp;quot;&amp;gt;&lt;br /&gt;
          html,body{margin:0;padding:0;font-family:Helvetica,Arial,sans-serif;font-size:14px;line-height:19px;color:#2c2c2c;}&lt;br /&gt;
          h1{margin:0;padding:25px 0 0;font-size:22px;line-height:25px;text-align:center;}&lt;br /&gt;
          h2{margin:0;padding:5px;font-size:16px;line-height:21px}&lt;br /&gt;
          span.discount{padding:0 0 0 5px;color:red;}&lt;br /&gt;
          table{margin:20px auto;padding:0;}&lt;br /&gt;
          th,td{padding:5px;border:1px solid #2c2c2c;vertical-align:top;text-align:left}&lt;br /&gt;
          th{font-weight:bold;background-color:#eee;}&lt;br /&gt;
          ul{margin:0;padding:0;list-style-type:none;}&lt;br /&gt;
        &amp;lt;/style&amp;gt;&lt;br /&gt;
      &amp;lt;/head&amp;gt;&lt;br /&gt;
      &amp;lt;body&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;Menüü&amp;lt;/h1&amp;gt;&lt;br /&gt;
        &amp;lt;table width=&amp;quot;800&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;200&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;100&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col witdh=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;col width=&amp;quot;150&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;tr&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Nimetus&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Lisandid&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Tüüp&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Hind&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Hinne / Hindajaid&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Pilt&amp;lt;/th&amp;gt;&lt;br /&gt;
          &amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
          &amp;lt;xsl:for-each select=&amp;quot;menu/product&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:sort select=&amp;quot;type/id&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:sort select=&amp;quot;name&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;th&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;name&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/th&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;extras/node()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;ul&amp;gt;&lt;br /&gt;
                      &amp;lt;xsl:for-each select=&amp;quot;extras/item&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;li&amp;gt;&lt;br /&gt;
                          &amp;lt;xsl:value-of select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;/li&amp;gt;&lt;br /&gt;
                      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
                    &amp;lt;/ul&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;td&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;type/name&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;price/node()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    €&amp;lt;xsl:value-of select=&amp;quot;price/int&amp;quot;/&amp;gt;.&amp;lt;xsl:value-of select=&amp;quot;price/frac&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;xsl:if test=&amp;quot;price/discount/text()&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;span class=&amp;quot;discount&amp;quot;&amp;gt;&lt;br /&gt;
                        (-&amp;lt;xsl:value-of select=&amp;quot;price/discount&amp;quot;/&amp;gt;%)&lt;br /&gt;
                      &amp;lt;/span&amp;gt;&lt;br /&gt;
                    &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;-&amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:variable name=&amp;quot;p&amp;quot; select=&amp;quot;vote/pos&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:variable name=&amp;quot;n&amp;quot; select=&amp;quot;vote/neg&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;td&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&amp;quot;$p - $n&amp;quot;/&amp;gt; / &amp;lt;xsl:value-of select=&amp;quot;$p + $n&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:when test=&amp;quot;screenshot/text()&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;img src=&amp;quot;{screenshot}&amp;quot; alt=&amp;quot;&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
                  &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;img src=&amp;quot;screenshots/default.png&amp;quot; alt=&amp;quot;No image&amp;quot;/&amp;gt;&lt;br /&gt;
                  &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
      &amp;lt;/body&amp;gt;&lt;br /&gt;
    &amp;lt;/html&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
Sisu ja stiilifaili koostöö http://henri.kroosmann.ee/kool/xml/index.xml &amp;lt;!--[http://henri.kroosmann.ee/kool/xml/index.xml]--&amp;gt;&lt;br /&gt;
==VEEBITEENUSED==&lt;br /&gt;
&lt;br /&gt;
===8. aprill===&lt;br /&gt;
Otsustame teha teenused kõikide kohvikute menüüde kohta.&lt;br /&gt;
&lt;br /&gt;
===11.-12. aprill===&lt;br /&gt;
Henri koostab tabelite loogika&lt;br /&gt;
&lt;br /&gt;
===13. aprill===&lt;br /&gt;
Mailis otsustab veebiteenused teha asmx-is [webmethod]-itega&lt;br /&gt;
===14. aprill===&lt;br /&gt;
Mailis hakkab veebiteenuseid tegema&lt;br /&gt;
===17. aprill===&lt;br /&gt;
Veebiteenused on valmis:&lt;br /&gt;
&lt;br /&gt;
*AnnaJoogiliikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaJoogitabelirida_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*AnnaJookideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaK6igiKohvikuteAndmeteNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyyIDed_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyyRida_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaKohvikuMenyydeNimekiri_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*AnnaMenyyLiikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaMenyydeNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaPromillideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToiduliikideNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToitudeNimekiri &lt;br /&gt;
&lt;br /&gt;
*AnnaToitutabelirida_toiduIDjargi &lt;br /&gt;
&lt;br /&gt;
*AnnaYheKohvikuAndmed_kohvikuNimeJargi &lt;br /&gt;
&lt;br /&gt;
*KustutaJookMenyyst &lt;br /&gt;
&lt;br /&gt;
*KustutaMenyy &lt;br /&gt;
&lt;br /&gt;
*KustutaKohvik &lt;br /&gt;
&lt;br /&gt;
*KustutaToitMenyyst &lt;br /&gt;
&lt;br /&gt;
*KysiYheKohvikuYheMenyyToitudeIDeed_menyyIDjargi &lt;br /&gt;
&lt;br /&gt;
*LisaJoogiLiik &lt;br /&gt;
&lt;br /&gt;
*LisaMenyyLiik &lt;br /&gt;
&lt;br /&gt;
*LisaPromill &lt;br /&gt;
&lt;br /&gt;
*LisaToiduLiik &lt;br /&gt;
&lt;br /&gt;
*SecurityAuthenticateUser &lt;br /&gt;
&lt;br /&gt;
*TOITJOOKmenyysRida_menyyIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedJoogileMenyys &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedKohvikule &lt;br /&gt;
&lt;br /&gt;
*annaArvustusedToiduleMenyys &lt;br /&gt;
&lt;br /&gt;
*annaJoogiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiKIRJELDUS_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiKOMM_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiID_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiLiigiNIMI_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaJoogiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKasOnTaimeT_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKasutajaNIMI_Guidjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuLahtiolekuAjad_kohvikuIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaKohvikuTeated &lt;br /&gt;
&lt;br /&gt;
*annaLinnaID_LinnaNimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaLinnaNIMI_LinnaIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaLinnad_maakonnaNIMEjargi &lt;br /&gt;
&lt;br /&gt;
*annaMaakonnaID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaMenyyLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaMenyyLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaPromill_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaPromilliID_promilliNrJargi &lt;br /&gt;
&lt;br /&gt;
*annaPromilliNR_joogiIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduKIRJELDUS_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduKOMMENTAAR_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiID_nimeJargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiNIMETUS_toiduIDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduLiigiNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaToiduNIMI_IDjargi &lt;br /&gt;
&lt;br /&gt;
*annaYheKohvikuMenyyd_kohvikuNIMEjargi &lt;br /&gt;
&lt;br /&gt;
*autendiKasutajaParooliJargi &lt;br /&gt;
&lt;br /&gt;
*k6igiKohvikuteMenyyd &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusJoogiKohta &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusKohvikuKohta &lt;br /&gt;
&lt;br /&gt;
*lisaArvamusToiduKohta &lt;br /&gt;
&lt;br /&gt;
*lisaJookMenyysse &lt;br /&gt;
&lt;br /&gt;
*lisaToitMenyysse &lt;br /&gt;
&lt;br /&gt;
*lisaUusJook &lt;br /&gt;
&lt;br /&gt;
*lisaUusKohvik &lt;br /&gt;
&lt;br /&gt;
*lisaUusLahtiolekuAeg &lt;br /&gt;
&lt;br /&gt;
*lisaUusMenyy &lt;br /&gt;
&lt;br /&gt;
*lisaUusTeadaanne &lt;br /&gt;
&lt;br /&gt;
*lisaUusToit &lt;br /&gt;
&lt;br /&gt;
*nadalapaevaID_paevaNimetuseJargi &lt;br /&gt;
&lt;br /&gt;
*nadalapaevaNIMETUS_paevaIDjargi&lt;br /&gt;
&lt;br /&gt;
*Registreeru&lt;br /&gt;
&lt;br /&gt;
*LogiSisseTavakasutajana&lt;br /&gt;
&lt;br /&gt;
*LogiSisseKohvikuna&lt;br /&gt;
&lt;br /&gt;
===24. aprill===&lt;br /&gt;
Allikfail: http://www.p2ike.com/CSharp/KohvikudVeebiteenus.rar&lt;br /&gt;
&lt;br /&gt;
=Allikfail=&lt;br /&gt;
http://www.p2ike.com/CSharp/KohvikudVeebiteenus.rar&lt;br /&gt;
&lt;br /&gt;
===Meetod *k6igiKohvikuteMenyyd kuvab sellise xml struktuuri:===&lt;br /&gt;
Toidud ja joogid sorteeritakse liikide kaupa.&lt;br /&gt;
http://www.p2ike.com/CSharp/k6igiKohvikuteMenyyd.xml&lt;br /&gt;
&amp;lt;!--[http://www.p2ike.com/CSharp/k6igiKohvikuteMenyyd.xml]--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Allikfail=&lt;br /&gt;
http://www.p2ike.com/CSharp/KohvikudVeebiteenus.rar&lt;br /&gt;
&lt;br /&gt;
===Meetod *k6igiKohvikuteMenyyd kuvab sellise xml struktuuri:===&lt;br /&gt;
Toidud ja joogid sorteeritakse liikide kaupa.&lt;br /&gt;
http://www.p2ike.com/CSharp/k6igiKohvikuteMenyyd.xml&lt;br /&gt;
&amp;lt;!--[http://www.p2ike.com/CSharp/k6igiKohvikuteMenyyd.xml]--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ANDMEMUDEL ==&lt;br /&gt;
&amp;lt;!--http://www.p2ike.com/CSharp/kohvikuTabelid.pdf --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--[[File:http://www.p2ike.com/CSharp/kohvikuTabelid.pdf|thumb|550px|visuaalne ülevaade tabelitest andmebaasis]] --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--[[File:KohvikuTabelid.jpg]] --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:KohvikuTabelid.jpg|thumb|left|1000px|alt=Andmebaasiskeem.|Visuaalne ülevaade tabelitest andmebaasis.]]&lt;/div&gt;</summary>
		<author><name>Mtoompuu</name></author>
	</entry>
</feed>