Lingviinid

From ICO wiki
Jump to navigationJump to search

Kodutöö aines "Võrgurakendused II: hajussüsteemide ehitamine"

Meeskond

  • Olga Trikk
  • Johanna Kammiste
  • Triin Oja
  • Karin Lepik

XML

XML fail näidisandmetega

<?xml version="1.0" encoding="utf-8" ?>
<Salon>
  <Division id="1" name="products">
    <Item id="1" type="oil">
      <Name><![CDATA[Massaažiõli]]></Name>
      <Description><![CDATA[Sobib suurepäraselt massaažide läbiviimiseks.]]></Description>
      <Amount unit="ml">200</Amount>
      <Price currency="eur">10.00</Price>
      <Stock>3</Stock>
    </Item>
    <Item id="2" type="oil">
      <Name><![CDATA[Kehaõli]]></Name>
      <Description><![CDATA[Sobib igapäevaseks kasutamiseks.]]></Description>
      <Amount unit="ml">200</Amount>
      <Price currency="eur">7.00</Price>
      <Stock>0</Stock>
    </Item>
    <Item id="3" type="cream">
      <Name><![CDATA[Näokreem]]></Name>
      <Description><![CDATA[Sobib igapäevaseks kasutamiseks.]]></Description>
      <Amount unit="ml">200</Amount>
      <Price currency="eur">8.00</Price>
      <Stock>3</Stock>
    </Item>
    <Item id="4" type="cream">
      <Name><![CDATA[Kätekreem]]></Name>
      <Description><![CDATA[Teeb käed siidiselt pehmeks.]]></Description>
      <Amount unit="ml">100</Amount>
      <Price currency="eur">5.00</Price>
      <Stock>2</Stock>
    </Item>
  </Division>
  <Division id="2" name="services">
    <Item id="1" type="massage">
      <Name><![CDATA[Spordimassaaž]]></Name>
      <Description><![CDATA[Sobib hästi lihaste lõdvestamiseks peale tugevat sportimist.]]></Description>
      <Duration unit="min">45</Duration>
      <Price currency="eur">18.00</Price>
      <Employees>
        <Employee>Juta Juurikas</Employee>
      </Employees>
    </Item>
    <Item id="2" type="massage">
      <Name><![CDATA[Seljamassaaž]]></Name>
      <Description><![CDATA[Põhjalik massaaž seljapiirkonnale. Sobib tööpingetest vabastamiseks.]]></Description>
      <Duration unit="h">1</Duration>
      <Price currency="eur">40.00</Price>
      <Employees>
        <Employee>Juta Juurikas</Employee>
        <Employee>Malle Maasikas</Employee>
      </Employees>
    </Item>
    <Item id="3" type="nailjob">
      <Name><![CDATA[Klassikaline maniküür]]></Name>
      <Description><![CDATA[Igapäevaseks.]]></Description>
      <Duration unit="min">45</Duration>
      <Price currency="eur">18.00</Price>
      <Employees>
        <Employee>Kairi Kaalikas</Employee>
        <Employee>Mari Mustikas</Employee>
      </Employees>
    </Item>
    <Item id="4" type="nailjob">
      <Name><![CDATA[Kiirmaniküür]]></Name>
      <Description><![CDATA[Kiireteks aegadeks.]]></Description>
      <Duration unit="min">25</Duration>
      <Price currency="eur">12.00</Price>
      <Employees>
        <Employee>Mari Mustikas</Employee>
        <Employee>Janne Joovikas</Employee>
      </Employees>
    </Item>
    <Item id="5" type="nailjob">
      <Name><![CDATA[Prantsuse maniküür]]></Name>
      <Description><![CDATA[Midagi erilist erilisemateks päevadeks.]]></Description>
      <Duration unit="h">1</Duration>
      <Price currency="eur">21.00</Price>
      <Employees>
        <Employee>Sille Sinikas</Employee>
        <Employee>Vika Vaarikas</Employee>
      </Employees>
    </Item>
    <Item id="6" type="nailjob">
      <Name><![CDATA[Klassikaline pediküür]]></Name>
      <Description><![CDATA[Turgutab keha ja vaimu.]]></Description>
      <Duration unit="h">1.5</Duration>
      <Price currency="eur">28.00</Price>
      <Employees>
        <Employee>Vika Vaarikas</Employee>
        <Employee>Janne Joovikas</Employee>
      </Employees>
    </Item>
  </Division>
</Salon>

XML skeemifail

<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="Salon">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="unbounded" name="Division">
          <xs:complexType>
            <xs:sequence>
              <xs:element maxOccurs="unbounded" name="Item">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="Name" type="xs:string" />
                    <xs:element name="Description" type="xs:string" />
                    <xs:element minOccurs="0" name="Duration">
                      <xs:complexType>
                        <xs:simpleContent>
                          <xs:extension base="xs:float">
                            <xs:attribute name="unit" type="xs:string" use="required" />
                          </xs:extension>
                        </xs:simpleContent>
                      </xs:complexType>
                    </xs:element>
                    <xs:element minOccurs="0" name="Amount">
                      <xs:complexType>
                        <xs:simpleContent>
                          <xs:extension base="xs:float">
                            <xs:attribute name="unit" type="xs:string" use="required" />
                          </xs:extension>
                        </xs:simpleContent>
                      </xs:complexType>
                    </xs:element>
                    <xs:element name="Price">
                      <xs:complexType>
                        <xs:simpleContent>
                          <xs:extension base="xs:float">
                            <xs:attribute name="currency" type="xs:string" use="required" />
                          </xs:extension>
                        </xs:simpleContent>
                      </xs:complexType>
                    </xs:element>
                    <xs:element minOccurs="0" name="Employees">
                      <xs:complexType>
                        <xs:sequence minOccurs="0">
                          <xs:element maxOccurs="unbounded" name="Employee" type="xs:string" />
                        </xs:sequence>
                      </xs:complexType>
                    </xs:element>
                    <xs:element minOccurs="0" name="Stock" type="xs:unsignedByte" />
                  </xs:sequence>
                  <xs:attribute name="id" type="xs:unsignedShort" use="required" />
                  <xs:attribute name="type" type="xs:string" use="required" />
                </xs:complexType>
              </xs:element>
            </xs:sequence>
            <xs:attribute name="id" type="xs:unsignedByte" use="required" />
            <xs:attribute name="name" type="xs:string" use="required" />
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

XSL 1

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl"
>
  <xsl:output method="html" indent="yes"/>

  <xsl:template match="/">
    <html>
      <head>
        <title>Ilusalongi hinnakiri</title>
        <style>
          h2 
          {
            color: blue;
          }
          table, td, th 
          {
            border: 3px groove ##990099;
            border-collapse: collapse;
            padding: 3px;
            text-align: left
          }
        </style>
      </head>
      <body>
        <h2>Toodete hinnakiri</h2>
        <table>
          <tr>
            <th>Toode</th>
            <th>Kogus</th>
            <th>Hind</th>
          </tr>
          <xsl:for-each select="Salon/Division">
            <xsl:if test="@id = 1">
              <xsl:for-each select="Item">
                <tr>
                  <td>
                    <xsl:value-of select="Name"></xsl:value-of>
                  </td>
                  <td>
                    <xsl:value-of select="concat(Amount, ' ', Amount/@unit)"></xsl:value-of>
                  </td>
                  <td>
                    <xsl:value-of select="concat(Price, ' ', Price/@currency)"></xsl:value-of>
                  </td>
                </tr>
              </xsl:for-each>
            </xsl:if>
          </xsl:for-each> 
        </table>
        <h2>Teenuste hinnakiri</h2>
        <table>
          <tr>
            <th>Teenus</th>
            <th>Kestus</th>
            <th>Hind</th>
          </tr>
            <xsl:for-each select="Salon/Division">
                <xsl:if test="@id = 2">
                  <xsl:for-each select="Item">
                  <tr>
                    <td>
                      <xsl:value-of select="Name"></xsl:value-of>
                    </td>
                    <td>
                      <xsl:value-of select="concat(Duration, ' ', Duration/@unit)"></xsl:value-of> 
                    </td>
                    <td>
                      <xsl:value-of select="concat(Price, ' ', Price/@currency)"></xsl:value-of>
                    </td>
                  </tr>
                  </xsl:for-each>
                </xsl:if>
            </xsl:for-each>
        </table>
      </body>
    </html>
  </xsl:template>
</xsl:stylesheet>

XSL 2

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl">
    <xsl:output method="html" indent="yes"/>

    <xsl:template match="/">
      <html>
        <head>
          <title>Ilusalongi pakkumised</title>
          <style>
            table {width: 300px;
                  border: 1px dotted black;}
            table tr {height: 30px;}
            h2 {color: blue;}
            .bold {font-weight: bold;}
            ul {list-style-type: none;
                padding: 0px;
                margin: 0px;}
          </style>
        </head>
        <body>
          <h2>Tooted</h2>
          
            <xsl:for-each select="Salon/Division">
              <xsl:if test="@id = 1">
                <xsl:for-each select="Item">
                  <table >
                    <tr>
                      <td colspan="2" class="bold"><xsl:value-of select="Name"></xsl:value-of><br /></td>
                    </tr>
                    <tr>
                      <td>Kogus: <xsl:value-of select="concat(Amount, ' ', Amount/@unit)"/></td>
                      <td>Laos: 
                        <xsl:choose>
                          <xsl:when test="Stock>0">
                          On
                        </xsl:when>
                          <xsl:otherwise>Ei ole</xsl:otherwise>
                        </xsl:choose>
                      </td>
                    </tr>
                    <tr>
                      <td colspan="2">
                        <xsl:value-of select="Description"></xsl:value-of>
                      </td>
                    </tr>
                  </table>
                  <br/>
                </xsl:for-each>
              </xsl:if>
            </xsl:for-each>
          
          <h2>Teenused</h2>
          <xsl:for-each select="Salon/Division">
              <xsl:if test="@id = 2"> 
                <xsl:for-each select="Item">
                  <table>
                    <tr>
                      <td colspan="2" class="bold"><xsl:value-of select="Name"></xsl:value-of><br /></td>
                    </tr>
                    <tr>
                      <td>Läbiviijad:
                        <ul>
                          <xsl:for-each select="Employees/Employee">
                          <li>
                            <xsl:value-of select="."/>
                          </li>
                          </xsl:for-each>
                        </ul>
                      </td>
                      <td>
                        Kestvus: <xsl:value-of select="concat(Duration, ' ', Duration/@unit)"/>
                      </td>
                    </tr>
                    <tr>
                      <td colspan="2">
                        <xsl:value-of select="Description"></xsl:value-of>
                      </td>
                    </tr>
                  </table>
                  <br/>
                </xsl:for-each>
              </xsl:if>
            </xsl:for-each>
        </body>
      </html>
    </xsl:template>
</xsl:stylesheet>

Klientrakendus ja veebiteenus

Klientrakendus on mõeldud abistamaks ilusalongi igapäevaseid toimetusi. Rakendusega saab lisada ja kustutada broneeringuid, vaadata oma broneeringuid nädala või päeva kaupa, lisada admebaasi kliente ja kollege, muuta nende andmeid ja neid kustutada. Lisaks saab lisada teenuseid ja teenuste infot, neid muuta ja kustutada. Klientrakenduse jaoks on kasutatud WPF-i, veebiteenuse jaoks WCF-i.