Я пытаюсь принять значение разности удаленной суммы и добавленной суммы, чтобы сообщить о сумме, скорректированной в моем примере ниже. Я получаю поле суммы в двух разных записях. Я хочу вычесть сумму 1 из записи 1 из суммы 2 записи 2, если код для совпадения и один - удаленная запись, а другой - добавленная запись.
И распечатать только добавленную запись с рассчитанной суммой.
Вот мой ввод xml
<employee>
<Compensation_One_Time_Payment isDeleted="1">
<External_Payroll_Code>6090</External_Payroll_Code>
<Earning_or_Deduction>E</Earning_or_Deduction>
<Amount>100</Amount>
</Compensation_One_Time_Payment>
<Compensation_One_Time_Payment isAdded="1">
<External_Payroll_Code>6090</External_Payroll_Code>
<Earning_or_Deduction>E</Earning_or_Deduction>
<Amount>200</Amount>
</Compensation_One_Time_Payment>
<Compensation_One_Time_Payment isAdded="1">
<External_Payroll_Code>1111</External_Payroll_Code>
<Earning_or_Deduction>E</Earning_or_Deduction>
<Amount>300</Amount>
</Compensation_One_Time_Payment>
</employee>
My xslt is
удалять
добавлять
<xsl:for-each-group select="$OTP_Group/root/OTP" group-by='concat(External_Payroll_Code,Action)'>
<xsl:variable name="AdjustedAmount">
<xsl:value-of select="sum(OTP[Action='Add']/Amount) - sum(OTP[Action='Delete']/Amount)"/>
</xsl:variable>
<OTP>
<code>
<xsl:value-of select="External_Payroll_Code"/>
</code>
<NewAmount>
<xsl:value-of select="$AdjustedAmount"/>
</NewAmount>
</OTP>
</xsl:for-each-group>
</xsl:template>
</xsl:stylesheet>
Пожалуйста, сообщите.
Мой текущий вывод. Входные данные будут содержать более одной записи на код, и я хочу рассчитать суммы на код. Но для группировки по коду, так как я уже вхожу для каждого, теперь я не могу посмотреть на другую запись в той же группе.
Токовый выход:
<OTP>
<code>6090</code>
<NewAmount>0</NewAmount>
</OTP>
<OTP>
<code>6090</code>
<NewAmount>0</NewAmount>
</OTP>
<OTP>
<code>1111</code>
<NewAmount>0</NewAmount>
</OTP>
Ожидаемый результат
<OTP>
<code>6090</code>
<NewAmount>100</NewAmount>
</OTP>
<OTP>
<code>1111</code>
<NewAmount>300</NewAmount>
</OTP>