2017-03-07 5 views
0

私はXSLTをかなり新しくして、現在の問題に固執しています。私はStackflowを通していくつかの検索を行ってきました(Muenchianの方法は一般的なグループ方法のようです)が、まだ投稿されているアイデアのいくつかを模倣することはできません。IDでグループ化し、XSLTで合計金額を

私はサプライヤIDが同じであるかどうかをチェックするためにXSLTにコードを書き込もうとしているシステムを使用しています。本当なら、これを1行に集約し、金額を合計します。真でない場合は、IDを含む新しい行を開始し、金額などを合計する必要があります。私はXMLの私の現在のデータファイルがされて以下

= '1.0' のXMLバージョンを使用しています:

<data> 
<row> 
    <column1>06-11111</column1> 
    <column2>CP</column2> 
    <column3>744.04</column3> 
    <column4>CAD</column4> 
</row> 
<row> 
    <column1>06-11111</column1> 
    <column2>CP</column2> 
    <column3>105.09</column3> 
    <column4>CAD</column4> 
</row> 
<row> 
    <column1>06-11111</column1> 
    <column2>CP</column2> 
    <column3>1366.24</column3> 
    <column4>CAD</column4> 
</row> 
<row> 
    <column1>06-11111</column1> 
    <column2>CP</column2> 
    <column3>485.71</column3> 
    <column4>CAD</column4> 
</row> 
<row> 
    <column1>06-11112</column1> 
    <column2>Ever</column2> 
    <column3>459.60</column3> 
    <column4>CAD</column4> 
</row> 
<row> 
    <column1>06-11112</column1> 
    <column2>Ever</column2> 
    <column3>409.14</column3> 
    <column4>CAD</column4> 
</row> 
<row> 
    <column1>06-11112</column1> 
    <column2>Ever</column2> 
    <column3>397.12</column3> 
    <column4>CAD</column4> 
</row> 
<row> 
    <column1>06-11113</column1> 
    <column2>GE</column2> 
    <column3>1425</column3> 
    <column4>CAD</column4> 
</row> 
<row> 
    <column1>06-11114</column1> 
    <column2>Husky</column2> 
    <column3>-215.14</column3> 
    <column4>USD</column4> 
</row> 
<row> 
    <column1>06-11114</column1> 
    <column2>Husky</column2> 
    <column3>2015</column3> 
    <column4>USD</column4> 
</row> 
<row> 
    <column1>06-11114</column1> 
    <column2>Husky</column2> 
    <column3>11195.34</column3> 
    <column4>USD</column4> 
</row> 
</data> 

出力私はXSLTを実行した後に達成したいことは

06です-11111 | CP | 2701.08

06-11112 |今まで| 1265.86

06-11113 | GE | 1425

06-11114 |ハスキー| 12995.20

私に手を差し伸べるための助けがあれば素晴らしいと思います!

+0

入力がXMLの場合は、XMLとして表示してください。 XSLT 1.0でグループ化するには、ここから始めてください:http://www.jenitennison.com/xslt/grouping/muenchian.html –

+0

返信ありがとうございますmichael.hor257k! XML形式を提供するために私の質問を編集 – Echan

+0

答えは私が以前に参照した記事です。そしてMuenzianのグループ分けの多くの例ではここに掲載されています。 –

答えて

0

Muenchianメソッドを使用したグループ化があります。私は小数点の数に基づいて正しくフォーマットされた数値を得ることをプレイさせます。 限られていて扱いにくく、プッシュプログラミングに向いていないので、私は通常これを使用しません。しかし、それはあなたのために今日働くでしょう。

<xsl:template match="@* | node()"> 
    <xsl:apply-templates select="@* | node()"/> 
</xsl:template> 

<xsl:key name="rows" match="row" use="concat(column1, '||', column2)" /> 

<xsl:template match="data"> 
    <xsl:for-each select="row[generate-id(.) = generate-id(key('rows', concat(column1, '||', column2))[1])]"> 
    <xsl:sort select="column1" data-type="text" order="ascending"/> 
    <xsl:sort select="column2" data-type="text" order="ascending"/> 

    <xsl:value-of select="concat(column1,'|',column2,'|')"/> 

    <xsl:variable name="mySum"> 
     <xsl:value-of select="sum(key('rows', concat(column1, '||', column2))/column3)"/> 
    </xsl:variable> 

    <xsl:value-of select="format-number($mySum,'#,##0.00')"/> 

    <xsl:value-of select="'&#xD;&#xA;'"/> 
    </xsl:for-each> 
</xsl:template> 
+0

ありがとう@ブルーウッド66助けて!大いにそれを感謝します。 – Echan

関連する問題