Minions

From ICO wiki
Revision as of 11:02, 16 June 2014 by Kkund (talk | contribs) (→‎Retsensioon MRPD xmli kodutööle)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigationJump to search

XML kodutöö

Süsteemi unixi kasutajate loetelu koos servicitega


XML fail

<?xml version="1.0"?>
<kasutajad xmlns="http://www.w3schools.com/useradmin.xsd">
  <kasutaja id="0" name="Ülemboss">
    <username>superroot</username>
    <services>
      <service id="0" option="0">
        <comment>Root-level user w/ most superior access</comment>
      </service>
      <service id="1" option="0">
        <comment>Premium subscription until end of service</comment>
      </service>
    </services>
    <contacts>
      <contact type="email">superroot@dev.null</contact>
      <contact type="phone">+372 543 210 00</contact>
    </contacts>
  </kasutaja>
  <kasutaja id="1" name="Juurkasutaja">
    <username>root</username>
    <services>
      <service id="0" option="0">
        <comment>Root-level user w/o premium service</comment>
      </service>
    </services>
    <contacts>
      <contact type="email">root@dev.null</contact>
      <contact type="phone">+372 543 210 01</contact>
    </contacts>
  </kasutaja>
  <kasutaja id="2" name="Administraator">
    <username>admin</username>
    <services>
      <service id="0" option="1">
        <comment>Admin-level user w/o premium service</comment>
      </service>
    </services>
    <contacts>
      <contact type="email">admin@dev.null</contact>
      <contact type="phone">+372 543 210 02</contact>
    </contacts>
  </kasutaja>
  <kasutaja id="3" name="Kaspar Kund">
    <username>kaspar</username>
    <services>
      <service id="0" option="1">
        <comment>Admin-level user</comment>
      </service>
      <service id="1" option="0">
        <comment>Premium subscription until end of service</comment>
      </service>
    </services>
    <contacts>
      <contact type="email">kaspar.kund@itcollege.ee</contact>
      <contact type="phone">+372 543 210 03</contact>
    </contacts>
  </kasutaja>
  <kasutaja id="4" name="Tõnis Markus">
    <username>tonis</username>
    <services>
      <service id="0" option="0">
        <comment>Admin-level user</comment>
      </service>
      <service id="1" option="0">
        <comment>Premium subsciption until end of service</comment>
      </service>
    </services>
    <contacts>
      <contact type="email">tonis.markus@itcollege.ee</contact>
      <contact type="phone">+372 543 210 04</contact>
    </contacts>
  </kasutaja>
  <kasutaja id="5" name="Lasse Kolkanen">
    <username>lasse</username>
    <services>
      <service id="0" option="1">
        <comment>Admin-level user</comment>
      </service>
      <service id="1" option="0">
        <comment>Premium subsciption until end of service</comment>
      </service>
    </services>
    <contacts>
      <contact type="email">lasse.kolkanen@itcollege.ee</contact>
      <contact type="phone">+372 543 210 05</contact>
    </contacts>
  </kasutaja>
  <kasutaja id="6" name="Moderaator">
    <username>mod</username>
    <services>
      <service id="0" option="2">
        <comment>Moderator-level user</comment>
      </service>
    </services>
    <contacts>
      <contact type="email">mod@dev.null</contact>
      <contact type="phone">+372 543 210 06</contact>
    </contacts>
  </kasutaja>
  <kasutaja id="7" name="Peamoderaator">
    <username>supermod</username>
    <services>
      <service id="0" option="2">
        <comment>Moderator-level user</comment>
      </service>
      <service id="1" option="0">
        <comment>Premium subsciption until end of service</comment>
      </service>
    </services>
    <contacts>
      <contact type="email">supermod@dev.null</contact>
      <contact type="phone">+372 543 210 07</contact>
    </contacts>
  </kasutaja>
  <kasutaja id="8" name="Pro moderaator">
    <username>promod</username>
    <services>
      <service id="0" option="2">
        <comment>Moderator-level user</comment>
      </service>
      <service id="1" option="1" date="2015-02-01">
        <comment>Finite period premium user</comment>
      </service>
    </services>
    <contacts>
      <contact type="email">promod@dev.null</contact>
      <contact type="phone">+372 543 210 08</contact>
    </contacts>
  </kasutaja>
  <kasutaja id="9" name="Pro kasutaja">
    <username>prouser</username>
    <services>
      <service id="0" option="3">
        <comment>Consumer-level user</comment>
      </service>
      <service id="1" option="1" date="2015-01-01">
        <comment>Finite period premium user</comment>
      </service>
    </services>
    <contacts>
      <contact type="email">promod@dev.null</contact>
      <contact type="phone">+372 543 210 09</contact>
    </contacts>
  </kasutaja>
  <kasutaja id="10" name="Kasutaja">
    <username>user</username>
    <services>
      <service id="0" option="3">
        <comment>Consumer-level user</comment>
      </service>
    </services>
    <contacts>
      <contact type="email">user@dev.null</contact>
      <contact type="phone">+372 543 210 10</contact>
    </contacts>
  </kasutaja>
</kasutajad>

Skeemifail

<?xml version="1.0"?>
<xs:schema xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  attributeFormDefault="unqualified"
  elementFormDefault="qualified"
  targetNamespace="http://www.w3schools.com/useradmin.xsd"
  xmlns:this="http://www.w3schools.com/useradmin.xsd"
  xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="kasutajad">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="kasutaja" minOccurs="0" maxOccurs="unbounded">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="username" type="xs:token" minOccurs="1" maxOccurs="1"/>
              <xs:element name="services">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="service" maxOccurs="unbounded">
                      <xs:complexType>
                        <xs:sequence>
                          <xs:element name="comment" type="xs:string" minOccurs="0" maxOccurs="1"/>
                        </xs:sequence>
                        <xs:attribute name="id" type="xs:long" use="required"/>
                        <xs:attribute name="option" type="xs:integer" />
                        <xs:attribute name="date" type="xs:date" />
                      </xs:complexType>
                    </xs:element>
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
              <xs:element name="contacts" minOccurs="0">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element maxOccurs="unbounded" name="contact">
                      <xs:complexType>
                        <xs:simpleContent>
                          <xs:extension base="xs:string">
                            <xs:attribute name="type" use="required" >
                              <xs:simpleType>
                                <xs:restriction base="xs:string">
                                  <xs:enumeration value="email"/>
                                  <xs:enumeration value="phone"/>
                                  <xs:enumeration value="skype"/>
                                  <xs:enumeration value="mobile"/>
                                  <xs:enumeration value="website"/>
                                </xs:restriction>
                              </xs:simpleType>
                            </xs:attribute>
                          </xs:extension>
                        </xs:simpleContent>
                      </xs:complexType>
                    </xs:element>
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
            </xs:sequence>
            <xs:attribute name="id" type="xs:long" use="required" />
            <xs:attribute name="name" type="xs:string"/>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

1. XSL

<?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"
                xmlns:s="http://www.w3schools.com/useradmin.xsd">
  <xsl:output method="html" indent="yes"/>

  <xsl:template match="/">
    <html>
      <head>
        <title>Kasutajad</title>
      </head>
      <body>
        <h1>Kasutajate teenused</h1>
        <ul>
          <xsl:for-each select="s:kasutajad/s:kasutaja">
            <li>
              <xsl:value-of select="s:username"/>
              <ul>
                <xsl:for-each select="s:services/s:service">
                  <li>
                    <xsl:value-of select="s:comment"/>
                  </li>
                </xsl:for-each>
              </ul>
            </li>
          </xsl:for-each>
        </ul>
      </body>
    </html>
  </xsl:template>
</xsl:stylesheet>

2. XSL

<?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"
                xmlns:s="http://www.w3schools.com/useradmin.xsd">
  <xsl:output method="xml" indent="yes"/>

  <xsl:template match="/">
    <andmed>
      <xsl:for-each select="s:kasutajad/s:kasutaja">
        <kasutaja>
          <nimi>
            <xsl:value-of select="s:username"/>
          </nimi>
          <xsl:for-each select="s:services/s:service">
            <teenus>
              <xsl:value-of select="s:comment"/>
            </teenus>
          </xsl:for-each>
        </kasutaja>
      </xsl:for-each>
    </andmed>
  </xsl:template>
</xsl:stylesheet>

Retsensioon MRPD xmli kodutööle

XML ArvuteidKlassis="2" on üleliigne, alamelementide arvu saab xslt's count funktsiooniga kätte ning kui elemente peaks juurde tulema, siis võib atribuudi väärtuse muutmine ära ununeda ja andmed ei klapi enam

1 xslt puhul annab oletada, et esimesel katsel ei suudetud xpath'i nimedega kasutada ning mindi massiivi elementide järjekorra numbri järgi küsimise teed "*/*[1]" või siis demonstreeritii, et nii saab ka, xslt loetavusele see kaasa ei aita, xml'ist või xsd'st tuleb järgi vaadata, milline on 1. element, milline 2. jne

2 xslt puhul "arvuti( t )" asemel on kasutatud when tingimust, et tagada õige väljend kui on 1 või rohkem arvutit - see on tervitatav

JAH / EI tekstide kuvamise jaoks oleks võinud kasutada eraldi template'i, siis ei pea kahes kohas muutma, kui otsustatakse kirjaviisi muuta, näiteks Jah / Ei.

"Tingimused:" asub <ul> vahel <ul> See on ebakorrektne, peaks olema <ul><li>Tingimused: </li><ul>... ning järgnev ul on ka ülearune, pigem sobiks <div> <b> asemel on tänapäeval kasutusel <strong> jne, aga see pole XHTML'i retsensioon, seega andeks antav

XSD SpeedMeasure oleks võinud defineerida enum'ina, et saaks valida inult MHz ja GHz, sest praegusel vabateksti kujul annab sisestada ka mhz ja asd jne

Retsensioon Hashtag xmli kodutööle

xml

  • atribuudiga "järjekorranumber" demonstreeritakse, et täpitähti võib samuti kasutada, kuigi see pole alati töökindel, soovitaksime jrk või jnr, mis on lühem ja lollikindlam
  • kuna pikkust hoitakse inimloetaval kujul siis on xslt's keeruline albumi kogukestust välja arvutada, sekunditest oleks lihtsam minuteid välja rehkendada
  • atribuut "positsioon" võiks olla enum, sest see kordub väga tihti, samuti "kandja" ning "tüüp"

xsd kõik, mis oli skeemifailis defineeritud läks kasutusse, väga hea

xslt 1 väljundis tekib ul marker koos näiliselt ol markeriga, @järjekorranumber atribuudi kuvamise asemel oleks võinud selle järgi kasvavalt sorteerida ning html'is kasutada lihtsalt ol'i, et numbrid ette manada

xslt 2 demonstreeritakse, et osatakse kasutada xsl:attribute elementi, pildi puhul võiks veel lisada alt'i, siis oleks XHTML'i järgi valiidne

xslt 3 väljund on põhimõtteliselt esialgne xml, kuid ilma mõningate atribuutideta. See võib olla heaks templiidiks, kui on vaja xml tag'id ära tõlkida vms

Projekti lähtekood

Useradmin teenus + klient ja lisaks CarBuilder teenus https://googledrive.com/host/0B2pwyo9UUzS8aUg5cUVjS2Qtdzg/

Minions
Õppeaine: Võrgurakendused II
Meeskond: Tõnis Markus (Projektijuht)
Kaspar Kund
Lasse Kolkanen
Juhendaja: Mait Poska