powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Как подсчитать количество ненулевых переменных
1 сообщений из 1, страница 1 из 1
Как подсчитать количество ненулевых переменных
    #38169965
microdin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день.

Помогите, пожалуйста, количество ненулевых переменных, которые заполняются через функцию sum.
Суть в том, чтобы подсчитать общие суммы тэгов ExchComm, ClrComm и ITSComm в разбивке по двум тэгам UserId.

И затем подсчитать количество ненулевых результатов:
ExchComm / UserId1 <> 0 = 1 штука
ExchComm / UserId2 <> 0 = 1 штука
ClrComm / UserId1 = 0 = 0 штука
ClrComm / UserId2 <> 0 = 1 штука

Итого: 3 ненулевых суммы.

Я сделал попытку ввести отдельные переменные, каждая из которых будут равна 1, если значение какого-либо Comm > 0.
И в конце сложить их все, но что-то не получается.

<xsl:variable name="jrn1">
<xsl:value-of select="number('1')"/>
</xsl:variable>
<xsl:variable name="jrn_1" select="string($jrn1)"/>

<xsl:value-of select=number(sum("jrn1", "jrn2"))/>
и так тоже
<xsl:value-of select=number("jrn1" + "jrn2")/>

Заранее благодарю



<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl=" http://www.w3.org/1999/XSL/Transform" xmlns:altova=" http://www.altova.com" xmlns:altovaext=" http://www.altova.com/xslt-extensions" xmlns:clitype="clitype" xmlns:fn=" http://www.w3.org/2005/xpath-functions" xmlns:iso4217=" http://www.xbrl.org/2003/iso4217" xmlns:ix=" http://www.xbrl.org/2008/inlineXBRL" xmlns:java="java" xmlns:link=" http://www.xbrl.org/2003/linkbase" xmlns:sps=" http://www.altova.com/StyleVision/user-xpath-functions" xmlns:xbrldi=" http://xbrl.org/2006/xbrldi" xmlns:xbrli=" http://www.xbrl.org/2003/instance" xmlns:xlink=" http://www.w3.org/1999/xlink" xmlns:xs=" http://www.w3.org/2001/XMLSchema" xmlns:xsi=" http://www.w3.org/2001/XMLSchema-instance" exclude-result-prefixes="altova altovaext clitype fn iso4217 ix java link sps xbrldi xbrli xlink xs xsi">
<xsl:output method="text"/>

<xsl:template match="/">
<xsl:text>H|</xsl:text>

<xsl:variable name="batchDate">
<xsl:value-of select="MICEX_DOC/CUX23/@ReportDate"/>
</xsl:variable>
<xsl:variable name="batch_Date" select="string($batchDate)"/>
<xsl:value-of select="$batch_Date"/>

<xsl:text>
</xsl:text>

<xsl:text>JOURNAL PURPOSE PRIMARY ACCOUNT PRIMARY BALANCE TYPE ENTITY PRIMARY DEBIT/CREDIT CROSS ACCOUNT CROSS BALANCE TYPE CROSS DEBIT/CREDIT PRODUCT SYNONYM PREFIX PRODUCT SYNONYM CURRENCY QUANTITY AMOUNT VALUE DATE / SETTLE DATE TRADE DATE TRAILER (SENT DOWNSTREAM) DOTE SOURCE DOTE MODE DOTE ID PRIMARY OFFICE USER ID APPROVER ID JOURNAL TYPE</xsl:text>

<xsl:variable name="jrnDate">
<xsl:value-of select="format-number(number(substring(string(string($batchDate)), 6, 2)), '00')"/>
<xsl:text>/</xsl:text>
<xsl:value-of select="format-number(number(substring(string(string($batchDate)), 9, 2)), '00')"/>
<xsl:text>/</xsl:text>
<xsl:value-of select="format-number(number(substring(string(string(string($batchDate))), 1, 4)), '0000')"/>
</xsl:variable>
<xsl:variable name="jrn_Date" select="string($jrnDate)"/>


<xsl:variable name="Ex4Com_mos">
<xsl:value-of select="format-number(number(sum( //*[@UserId = 'MB0996600999' ]/@ExchComm )), '#####0.0000')"/>
</xsl:variable>
<xsl:variable name="ex4_Com_mos" select="string($Ex4Com_mos)"/>

<xsl:variable name="Ex4Com_ldn">
<xsl:value-of select="format-number(number(sum( //*[@UserId = 'MB0996600000' ]/@ExchComm )), '#####0.0000')"/>
</xsl:variable>
<xsl:variable name="ex4_Com_ldn" select="string($Ex4Com_ldn)"/>


<xsl:variable name="clearCom_mos">
<xsl:value-of select="format-number(number(sum( //*[@UserId = 'MB0996600999' ]/@ClrComm )), '#####0.0000')"/>
</xsl:variable>
<xsl:variable name="clear_Com_mos" select="string($clearCom_mos)"/>

<xsl:variable name="clearCom_ldn">
<xsl:value-of select="format-number(number(sum( //*[@UserId = 'MB0996600000' ]/@ClrComm )), '#####0.0000')"/>
</xsl:variable>
<xsl:variable name="clear_Com_ldn" select="string($clearCom_ldn)"/>


<xsl:variable name="ITSComm_mos">
<xsl:value-of select="format-number(number(sum( //*[@UserId = 'MB0996600999' ]/@ITSComm )), '#####0.0000')"/>
</xsl:variable>
<xsl:variable name="ITS_Com_mos" select="string($ITSComm_mos)"/>

<xsl:variable name="ITSComm_ldn">
<xsl:value-of select="format-number(number(sum( //*[@UserId = 'MB0996600000' ]/@ITSComm )), '#####0.0000')"/>
</xsl:variable>
<xsl:variable name="ITS_Com_ldn" select="string($ITSComm_ldn)"/>


<xsl:if test="$ex4_Com_mos > 0">

<xsl:variable name="jrn1">
<xsl:value-of select="number('1')"/>
</xsl:variable>
<xsl:variable name="jrn_1" select="string($jrn1)"/>

<xsl:text>
</xsl:text>

<xsl:text>MANUAL WORKFLOW</xsl:text>
<xsl:text> </xsl:text>

<xsl:text>781612544</xsl:text>
<xsl:text> </xsl:text>

<xsl:text>D</xsl:text>
<xsl:text> </xsl:text>

<xsl:text>025146044</xsl:text>
<xsl:text> </xsl:text>

<xsl:text>C</xsl:text>
<xsl:text> </xsl:text>

<xsl:text>RUB</xsl:text>
<xsl:text> </xsl:text>

<xsl:text> </xsl:text>
<xsl:text> </xsl:text>

<xsl:value-of select="$ex4_Com_mos"/>
<xsl:text> </xsl:text>

<xsl:value-of select="$jrn_Date"/>
<xsl:text> </xsl:text>


<xsl:text>SS</xsl:text>
</xsl:if>

<xsl:if test="$ex4_Com_ldn > 0">

<xsl:variable name="jrn2">
<xsl:value-of select="number('1')"/>
</xsl:variable>
<xsl:variable name="jrn_2" select="string($jrn2)"/>

<xsl:text>
</xsl:text>

<xsl:text>MANUAL WORKFLOW</xsl:text>
<xsl:text> </xsl:text>

<xsl:text>781612544</xsl:text>
<xsl:text> </xsl:text>


<xsl:text>D</xsl:text>
<xsl:text> </xsl:text>

<xsl:text>025146044</xsl:text>
<xsl:text> </xsl:text>

<xsl:text>C</xsl:text>
<xsl:text> </xsl:text>

<xsl:text>RUB</xsl:text>
<xsl:text> </xsl:text>

<xsl:value-of select="$ex4_Com_ldn"/>
<xsl:text> </xsl:text>

<xsl:value-of select="$jrn_Date"/>
<xsl:text> </xsl:text>

<xsl:value-of select="$jrn_Date"/>
<xsl:text> </xsl:text>

<xsl:text>SS</xsl:text>
</xsl:if>



<xsl:if test="$clear_Com_mos > 0">

<xsl:variable name="jrn3">
<xsl:value-of select="number('1')"/>
</xsl:variable>
<xsl:variable name="jrn_3" select="string($jrn3)"/>

<xsl:text>
</xsl:text>

<xsl:text>MANUAL WORKFLOW</xsl:text>
<xsl:text> </xsl:text>

<xsl:text>781612544</xsl:text>
<xsl:text> </xsl:text>


<xsl:text>D</xsl:text>
<xsl:text> </xsl:text>

<xsl:text>025146044</xsl:text>
<xsl:text> </xsl:text>

<xsl:text>C</xsl:text>
<xsl:text> </xsl:text>

<xsl:text>RUB</xsl:text>
<xsl:text> </xsl:text>

<xsl:value-of select="$clear_Com_mos"/>
<xsl:text> </xsl:text>

<xsl:value-of select="$jrn_Date"/>
<xsl:text> </xsl:text>


<xsl:text>SS</xsl:text>
</xsl:if>

<xsl:if test="$clear_Com_ldn > 0">

<xsl:variable name="jrn4">
<xsl:value-of select="number('1')"/>
</xsl:variable>
<xsl:variable name="jrn_4" select="string($jrn4)"/>

<xsl:text>
</xsl:text>

<xsl:text>MANUAL WORKFLOW</xsl:text>
<xsl:text> </xsl:text>

<xsl:text>781612544</xsl:text>
<xsl:text> </xsl:text>

<xsl:text>D</xsl:text>
<xsl:text> </xsl:text>

<xsl:text>025146044</xsl:text>
<xsl:text> </xsl:text>

<xsl:text>C</xsl:text>
<xsl:text> </xsl:text>

<xsl:text>RUB</xsl:text>
<xsl:text> </xsl:text>

<xsl:text> </xsl:text>
<xsl:text> </xsl:text>

<xsl:value-of select="$clear_Com_ldn"/>
<xsl:text> </xsl:text>

<xsl:value-of select="$jrn_Date"/>
<xsl:text> </xsl:text>


<xsl:text>SS</xsl:text>
</xsl:if>


<xsl:text>
</xsl:text>
<xsl:text>T|</xsl:text>

<xsl:value-of select=number(sum("jrn1", "jrn2"))/>

</xsl:template>
</xsl:stylesheet>
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Как подсчитать количество ненулевых переменных
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]