J'ai un projet dans lequel j'ai besoin d'obtenir et de compter des valeurs distinctes dans des balises dans un document XML. Si vous regardez le XML, j'essaie spécifiquement de compter le nombre distinct de WorkOrderNumbers pour mardi. Plus tard, je ferai lundi et ainsi de suite. J'ai essayé le code suivant.XSLT Count Distinct Values
<xsl:variable name="tmp" select="count(//Tuesday/TimeDetail/WorkOrderNumber[generate-id() = generate-id(key('distinctWorkOrder', .)[1])])"></xsl:variable>
Cela renvoie 2. Je l'ai aussi essayé
<xsl:variable name="tmp2" select="count(//Tuesday/TimeDetail/WorkOrderNumber[not(.=/preceding-sibling::WorkOrderNumber)])"></xsl:variable>
Il retourne 4. La réponse correcte est 3.
J'ai ajouté le XML ci-dessous. Quelqu'un peut-il signaler ce que je fais mal? Merci beaucoup.
<Timesheet>
<WeekEnding>Sep 18, 2011</WeekEnding>
<JobNumber>00010-5523</JobNumber>
<Customer>Test Company INC</Customer>
<TeamMember>
<EmployeeNumber>10566</EmployeeNumber>
<EmployeeName>Employee, One</EmployeeName>
<EmployeeClass>Class</EmployeeClass>
<Monday>
<TimeDetail>
<StartTime>Start</StartTime>
<StopTime>Stop</StopTime>
<WorkOrderNumber>14963</WorkOrderNumber>
<RegularHours>8</RegularHours>
<OverTimeHours>3</OverTimeHours>
<OtherHours>4 - Holiday</OtherHours>
<Notes>I took the afternoon off.</Notes>
</TimeDetail>
</Monday>
<Tuesday>
<TimeDetail>
<StartTime>Start</StartTime>
<StopTime>Stop</StopTime>
<WorkOrderNumber>14963</WorkOrderNumber>
<RegularHours>5</RegularHours>
<OverTimeHours>Over Time</OverTimeHours>
<OtherHours>Other</OtherHours>
<Notes>Notes</Notes>
</TimeDetail>
<TimeDetail>
<StartTime>Start</StartTime>
<StopTime>Stop</StopTime>
<WorkOrderNumber>15101</WorkOrderNumber>
<RegularHours>2</RegularHours>
<OverTimeHours>Over Time</OverTimeHours>
<OtherHours>Other</OtherHours>
<Notes>Notes</Notes>
</TimeDetail>
</Tuesday>
<Wednesday>
<TimeDetail>
<StartTime>Start</StartTime>
<StopTime>Stop</StopTime>
<WorkOrderNumber>14963</WorkOrderNumber>
<RegularHours>5</RegularHours>
<OverTimeHours>Over Time</OverTimeHours>
<OtherHours>Other</OtherHours>
<Notes>Notes</Notes>
</TimeDetail>
</Wednesday>
<Thursday>
<TimeDetail>
<StartTime>Start</StartTime>
<StopTime>Stop</StopTime>
<WorkOrderNumber>14963</WorkOrderNumber>
<RegularHours>5</RegularHours>
<OverTimeHours>Over Time</OverTimeHours>
<OtherHours>Other</OtherHours>
<Notes>Notes</Notes>
</TimeDetail>
</Thursday>
<Friday>
<TimeDetail>
<StartTime>Start</StartTime>
<StopTime>Stop</StopTime>
<WorkOrderNumber>14963</WorkOrderNumber>
<RegularHours>5</RegularHours>
<OverTimeHours>2</OverTimeHours>
<OtherHours>Other</OtherHours>
<Notes>Notes</Notes>
</TimeDetail>
</Friday>
<Saturday>
<TimeDetail>
<StartTime>Start</StartTime>
<StopTime>Stop</StopTime>
<WorkOrderNumber>14963</WorkOrderNumber>
<RegularHours>5</RegularHours>
<OverTimeHours>Over Time</OverTimeHours>
<OtherHours>Other</OtherHours>
<Notes>Notes</Notes>
</TimeDetail>
</Saturday>
<Sunday>
<TimeDetail>
<StartTime>Start</StartTime>
<StopTime>Stop</StopTime>
<WorkOrderNumber>14963</WorkOrderNumber>
<RegularHours>5</RegularHours>
<OverTimeHours>1</OverTimeHours>
<OtherHours>Other</OtherHours>
<Notes>Notes</Notes>
</TimeDetail>
</Sunday>
</TeamMember>
<TeamMember>
<EmployeeNumber>81135</EmployeeNumber>
<EmployeeName>Employee, Two</EmployeeName>
<EmployeeClass>Class</EmployeeClass>
<Monday>
<TimeDetail>
<StartTime>Start</StartTime>
<StopTime>Stop</StopTime>
<WorkOrderNumber>15100</WorkOrderNumber>
<RegularHours>5</RegularHours>
<OverTimeHours>Over Time</OverTimeHours>
<OtherHours>1 - Company Meetings</OtherHours>
<Notes>These are my notes.</Notes>
</TimeDetail>
<TimeDetail>
<StartTime>Start</StartTime>
<StopTime>Stop</StopTime>
<WorkOrderNumber>22965</WorkOrderNumber>
<RegularHours>7</RegularHours>
<OverTimeHours>Over Time</OverTimeHours>
<OtherHours>Other</OtherHours>
<Notes>Notes</Notes>
</TimeDetail>
<TimeDetail>
<StartTime>Start</StartTime>
<StopTime>Stop</StopTime>
<WorkOrderNumber>23570</WorkOrderNumber>
<RegularHours>Regular</RegularHours>
<OverTimeHours>1</OverTimeHours>
<OtherHours>Other</OtherHours>
<Notes>Notes</Notes>
</TimeDetail>
</Monday>
<Tuesday></Tuesday>
<Wednesday></Wednesday>
<Thursday>
<TimeDetail>
<StartTime>Start</StartTime>
<StopTime>Stop</StopTime>
<WorkOrderNumber>23591</WorkOrderNumber>
<RegularHours>7</RegularHours>
<OverTimeHours>Over Time</OverTimeHours>
<OtherHours>Other</OtherHours>
<Notes>Notes</Notes>
</TimeDetail>
<TimeDetail>
<StartTime>Start</StartTime>
<StopTime>Stop</StopTime>
<WorkOrderNumber>15100</WorkOrderNumber>
<RegularHours>1</RegularHours>
<OverTimeHours>1</OverTimeHours>
<OtherHours>Other</OtherHours>
<Notes>Test</Notes>
</TimeDetail>
</Thursday>
<Friday></Friday>
<Saturday></Saturday>
<Sunday></Sunday>
</TeamMember>
<TeamMember>
<EmployeeNumber>105779</EmployeeNumber>
<EmployeeName>Employee, Three</EmployeeName>
<EmployeeClass>W</EmployeeClass>
<Monday>
<TimeDetail>
<StartTime>Start</StartTime>
<StopTime>Stop</StopTime>
<WorkOrderNumber>19583</WorkOrderNumber>
<RegularHours>8</RegularHours>
<OverTimeHours>Over Time</OverTimeHours>
<OtherHours>Other</OtherHours>
<Notes>Notes</Notes>
</TimeDetail>
</Monday>
<Tuesday>
<TimeDetail>
<StartTime>Start</StartTime>
<StopTime>Stop</StopTime>
<WorkOrderNumber>15099</WorkOrderNumber>
<RegularHours>1</RegularHours>
<OverTimeHours>7</OverTimeHours>
<OtherHours>Other</OtherHours>
<Notes>Notes</Notes>
</TimeDetail>
</Tuesday>
<Wednesday>
<TimeDetail>
<StartTime>Start</StartTime>
<StopTime>Stop</StopTime>
<WorkOrderNumber>15099</WorkOrderNumber>
<RegularHours>1</RegularHours>
<OverTimeHours>7</OverTimeHours>
<OtherHours>Other</OtherHours>
<Notes>Notes</Notes>
</TimeDetail>
</Wednesday>
<Thursday>
<TimeDetail>
<StartTime>Start</StartTime>
<StopTime>Stop</StopTime>
<WorkOrderNumber>15099</WorkOrderNumber>
<RegularHours>1</RegularHours>
<OverTimeHours>7</OverTimeHours>
<OtherHours>Other</OtherHours>
<Notes>Notes</Notes>
</TimeDetail>
</Thursday>
<Friday>
<TimeDetail>
<StartTime>Start</StartTime>
<StopTime>Stop</StopTime>
<WorkOrderNumber>15099</WorkOrderNumber>
<RegularHours>1</RegularHours>
<OverTimeHours>7</OverTimeHours>
<OtherHours>Other</OtherHours>
<Notes>Notes</Notes>
</TimeDetail>
</Friday>
<Saturday></Saturday>
<Sunday></Sunday>
</TeamMember>
Merci beaucoup, qui était exactement ça. Vous avez résolu mon problème. – inosu812