XSLT
<xsl:stylesheet xmlns:xalan="http://xml.apache.org/xalan" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" version="1.0">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes" />
<xsl:template match="Data">
<xsl:element name="Data">
<xsl:call-template name="SubjectData" />
</xsl:element>
</xsl:template>
<xsl:template name="SubjectData">
<xsl:element name="SubjectData">
<xsl:for-each select="/Data/SubjectData/SubjectIND[@AECBInquiryFlag='0' and @AECBConsentFlag='0']">
<xsl:variable name="index" select="position()" />
<xsl:element name="SubjectIND">
<xsl:copy-of select="@*" />
<xsl:element name="ExternalSources">
<xsl:copy-of select="ExternalSources/@*" />
<xsl:element name="UAEbureau">
<xsl:attribute name="ResponseId">
<xsl:value-of select="/Data/CIPConnectorOutput/AdapterOutput/AdapterResult/Response[$index]/Report/ResponseId" />
</xsl:attribute>
<xsl:element name="Contracts">
<xsl:for-each select="/Data/CIPConnectorOutput/AdapterOutput/AdapterResult/Response[$index]/Report/Response/ContractData/Installments/Contract">
<xsl:element name="Contract">
<xsl:attribute name="TotalAmount">
<xsl:value-of select="TotalAmount" />
</xsl:attribute>
<xsl:for-each select="History">
<xsl:sort select="@Year" order="descending"/>
<xsl:variable name="key" select="@Year"/>
<xsl:if test="not(preceding-sibling::History[@Year=$key])">
<xsl:element name="History">
<xsl:attribute name="Year"><xsl:value-of select="@Year"/></xsl:attribute>
<xsl:element name="Period">
</xsl:element>
</xsl:element>
</xsl:if>
</xsl:for-each>
</xsl:element>
</xsl:for-each>
</xsl:element>
</xsl:element>
</xsl:element>
</xsl:element>
</xsl:for-each>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
Введите Xml
<Data>
<CIPConnectorOutput>
<AdapterOutput>
<ResultMessage Code="SUCCESS"/>
<AdapterResult>
<Response DetailID="25480276" ID="1">
<Report>
<ResponseId>735f28fd-2d04-43c8-bf91-58f295fe132a</ResponseId>
<Response>
<ContractData>
<Installments>
<Contract>
<TotalAmount>18888</TotalAmount>
<History Year="2018">
<ReferenceDate>032018</ReferenceDate>
<Balance>175000</Balance>
<OverdueAmount>200</OverdueAmount>
<DaysPaymentDelay>2</DaysPaymentDelay>
<ContractStatus>U</ContractStatus>
</History>
<History Year="2018">
<ReferenceDate>032018</ReferenceDate>
<Balance>885000</Balance>
<OverdueAmount>100</OverdueAmount>
<DaysPaymentDelay>1</DaysPaymentDelay>
<ContractStatus>U</ContractStatus>
</History>
<History Year="2018">
<ReferenceDate>012018</ReferenceDate>
<Balance>335000</Balance>
<OverdueAmount>0</OverdueAmount>
<DaysPaymentDelay>0</DaysPaymentDelay>
<ContractStatus>U</ContractStatus>
</History>
<History Year="2017">
<ReferenceDate>122017</ReferenceDate>
<Balance>55554</Balance>
</History>
</Contract>
<Contract>
<TotalAmount>180000</TotalAmount>
<History Year="2018">
<ReferenceDate>032018</ReferenceDate>
<Balance>275000</Balance>
<OverdueAmount>200</OverdueAmount>
<DaysPaymentDelay>2</DaysPaymentDelay>
<ContractStatus>U</ContractStatus>
</History>
<History Year="2017">
<ReferenceDate>022018</ReferenceDate>
<Balance>675000</Balance>
<OverdueAmount>100</OverdueAmount>
<DaysPaymentDelay>1</DaysPaymentDelay>
<ContractStatus>U</ContractStatus>
</History>
<History Year="2015">
<ReferenceDate>012015</ReferenceDate>
<Balance>185000</Balance>
<OverdueAmount>0</OverdueAmount>
<DaysPaymentDelay>0</DaysPaymentDelay>
<ContractStatus>U</ContractStatus>
</History>
</Contract>
</Installments>
</ContractData>
</Response>
</Report>
</Response>
</AdapterResult>
</AdapterOutput>
</CIPConnectorOutput>
<SubjectData>
<SubjectIND AECBConsentFlag="0" AECBInquiryFlag="0" Age="56" CHMCallDone="" DOB="1963-04-08" EmiratesID="784-1963-5878784-1" FullName="ROSS GIULI" Gender="F" Name="ROSS" NameAR="sdfg" Nationality="UAE" Role="M" Surname="GIULI" SurnameAR="sdfg">
<ExternalSources />
</SubjectIND>
</SubjectData>
</Data>
Выходной XML
<?xml version="1.0" encoding="UTF-8"?>
<Data>
<SubjectData>
<SubjectIND AECBConsentFlag="0" AECBInquiryFlag="0" Age="56" CHMCallDone="" DOB="1963-04-08"
EmiratesID="784-1963-5878784-1" FullName="ROSS GIULI" Gender="F" Name="ROSS"
NameAR="sdfg" Nationality="UAE" Role="M" Surname="GIULI" SurnameAR="sdfg">
<ExternalSources>
<UAEbureau ResponseId="735f28fd-2d04-43c8-bf91-58f295fe132a">
<Contracts>
<Contract TotalAmount="18888">
<History Year="2018">
<Period RefDate="032018" Balance="175000" />
<Period RefDate="022018" Balance="885000" />
<Period RefDate="012018" Balance="335000" />
</History>
<History Year="2017">
<Period RefDate="122017" Balance="55554" />
</History>
</Contract>
<Contract TotalAmount="180000">
<History Year="2016">
<Period RefDate="032018" Balance="275000" />
<Period RefDate="022018" Balance="675000" />
</History>
<History Year="2015">
<Period RefDate="012015" Balance="185000" />
</History>
</Contract>
</Contracts>
</UAEbureau>
</ExternalSources>
</SubjectIND>
</SubjectData>
</Data>
я хочу сгруппировать по годам в xslt, пожалуйста, найдите ниже входной образец xsl и ожидаемый результат. пожалуйста, помогите любым решением. я пробовал с xsl ниже, но не работает, дайте мне знать, если у кого-нибудь есть альтернативное решение для этого. я требую, чтобы он использовал xslt 1.0, а не 2.0 Количество истории, которое нужно разделить по годам, и вывод будет показан ниже.