Ally
Ally

Reputation: 61

Grouping in XSLT

I am very new to XSLT world and trying to solve a grouping problem in the below mention XML. I have same XML which Starts with ServiceChanges as the Root Tag. Under root Tag , i can have Zero or more CancelVisit and ChangedFrequency Tags. In each Tag there is a common field FrequencyId. Now my task is to Group CancelVisit and ChangedFrequency Tags together based on Common FrequencyID if there is any , otherwise all will be treated as independent.

SAMPLE 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>

Output Required In the above XML , the FrequencyID ( fca44cac-7319-e311-8472-00155d051350 ) in first CancelVist Tag matches with Third ChangedFrequency Tag. Now i need to group them together. There could be possibility that all the Tags have the same frequency ID.

The Output will first show Cancel Visits and Changed Frequency. In the above example First and Third tag will be grouped together and 2nd and Fourth tag will be grouped together.

I need a XSLT , any help would be really appreciated.

Regards

Ally

Upvotes: 0

Views: 68

Answers (1)

sst103
sst103

Reputation: 46

Muenchian grouping is what you are looking for. Take a look at XSLT 1.0 Group By and http://jenitennison.com/xslt/grouping/muenchian.html

Upvotes: 1

Related Questions