Как объединить дублирующие узлы, используя дочерние элементы в сравнении?
<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="Test1.xsl"?>
<root>
<RemittanceInformation>
<EntityAssignedNumber>25</EntityAssignedNumber>
<IndividualRemittance>
<IndividualName>
<LastName>Johnson</LastName>
<FirstName>Steve</FirstName>
<ExchangeAssignedSubscriberID>6650442525</ExchangeAssignedSubscriberID>
</IndividualName>
<ExchangeAssignedQHPID>38408SC221000101</ExchangeAssignedQHPID>
<ExchangeAssignedPolicyID>26141334</ExchangeAssignedPolicyID>
<IssuerAssignedPolicyID>39147964</IssuerAssignedPolicyID>
<IssuerAssignedSubscriberID>101009913000</IssuerAssignedSubscriberID>
</IndividualRemittance>
<RemittanceDetail>
<ExchangePaymentCode>APTC</ExchangePaymentCode>
<PaymentAmount>214.00</PaymentAmount>
<PaymentCoverageStartDate>2016-10-01</PaymentCoverageStartDate>
<PaymentCoverageEndDate>2016-10-31</PaymentCoverageEndDate>
</RemittanceDetail>
<RemittanceDetail>
<ExchangePaymentCode>UF</ExchangePaymentCode>
<PaymentAmount>-43.04</PaymentAmount>
<PaymentCoverageStartDate>2016-10-01</PaymentCoverageStartDate>
<PaymentCoverageEndDate>2016-10-31</PaymentCoverageEndDate>
</RemittanceDetail>
</RemittanceInformation>
<RemittanceInformation>
<EntityAssignedNumber>26</EntityAssignedNumber>
<IndividualRemittance>
<IndividualName>
<LastName>Johnson</LastName>
<FirstName>Steve</FirstName>
<ExchangeAssignedSubscriberID>0000442525</ExchangeAssignedSubscriberID>
</IndividualName>
<ExchangeAssignedQHPID>38408SC001000101</ExchangeAssignedQHPID>
<ExchangeAssignedPolicyID>26141334</ExchangeAssignedPolicyID>
<IssuerAssignedPolicyID>39147964</IssuerAssignedPolicyID>
<IssuerAssignedSubscriberID>101009913000</IssuerAssignedSubscriberID>
</IndividualRemittance>
<RemittanceDetail>
<ExchangePaymentCode>APTC</ExchangePaymentCode>
<PaymentAmount>556.00</PaymentAmount>
<PaymentCoverageStartDate>2016-10-01</PaymentCoverageStartDate>
<PaymentCoverageEndDate>2016-10-31</PaymentCoverageEndDate>
</RemittanceDetail>
<RemittanceDetail>
<ExchangePaymentCode>UF</ExchangePaymentCode>
<PaymentAmount>-30.50</PaymentAmount>
<PaymentCoverageStartDate>2016-10-01</PaymentCoverageStartDate>
<PaymentCoverageEndDate>2016-10-31</PaymentCoverageEndDate>
</RemittanceDetail>
</RemittanceInformation>
<RemittanceInformation>
<EntityAssignedNumber>27</EntityAssignedNumber>
<IndividualRemittance>
<IndividualName>
<LastName>Masterson</LastName>
<FirstName>Gene</FirstName>
<MiddleName>E</MiddleName>
<ExchangeAssignedSubscriberID>0032171620</ExchangeAssignedSubscriberID>
</IndividualName>
<ExchangeAssignedQHPID>384111C001000101</ExchangeAssignedQHPID>
<ExchangeAssignedPolicyID>26523035</ExchangeAssignedPolicyID>
<IssuerAssignedPolicyID>38976623</IssuerAssignedPolicyID>
<IssuerAssignedSubscriberID>101009869500</IssuerAssignedSubscriberID>
</IndividualRemittance>
<RemittanceDetail>
<ExchangePaymentCode>APTC</ExchangePaymentCode>
<PaymentAmount>448.00</PaymentAmount>
<PaymentCoverageStartDate>2016-10-01</PaymentCoverageStartDate>
<PaymentCoverageEndDate>2016-10-31</PaymentCoverageEndDate>
</RemittanceDetail>
<RemittanceDetail>
<ExchangePaymentCode>UF</ExchangePaymentCode>
<PaymentAmount>-30.50</PaymentAmount>
<PaymentCoverageStartDate>2016-10-01</PaymentCoverageStartDate>
<PaymentCoverageEndDate>2016-10-31</PaymentCoverageEndDate>
</RemittanceDetail>
</RemittanceInformation>
</root>
У меня есть тонны данных в XML-файле выше формате. Один человек представлен одной «Информацией о переводе», но есть некоторые дубликаты. Я хотел бы объединить эти дубликаты и добавить экземпляры «RemittanceDetail» из всех дубликатов в первый экземпляр этого человека. Номер «ExchangeAssignedPolicyID» однозначно идентифицируется человеком.
В приведенном выше примере два узла RemittanceDetail номера 26 должны быть перемещены в информацию о переносе номера 25, поскольку они оба являются одним и тем же лицом с тем же идентификатором ExchangeAssignedPolicyID. Все последующие узлы RemittanceInformation должны быть увеличены, чтобы восполнить недостающее число.
Я видел аналогичный код на S/O, но после многих часов и большого количества кофе я не могу понять это. Любая помощь будет оценена.
'' является началом, предполагающим XSLT 2.0. Узнайте об объединении с XSLT 2.0 в https://www.w3.org/TR/xslt20/#grouping-examples. –