Proovitud abielu

From ICO wiki

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

Meeskond "Proovitud abielu"

  • Berit Põldoja
  • Elina Kuldkepp

Veebiteenus HP

HP Kirjeldus

Projekti eesmärgiks on luua toimiv rakendus, mis kuvaks ratsaspordivõistluseid. Kasutajad saavad jälgida võistluste tulemuste seisu - kes sõidab, kuidas tal läheb ning hiljem mitmendaks ta jäi. Rakenduses on võimalik kellaajaliselt näha, millal keegi starti läheb.

Tööjaotus

  • Berit - all by myself. ( Proovisime seda abielu ja ei tulnud välja )

Üldine spetsifikatsioon

  • Võistluste stardijärjekordade ja tulemuste kuvamine
  • Kasutaja loomine
  • Kasutaja saab jälgida temal ära märgitud (“favorite”) ratsutaja või hobuse võistlustulemusi
  • Käimasoleva võistluse kuvamine, timer
  • Müügihobuste eraldi märgistamine

Must have

  • Admin vaade - andmesisestus
  • Kasutaja loomine
  • Võistluste stardijärjekordade ja tulemuste kuvamine
  • Kasutajal “favourite’’ listi ratsanike ja hobuste lisamine
  • Kasutajal “favourite’’ listist ratsanike ja hobuste kustutamine

XML/XSD/XSLT

XML

 <?xml version="1.0" encoding="UTF-8"?>
<Bookstores>
  <Bookstore id="1" country="Spain">
    <Name>Señorita</Name>
    <Book category="Crime" quantity="50" language="english" pages="250">
      <Title><![CDATA[The Case of the Counterfeit Eye]]></Title>
      <Description><![CDATA[After wealthy businessman Hartley Bassetts apparent suicide, Perry Mason discovers too many suspects who may have wanted him dead to believe the obvious evidence of a suicide note and three guns near the body.]]></Description>
      <Author gender="Male">
        <FirstName>Erle Stanley</FirstName>
        <LastName>Gardner</LastName>
        <BirthYear>1889</BirthYear>
        <Country>USA</Country>
      </Author>
      <ReleaseDate>
        <Day>20</Day>
        <Month>March</Month>
        <Year>1928</Year>
      </ReleaseDate>
      <Price>30.50</Price>
      <Location>Madrid</Location>
    </Book>
    <Book category="Drama" quantity="20" language="english" pages="150">
      <Title><![CDATA[Beating hearts.]]></Title>
      <Description><![CDATA[Beating Hearts maintains that sentence or ability to have subjective experiences.]]></Description>
      <Author gender="Female">
        <FirstName>Hannah</FirstName>
        <LastName>Cole</LastName>
        <BirthYear>1985</BirthYear>
        <Country>USA</Country>
      </Author>
      <ReleaseDate>
        <Day>14</Day>
        <Month>May</Month>
        <Year>2005</Year>
      </ReleaseDate>
      <Price>20</Price>
      <Location>Sevilla</Location>
    </Book>
  </Bookstore>
  <Bookstore id="2" country="France">
    <Name>Mademoiselle</Name>
    <Book category="Romance" quantity="43" language="english" pages="400">
      <Title><![CDATA[The Case of the Counterfeit Eye]]></Title>
      <Description><![CDATA[After wealthy businessman Hartley Bassetts apparent suicide, Perry Mason discovers too many suspects who may have wanted him dead to believe the obvious evidence of a suicide note and three guns near the body.]]></Description>
      <Author gender="Woman">
        <FirstName>Charlotte</FirstName>
        <LastName> Brontë</LastName>
        <BirthYear>1816</BirthYear>
        <Country>England</Country>
      </Author>
      <ReleaseDate>
        <Day>16</Day>
        <Month>October</Month>
        <Year>1847</Year>
      </ReleaseDate>
      <Price>20.99</Price>
      <Location>Paris</Location>
    </Book>
    <Book category="Crime" quantity="50" language="english" pages="250">
      <Title><![CDATA[The Case of the Counterfeit Eye]]></Title>
      <Description><![CDATA[When a murdered man is found in the home of shady insurance adjustor Walter Prescott, a simple divorce case turns into a courtroom puzzler, as Perry Mason follows the clues to catch a killer. Reissue.]]></Description>
      <Author gender="Male">
        <FirstName>Erle Stanley</FirstName>
        <LastName>Gardner</LastName>
        <BirthYear>1889</BirthYear>
        <Country>USA</Country>
      </Author>
      <ReleaseDate>
        <Day>21</Day>
        <Month>September</Month>
        <Year>1920</Year>
      </ReleaseDate>
      <Price>25</Price>
      <Location>Paris</Location>
    </Book>
    <Book category="Sci-fi" quantity="50" language="france" pages="450">
      <Title><![CDATA[Something suspicious]]></Title>
      <Description><![CDATA[Something happened]]></Description>
      <Author gender="Male">
        <FirstName>Erle Stanley</FirstName>
        <LastName>Gardner</LastName>
        <BirthYear>1889</BirthYear>
        <Country>USA</Country>
      </Author>
      <ReleaseDate>
        <Day>12</Day>
        <Month>August</Month>
        <Year>1905</Year>
      </ReleaseDate>
      <Price>27.99</Price>
      <Location>Nice</Location>
    </Book>
  </Bookstore>
  <Bookstore id="3" country="Great Britain">
    <Name>Fraŭlino</Name>
    <Book category="Comedy" quantity="25" language="english" pages="150">
      <Title><![CDATA[This was fun.]]></Title>
      <Description><![CDATA[So much fun stuff happens. Must read.]]></Description>
      <Author gender="Woman">
        <FirstName>Berit</FirstName>
        <LastName>Põldoja</LastName>
        <BirthYear>1996</BirthYear>
        <Country>Estonia</Country>
      </Author>
      <ReleaseDate>
        <Day>17</Day>
        <Month>May</Month>
        <Year>2019</Year>
      </ReleaseDate>
      <Price>35.99</Price>
      <Location>London</Location>
    </Book>
    <Book category="Drama" quantity="15" language="english" pages="450">
      <Title><![CDATA[Sad Woman.]]></Title>
      <Description><![CDATA[Woman is very sad.]]></Description>
      <Author gender="Woman">
        <FirstName>Elina</FirstName>
        <LastName>Kuldkepp</LastName>
        <BirthYear>1994</BirthYear>
        <Country>Estonia</Country>
      </Author>
      <ReleaseDate>
        <Day>30</Day>
        <Month>October</Month>
        <Year>2020</Year>
      </ReleaseDate>
      <Price>20</Price>
      <Location>Oxford</Location>
    </Book>
  </Bookstore>
</Bookstores>

XSD

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://tempuri.org/XMLSchema1.xsd" xmlns:mstns="http://tempuri.org/XMLSchema1.xsd" 
id="XMLSchema1" targetNamespace="http://tempuri.org/XMLSchema1.xsd" elementFormDefault="qualified">
  <xs:element name="Bookstores">
    <xs:complexType>
      <xs:element name="Bookstore" type="xs:string">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Name" type="xs:string" />
            <xs:element name="Book">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="Title" type="xs:string" />
                  <xs:element name="Description" type="xs:string" />
                  <xs:element name="Author" type="xs:string">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="FirstName" type="xs:string" />
                        <xs:element name="LastName" type="xs:string" />
                        <xs:element name="BirthYear" type="xs:string" />
                        <xs:element name="Country" type="xs:string" />
                      </xs:sequence>
                      <xs:attribute name="gender" type="xs:string" use="required" />
                    </xs:complexType>
                  </xs:element>
                  <xs:element name="ReleaseDate" type="xs:string">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="Day" type="xs:datetime" />
                        <xs:element name="Month" type="xs:datetime" />
                        <xs:element name="Year" type="xs:datetime" />
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>
                  <xs:element name="Price" type="xs:decimal" />
                  <xs:element name="Location" type="xs:string" />
                </xs:sequence>
                <xs:attribute name="category" type="xs:string" use="required" />
                <xs:attribute name="quantity" type="xs:string" use="required" />
                <xs:attribute name="language" type="xs:string" use="required" />
                <xs:attribute name="pages" type="xs:int" use="required" />
              </xs:complexType>
            </xs:element>
          </xs:sequence>
          <xs:attribute name="id" type="xs:string" use="required" />
          <xs:attribute name="country" type="xs:string" use="required" />
        </xs:complexType>
      </xs:element>
    </xs:complexType>
  </xs:element>
</xs:schema>

XSLT HTML

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
xmlns:msxsl="urn:schemas-microsoft-com:xslt" version="1.0" exclude-result-prefixes="msxsl">
  <xsl:output method="html" indent="yes" />
  <xsl:template match="/">
    <html>
      <head>
        <title>Raamatupoed</title>
      </head>
      <body>
        <h1>Raamatupoed</h1>
      </body>
      <table border="1">
        <tr bgcolor="#9acd32">
          <th>Raamatupood ja raamatud</th>
          <th>Kirjeldus</th>
          <th>Info</th>
        </tr>
        <xsl:for-each select="Bookstores/Bookstore">
          <tr>
            <td bgcolor="#9acd32">
              <xsl:value-of select="Name" />
            </td>
            <xsl:for-each select="Book">
              <tr>
                <td>
                  <xsl:value-of select="Title" />
                </td>
                <td>
                  <xsl:value-of select="Description" />
                </td>
                <td>
                  <xsl:value-of select="Author" />
                </td>
              </tr>
            </xsl:for-each>
          </tr>
        </xsl:for-each>
      </table>
      <table border="1">
        <tr bgcolor="#9acd32">
          <th>Sugu</th>
          <th>Eesnimi</th>
          <th>Perekonnanimi</th>
          <th>Riik</th>
          <th>Sünniaasta</th>
        </tr>
        <xsl:for-each select="Bookstores/Bookstore/Book/Author">
          <tr>
            <xsl:if test="@gender='Woman'">
              <xsl:if test="Country='Estonia'">
                <td>
                  <xsl:value-of select="@gender" />
                </td>
                <td>
                  <xsl:value-of select="FirstName" />
                </td>
                <td>
                  <xsl:value-of select="LastName" />
                </td>
                <td>
                  <xsl:value-of select="Country" />
                </td>
                <td>
                  <xsl:value-of select="BirthYear" />
                </td>
              </xsl:if>
            </xsl:if>
          </tr>
        </xsl:for-each>
      </table>
    </html>
  </xsl:template>
</xsl:stylesheet>

XSLT TXT

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" version="1.0" exclude-result-prefixes="msxsl">
  <xsl:output method="text" indent="yes" />
  <xsl:template match="/">
    <xsl:text>Raamatupoe raamatud</xsl:text>
    <xsl:for-each select="Bookstores/Bookstore/Book">
      <xsl:if test="@category='Crime'">
        <xsl:text />
        <xsl:value-of select="." />
      </xsl:if>
    </xsl:for-each>
    <xsl:text>---------------------------------</xsl:text>
    <xsl:for-each select="Bookstores/Bookstore">
      <xsl:if test="@country='Spain'">
        <xsl:text />
        <xsl:value-of select="." />
      </xsl:if>
    </xsl:for-each>
  </xsl:template>
</xsl:stylesheet>

Output

XML output of given XML
XSLT XML output
XML output of given XML
XSLT XML output