2016-09-26 4 views
1

for-each-group을 사용하여 값을 요약하려고했지만 for-each-group이 모든 요소를 ​​반환하지 않는 것 같습니다. PRIORYR, CYCLE 및 CODE의 고유 한 조합을 기준으로 그룹화하고 합계하려고합니다. 현재 코드는 첫 번째 TI_DET 요소 만 가져옵니다. 여기xslt 2.0 for-each-group이 모든 요소를 ​​반환하지 않음

<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> 

그리고 내 현재 코드입니다 : 여기에 입력 XML은

<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(current-group()/AMOUNT)"/> 

:

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

에 : 현재 그룹을 요약하려는 경우 서로에 대한

는, 당신은 변경해야 현재 그룹.

+0

그럴지도 모르겠습니다. 또한 노이즈를 줄이기 위해 페어링하기를 원했습니다. 매우 감사 –