VariousArtists

From ICO wiki
Jump to navigationJump to search

Meeskond

Liikmed:

  • Ruudi Vinter - Arendaja
  • Madis Roosioks - Arendaja, projektijuht
  • Pavel Fleišer - Arendaja

XML

<?xml version="1.0" encoding="utf-8" ?>
<books>
  <book id="1" published="29.05.2018" type="hardcover" pages="254" deleted="false">
    <title><![CDATA[Calypso]]></title>
    <authors>
      <author id="1">
        <firstname>
          <![CDATA[David]]>
        </firstname>
        <lastname>
          <![CDATA[Sedaris]]>
        </lastname>
      </author>
    </authors>
    <categories>
      <category id="1" name="fiction"/>
      <category id="2" name="humor"/>
      <category id="3" name="entertainment"/>
    </categories>
  </book>
  <book id="2" published="05.06.2018" type="audiobook" deleted="true">
    <title><![CDATA[Florida]]></title>
    <authors>
      <author id="2" birthdate="23.07.1978">
        <firstname>
          <![CDATA[Lauren]]>
        </firstname>
        <lastname>
          <![CDATA[Groff]]>
        </lastname>
      </author>
    </authors>
    <categories>
      <category id="1" name="fiction"/>
      <category id="4" name="short stories"/>
    </categories>
  </book>
  <book id="2" published="20.10.2015" type="audiobook" deleted="false">
    <title><![CDATA[Illuminae]]></title>
    <authors>
      <author id="3" birthdate="21.11.1958">
        <firstname>
          <![CDATA[Amie]]>
        </firstname>
        <lastname>
          <![CDATA[Kaufman]]>
        </lastname>
      </author>
      <author id="4" birthdate="13.09.1973">
        <firstname>
          <![CDATA[Jay]]>
        </firstname>
        <lastname>
          <![CDATA[Kristoff]]>
        </lastname>
      </author>
    </authors>
    <categories>
      <category id="1" name="fiction"/>
      <category id="5" name="romance"/>
    </categories>
  </book>
</books>

XSD

<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="books">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="unbounded" name="book">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="title" type="xs:string" />
              <xs:element name="authors">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element maxOccurs="unbounded" name="author">
                      <xs:complexType>
                        <xs:sequence>
                          <xs:element name="firstname" type="xs:string" />
                          <xs:element name="lastname" type="xs:string" />
                        </xs:sequence>
                        <xs:attribute name="id" type="xs:int" use="required" />
                        <xs:attribute name="birthdate" type="xs:string" use="optional" />
                      </xs:complexType>
                    </xs:element>
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
              <xs:element name="categories">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element maxOccurs="unbounded" name="category">
                      <xs:complexType>
                        <xs:attribute name="id" type="xs:int" use="required" />
                        <xs:attribute name="name" type="xs:string" use="required" />
                      </xs:complexType>
                    </xs:element>
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
            </xs:sequence>
            <xs:attribute name="id" type="xs:int" use="required" />
            <xs:attribute name="published" type="xs:string" use="required" />
            <xs:attribute name="type" type="xs:string" use="required" />
            <xs:attribute name="pages" type="xs:int" use="optional" />
            <xs:attribute name="deleted" type="xs:boolean" use="required" />
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

XSLT (HTML)

<?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="/books">
    <html>
      <head>
        <title>Books list</title>
        <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.1/css/bootstrap.min.css" integrity="sha384-WskhaSGFgHYWDcbwN70/dfYBj47jz9qbsMId/iRN3ewGhXQFZCSftd1LZCfmhktB" crossorigin="anonymous"/>
      </head>
      <body>
        <h2>Books list</h2>
        <table class="table">
          <th>Title</th>
          <th>Type</th>
          <th>Authors data</th>
          <th>Categories data</th>
          <xsl:for-each select="book">
            <xsl:if test="@deleted = 'false'">
              <tr>
                <td>
                  <xsl:value-of select="title"/>
                </td>
                <td>
                  <xsl:value-of select="@type"/>
                  <xsl:if test="@type = 'hardcover'">
                    :
                    <xsl:value-of select="@pages"/> Pages
                  </xsl:if>
                </td>
                <td>
                  <xsl:for-each select="authors/author">
                    <div>
                      <xsl:value-of select="firstname"/>

                      <xsl:value-of select="lastname"/>
                      <xsl:if test="@birthdate">:
                        <xsl:value-of select="@birthdate"/>
                      </xsl:if>
                    </div>
                  </xsl:for-each>
                </td>
                <td>
                  <xsl:for-each select="categories/category">
                    <div>
                      <xsl:value-of select="@name"/>
                    </div>
                  </xsl:for-each>
                </td>
              </tr>
            </xsl:if>
          </xsl:for-each>
        </table>
      </body>
    </html>
  </xsl:template>
</xsl:stylesheet>

XSLT (XML)

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl"
>
  <xsl:output method="xml" indent="yes"/>
  <xsl:template match="/books">
    <Books>
      <xsl:for-each select="book">
        <xsl:if test="@deleted = 'true'">
          <Book>
            <Title>
              <xsl:value-of select="title"/>
            </Title>
            <Type>
              <xsl:value-of select="@type"/>
            </Type>
            <Authors>
              <xsl:for-each select="authors/author">
                <Author>
                  <Name>
                    <xsl:value-of select="firstname"/><xsl:value-of select="lastname"/>
                  </Name>
                  <BirthDate>
                    <xsl:value-of select="@birthdate"/>
                  </BirthDate>
                </Author>
              </xsl:for-each>
            </Authors>
            <Categories>
              <xsl:for-each select="categories/category">
                <Category>
                  <Name>
                    <xsl:value-of select="@name"/>
                  </Name>
                </Category>
              </xsl:for-each>
            </Categories>
          </Book>
        </xsl:if>
      </xsl:for-each>
    </Books>
  </xsl:template>
</xsl:stylesheet>

Analüüs

Kirjeldus

Me loome raamatute laenutamise teenuse, kus raamatukogude asemel on raamatute kohale toomise ja laenutamise punktid a la pakiautomaadid.

Kasutajad

  • Admin
  • Tavakasutaja

Must have

  • Logimine iga kasutaja ja tegevuse kohta.

Tavakasutaja

  • Tavakasutaja saab ennast raamatukogu kasutajaks registreerida.
  • Tavakasutaja näeb oma käes olevaid raamatuid.
  • Tavakasutaja näeb oma tähtaegasid.
  • Tavakasutaja saab otsida raamatute seast.
  • Tavakasutaja saab raamatukogule soovitada raamatuid, mida ta tahaks laenutada, mida hetkel raamatukogus üldse pole.
  • Tavakasutaja saab raamatu broneerida raamatu ette määratud kuupäevani.
  • Tavakasutaja ja admini sisselogimised.

Admin

  • Admin saab raamatuid lisada süsteemi.
  • Admin saab kustutada tavakasutaja.
  • Admin saab tühistada broneeringu
  • Admin saab registreerida uusi admin kasutajaid
  • Admin saab lisada uusi kategooriaid.
  • Admin saab eemaldada kategooriaid.
  • Admin saab lisada uusi autoreid.
  • Admin saab eemaldada autoreid

Nice to have

  • Raamatute transpordi haldussüsteem
  • Tavakasutaja saab kommenteerida raamatu ning anda raamatule hinnangu.
  • Admin saab kustutada kommentaari, mis on ebasobiva sisuga.


Retsensioonid

XML retsensioon meeskonnale Garagefy

XML on nõuetele vastav, kuna XML sisaldab vähemalt 4 loogilist dimensiooni ning on ka olemas vähemalt 3 dimensioonil atribuut, mis on enamat kui id. XML’i struktuur on korrekne ning ka XML-validator ei tuvastanud ühtegi viga. XML sisaldab broneeringuid ning iga broneering sisaldab broneerimiskuupäeva ning ka masina omaniku ja masina andmeid. XML schema on korrekne kuna ei sisalda andmetüüpe väikseid andmetüüpe (näiteks byte), mille mahutavus ei oleks piisavalt suu. XSLT (HTML) transformatsioon on korrektne, kuna ei tuvastanud vigu, mille tõttu html oleks ebakorrektne. XSLT (XML) transformatsioon tundub olevat ka korrektne.

Tegevuste logi

  • 22.03.2018 Meeskonna moodustamine.
  • 27.03.2018 Meeskonna esimene kohtumine.
  • 01.04.2018 Analüüsi esitamine.
  • 29.03.2018 Esialgne andmemudel (Ruudi Vinter)
  • 01.04.2018 Andmemudeli tõlkimine inglise keelde (Madis Roosioks)
  • 19.04.2018 Andmemudeli edasiarendus (Ruudi Vinter)
  • 01.05.2018 Raamatu tüüpide kontrolleri implementatsioon ja BookInBookType olemi loomine (Ruudi Vinter)