Эта таблица стилей:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="*[not(node())]">
<xsl:copy>0</xsl:copy>
</xsl:template>
</xsl:stylesheet>
С этим входом:
<LIST_R7P1_1>
<R7P1_1>
<ORIG_EXP_PRE_CONV />
<EXP_AFT_CONV />
<GUARANTEE_AMOUNT></GUARANTEE_AMOUNT>
<CREDIT_DER></CREDIT_DER>
</R7P1_1>
</LIST_R7P1_1>
Выход:
<LIST_R7P1_1>
<R7P1_1>
<ORIG_EXP_PRE_CONV>0</ORIG_EXP_PRE_CONV>
<EXP_AFT_CONV>0</EXP_AFT_CONV>
<GUARANTEE_AMOUNT>0</GUARANTEE_AMOUNT>
<CREDIT_DER>0</CREDIT_DER>
</R7P1_1>
</LIST_R7P1_1>
Но, с тем же входом, это выражение XPath:
sum(/LIST_R7P1_1/R7P1_1/*/text())
Результат:
0