我对 XSLT 世界很陌生,并试图解决下面提到的 XML 中的分组问题。我有以 ServiceChanges 开头的相同 XML 作为根标记。在根标签下,我可以有零个或多个 CancelVisit 和 ChangedFrequency 标签。在每个 Tag 中都有一个公共字段 FrequencyId。现在我的任务是根据 Common FrequencyID 将 CancelVisit 和 ChangedFrequency 标签组合在一起(如果有的话),否则所有标签都将被视为独立的。
示例 XML
<ServiceChanges>
<CancelVisit>
<VisitDate>2013-09-12</VisitDate>
<ProviderComments>Provider Comments</ProviderComments>
<CCMFrequency xmlns="http://air-ca.com">
<StartDate>2013-09-06</StartDate>
<EndDate>2013-09-27</EndDate>
<Quantity>3.00</Quantity>
<Summary>3.00 hour(s) per week, every week, starting 06-Sep-2013 and ending 27-Sep-2013</Summary>
<AdditionalDetails>go to side door, call before visiting. Visit in morning.
Authorizing CC: Williamson, Fiona</AdditionalDetails>
<Type>Weekly</Type>
<RecurrenceTimes>0</RecurrenceTimes>
<Interval>1</Interval>
<RecurrenceNumber>0</RecurrenceNumber>
<RecurrencePeriod>0</RecurrencePeriod>
<NumberOfHoursPerVisit>0.00</NumberOfHoursPerVisit>
<ReasonForChange />
<FrequencyId>fca44cac-7319-e311-8472-00155d051350</FrequencyId>
<ExternalSystemId>923C56CC-6532-4A3A-A071-3474F679602C</ExternalSystemId>
</CCMFrequency>
<ChangeRequestStatusName>Approved</ChangeRequestStatusName>
</CancelVisit>
<CancelVisit>
<VisitDate>2013-09-12</VisitDate>
<ProviderComments>Provider Comments</ProviderComments>
<CCMFrequency xmlns="http://air-ca.com">
<StartDate>2013-09-06</StartDate>
<EndDate>2013-09-27</EndDate>
<Quantity>3.00</Quantity>
<Summary>3.00 hour(s) per week, every week, starting 06-Sep-2013 and ending 27-Sep-2013</Summary>
<AdditionalDetails>go to side door, call before visiting. Visit in morning.
Authorizing CC: Williamson, Fiona</AdditionalDetails>
<Type>Weekly</Type>
<RecurrenceTimes>0</RecurrenceTimes>
<Interval>1</Interval>
<RecurrenceNumber>0</RecurrenceNumber>
<RecurrencePeriod>0</RecurrencePeriod>
<NumberOfHoursPerVisit>0.00</NumberOfHoursPerVisit>
<ReasonForChange />
<FrequencyId>ABC44cac-7319-e311-8472-00155d051350</FrequencyId>
<ExternalSystemId>923C56CC-6532-4A3A-A071-3474F679602C</ExternalSystemId>
</CCMFrequency>
<ChangeRequestStatusName>Approved</ChangeRequestStatusName>
</CancelVisit>
<ChangedFrequency>
<EndDate>2013-09-09</EndDate>
<CCMFrequency xmlns="http://air-ca.com">
<Version>0</Version>
<UnitOfService>Hours</UnitOfService>
<PreferredTime />
<StartDate>2013-09-06</StartDate>
<EndDate>2013-09-27</EndDate>
<Quantity>3.00</Quantity>
<Summary>3.00 hour(s) per week, every week, starting 06-Sep-2013 and ending 27-Sep-2013</Summary>
<AdditionalDetails>go to side door, call before visiting. Visit in morning.
Authorizing CC: Williamson, Fiona</AdditionalDetails>
<Type>Weekly</Type>
<RecurrenceTimes>0</RecurrenceTimes>
<ReasonForChange />
<FrequencyId>fca44cac-7319-e311-8472-00155d051350</FrequencyId>
<ExternalSystemId>923C56CC-6532-4A3A-A071-3474F679602C</ExternalSystemId>
</CCMFrequency>
<ChangeRequestStatusName>Denied</ChangeRequestStatusName>
<ChangeRequestStatusCode>D</ChangeRequestStatusCode>
<ChangeRequestType>Update Frequency End Date</ChangeRequestType>
</ChangedFrequency>
<ChangedFrequency>
<EndDate>2013-09-09</EndDate>
<CCMFrequency xmlns="http://air-ca.com">
<Version>0</Version>
<UnitOfService>Hours</UnitOfService>
<PreferredTime />
<StartDate>2013-09-06</StartDate>
<EndDate>2013-09-27</EndDate>
<Quantity>3.00</Quantity>
<Summary>3.00 hour(s) per week, every week, starting 06-Sep-2013 and ending 27-Sep-2013</Summary>
<AdditionalDetails>go to side door, call before visiting. Visit in morning.
Authorizing CC: Williamson, Fiona</AdditionalDetails>
<Type>Weekly</Type>
<RecurrenceTimes>0</RecurrenceTimes>
<ReasonForChange />
<FrequencyId>fca44cac-7319-e311-8472-00155d051350</FrequencyId>
<ExternalSystemId>923C56CC-6532-4A3A-A071-3474F679602C</ExternalSystemId>
</CCMFrequency>
<ChangeRequestStatusName>Denied</ChangeRequestStatusName>
<ChangeRequestStatusCode>D</ChangeRequestStatusCode>
<ChangeRequestType>Update Frequency End Date</ChangeRequestType>
</ChangedFrequency>
</ServiceChanges>
需要输出 在上述 XML 中,第一个 CancelVist 标记中的 FrequencyID (fca44cac-7319-e311-8472-00155d051350) 与第三个 ChangedFrequency 标记匹配。现在我需要将它们组合在一起。可能所有标签都具有相同的频率 ID。
输出将首先显示取消访问和更改频率。在上面的例子中,第一个和第三个标签将被组合在一起,第二个和第四个标签将被组合在一起。
我需要一个 XSLT ,任何帮助将不胜感激。
问候
盟国