0

私は 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 が必要です。どんな助けでも大歓迎です。

よろしく

アリー

4

1 に答える 1

1

Muenchian グループ化は、あなたが探しているものです。XSLT 1.0 Group Byhttp://jenitennison.com/xslt/grouping/muenchian.htmlをご覧ください。

于 2013-10-22T08:44:42.607 に答える