我對XSLT世界非常陌生,試圖解決下面提到的XML中的分組問題。我具有與ServiceChanges一起作爲根標記的相同XML。在根標記下,我可以有零個或多個CancelVisit和ChangedFrequency標記。在每個標籤中都有一個共同的字段FrequencyId。現在我的任務是根據Common FrequencyID將取消訪問和更改頻率標籤組合在一起(如果有的話),否則將被視爲獨立。在XSLT中分組
示例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,任何幫助將非常感激。
問候
盟友
您能否提供所需輸出示例 - 因爲您的語言有點模糊(在討論xml轉換時不常見) – dav1dsm1th
需要xslt 1嗎? (XSLT 2中的分組通常更容易,爲此,XSLT 2具有特定的xsl:for-each-group指令) –
如果可能,我需要XSLT 1 ....... – Ally