VRJ

From ICO wiki

Meeskonna liikmed

  • Jevgeni Gavrilov
  • Vladimir Nitsenko
  • Riho Uusjärv

Teema

Teemaks erinevate autode hoidla, millest väljastame sobiva kriteeriumi järgi HTML-i.

XML

<?xml version="1.0" encoding="utf-8" ?>
<automargid>
  <automark nimetus="Volkswagen" riik="Saksamaa">
    <mudelid>
      <mudel nimi="Passat" varv="punane">
        <andmed>
          <voimsus yhik="kw"><![CDATA[118]]></voimsus>
          <kaigukast><![CDATA[automaat]]></kaigukast>
          <kutus><![CDATA[diisel]]></kutus>
          <aasta><![CDATA[1990]]></aasta>
        </andmed>
      </mudel>
      <mudel nimi="Touareg" varv="roheline">
        <andmed>
          <voimsus yhik="kw"><![CDATA[250]]></voimsus>
          <kaigukast><![CDATA[manuaal]]></kaigukast>
          <kutus><![CDATA[bensiin]]></kutus>
          <aasta><![CDATA[2000]]></aasta>
        </andmed>
      </mudel>
      <mudel nimi="Jetta" varv="roheline">
        <andmed>
          <voimsus yhik="kw"><![CDATA[100]]></voimsus>
          <kaigukast><![CDATA[manuaal]]></kaigukast>
          <kutus><![CDATA[diisel]]></kutus>
          <aasta><![CDATA[1980]]></aasta>
        </andmed>
      </mudel>
    </mudelid>
  </automark>
  <automark nimetus="Audi" riik="Saksamaa">
    <mudelid>
      <mudel nimi="A8" varv="punane">
        <andmed>
          <voimsus yhik="kw"><![CDATA[200]]></voimsus>
          <kaigukast><![CDATA[automaat]]></kaigukast>
          <kutus><![CDATA[diisel]]></kutus>
          <aasta><![CDATA[2005]]></aasta>
        </andmed>
      </mudel>
      <mudel nimi="R8" varv="must">
        <andmed>
          <voimsus yhik="kw"><![CDATA[350]]></voimsus>
          <kaigukast><![CDATA[manuaal]]></kaigukast>
          <kutus><![CDATA[bensiin]]></kutus>
          <aasta><![CDATA[2015]]></aasta>
        </andmed>
      </mudel>
      <mudel nimi="A1" varv="valge">
        <andmed>
          <voimsus yhik="kw"><![CDATA[100]]></voimsus>
          <kaigukast><![CDATA[manuaal]]></kaigukast>
          <kutus><![CDATA[diisel]]></kutus>
          <aasta><![CDATA[2008]]></aasta>
        </andmed>
      </mudel>
    </mudelid>
  </automark>
  <automark nimetus="Honda" riik="Jaapan">
    <mudelid>
      <mudel nimi="Accord" varv="kollane">
        <andmed>
          <voimsus yhik="kw"><![CDATA[108]]></voimsus>
          <kaigukast><![CDATA[Manuaal]]></kaigukast>
          <kutus><![CDATA[bensiin]]></kutus>
          <aasta><![CDATA[1988]]></aasta>
        </andmed>
      </mudel>
      <mudel nimi="TypeR" varv="punane">
        <andmed>
          <voimsus yhik="kw"><![CDATA[80]]></voimsus>
          <kaigukast><![CDATA[manuaal]]></kaigukast>
          <kutus><![CDATA[bensiin]]></kutus>
          <aasta><![CDATA[1992]]></aasta>
        </andmed>
      </mudel>
      <mudel nimi="Civic" varv="must">
        <andmed>
          <voimsus yhik="kw"><![CDATA[130]]></voimsus>
          <kaigukast><![CDATA[manuaal]]></kaigukast>
          <kutus><![CDATA[diisel]]></kutus>
          <aasta><![CDATA[2002]]></aasta>
        </andmed>
      </mudel>
    </mudelid>
  </automark>
  <automark nimetus="Jeep" riik="Ameerika">
    <mudelid>
      <mudel nimi="Grand Cherokee" varv="pruun">
        <andmed>
          <voimsus yhik="kw"><![CDATA[110]]></voimsus>
          <kaigukast><![CDATA[Automaat]]></kaigukast>
          <kutus><![CDATA[diisel]]></kutus>
          <aasta><![CDATA[2005]]></aasta>
        </andmed>
      </mudel>
      <mudel nimi="Cherokee" varv="valge">
        <andmed>
          <voimsus yhik="kw"><![CDATA[85]]></voimsus>
          <kaigukast><![CDATA[automaat]]></kaigukast>
          <kutus><![CDATA[diisel]]></kutus>
          <aasta><![CDATA[2005]]></aasta>
        </andmed>
      </mudel>
      <mudel nimi="Wrangler" varv="punane">
        <andmed>
          <voimsus yhik="kw"><![CDATA[89]]></voimsus>
          <kaigukast><![CDATA[manuaal]]></kaigukast>
          <kutus><![CDATA[diisel]]></kutus>
          <aasta><![CDATA[1994]]></aasta>
        </andmed>
      </mudel>
    </mudelid>
      </automark>

    <automark nimetus="Lada" riik="Venemaa">
      <mudelid>
        <mudel nimi="Kalina" varv="oranz">
          <andmed>
            <voimsus yhik="hj"><![CDATA[98]]></voimsus>
            <kaigukast><![CDATA[automaat]]></kaigukast>
            <kutus><![CDATA[bensiin]]></kutus>
            <aasta><![CDATA[2014]]></aasta>
          </andmed>
        </mudel>
        <mudel nimi="Niva" varv="must">
          <andmed>
            <voimsus yhik="kw"><![CDATA[60]]></voimsus>
            <kaigukast><![CDATA[manuaal]]></kaigukast>
            <kutus><![CDATA[bensiin]]></kutus>
            <aasta><![CDATA[2002]]></aasta>
          </andmed>
        </mudel>
        <mudel nimi="110" varv="valge">
          <andmed>
            <voimsus yhik="kw"><![CDATA[59]]></voimsus>
            <kaigukast><![CDATA[manuaal]]></kaigukast>
            <kutus><![CDATA[bensiin]]></kutus>
            <aasta><![CDATA[2001]]></aasta>
          </andmed>
        </mudel>
      </mudelid>
    </automark>>
</automargid>

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="automargid">
    <xs:complexType mixed="true">
      <xs:sequence>
        <xs:element maxOccurs="unbounded" name="automark">
          <xs:complexType>
            <xs:all>
              <xs:element name="mudelid">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element maxOccurs="unbounded" name="mudel">
                      <xs:complexType>
                        <xs:all>
                          <xs:element name="andmed">
                            <xs:complexType>
                              <xs:all>
                                <xs:element name="voimsus">
                                  <xs:complexType>
                                    <xs:simpleContent>
                                      <xs:extension base="xs:string">
                                        <xs:attribute name="yhik" type="xs:string" use="required" />
                                      </xs:extension>
                                    </xs:simpleContent>
                                  </xs:complexType>
                                </xs:element>
                                <xs:element name="kaigukast" type="xs:string" />
                                <xs:element name="kutus" type="xs:string" />
                                <xs:element name="aasta" type="xs:int" />
                              </xs:all>
                            </xs:complexType>
                          </xs:element>
                        </xs:all>
                        <xs:attribute name="nimi" type="xs:string" use="required" />
                        <xs:attribute name="varv" type="xs:string" use="required" />
                      </xs:complexType>
                    </xs:element>
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
            </xs:all>
            <xs:attribute name="nimetus" type="xs:string" use="required" />
            <xs:attribute name="riik" type="xs:string" use="required" />
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

XSLT 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>Autod</title>
      </head>
      <body>
        <h2>Kõikide automarkide autod koos andmetega</h2>
        <xsl:for-each select="/automargid/automark">
            <xsl:value-of select="@nimetus"/>
          <ul>
            <xsl:for-each select="mudelid/mudel">
              <li>
                <xsl:value-of select="@nimi"/>
              </li>
              <ul>
                <xsl:for-each select="andmed">
                  <li>
                    <xsl:text>Võimsus: </xsl:text>
                    <xsl:value-of select="voimsus"/>
                    <xsl:text> </xsl:text>
                    <xsl:value-of select="voimsus/@yhik"/>
                  </li>
                  <li>
                    <xsl:text>Võimsus: </xsl:text>
                    <xsl:value-of select="kaigukast"/>
                  </li>
                  <li>
                    <xsl:text>Kütus: </xsl:text>
                    <xsl:value-of select="kutus"/>
                  </li>
                  <li>
                    <xsl:text>Aasta: </xsl:text>
                    <xsl:value-of select="aasta"/>
                  </li>
                </xsl:for-each>
              </ul>
            </xsl:for-each>
          </ul>

      
        </xsl:for-each>
      </body>
    </html>
  </xsl:template>
</xsl:stylesheet>

XSLT 1 pilt

XSLT1.png

XSLT 2

Siin väljastame tolle

<?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>Autod</title>
      </head>
      <body>
        <h2>Kõikide automarkide autod</h2>
        <xsl:for-each select="/automargid/automark">
          <li>
            <b>
              <xsl:value-of select="concat(position(),'/',last(),' - ',@nimetus)"/>
            </b>
          </li>
          <ol>
            <xsl:for-each select="mudelid/mudel">
              <xsl:sort select="andmed/voimsus"/>
              <xsl:choose>
                <xsl:when test="@varv='roheline'">
                  <div style="color:green">
                <li>
                <xsl:value-of select="@nimi"/>
              </li>
                  </div>
                </xsl:when>
                <xsl:when test="@varv='punane'">
                  <div style="color:red">
                    <li>
                      <xsl:value-of select="@nimi"/>
                    </li>
                  </div>
                </xsl:when>
                <xsl:when test="@varv='valge'">
                  <div style="color:gray">
                    <li>
                      <xsl:value-of select="@nimi"/>
                    </li>
                  </div>
                </xsl:when>
                <xsl:when test="@varv='kollane'">
                  <div style="color:yellow">
                    <li>
                      <xsl:value-of select="@nimi"/>
                    </li>
                  </div>
                </xsl:when>
                <xsl:when test="@varv='must'">
                  <div style="color:black">
                    <li>
                      <xsl:value-of select="@nimi"/>
                    </li>
                  </div>
                </xsl:when>
                <xsl:when test="@varv='pruun'">
                  <div style="color:brown">
                    <li>
                      <xsl:value-of select="@nimi"/>
                    </li>
                  </div>
                </xsl:when>
                <xsl:when test="@varv='oranz'">
                  <div style="color:orange">
                    <li>
                      <xsl:value-of select="@nimi"/>
                    </li>
                  </div>
                </xsl:when>
              </xsl:choose>
            </xsl:for-each>
          </ol>
          
        </xsl:for-each>
      </body>
    </html>
  </xsl:template>
</xsl:stylesheet>

XSLT 2 pilt

Xslt2-2.jpeg

Retsensioon

Meeskond Aeg

Selle töö ülesandeks oli luua XML andmefail, kaks XSLT faili XML ja HTML väljunditega ja tiimil kõik need osad on ära tehtud. Loogilisi dimensiooni arv rahuldab püstitatud ülesande, samuti atribuutide arv (id erinev) on kolmel elementidel. Võiks ka olla kasutusel CDATA kus seda vaja, et välistada võimalust, et sisu interpreteeritakse XML-na. Minu arust XML struktuuri võiks natuke parandada ja loogilisem teha: kuna <Logs> on konkreetse <User> logid, siis neid võiks panna alamelementidena, mitte samal tasemel kõrvuti.

<User>
 <Logs>
 </Logs>
</User>

XSD on automaatselt genereeritud ja siin palju ütelda ei saa, aga mõned kohad vajavad tähelepanu:<xs:attribute name="id" type="xs:unsignedByte" use="required" />, igal pool id väärtuste tüübiks võiks olla int. Departments elemendi sees vist ei ole vaja sequence, võiks panna All. <xs:attribute name="week" type="xs:unsignedByte" use="required" />, siin on sama vihje, et võiks inti panna. XML esimene transformatioon ei vasta ülesande nõutele, kuid väljastab kogu informatsiooni, mis on olemas ja mis on täitsa piisab kogus informatsiooni ehk täidab oma ülesande. XML teine transformatsioon on hästi tehtud, kasutatud tsüklid, tingimuste kontrollid, sum, choose jne. Kokkuvõtteks: XML, XSD ja XSLT on hästi loetav, kuid igas punktis on ka puudu jääke. Tundub olema rohkem asi lohakuses, kui oskuse puudumises või võib-olla ei tulnud mõne asja peale.

Meeskond Enneagsed

Selle töö ülesandeks oli arvete andmete hoidmise XML-is ning nende põhjal arvete nimekirja kuvamise ja arvete trükiks sobivate kuvade genereerimise. XML fail täidab dimensioonid nõude, sisaldades 6 dimensiooni, mis on 2 üle miinimumi. XML atribuutide paigutus on ka ilusti läbimõeldud ja kirja pandud. XSD on sammuti hästi tehtud, vigu silma ei jäänud, kõik atribuudid tundusid olema korrektsed ja läbimõeldud ehk kordade arv, tüübid ja piirangud olid korrektsed. Mõlemat XSLT täidavad kehtestatud nõuded. Esimene kasutab ühte for each tsüklid ja choose elementi, millest väljastatakse täitsa piisava informatsiooniga arvete nimekirja tabel HTML-is. Teine XSLT, mida kasutatakse arvete genereerimiseks kogu täieliku informatsiooniga on juba tükk maad keerukam, kasutatakse mitmeid for-each tsükleid ja tingimuse kontrolle. Suur kogus informatsiooni, mida arvelt ootaks (mille eest, kui suur hulk, kui palju, lisa märkused, arve numbrid, koostatud ajad, kontaktid jne.) on suudetud korrektselt väljastada ja hästi paigutatud, sobiks väga hästi mõnele ettevõttele kasutamiseks. Ainuke asi, mis on puudu on see, et tansfrormatsiooni väljunditeks pidi olema minimaalselt üks HTML ja üks XML, teil aga on kaks HTMLi. Kokkuvõtteks: XML, XSD ja XSLT on hästi loetavad sellise mahuga töö jaoks. Kõik kood tundub olema valvsa pilguga üle käidud ja hästi läbimõeldud. Nõuded on täielikult täidetud. Tubli töö on tehtud, kiitused.

Logi

  • 10.03.2016 - Moodustasime meeskonna, wiki põhi valmis, kokkulepitud esimese kodutöö teema.
  • 11.03.2016 - Bitbucket tehtud ja õigused jagatud.
  • 13.03.2016 - Kokkuleppe, mis päevaks peab esimene versioon valmis olema.
  • 15.03.2016 - Wiki täiendamine.
  • 18.03.2016 - Wiki täiendamine.
  • 27.03.2016 - Retsensioonide lisamine, täiendamine.