XSLTを使用して2つの要素に基づいて合計を行う方法

モハナゴパル

タイムスタンプと理由コードごとに人口を合計したいと思います。以下のサンプルコードを考えると、機能していませんでした。plsはそれを機能させるのを手伝ってくれませんか

私のXML:

次のXMLを入力ファイルとして使用しました

<?xml version="1.0" encoding="UTF-8"?>
<Earnings>
    <Collection>
        <Timestamp>20170101</Timestamp>
        <Points>100</Points>
        <ReasonCode>AN</ReasonCode>
    </Collection>
    <Collection>
        <Timestamp>20170102</Timestamp>
        <Points>100</Points>
        <ReasonCode>AN</ReasonCode>
    </Collection>
    <Collection>
        <Timestamp>20170101</Timestamp>
        <Points>10000</Points>
        <ReasonCode>BP</ReasonCode>
    </Collection>
    <Collection>
        <Timestamp>20170101</Timestamp>
        <Points>10000</Points>
        <ReasonCode>BP</ReasonCode>
    </Collection>
    <Collection>
        <Timestamp>20170102</Timestamp>
        <Points>100</Points>
        <ReasonCode>PPTS</ReasonCode>
    </Collection>
</Earnings>

私のXSLT

XMLを指定された形式に変換するために使用される次のXSLTを使用しました

<?xml version="1.0" encoding="UTF-16"?>
<xsl:stylesheet
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    <xsl:key name="Earnings" match="Earnings/Collection" use="concat(Timestamp, '+',ReasonCode)"/>
    <xsl:template match="Earnings">
        <Earnings>
            <xsl:for-each select="Collection[generate-id() = generate-id(key('Earnings', concat(Timestamp, '+',ReasonCode))[1])]">
                <xsl:sort select="concat(Timestamp, '+',ReasonCode)"/>
                <xsl:variable name="current-group" select="/Earnings/Collection[ReasonCode = current()/ReasonCode]"/>
                <Collection>
                    <Timestamp>
                        <xsl:value-of select="Timestamp"/>
                    </Timestamp>
                    <Points>
                        <xsl:value-of select="sum($current-group/Points)"/>
                    </Points>
                    <ReasonCode>
                        <xsl:value-of select="ReasonCode"/>
                    </ReasonCode>
                </Collection>
            </xsl:for-each>
        </Earnings>
    </xsl:template>
</xsl:stylesheet>

期待される出力

<Collection>
    <Timestamp>20170101</Timestamp>
    <Points>100</Points>
    <ReasonCode>AN</ReasonCode>
</Collection>
<Collection>
    <Timestamp>20170101</Timestamp>
    <Points>2000</Points>
    <ReasonCode>BP</ReasonCode>
</Collection>
<Collection>
    <Timestamp>20170102</Timestamp>
    <Points>100</Points>
    <ReasonCode>AN</ReasonCode>
</Collection>
<Collection>
    <Timestamp>20170102</Timestamp>
    <Points>100</Points>
    <ReasonCode>PPTS</ReasonCode>
</Collection>

ありがとう、
モハン

michael.hor257k

変化する:

<xsl:variable name="current-group" select="/Earnings/Collection[ReasonCode = current()/ReasonCode]"/>

に:

<xsl:variable name="current-group" select="key('Earnings', concat(Timestamp, '+',ReasonCode))"/>

あなたが今持っているものは、それらに関係なく、現在のものCollectionと同じReasonCodeものすべてのを合計CollectionTimestampます。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

2つの基準に基づいてセルを合計し、合計後に不要な行を削除します

分類Dev

条件に基づいて2つの列を分離して合計する方法

分類Dev

XSLTを使用して、共通の属性に基づいて2つの異なるxmlタグを結合します

分類Dev

MicrosoftExcel-2つの異なる列に基づいて列の合計を条件として計算する方法

分類Dev

VBA DIctionaryを使用して、複数の基準に基づいて同じIDの行を合計します

分類Dev

SQLでトリガーを使用して、他の2つの行に基づいて行を更新する方法

分類Dev

SQLでトリガーを使用して、他の2つの行に基づいて行を更新する方法

分類Dev

SQLでトリガーを使用して、他の2つの行に基づいて行を更新する方法

分類Dev

Excel-2つの関連する基準に基づいて値を合計し、合計された最大値を見つける方法はありますか?

分類Dev

2つの要素レベルに基づいて行を削除します

分類Dev

pysparkの条件に基づいてsparkの2つの行を結合します

分類Dev

列の値に基づいて累積合計を持ち、groupbyを持つ2つの列を作成する方法

分類Dev

Pythonを使用して2つのリストのうちの1つのリスト要素の出現に基づいて2つのリストを結合する方法

分類Dev

2つの値に基づいて要素を検索します

分類Dev

2つのテーブルを結合し、2つに基づいて値を計算します

分類Dev

XSLT / XML-xsltを使用して2つの数値を合計する方法

分類Dev

xsltを使用して複数の属性の組み合わせに基づいて重複する要素を削除する方法

分類Dev

FK関係ループに基づいて一連の行を合計しようとしています

分類Dev

各グループ (group by) の 2 つの最大値に基づいて合計を計算する方法は?

分類Dev

Javaの:ハッシュマップを使用して2列目の基準に基づいて1列のすべての値を合計する方法

分類Dev

パンダの他の列に基づいて、条件付きのいくつかの行を合計します

分類Dev

月と年に基づいて列を合計し、行を取得する方法

分類Dev

2つのキーに基づいて配列を合計(小計)する方法は?

分類Dev

2つの名前列に基づいて2つの列値を合計します

分類Dev

合計された列の条件に基づいて行を返そうとしています

分類Dev

2つの列に基づいて行を選択する方法

分類Dev

2つの条件に基づいて行を抽出する方法

分類Dev

条件に基づいてlinqを使用してdatatableの値を合計する

分類Dev

lodashを使用していくつかのキーに基づいてコレクションを合計するにはどうすればよいですか?

Related 関連記事

  1. 1

    2つの基準に基づいてセルを合計し、合計後に不要な行を削除します

  2. 2

    条件に基づいて2つの列を分離して合計する方法

  3. 3

    XSLTを使用して、共通の属性に基づいて2つの異なるxmlタグを結合します

  4. 4

    MicrosoftExcel-2つの異なる列に基づいて列の合計を条件として計算する方法

  5. 5

    VBA DIctionaryを使用して、複数の基準に基づいて同じIDの行を合計します

  6. 6

    SQLでトリガーを使用して、他の2つの行に基づいて行を更新する方法

  7. 7

    SQLでトリガーを使用して、他の2つの行に基づいて行を更新する方法

  8. 8

    SQLでトリガーを使用して、他の2つの行に基づいて行を更新する方法

  9. 9

    Excel-2つの関連する基準に基づいて値を合計し、合計された最大値を見つける方法はありますか?

  10. 10

    2つの要素レベルに基づいて行を削除します

  11. 11

    pysparkの条件に基づいてsparkの2つの行を結合します

  12. 12

    列の値に基づいて累積合計を持ち、groupbyを持つ2つの列を作成する方法

  13. 13

    Pythonを使用して2つのリストのうちの1つのリスト要素の出現に基づいて2つのリストを結合する方法

  14. 14

    2つの値に基づいて要素を検索します

  15. 15

    2つのテーブルを結合し、2つに基づいて値を計算します

  16. 16

    XSLT / XML-xsltを使用して2つの数値を合計する方法

  17. 17

    xsltを使用して複数の属性の組み合わせに基づいて重複する要素を削除する方法

  18. 18

    FK関係ループに基づいて一連の行を合計しようとしています

  19. 19

    各グループ (group by) の 2 つの最大値に基づいて合計を計算する方法は?

  20. 20

    Javaの:ハッシュマップを使用して2列目の基準に基づいて1列のすべての値を合計する方法

  21. 21

    パンダの他の列に基づいて、条件付きのいくつかの行を合計します

  22. 22

    月と年に基づいて列を合計し、行を取得する方法

  23. 23

    2つのキーに基づいて配列を合計(小計)する方法は?

  24. 24

    2つの名前列に基づいて2つの列値を合計します

  25. 25

    合計された列の条件に基づいて行を返そうとしています

  26. 26

    2つの列に基づいて行を選択する方法

  27. 27

    2つの条件に基づいて行を抽出する方法

  28. 28

    条件に基づいてlinqを使用してdatatableの値を合計する

  29. 29

    lodashを使用していくつかのキーに基づいてコレクションを合計するにはどうすればよいですか?

ホットタグ

アーカイブ