Суммирование рассчитанных значений в XLST 1.0 - PullRequest
0 голосов
/ 01 октября 2018

Я борюсь с XSLT 1.0 и надеюсь, что кто-нибудь сможет мне помочь.Это первый раз, когда я использую его.Смотрите XML ниже.Мне нужно сложить депозиты для каждого типа.Я создал таблицу для каждого типа, поэтому в строках я показываю продукт, а в последнем столбце я показываю депозиты.В последнем ряду я хочу суммировать депозиты для этого типа.Какой будет хороший подход?

<Letter>
    <Information>
        <Product>
            <Type>Type1</Type>
        </Product>
        <Transactions>
            <Deposits>150</Deposits>
        </Transactions>
    </Information>
</Letter>

<Letter>
    <Information>
        <Product>
            <Type>Type1</Type>
        </Product>
        <Transactions>
            <Deposits>120</Deposits>
        </Transactions>
    </Information>
</Letter>


<Letter>
    <Information>
        <Product>
            <Type>Type2</Type>
        </Product>
        <Transactions>
            <Deposits>120</Deposits>
        </Transactions>
    </Information>
</Letter>

1 Ответ

0 голосов
/ 01 октября 2018

Вы можете использовать MUENCHIAN METHOD для группировки в XSLT 1.0

<xsl:key name="deposit" match="Information" use="Product/Type"/>
<xsl:template match="Letter">
    <xsl:for-each select="Information[generate-id() = generate-id(key('deposit', Product/Type)[1])]" >
        <xsl:text> Deposite for </xsl:text>
        <xsl:value-of select="Product/Type"/>
        <xsl:text> = </xsl:text>
        <xsl:value-of select="sum(key('deposit', Product/Type)/Transactions/Deposits)"/>
    </xsl:for-each> 
</xsl:template>

Выход

Deposite for Type1 = 270
Deposite for Type2 = 120

См. Преобразование в https://xsltfiddle.liberty -развитии.нетто / 94hvTzQ

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...