Minions
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 |