JaRe

From ICO wiki
Revision as of 22:31, 2 March 2013 by Rott (talk | contribs) (→‎XML)
Jump to navigationJump to search

Projekt

Meeskond

  • Jaan Kängsepp
  • Rene Ott
  • Kui keegi otsib meeskonda, siis võib sellest märku anda rott@itcolleg.ee.

XML Andmefailid

XML

Tegemist on raamatukoguga, kus on erinevad osakonnad. Osakonnad asuvad erinevatel korrustel ning neil on nimed. Igas osakonnas on riiulid. Igal riiulil asuvad kindlat tüüpi raamatud.

<?xml version="1.0" encoding="utf-8" ?>
<raamatukogu>
  <osakond korrus="1" nimi="informaatika-infoteholoogia">
    <riiul id = "1" teema="informaatika">
      <raamat kogus="5" trükk="1">
        <nimi>Informaatika teoreetilised alused</nimi>
        <autor>Peeter Lorents</autor>
        <ilmumisaasta>2001</ilmumisaasta>
        <kirjastus>EBS Print</kirjastus>
        <lehekülgi>430</lehekülgi>
      </raamat>
      <raamat kogus="3" trükk="1">
        <nimi>Hulgad, valemid, algoritmid</nimi>
        <autor>Peeter Lorents</autor>
        <ilmumisaasta>2007</ilmumisaasta>
        <kirjastus>Eesti Infotehnoloogia Kolledž</kirjastus>
        <lehekülgi>336</lehekülgi>
      </raamat>
      <raamat kogus="3" trükk="1">
        <nimi>Hulgateooria lastele</nimi>
        <autor>Hulga Element</autor>
        <ilmumisaasta>2007</ilmumisaasta>
        <kirjastus>Eesti Infotehnoloogia Kolledž</kirjastus>
        <lehekülgi>400</lehekülgi>
      </raamat>
    </riiul>
    <riiul id = "2" teema="programmeerimine">
      <raamat kogus="5" trükk="4">
        <nimi>Thinking in Java</nimi>
        <autor>Bruce Eckel</autor>
        <ilmumisaasta>2001</ilmumisaasta>
        <kirjastus>Prentice-Hall</kirjastus>
        <lehekülgi>1000</lehekülgi>
      </raamat>
      <raamat kogus="5" trükk="2">
        <nimi>Efektiivne Programmeerimine</nimi>
        <autor>Edgar Suur</autor>
        <ilmumisaasta>2005</ilmumisaasta>
        <kirjastus>Tallina Kirjastus</kirjastus>
        <lehekülgi>250</lehekülgi>
      </raamat>
      <raamat kogus="1" trükk="1">
        <nimi>Efektiivne Programmeerimine</nimi>
        <autor>Edgar Suur</autor>
        <ilmumisaasta>2000</ilmumisaasta>
        <kirjastus>Tallina Kirjastus</kirjastus>
        <lehekülgi>200</lehekülgi>
      </raamat>
    </riiul>
  </osakond>
  <osakond korrus="1" nimi="ajalugu">
    <riiul id = "1" teema="teadus">
      <raamat kogus="5" trükk="1">
        <nimi>Nõiakunst</nimi>
        <autor>Wiktor Merlin</autor>
        <ilmumisaasta>1136</ilmumisaasta>
        <kirjastus>Camelot</kirjastus>
        <lehekülgi>500</lehekülgi>
      </raamat>
      <raamat kogus="5" trükk="1">
        <nimi>Alkeemia ajalugu</nimi>
        <autor>Targo Kivi</autor>
        <ilmumisaasta>1337</ilmumisaasta>
        <kirjastus>Alchimia</kirjastus>
        <lehekülgi>400</lehekülgi>
      </raamat>
    </riiul>
    <riiul id = "2" teema="teine maailmasõda">
      <raamat kogus="3" trükk="1">
        <nimi>Eestlased teises maailmasõjas</nimi>
        <autor>Peeter Eeter Termomeeter</autor>
        <ilmumisaasta>2006</ilmumisaasta>
        <kirjastus>Kotkas</kirjastus>
        <lehekülgi>100</lehekülgi>
      </raamat>
      <raamat kogus="5" trükk="1">
        <nimi>Venelased teises maailmasõjas</nimi>
        <autor>Peeter Eeter Termomeeter</autor>
        <ilmumisaasta>2010</ilmumisaasta>
        <kirjastus>Kotkas</kirjastus>
        <lehekülgi>1000</lehekülgi>
      </raamat>
    </riiul>
  </osakond>
</raamatukogu>

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="raamatukogu">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="unbounded" name="osakond">
          <xs:complexType>
            <xs:sequence>
              <xs:element maxOccurs="unbounded" name="riiul">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element maxOccurs="unbounded" name="raamat">
                      <xs:complexType>
                        <xs:sequence>
                          <xs:element name="nimi" type="xs:string" />
                          <xs:element maxOccurs="unbounded" name="autor" type="xs:string" />
                          <xs:element name="ilmumisaasta" type="xs:integer" />
                          <xs:element name="kirjastus" type="xs:string" />
                          <xs:element minOccurs="0" name="lehekülgi" type="xs:integer" />
                        </xs:sequence>
                        <xs:attribute name="kogus" type="xs:integer" use="required" />
                        <xs:attribute name="trükk" type="xs:integer" use="required" />
                      </xs:complexType>
                    </xs:element>
                  </xs:sequence>
                  <xs:attribute name="id" type="xs:integer" use="required" />
                  <xs:attribute name="teema" type="xs:string" use="required" />
                </xs:complexType>
              </xs:element>
            </xs:sequence>
            <xs:attribute name="korrus" type="xs:integer" use="required" />
            <xs:attribute name="nimi" type="xs:string" use="required" />
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

XSLT

Kuvab kõik saadaval olevate raamatute informatsiooni. Tulemust on võimalik vaadata [siit].

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="/">
      <html>
        <head>
        </head>
        <body>
          <table border="1">
            <tr>
              <th>Nimi</th>
              <th>Autor</th>
              <th>Lehekülged arv</th>
              <th>Aasta</th>
              <th>Kirjastus</th>
              <th>Kogus</th>
            </tr>
            <xsl:for-each select="/raamatukogu/osakond/riiul/raamat">
              <tr>
                <td>
                  <xsl:value-of select="nimi"/>
                </td>
                <td>
                    <xsl:value-of select="autor"/>
                </td>
                <td>
                  <xsl:value-of select="lehekülgi"/>
                </td>
                <td>
                  <xsl:value-of select="ilmumisaasta"/>
                </td>
                 <td>
                  <xsl:value-of select="kirjastus"/>
                </td>
                <td>
                  <xsl:value-of select="@kogus"/>
                </td>
              </tr>
            </xsl:for-each>
          </table>
        </body>
      </html>
    </xsl:template>
</xsl:stylesheet>


Kuvab raamatud, mille kogus riiulites on suurem neljast. Tulemusst on võimalik vaadata [siit].

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:template match="/">
    <html>
      <head>
      </head>
      <body>
        <xsl:for-each select="/raamatukogu/osakond">
          <h2>
            <xsl:value-of select="@nimi"/> korrus <xsl:value-of select="@korrus"/>
          </h2>
          <xsl:for-each select="riiul">
            <p>
              <xsl:value-of select="@teema"/> riiul
            </p>
            <table border="1">
              <tr>
                <th>Nimi</th>
                <th>Autor</th>
                <th>Lehekülged arv</th>
                <th>Aasta</th>
                <th>Kirjastus</th>
              </tr>
              <xsl:for-each select="raamat">
                <xsl:if test="@kogus &gt; 4">
                  <tr>
                    <td>
                      <xsl:value-of select="nimi"/>
                    </td>
                    <td>
                      <xsl:value-of select="autor"/>
                    </td>
                    <td>
                      <xsl:value-of select="lehekülgi"/>
                    </td>
                    <td>
                      <xsl:value-of select="ilmumisaasta"/>
                    </td>
                    <td>
                      <xsl:value-of select="kirjastus"/>
                    </td>
                  </tr>
                </xsl:if>
              </xsl:for-each>
            </table>
          </xsl:for-each>
        </xsl:for-each>
      </body>
    </html>
  </xsl:template>
</xsl:stylesheet>