Meeskond: CoverMe
From ICO wiki
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)
<?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>