我对某个XSLT进行了业务规则更改,但我不确定如何处理它。如果你看下面的XML,你会看到我有一个员工部分和一个设备部分。员工部分有一个嵌套在日期标签和TimeDetail标签中的WorkOrderNumber,并且在Equipment - > EquipmentWorkOrder中嵌套有一个EquipmentWorkOrderNumber。使用XSLT从XML的两个不同部分获取不同的值
我用来仅仅需要获得不同的WorkOrderNumber,因为WorkOrderNumber和EquipmentWorkOrderNumber之间会有相关性,但现在可能会有额外的EquipmentWorkOrderNumber,这些额外的EquipmentWorkOrderNumber不存在于员工WorkOrderNumber部分中。
我需要获取不同的WorkOrderNumber和EquipmentWorkOrderNumber而不复制这些值。我已经尝试了许多以下代码的变体,但没有真正的进展。
<!-- The Key at the top -->
<xsl:key name="distinctWoEquipWo" match="//WorkOrderNumber | //EquipmentWorkOrderNumber" use="."/>
<!-- Where I loop through the distinct values -->
<xsl:for-each select=".//WorkOrderNumber | .//EquipmentWorkOrderNumber[generate-id() = generate-id(key('distinctWoEquipWo', .)[1])]">
是否有可能在select中获得不同的WorkOrderNumber和EquipmentWorkOrderNumber值?
这是我正在使用的XML吗?
<?xml-stylesheet type="text/xsl" href="TemplateTest.xsl"?>
<Timesheet>
<WeekEnding>Apr 28, 2013</WeekEnding>
<TeamMember>
<EmployeeNumber>AB00910</EmployeeNumber>
<EmployeeName>Demo, Derek</EmployeeName>
<EmployeeClass>F</EmployeeClass>
<Monday>
<TimeDetail>
<StartTime>Start</StartTime>
<StopTime>Stop</StopTime>
<WorkOrderNumber>4812537</WorkOrderNumber>
<RegularHoursStartTime>Start</RegularHoursStartTime>
<RegularHoursStopTime>Stop</RegularHoursStopTime>
<RegularHoursStartTime2>Start</RegularHoursStartTime2>
<RegularHoursStopTime2>Stop</RegularHoursStopTime2>
<RegularHours>9</RegularHours>
<OverTimeStartTime>Start</OverTimeStartTime>
<OverTimeStopTime>Stop</OverTimeStopTime>
<OverTimeStartTime2>Start</OverTimeStartTime2>
<OverTimeStopTime2>Stop</OverTimeStopTime2>
<OverTimeHours>Over Time</OverTimeHours>
<OtherStartTime>Start</OtherStartTime>
<OtherStopTime>Stop</OtherStopTime>
<OtherStartTime2>Start</OtherStartTime2>
<OtherStopTime2>Stop</OtherStopTime2>
<OtherHours>Other</OtherHours>
<PerDiem>NO</PerDiem>
<Notes>Notes</Notes>
</TimeDetail>
</Monday>
<Tuesday>
<TimeDetail>
<StartTime>Start</StartTime>
<StopTime>Stop</StopTime>
<WorkOrderNumber>4812537</WorkOrderNumber>
<RegularHoursStartTime>Start</RegularHoursStartTime>
<RegularHoursStopTime>Stop</RegularHoursStopTime>
<RegularHoursStartTime2>Start</RegularHoursStartTime2>
<RegularHoursStopTime2>Stop</RegularHoursStopTime2>
<RegularHours>12</RegularHours>
<OverTimeStartTime>Start</OverTimeStartTime>
<OverTimeStopTime>Stop</OverTimeStopTime>
<OverTimeStartTime2>Start</OverTimeStartTime2>
<OverTimeStopTime2>Stop</OverTimeStopTime2>
<OverTimeHours>Over Time</OverTimeHours>
<OtherStartTime>Start</OtherStartTime>
<OtherStopTime>Stop</OtherStopTime>
<OtherStartTime2>Start</OtherStartTime2>
<OtherStopTime2>Stop</OtherStopTime2>
<OtherHours>Other</OtherHours>
<PerDiem>NO</PerDiem>
<Notes>Notes</Notes>
</TimeDetail>
</Tuesday>
<Wednesday>
<TimeDetail>
<StartTime>Start</StartTime>
<StopTime>Stop</StopTime>
<WorkOrderNumber>4812537</WorkOrderNumber>
<RegularHoursStartTime>Start</RegularHoursStartTime>
<RegularHoursStopTime>Stop</RegularHoursStopTime>
<RegularHoursStartTime2>Start</RegularHoursStartTime2>
<RegularHoursStopTime2>Stop</RegularHoursStopTime2>
<RegularHours>11</RegularHours>
<OverTimeStartTime>Start</OverTimeStartTime>
<OverTimeStopTime>Stop</OverTimeStopTime>
<OverTimeStartTime2>Start</OverTimeStartTime2>
<OverTimeStopTime2>Stop</OverTimeStopTime2>
<OverTimeHours>Over Time</OverTimeHours>
<OtherStartTime>Start</OtherStartTime>
<OtherStopTime>Stop</OtherStopTime>
<OtherStartTime2>Start</OtherStartTime2>
<OtherStopTime2>Stop</OtherStopTime2>
<OtherHours>Other</OtherHours>
<PerDiem>NO</PerDiem>
<Notes>Notes</Notes>
</TimeDetail>
</Wednesday>
<Thursday>
<TimeDetail>
<StartTime>Start</StartTime>
<StopTime>Stop</StopTime>
<WorkOrderNumber>4812537</WorkOrderNumber>
<RegularHoursStartTime>Start</RegularHoursStartTime>
<RegularHoursStopTime>Stop</RegularHoursStopTime>
<RegularHoursStartTime2>Start</RegularHoursStartTime2>
<RegularHoursStopTime2>Stop</RegularHoursStopTime2>
<RegularHours>8</RegularHours>
<OverTimeStartTime>Start</OverTimeStartTime>
<OverTimeStopTime>Stop</OverTimeStopTime>
<OverTimeStartTime2>Start</OverTimeStartTime2>
<OverTimeStopTime2>Stop</OverTimeStopTime2>
<OverTimeHours>3</OverTimeHours>
<OtherStartTime>Start</OtherStartTime>
<OtherStopTime>Stop</OtherStopTime>
<OtherStartTime2>Start</OtherStartTime2>
<OtherStopTime2>Stop</OtherStopTime2>
<OtherHours>Other</OtherHours>
<PerDiem>NO</PerDiem>
<Notes>Notes</Notes>
</TimeDetail>
</Thursday>
<Friday>
<TimeDetail>
<StartTime>Start</StartTime>
<StopTime>Stop</StopTime>
<WorkOrderNumber>4812537</WorkOrderNumber>
<RegularHoursStartTime>Start</RegularHoursStartTime>
<RegularHoursStopTime>Stop</RegularHoursStopTime>
<RegularHoursStartTime2>Start</RegularHoursStartTime2>
<RegularHoursStopTime2>Stop</RegularHoursStopTime2>
<RegularHours>0</RegularHours>
<OverTimeStartTime>Start</OverTimeStartTime>
<OverTimeStopTime>Stop</OverTimeStopTime>
<OverTimeStartTime2>Start</OverTimeStartTime2>
<OverTimeStopTime2>Stop</OverTimeStopTime2>
<OverTimeHours>7</OverTimeHours>
<OtherStartTime>Start</OtherStartTime>
<OtherStopTime>Stop</OtherStopTime>
<OtherStartTime2>Start</OtherStartTime2>
<OtherStopTime2>Stop</OtherStopTime2>
<OtherHours>Other</OtherHours>
<PerDiem>NO</PerDiem>
<Notes>Notes</Notes>
</TimeDetail>
</Friday>
<Saturday />
<Sunday />
<CrewLeader>1</CrewLeader>
</TeamMember>
<TeamMember>
<EmployeeNumber>BB7789A</EmployeeNumber>
<EmployeeName>Employee, Daniel</EmployeeName>
<EmployeeClass>AL</EmployeeClass>
<Monday />
<Tuesday>
<TimeDetail>
<StartTime>Start</StartTime>
<StopTime>Stop</StopTime>
<WorkOrderNumber>4812537</WorkOrderNumber>
<RegularHoursStartTime>Start</RegularHoursStartTime>
<RegularHoursStopTime>Stop</RegularHoursStopTime>
<RegularHoursStartTime2>Start</RegularHoursStartTime2>
<RegularHoursStopTime2>Stop</RegularHoursStopTime2>
<RegularHours>12</RegularHours>
<OverTimeStartTime>Start</OverTimeStartTime>
<OverTimeStopTime>Stop</OverTimeStopTime>
<OverTimeStartTime2>Start</OverTimeStartTime2>
<OverTimeStopTime2>Stop</OverTimeStopTime2>
<OverTimeHours>Over Time</OverTimeHours>
<OtherStartTime>Start</OtherStartTime>
<OtherStopTime>Stop</OtherStopTime>
<OtherStartTime2>Start</OtherStartTime2>
<OtherStopTime2>Stop</OtherStopTime2>
<OtherHours>Other</OtherHours>
<PerDiem>YES</PerDiem>
<Notes>5xfullperdiem</Notes>
</TimeDetail>
</Tuesday>
<Wednesday>
<TimeDetail>
<StartTime>Start</StartTime>
<StopTime>Stop</StopTime>
<WorkOrderNumber>4812537</WorkOrderNumber>
<RegularHoursStartTime>Start</RegularHoursStartTime>
<RegularHoursStopTime>Stop</RegularHoursStopTime>
<RegularHoursStartTime2>Start</RegularHoursStartTime2>
<RegularHoursStopTime2>Stop</RegularHoursStopTime2>
<RegularHours>11</RegularHours>
<OverTimeStartTime>Start</OverTimeStartTime>
<OverTimeStopTime>Stop</OverTimeStopTime>
<OverTimeStartTime2>Start</OverTimeStartTime2>
<OverTimeStopTime2>Stop</OverTimeStopTime2>
<OverTimeHours>Over Time</OverTimeHours>
<OtherStartTime>Start</OtherStartTime>
<OtherStopTime>Stop</OtherStopTime>
<OtherStartTime2>Start</OtherStartTime2>
<OtherStopTime2>Stop</OtherStopTime2>
<OtherHours>Other</OtherHours>
<PerDiem>YES</PerDiem>
<Notes>5xfullperdiem</Notes>
</TimeDetail>
</Wednesday>
<Thursday>
<TimeDetail>
<StartTime>Start</StartTime>
<StopTime>Stop</StopTime>
<WorkOrderNumber>4812537</WorkOrderNumber>
<RegularHoursStartTime>Start</RegularHoursStartTime>
<RegularHoursStopTime>Stop</RegularHoursStopTime>
<RegularHoursStartTime2>Start</RegularHoursStartTime2>
<RegularHoursStopTime2>Stop</RegularHoursStopTime2>
<RegularHours>8</RegularHours>
<OverTimeStartTime>Start</OverTimeStartTime>
<OverTimeStopTime>Stop</OverTimeStopTime>
<OverTimeStartTime2>Start</OverTimeStartTime2>
<OverTimeStopTime2>Stop</OverTimeStopTime2>
<OverTimeHours>3</OverTimeHours>
<OtherStartTime>Start</OtherStartTime>
<OtherStopTime>Stop</OtherStopTime>
<OtherStartTime2>Start</OtherStartTime2>
<OtherStopTime2>Stop</OtherStopTime2>
<OtherHours>Other</OtherHours>
<PerDiem>YES</PerDiem>
<Notes>5xfullperdiem</Notes>
</TimeDetail>
</Thursday>
<Friday>
<TimeDetail>
<StartTime>Start</StartTime>
<StopTime>Stop</StopTime>
<WorkOrderNumber>4812537</WorkOrderNumber>
<RegularHoursStartTime>Start</RegularHoursStartTime>
<RegularHoursStopTime>Stop</RegularHoursStopTime>
<RegularHoursStartTime2>Start</RegularHoursStartTime2>
<RegularHoursStopTime2>Stop</RegularHoursStopTime2>
<RegularHours>Regular</RegularHours>
<OverTimeStartTime>Start</OverTimeStartTime>
<OverTimeStopTime>Stop</OverTimeStopTime>
<OverTimeStartTime2>Start</OverTimeStartTime2>
<OverTimeStopTime2>Stop</OverTimeStopTime2>
<OverTimeHours>7</OverTimeHours>
<OtherStartTime>Start</OtherStartTime>
<OtherStopTime>Stop</OtherStopTime>
<OtherStartTime2>Start</OtherStartTime2>
<OtherStopTime2>Stop</OtherStopTime2>
<OtherHours>Other</OtherHours>
<PerDiem>YES</PerDiem>
<Notes>5xfullperdiem</Notes>
</TimeDetail>
</Friday>
<Saturday />
<Sunday />
</TeamMember>
<TeamMember>
<EmployeeNumber>CDE890</EmployeeNumber>
<EmployeeName>Test, John</EmployeeName>
<EmployeeClass>G</EmployeeClass>
<Monday>
<TimeDetail>
<StartTime>Start</StartTime>
<StopTime>Stop</StopTime>
<WorkOrderNumber>4812537</WorkOrderNumber>
<RegularHoursStartTime>Start</RegularHoursStartTime>
<RegularHoursStopTime>Stop</RegularHoursStopTime>
<RegularHoursStartTime2>Start</RegularHoursStartTime2>
<RegularHoursStopTime2>Stop</RegularHoursStopTime2>
<RegularHours>9</RegularHours>
<OverTimeStartTime>Start</OverTimeStartTime>
<OverTimeStopTime>Stop</OverTimeStopTime>
<OverTimeStartTime2>Start</OverTimeStartTime2>
<OverTimeStopTime2>Stop</OverTimeStopTime2>
<OverTimeHours>Over Time</OverTimeHours>
<OtherStartTime>Start</OtherStartTime>
<OtherStopTime>Stop</OtherStopTime>
<OtherStartTime2>Start</OtherStartTime2>
<OtherStopTime2>Stop</OtherStopTime2>
<OtherHours>Other</OtherHours>
<PerDiem>NO</PerDiem>
<Notes>Notes</Notes>
</TimeDetail>
</Monday>
<Tuesday>
<TimeDetail>
<StartTime>Start</StartTime>
<StopTime>Stop</StopTime>
<WorkOrderNumber>4812537</WorkOrderNumber>
<RegularHoursStartTime>Start</RegularHoursStartTime>
<RegularHoursStopTime>Stop</RegularHoursStopTime>
<RegularHoursStartTime2>Start</RegularHoursStartTime2>
<RegularHoursStopTime2>Stop</RegularHoursStopTime2>
<RegularHours>12</RegularHours>
<OverTimeStartTime>Start</OverTimeStartTime>
<OverTimeStopTime>Stop</OverTimeStopTime>
<OverTimeStartTime2>Start</OverTimeStartTime2>
<OverTimeStopTime2>Stop</OverTimeStopTime2>
<OverTimeHours>Over Time</OverTimeHours>
<OtherStartTime>Start</OtherStartTime>
<OtherStopTime>Stop</OtherStopTime>
<OtherStartTime2>Start</OtherStartTime2>
<OtherStopTime2>Stop</OtherStopTime2>
<OtherHours>Other</OtherHours>
<PerDiem>NO</PerDiem>
<Notes>Notes</Notes>
</TimeDetail>
</Tuesday>
<Wednesday>
<TimeDetail>
<StartTime>Start</StartTime>
<StopTime>Stop</StopTime>
<WorkOrderNumber>4812537</WorkOrderNumber>
<RegularHoursStartTime>Start</RegularHoursStartTime>
<RegularHoursStopTime>Stop</RegularHoursStopTime>
<RegularHoursStartTime2>Start</RegularHoursStartTime2>
<RegularHoursStopTime2>Stop</RegularHoursStopTime2>
<RegularHours>11</RegularHours>
<OverTimeStartTime>Start</OverTimeStartTime>
<OverTimeStopTime>Stop</OverTimeStopTime>
<OverTimeStartTime2>Start</OverTimeStartTime2>
<OverTimeStopTime2>Stop</OverTimeStopTime2>
<OverTimeHours>Over Time</OverTimeHours>
<OtherStartTime>Start</OtherStartTime>
<OtherStopTime>Stop</OtherStopTime>
<OtherStartTime2>Start</OtherStartTime2>
<OtherStopTime2>Stop</OtherStopTime2>
<OtherHours>Other</OtherHours>
<PerDiem>NO</PerDiem>
<Notes>Notes</Notes>
</TimeDetail>
</Wednesday>
<Thursday>
<TimeDetail>
<StartTime>Start</StartTime>
<StopTime>Stop</StopTime>
<WorkOrderNumber>4812537</WorkOrderNumber>
<RegularHoursStartTime>Start</RegularHoursStartTime>
<RegularHoursStopTime>Stop</RegularHoursStopTime>
<RegularHoursStartTime2>Start</RegularHoursStartTime2>
<RegularHoursStopTime2>Stop</RegularHoursStopTime2>
<RegularHours>8</RegularHours>
<OverTimeStartTime>Start</OverTimeStartTime>
<OverTimeStopTime>Stop</OverTimeStopTime>
<OverTimeStartTime2>Start</OverTimeStartTime2>
<OverTimeStopTime2>Stop</OverTimeStopTime2>
<OverTimeHours>3</OverTimeHours>
<OtherStartTime>Start</OtherStartTime>
<OtherStopTime>Stop</OtherStopTime>
<OtherStartTime2>Start</OtherStartTime2>
<OtherStopTime2>Stop</OtherStopTime2>
<OtherHours>Other</OtherHours>
<PerDiem>NO</PerDiem>
<Notes>Notes</Notes>
</TimeDetail>
</Thursday>
<Friday>
<TimeDetail>
<StartTime>Start</StartTime>
<StopTime>Stop</StopTime>
<WorkOrderNumber>4812537</WorkOrderNumber>
<RegularHoursStartTime>Start</RegularHoursStartTime>
<RegularHoursStopTime>Stop</RegularHoursStopTime>
<RegularHoursStartTime2>Start</RegularHoursStartTime2>
<RegularHoursStopTime2>Stop</RegularHoursStopTime2>
<RegularHours>0</RegularHours>
<OverTimeStartTime>Start</OverTimeStartTime>
<OverTimeStopTime>Stop</OverTimeStopTime>
<OverTimeStartTime2>Start</OverTimeStartTime2>
<OverTimeStopTime2>Stop</OverTimeStopTime2>
<OverTimeHours>7</OverTimeHours>
<OtherStartTime>Start</OtherStartTime>
<OtherStopTime>Stop</OtherStopTime>
<OtherStartTime2>Start</OtherStartTime2>
<OtherStopTime2>Stop</OtherStopTime2>
<OtherHours>Other</OtherHours>
<PerDiem>NO</PerDiem>
<Notes>Notes</Notes>
</TimeDetail>
</Friday>
<Saturday />
<Sunday />
</TeamMember>
<Equipment>
<EquipmentWorkOrder>
<EquipmentWorkOrderNumber>4812537</EquipmentWorkOrderNumber>
<EquipmentDetail>
<EquipmentMileage>Mileage</EquipmentMileage>
<EquipmentHourMeter>Hour Meter</EquipmentHourMeter>
<EquipmentType>Bucket truck</EquipmentType>
<EquipmentNumber>8s96</EquipmentNumber>
<MondayHours>0</MondayHours>
<TuesdayHours>12</TuesdayHours>
<WednesdayHours>11</WednesdayHours>
<ThursdayHours>11</ThursdayHours>
<FridayHours>7</FridayHours>
<SaturdayHours>Saturday</SaturdayHours>
<SundayHours>Sunday</SundayHours>
<EquipmentNotes>Notes</EquipmentNotes>
</EquipmentDetail>
<EquipmentDetail>
<EquipmentMileage>Mileage</EquipmentMileage>
<EquipmentHourMeter>Hour Meter</EquipmentHourMeter>
<EquipmentType>Line truck</EquipmentType>
<EquipmentNumber>20x949</EquipmentNumber>
<MondayHours>9</MondayHours>
<TuesdayHours>12</TuesdayHours>
<WednesdayHours>11</WednesdayHours>
<ThursdayHours>11</ThursdayHours>
<FridayHours>7</FridayHours>
<SaturdayHours>Saturday</SaturdayHours>
<SundayHours>Sunday</SundayHours>
<EquipmentNotes>Notes</EquipmentNotes>
</EquipmentDetail>
<EquipmentDetail>
<EquipmentMileage>Mileage</EquipmentMileage>
<EquipmentHourMeter>Hour Meter</EquipmentHourMeter>
<EquipmentType>Pickup truck</EquipmentType>
<EquipmentNumber>38g356</EquipmentNumber>
<MondayHours>9</MondayHours>
<TuesdayHours>12</TuesdayHours>
<WednesdayHours>11</WednesdayHours>
<ThursdayHours>11</ThursdayHours>
<FridayHours>7</FridayHours>
<SaturdayHours>Saturday</SaturdayHours>
<SundayHours>Sunday</SundayHours>
<EquipmentNotes>Notes</EquipmentNotes>
</EquipmentDetail>
<EquipmentDetail>
<EquipmentMileage>Mileage</EquipmentMileage>
<EquipmentHourMeter>Hour Meter</EquipmentHourMeter>
<EquipmentType>Air compressor</EquipmentType>
<EquipmentNumber>1d158</EquipmentNumber>
<MondayHours>9</MondayHours>
<TuesdayHours>12</TuesdayHours>
<WednesdayHours>11</WednesdayHours>
<ThursdayHours>11</ThursdayHours>
<FridayHours>7</FridayHours>
<SaturdayHours>Saturday</SaturdayHours>
<SundayHours>Sunday</SundayHours>
<EquipmentNotes>Notes</EquipmentNotes>
</EquipmentDetail>
</EquipmentWorkOrder>
</Equipment>
</Timesheet>
感谢您的所有帮助。
你能告诉我们你希望收到XML输出? – ABach 2013-05-07 14:22:21
输出是html,但有很多,但在上面的循环中,我试图用工作订单号打印标题。 的 的xsl:for-each>的 –
inosu812
2013-05-07 14:36:11
@ inosu812似乎适用于我(使用xsltoroc) – 2013-05-07 14:50:14