Meeskond: CoverMe

From ICO wiki
Jump to navigationJump to search

Meeskond: CoverMe

  • Karit Kilgi
  • Sten Kaasik
  • Ragne Auling
  • Silja Kralik

Idee

XML fail

XML

<?xml version="1.0" encoding="utf-8" ?> <employees>

 <employee id="10012" available="false">
   <personalCode>768-22-XXXX</personalCode>
   <image>https://yt3.ggpht.com/-V92UP8yaNyQ/AAAAAAAAAAI/AAAAAAAAAAA/zOYDMx8Qk3c/s900-c-k-no-mo-rj-c0xffffff/photo.jpg</image>
   <name>
     <firstName>Lucia</firstName>
     <middleName>J.</middleName>
     <lastName>Gaskill</lastName>
   </name>
   <gender>1</gender>
   <birthDate>1959-04-05</birthDate>
   <phone>904-366-8831</phone>
   <email>LuciaJGaskill@jourrapide.com</email>
   <contract id="1" startDate="2002-02-05" endDate="2008-03-15" status="0">
     <company>Cadbury</company>
     <department>Service</department>
     <occupation>Cashier</occupation>
     <workload>40</workload>
     <extraWork id="1" startDate="2003-03-20" endDate="2003-04-20">
       <company>Mr Fables</company>
       <task>Cleaner</task>
       <totalHours>80</totalHours>
     </extraWork>
   </contract>
   <contract id="2" startDate="2008-03-16" status="0">
     <company>Cadbury</company>
     <department>Service</department>
     <occupation>Manager</occupation>
     <workload>40</workload>
   </contract>
 </employee>
 
 <employee id="10013" available="false">
   <personalCode>769-48-XXXX</personalCode>
   <image></image>
   <name>
     <firstName>Martha</firstName>
     <lastName>Cornwell</lastName>
   </name>
   <gender>1</gender>
   <birthDate>1998-07-05</birthDate>
   <phone>123-456-7785</phone>
   <email>MarthaCornwall@jourrapide.com</email>
   <contract id="5" startDate="2001-03-21" status="0">
     <company>Cadbury</company>
     <department>Service</department>
     <occupation>Servant</occupation>
     <workload>40</workload>
   </contract>
 </employee>
 <employee id="10234" available="true">
   <personalCode>019-05-XXXX</personalCode>
   <image>http://weknowyourdreams.com/images/dog/dog-08.jpg</image>
   <name>
     <firstName>James</firstName>
     <lastName>Gibson</lastName>
   </name>
   <gender>2</gender>
   <birthDate>1957-08-02</birthDate>
   <phone>781-896-5862</phone>
   <email>JamesGibson@armyspy.com</email>
   <contract id="3" startDate="2016-12-27" status="1">
     <company>Brilliant Home Designs</company>
     <department>Accounting</department>
     <occupation>Accountant</occupation>
     <workload>40</workload>
   </contract>
 </employee>
 <employee id="11454" available="true">
   <personalCode>623-11-XXXX</personalCode>
   <image>https://www.mein-schoener-garten.de/sites/default/files/styles/inline_l/public/eichhoernchen-winter-2617791-blp-fotolia.jpg?itok=2UsYbm24</image>
   <name>
     <firstName>Elizabeth</firstName>
     <middleName>L.</middleName>
     <lastName>May</lastName>
   </name>
   <gender>1</gender>
   <birthDate>1997-01-12</birthDate>
   <phone>530-730-0818</phone>
   <email>ElizabethLMay@dayrep.com</email>
   <contract id="4" startDate="2015-05-23" status="1">
     <company>Corinthian Designs</company>
     <department>Helpdesk</department>
     <occupation>Information and record clerk</occupation>
     <workload>20</workload>
     <extraWork id="1" startDate="2016-03-20" endDate="2016-03-22">
       <company>Mr Fables</company>
       <task>Data processor</task>
       <totalHours>10</totalHours>
     </extraWork>
   </contract>
 </employee>
 <employee id="11455" available="true">
   <personalCode>624-54-XXXX</personalCode>
   <image>http://www.miksike.ee/docs/referaadid2005/kiirgliblikas_evelin.jpg</image>
   <name>
     <firstName>Judy</firstName>
     <middleName>A.</middleName>
     <lastName>April</lastName>
   </name>
   <gender>1</gender>
   <birthDate>1970-02-22</birthDate>
   <phone>530-730-0818</phone>
   <email>JudyAApril@dayrep.com</email>
   <contract id="9" startDate="2010-07-23" status="0">
     <company>Corinthian Designs</company>
     <department>Helpdesk</department>
     <occupation>Secretary</occupation>
     <workload>40</workload>
     <extraWork id="1" startDate="2016-03-20" endDate="2016-03-22">
       <company>Mr Fables</company>
       <task>Data processor</task>
       <totalHours>16</totalHours>
     </extraWork>
   </contract>
 </employee>
 <employee id="11456" available="true">
   <personalCode>1157-02-XXXX</personalCode>
   <image>https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcS7I-9NIN5ys4TUSF61BYALQ_O_01w_XNNzQw5_mfueta0IQbvAqA</image>
   <name>
     <firstName>Tom</firstName>
     <lastName>Johnson</lastName>
   </name>
   <gender>0</gender>
   <birthDate>1972-02-02</birthDate>
   <phone>124-548-998</phone>
   <email>TomJohnson@dayrep.com</email>
   <contract id="14" startDate="1995-11-23" status="0">
     <company>Corinthian Designs</company>
     <department>Analysis</department>
     <occupation>Analyst</occupation>
     <workload>40</workload>
     <extraWork id="1" startDate="2016-03-20" endDate="2016-03-25">
       <company>Mr Fables</company>
       <task>Data processor</task>
       <totalHours>30</totalHours>
     </extraWork>
   </contract>
 </employee>

</employees>

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="employees">
   <xs:complexType>
     <xs:sequence>
       <xs:element minOccurs="0" maxOccurs="unbounded" name="employee">
         <xs:complexType>
           <xs:sequence>
             <xs:element name="personalCode" type="xs:string" nillable="false"/>
             <xs:element name="image" type="xs:string"/>
             <xs:element name="name">
               <xs:complexType>
                 <xs:sequence>
                   <xs:element name="firstName" type="xs:string" />
                   <xs:element minOccurs="0" maxOccurs="unbounded" name="middleName" type="xs:string" />
                   <xs:element name="lastName" type="xs:string" />
                 </xs:sequence>
               </xs:complexType>
             </xs:element>
             <xs:element name="gender" type="xs:unsignedByte" nillable="false"/>
             <xs:element name="birthDate" type="xs:date" />
             <xs:element name="phone" type="xs:string" />
             <xs:element name="email" type="xs:string" />
             <xs:element minOccurs="0" maxOccurs="unbounded" name="contract">
               <xs:complexType>
                 <xs:sequence>
                   <xs:element name="company" type="xs:string" />
                   <xs:element name="department" type="xs:string" />
                   <xs:element name="occupation" type="xs:string" />
                   <xs:element name="workload" type="xs:unsignedByte" />
                   <xs:element minOccurs="0" maxOccurs="unbounded" name="extraWork">
                     <xs:complexType>
                       <xs:sequence>
                         <xs:element name="company" type="xs:string" />
                         <xs:element name="task" type="xs:string" />
                         <xs:element name="totalHours" type="xs:unsignedByte" />
                       </xs:sequence>
                       <xs:attribute name="id" type="xs:unsignedInt" use="required" />
                       <xs:attribute name="startDate" type="xs:date" use="required" />
                       <xs:attribute name="endDate" type="xs:date" use="optional" />
                     </xs:complexType>
                   </xs:element>
                 </xs:sequence>
                 <xs:attribute name="id" type="xs:unsignedInt" use="required" />
                 <xs:attribute name="startDate" type="xs:date" use="required" />
                 <xs:attribute name="endDate" type="xs:date" use="optional" />
                 <xs:attribute name="status" type="xs:unsignedByte" use="required" />
               </xs:complexType>
             </xs:element>
           </xs:sequence>
           <xs:attribute name="id" type="xs:unsignedInt" use="required" />
           <xs:attribute name="available" type="xs:boolean" use="required" />
         </xs:complexType>
       </xs:element>
     </xs:sequence>
   </xs:complexType>
 </xs:element>

</xs:schema>

XSLT 1 (html)

<?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>Employees</title>
         <style>
         </style>
       </head>
       <body>

Employees

<xsl:for-each select ="/employees/employee"> </xsl:for-each>
ID First name Last name Company Present occupation Available for extra work Image
<xsl:value-of select="@id"/> <xsl:value-of select="name/firstName"/> <xsl:value-of select="name/lastName"/>
                   <xsl:if test="contract/@endDate = 0"></xsl:if>
<xsl:value-of select="contract/company"/>
                   <xsl:value-of select="contract/occupation"/>
                   <xsl:choose>
                     <xsl:when test="@available = 'true' ">
                       Yes
                     </xsl:when>
                     <xsl:otherwise>
                       No
                     </xsl:otherwise>
                   </xsl:choose>
                   <xsl:choose>
                     <xsl:when test="not(normalize-space(image)=)">
                       <img width="150" height="95" src="{image}"/>
                     </xsl:when>
                     <xsl:otherwise>
                       Image not available
                     </xsl:otherwise>
                   </xsl:choose>
         </body>
     </html>
     </xsl:template>

</xsl:stylesheet>

XSLT 2 (xml)

<source lang="xml"> <?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="xml" indent="yes"/>
   <xsl:template match="/">
     <xsl:element name="contracts">
       <xsl:for-each select="//employee">
         <xsl:sort select="contract/@id"/>
         <xsl:for-each select="contract">
           <xsl:element name="contract">
             <xsl:attribute name="id">
               <xsl:value-of select="@id"/>
             </xsl:attribute>
             <xsl:attribute name="startDate">
               <xsl:value-of select="@startDate"/>
             </xsl:attribute>
             <xsl:attribute name="endDate">
               <xsl:value-of select="@endDate"/>
             </xsl:attribute>
             <xsl:attribute name="status">
               <xsl:value-of select="@status"/>
             </xsl:attribute>
             <xsl:element name="employee">
               <xsl:attribute name="id">
                 <xsl:value-of select="../@id"/>
               </xsl:attribute>
               <xsl:attribute name="available">
                 <xsl:value-of select="../@available"/>
               </xsl:attribute>
               <xsl:copy-of select="../name"/>
               <xsl:copy-of select="../personalCode"/>
             </xsl:element>
             <xsl:copy-of select="*"></xsl:copy-of>
           </xsl:element>
         </xsl:for-each>
       </xsl:for-each>
     </xsl:element>
   </xsl:template>

</xsl:stylesheet>