Требуется помощь в сопоставлении XSLT 2.0 на основе группировки идентификатора сотрудника.XML-файл будет создан путем суммирования количества и часов путем группировки идентификатора сотрудника.Сумма - «#» означает положительное число, где «# (» означает отрицательное число. Часы - это будет сумма времени.
Я не пробовал с часами, но пробовал с суммой, кроме символов (#, # (также не пробовали, если оно имеет пустое значение) и оно работает. Нужна ваша помощь и опыт для завершения того же.
Входные данные:
<?xml version="1.0" ?>
<Employees>
<Employee>
<Amount>#1,424.85</Amount>
<EmployeeID>1</EmployeeID>
<Name>Bob</Name>
<Surname>Shibob</Surname>
<Hours>24:20</Hours>
</Employee>
<Employee>
<Amount>#(1,424.85</Amount>
<EmployeeID>1</EmployeeID>
<Name>Bob</Name>
<Surname>Shibob</Surname>
<Hours>56:00</Hours>
</Employee>
<Employee>
<Amount>#70</Amount>
<EmployeeID>2</EmployeeID>
<Name>Sara</Name>
<Surname>Lee</Surname>
<Hours>57.30</Hours>
</Employee>
<Employee>
<Amount>#(1,001.20</Amount>
<EmployeeID>3</EmployeeID>
<Name>John</Name>
<Surname>Smith</Surname>
<Hours></Hours>
</Employee>
<Employee>
<Amount></Amount>
<EmployeeID>4</EmployeeID>
<Name>Penny</Name>
<Surname>Wise</Surname>
<Hours>56:59</Hours>
</Employee>
<Employee>
<Amount>#(.30</Amount>
<EmployeeID>4</EmployeeID>
<Name>Penny</Name>
<Surname>Wise</Surname>
<Hours>26:03</Hours>
</Employee>
</Employees>
My XSLTКод:
<?xml version="1.0" ?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<!-- Define keys used to group elements -->
<xsl:key name="keyEmployeeID" match="Employee" use="EmployeeID" />
<xsl:template match="/">
<Employees>
<xsl:for-each select="//Employee[generate-id(.) = generate-id(key('keyEmployeeID', EmployeeID)[1])]">
<Employee>
<xsl:variable name="empID">.
<xsl:value-of select="EmployeeID" /></xsl:variable>
<EmployeeID><xsl:value-of select="EmployeeID" /></EmployeeID>
<Name1><xsl:value-of select="//Employee[EmployeeID=$empID]/Name" /></Name1>
<Surname><xsl:value-of select="//Employee[EmployeeID=$empID]/Surname" /></Surname>
<!-- Show the total Amount for the current Employee -->
<code><xsl:value-of select="sum(//Employee[EmployeeID=$empID]/Amount)" /></code>
</Employee>
</xsl:for-each>
</Employees>
</xsl:template>
</xsl:stylesheet>