VVA

From ICO wiki
Revision as of 11:07, 18 March 2016 by Vkovalt (talk | contribs) (→‎XSD)
Jump to navigationJump to search

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

Meeskond

  • Aleksandr Babõkin
  • Vladislav Kovaltšuk
  • Andrei Tverskoi
  • Vladislav Lahtarin


Idee

XML/XSD/XSLT

XML

<?xml version="1.0" encoding="utf-8" ?>
<arvutid>
  <arvuti>
    <liik>
      <![CDATA[Sülearvuti:]]>
      <firma><![CDATA[Apple]]></firma>
      <tyyp><![CDATA[MacBook Pro]]></tyyp>
      <hind><![CDATA[2500]]></hind>
      <valuuta><![CDATA[EUR]]></valuuta>
    </liik>
    <konfiguratsioon>
      <protsessor name="Protsessor">
        <tootja><![CDATA[Intel®]]></tootja>
        <mudel><![CDATA[i7]]></mudel>
        <sagedus><![CDATA[2.5 GHz]]></sagedus>
      </protsessor>
      <videokaart name="Videokaart">
        <tootja><![CDATA[AMD]]></tootja>
        <mudel><![CDATA[Radeon R9 M370X]]></mudel>
        <malu><![CDATA[2 GB]]></malu>
      </videokaart>
      <operatiivmalu name="Operatiivmälu">
        <tootja><![CDATA[Samsung]]></tootja>
        <tyyp><![CDATA[DDR4]]></tyyp>
        <malu><![CDATA[16 GB]]></malu>
      </operatiivmalu>
      <pysimalu name="Püsimälu">
        <tootja><![CDATA[Samsung]]></tootja>
        <tyyp><![CDATA[SSD]]></tyyp>
        <malu><![CDATA[512 GB]]></malu>
      </pysimalu>
    </konfiguratsioon>
  </arvuti>
  <arvuti>
    <liik>
      <![CDATA[Lauaarvuti:]]>
      <firma><![CDATA[HP]]></firma>
      <tyyp><![CDATA[Office]]></tyyp>
      <hind><![CDATA[350]]></hind>
      <valuuta><![CDATA[EUR]]></valuuta>
    </liik>
    <konfiguratsioon>
      <protsessor name="Protsessor">
        <tootja><![CDATA[Intel®]]></tootja>
        <mudel><![CDATA[Core™ i3-4170]]></mudel>
        <sagedus><![CDATA[3.70 GHz]]></sagedus>
      </protsessor>
      <videokaart name="Videokaart">
        <tootja><![CDATA[Intel®]]></tootja>
        <mudel><![CDATA[HD Graphics 4400]]></mudel>
        <malu><![CDATA[1.8 GB]]></malu>
      </videokaart>
      <operatiivmalu name="Operatiivmälu">
        <tootja><![CDATA[Samsung]]></tootja>
        <tyyp><![CDATA[DDR3]]></tyyp>
        <malu><![CDATA[4 GB]]></malu>
      </operatiivmalu>
      <pysimalu name="Püsimälu">
        <tootja><![CDATA[Samsung]]></tootja>
        <tyyp><![CDATA[SSD]]></tyyp>
        <malu><![CDATA[120 GB]]></malu>
      </pysimalu>
    </konfiguratsioon>
  </arvuti>
  <arvuti>
    <liik>
      <![CDATA[Lauaarvuti:]]>
      <firma><![CDATA[Acer]]></firma>
      <tyyp><![CDATA[Gamer Plus]]></tyyp>
      <hind><![CDATA[1350]]></hind>
      <valuuta><![CDATA[EUR]]></valuuta>
    </liik>
    <konfiguratsioon>
      <protsessor name="Protsessor">
        <tootja><![CDATA[Intel®]]></tootja>
        <mudel><![CDATA[i5-6600K]]></mudel>
        <sagedus><![CDATA[3.90 GHz]]></sagedus>
      </protsessor>
      <videokaart name="Videokaart">
        <tootja><![CDATA[MSI]]></tootja>
        <mudel><![CDATA[Geforce GTX 960]]></mudel>
        <malu><![CDATA[4 GB]]></malu>
      </videokaart>
      <operatiivmalu name="Operatiivmälu">
        <tootja><![CDATA[Kingstone]]></tootja>
        <tyyp><![CDATA[DDR4]]></tyyp>
        <malu><![CDATA[16 GB]]></malu>
      </operatiivmalu>
      <pysimalu name="Püsimälu">
        <tootja><![CDATA[Seagate]]></tootja>
        <tyyp><![CDATA[HDD]]></tyyp>
        <malu><![CDATA[1 TB]]></malu>
      </pysimalu>
    </konfiguratsioon>
  </arvuti>
  <arvuti>
    <liik>
      <![CDATA[Lauaarvuti:]]>
      <firma><![CDATA[Dell]]></firma>
      <tyyp><![CDATA[Gamer lite]]></tyyp>
      <hind><![CDATA[1000]]></hind>
      <valuuta><![CDATA[EUR]]></valuuta>
    </liik>
    <konfiguratsioon>
      <protsessor name="Protsessor">
        <tootja><![CDATA[Intel®]]></tootja>
        <mudel><![CDATA[i3-4170]]></mudel>
        <sagedus><![CDATA[3.70 GHz]]></sagedus>
      </protsessor>
      <videokaart name="Videokaart">
        <tootja><![CDATA[Nvidia]]></tootja>
        <mudel><![CDATA[Geforce GT730]]></mudel>
        <malu><![CDATA[2 GB]]></malu>
      </videokaart>
      <operatiivmalu name="Operatiivmälu">
        <tootja><![CDATA[Samsung]]></tootja>
        <tyyp><![CDATA[DDR3]]></tyyp>
        <malu><![CDATA[4 GB]]></malu>
      </operatiivmalu>
      <pysimalu name="Püsimälu">
        <tootja><![CDATA[Seagate]]></tootja>
        <tyyp><![CDATA[HDD]]></tyyp>
        <malu><![CDATA[500 GB]]></malu>
      </pysimalu>
    </konfiguratsioon>
  </arvuti>
  <arvuti>
    <liik>
      <![CDATA[Sülearvuti:]]>
      <firma><![CDATA[MSI]]></firma>
      <tyyp><![CDATA[Gaming laptop]]></tyyp>
      <hind><![CDATA[3000]]></hind>
      <valuuta><![CDATA[EUR]]></valuuta>
    </liik>
    <konfiguratsioon>
      <protsessor name="Protsessor">
        <tootja><![CDATA[Intel®]]></tootja>
        <mudel><![CDATA[i7-6820HK]]></mudel>
        <sagedus><![CDATA[2.7 GHz]]></sagedus>
      </protsessor>
      <videokaart name="Videokaart">
        <tootja><![CDATA[Nvidia]]></tootja>
        <mudel><![CDATA[Geforce GTX970M]]></mudel>
        <malu><![CDATA[6 GB]]></malu>
      </videokaart>
      <operatiivmalu name="Operatiivmälu">
        <tootja><![CDATA[Samsung]]></tootja>
        <tyyp><![CDATA[DDR4]]></tyyp>
        <malu><![CDATA[8 GB]]></malu>
      </operatiivmalu>
      <pysimalu name="Püsimälu">
        <tootja><![CDATA[Samsung]]></tootja>
        <tyyp><![CDATA[SSD]]></tyyp>
        <malu><![CDATA[256 GB]]></malu>
      </pysimalu>
    </konfiguratsioon>
  </arvuti>
  <arvuti>
    <liik>
      <![CDATA[Sülearvuti:]]>
      <firma><![CDATA[Toshiba]]></firma>
      <tyyp><![CDATA[Work laptop]]></tyyp>
      <hind><![CDATA[600]]></hind>
      <valuuta><![CDATA[EUR]]></valuuta>
    </liik>
    <konfiguratsioon>
      <protsessor name="Protsessor">
        <tootja><![CDATA[Intel®]]></tootja>
        <mudel><![CDATA[i3-4030U]]></mudel>
        <sagedus><![CDATA[1.9 GHz]]></sagedus>
      </protsessor>
      <videokaart name="Videokaart">
        <tootja><![CDATA[Intel®]]></tootja>
        <mudel><![CDATA[HD Graphics 4400]]></mudel>
        <malu><![CDATA[1 GB]]></malu>
      </videokaart>
      <operatiivmalu name="Operatiivmälu">
        <tootja><![CDATA[Samsung]]></tootja>
        <tyyp><![CDATA[DDR3]]></tyyp>
        <malu><![CDATA[4 GB]]></malu>
      </operatiivmalu>
      <pysimalu name="Püsimälu">
        <tootja><![CDATA[Samsung]]></tootja>
        <tyyp><![CDATA[HDD]]></tyyp>
        <malu><![CDATA[256 GB]]></malu>
      </pysimalu>
    </konfiguratsioon>
  </arvuti>
</arvutid>

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="arvutid">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="unbounded" name="arvuti">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="liik">
                <xs:complexType mixed="true">
                  <xs:sequence>
                    <xs:element name="firma" type="xs:string" />
                    <xs:element name="tyyp" type="xs:string" />
                    <xs:element name="hind" type="xs:integer" />
                    <xs:element name="valuuta" type="xs:string" />
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
              <xs:element name="konfiguratsioon">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="protsessor">
                      <xs:complexType>
                        <xs:sequence>
                          <xs:element name="tootja" type="xs:string" />
                          <xs:element name="mudel" type="xs:string" />
                          <xs:element name="sagedus" type="xs:string" />
                        </xs:sequence>
                        <xs:attribute name="name" type="xs:string" use="required" />
                      </xs:complexType>
                    </xs:element>
                    <xs:element name="videokaart">
                      <xs:complexType>
                        <xs:sequence>
                          <xs:element name="tootja" type="xs:string" />
                          <xs:element name="mudel" type="xs:string" />
                          <xs:element name="malu" type="xs:string" />
                        </xs:sequence>
                        <xs:attribute name="name" type="xs:string" use="required" />
                      </xs:complexType>
                    </xs:element>
                    <xs:element name="operatiivmalu">
                      <xs:complexType>
                        <xs:sequence>
                          <xs:element name="tootja" type="xs:string" />
                          <xs:element name="tyyp" type="xs:string" />
                          <xs:element name="malu" type="xs:string" />
                        </xs:sequence>
                        <xs:attribute name="name" type="xs:string" use="required" />
                      </xs:complexType>
                    </xs:element>
                    <xs:element name="pysimalu">
                      <xs:complexType>
                        <xs:sequence>
                          <xs:element name="tootja" type="xs:string" />
                          <xs:element name="tyyp" type="xs:string" />
                          <xs:element name="malu" type="xs:string" />
                        </xs:sequence>
                        <xs:attribute name="name" type="xs:string" use="required" />
                      </xs:complexType>
                    </xs:element>
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

XSLT Kuvab kõik arvutid ja nende komponendide kirjeldust

<?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>Arvutid</title>
      </head>
      <body>
        <xsl:for-each select="arvutid/arvuti">
          <h2>
            <xsl:value-of select="firma" />
            <xsl:value-of select="liik" />
            <xsl:value-of select="tyyp"/>
            <xsl:value-of select="hind"/>
            <xsl:value-of select="valuuta"/>
          </h2>
          <xsl:for-each select="konfiguratsioon/protsessor">
            <h4>
              <xsl:value-of select="@name"/>
            </h4>
            <ul>
              <li>
                <xsl:value-of select="."/>
              </li>
            </ul>
          </xsl:for-each>
          <xsl:for-each select="konfiguratsioon/videokaart">
            <h4>
              <xsl:value-of select="@name"/>
            </h4>
            <ul>
              <li>
                <xsl:value-of select="."/>
              </li>
            </ul>
          </xsl:for-each>
          <xsl:for-each select="konfiguratsioon/operatiivmalu">
            <h4>
              <xsl:value-of select="@name"/>
            </h4>
            <ul>
              <li>
                <xsl:value-of select="."/>
              </li>
            </ul>
          </xsl:for-each>
          <xsl:for-each select="konfiguratsioon/pysimalu">
            <h4>
              <xsl:value-of select="@name"/>
            </h4>
            <ul>
              <li>
                <xsl:value-of select="."/>
              </li>
            </ul>
          </xsl:for-each>
        </xsl:for-each>
      </body>
    </html>
  </xsl:template>
</xsl:stylesheet>

XSLT Kuvab arvutite nimetust, mudelit ja hinda. Hind on sorteeritud kasvamise järjekorras

<?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>Hinna järgi</title>
      </head>
      <body>
        <table border="2">
          <tr>
            <th>Firma</th>
            <th>Mudel</th>
            <th>Hind</th>
          </tr>
          <xsl:for-each select="arvutid/arvuti/liik">
            <xsl:sort select="hind" data-type="number"></xsl:sort>
            <tr>
              <td>
                <xsl:value-of select="firma"/>
              </td>
              <td>
                <xsl:value-of select="tyyp"/>
              </td>
              <td>
                <xsl:value-of select="hind"/>
                <xsl:text> </xsl:text>
                <xsl:value-of select="valuuta"/>
              </td>
            </tr>
          </xsl:for-each>
        </table>
      </body>
    </html>
  </xsl:template>
</xsl:stylesheet>

Arendusprotsee

  1. 16.03.16 - XML, XSD ja XSLT tegemine