2016-09-26 68 views
1

我試圖使用for-each-group來總結值,但它似乎爲每個組不返回所有元素。我試圖根據PRIORYR,CYCLE和CODE的獨特組合進行分組和求和。我目前的代碼只是獲取第一個TI_DET元素。下面是輸入XML:xslt 2.0爲每個組不返回所有元素

<TI_DET id="2"> 
    <PRIORYR>2014</PRIORYR> 
    <CYCLE>1</CYCLE> 
    <CODE>TAX</CODE> 
    <AMOUNT>44.35</AMOUNT> 
</TI_DET> 
<TI_DET id="3"> 
    <PRIORYR>2014</PRIORYR> 
    <CYCLE>1</CYCLE> 
    <CODE>TAX</CODE> 
    <AMOUNT>59.52</AMOUNT> 
</TI_DET> 
<TI_DET id="4"> 
    <PRIORYR>2014</PRIORYR> 
    <CYCLE>1</CYCLE> 
    <CODE>TAX</CODE> 
    <AMOUNT>20.77</AMOUNT> 
</TI_DET> 
<TI_DET id="5"> 
    <PRIORYR>2014</PRIORYR> 
    <CYCLE>1</CYCLE> 
    <CODE>TAX</CODE> 
    <AMOUNT>0.74</AMOUNT> 
</TI_DET> 
<TI_DET id="6"> 
    <PRIORYR>2014</PRIORYR> 
    <CYCLE>1</CYCLE> 
    <CODE>TAX</CODE> 
    <AMOUNT>1.48</AMOUNT> 
</TI_DET> 
<TI_DET id="7"> 
    <PRIORYR>2014</PRIORYR> 
    <CYCLE>1</CYCLE> 
    <CODE>TAX</CODE> 
    <AMOUNT>1.31</AMOUNT> 
</TI_DET> 

這裏是我當前的代碼:

<xsl:for-each-group select="/ns1:GetChargesResponse/PROPERTY/TI_DETS/TI_DET" group-by="PRIORYR"> 
     <xsl:sort select="PRIORYR" data-type="text" order="ascending"/> 
     <xsl:for-each-group select="current-group()" group-by="CYCLE"> 
      <xsl:sort select="CYCLE" data-type="text" order="ascending"/> 
      <xsl:for-each-group select="current-group()" group-by="CODE"> 
       <xsl:sort select="CODE" data-type="text" order="ascending"/> 
       <xsl:for-each-group select="current-group()" group-by="AUTH"> 
       <client:Charges> 
        <client:Description> 
        <xsl:value-of select="CODE"/> 
        </client:Description> 
        <client:TaxYear> 
        <xsl:value-of select="PRIORYR"/> 
        </client:TaxYear> 
        <client:Amount> 
        <xsl:value-of select="sum(AMOUNT)"/> 
        </client:Amount> 
        <client:Notes> 
        <xsl:value-of select="concat(PRIORYR,';',ROLLTYPE,';',CYCLE,';',CODE)"/> 
        </client:Notes> 
        <client:RedemptionCertificateNumber> 
        <xsl:value-of select="/ns1:GetChargesResponse/ns1:GetChargesResponse"/> 
        </client:RedemptionCertificateNumber> 
        <client:PayType> 
        <xsl:text disable-output-escaping="no">FUL</xsl:text> 
        </client:PayType> 
        <client:TaxCycle> 
        <xsl:value-of select="CYCLE"/> 
        </client:TaxCycle> 
        </client:Charges> 
        </xsl:for-each-group> 
      </xsl:for-each-group> 
     </xsl:for-each-group> 
    </xsl:for-each-group> 

的思考?

+0

一個有多個組的例子會更有用。 –

回答

0

首先,你有group-by="AUTH" - 但沒有AUTH元素來分組。

另一個原因是,如果要總結當前組,您需要更改:

<xsl:value-of select="sum(AMOUNT)"/> 

到:

<xsl:value-of select="sum(current-group()/AMOUNT)"/> 

否則你將只得到的第一個項目的價值在當前組中。

+0

我認爲可能就是這樣。另外,我想將它配對以減少噪音。非常感激 –

相關問題