私は XSLT の世界に非常に慣れておらず、以下の XML でグループ化の問題を解決しようとしています。ルート タグとして ServiceChanges で始まる同じ XML があります。root Tag の下に、ゼロ以上の CancelVisit および ChangedFrequency タグを含めることができます。各タグには、共通のフィールド FrequencyId があります。ここでのタスクは、共通の 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 ) が 3 番目の ChangedFrequency タグと一致します。次に、それらをグループ化する必要があります。すべてのタグが同じ周波数 ID を持つ可能性があります。
出力には、最初に訪問のキャンセルと変更された頻度が表示されます。上記の例では、1 番目と 3 番目のタグがグループ化され、2 番目と 4 番目のタグがグループ化されます。
XSLT が必要です。どんな助けでも大歓迎です。
よろしく
アリー