VRJ

From ICO wiki
Jump to navigationJump to search

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

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

Retsensioon

Meeskonna 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õiksinti panna

XML transformatsioonid on hästi tehtud, kasutatud tsüklid, tingimuste kontrollid, sum, choose jne.

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.