저는 XSLT 세계에 매우 익숙하며 아래의 XML에서 그룹화 문제를 해결하려고합니다. 루트 태그로 ServiceChanges로 시작하는 XML과 동일한 XML이 있습니다. 루트 태그 아래에서, 나는 0 개 이상의 CancelVisit 및 ChangedFrequency 태그를 가질 수 있습니다. 각 태그에는 공통 필드 인 FrequencyId가 있습니다. 이제는 공통 FrequencyID를 기반으로 CancelVisit 및 ChangedFrequency 태그를 함께 그룹화하는 것이 좋습니다. 그렇지 않으면 모두가 독립적으로 처리됩니다.XSLT에서 그룹화
샘플 XML 출력 위의 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>
먼저 CancelVist 태그의 FrequencyID (fca44cac-7319-e311-8472-00155d051350)는 세 번째 ChangedFrequency 태그와 일치합니다. 이제 나는 그들을 하나로 묶을 필요가있다. 모든 태그가 동일한 빈도 ID를 가질 가능성이 있습니다.
출력에 처음으로 방문 취소 및 변경 빈도가 표시됩니다. 위의 예에서 첫 번째 및 세 번째 태그는 함께 그룹화되며 두 번째 및 네 번째 태그는 함께 그룹화됩니다.
저는 XSLT가 필요합니다. 어떤 도움이 필요하시면 정말 감사하겠습니다.
감사
앨리
를 살펴 보자 - (XML 변환에 대해 이야기 할 때 드문 일이 아니다) 언어는 조금 모호으로 – dav1dsm1th
는 XSLT 일을해야합니까? (이 목적을 위해 특정 xsl : for-each-group 명령이있는 XSLT 2에서는 일반적으로 그룹화가 더 쉽습니다.) –
가능한 경우 XSLT 1이 필요합니다 ....... – Ally