Muenchian Grouping四舍五入问题

时间:2016-01-20 15:26:52

标签: xml xslt precision muenchian-grouping

我正在使用muenchian分组,但这是四舍五入的值。

Ex:50.00 - > 50         56.90 - > 56.9

这会导致xml使用者出现问题。下面是我的样式表。

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
xmlns:fn="http://www.w3.org/2005/02/xpath-functions"  xmlns:bus="http://ws.fwk.com/business-call"
xmlns:java="http://xml.apache.org/xalan/java" exclude-result-prefixes="fn java">
<xsl:output method="xml" omit-xml-declaration="yes" />

<xsl:template match="@*|node()">
    <xsl:copy>
        <xsl:apply-templates select="@*|node()" />
    </xsl:copy>
</xsl:template>
<xsl:key name="taxgrp" match="bus:VoPaidTax" use="concat(generate-id(..),bus:TaxCode, bus:TaxRate)" />

<xsl:template match="bus:BsAddOrderPaymentRequestPayload/bus:Request/bus:TotalPaidAmount/bus:TaxList">
    <bus:TaxList>            
<xsl:for-each select="bus:VoPaidTax[generate-id()
             = generate-id(key('taxgrp', concat(generate-id(..),bus:TaxCode, bus:TaxRate))[1])]">
   <bus:VoPaidTax>
     <bus:TaxAmount>
       <xsl:value-of select="sum(key('taxgrp', 
                                 concat(generate-id(..),bus:TaxCode, bus:TaxRate))/bus:TaxAmount)"/>
     </bus:TaxAmount>
     <xsl:copy-of select="*[not(self::bus:TaxAmount)]"/>
  </bus:VoPaidTax>
</xsl:for-each>      
   </bus:TaxList>
  </xsl:template> 
</xsl:stylesheet>

下面是输入和输出XML:

<bus:BsAddOrderPaymentRequestPayload xmlns:bus="http://ws.fwk.com/business-call">
<bus:Request>
<bus:TotalPaidAmount>
<bus:GrossAmount>244.16</bus:GrossAmount>
<bus:NetAmount>218.00</bus:NetAmount>
<bus:VatAmount>26.16</bus:VatAmount>
<bus:TaxList>
<bus:VoPaidTax>
<bus:TaxAmount>4.45</bus:TaxAmount>
<bus:TaxCode>10</bus:TaxCode>
<bus:TaxRate>0.05</bus:TaxRate>
<bus:TaxType>GST</bus:TaxType>
</bus:VoPaidTax>
<bus:VoPaidTax>
<bus:TaxAmount>6.23</bus:TaxAmount>
<bus:TaxCode>12</bus:TaxCode>
<bus:TaxRate>0.07</bus:TaxRate>
<bus:TaxType>PST</bus:TaxType>
</bus:VoPaidTax>
<bus:VoPaidTax>
<bus:TaxAmount>6.45</bus:TaxAmount>
<bus:TaxCode>10</bus:TaxCode>
<bus:TaxRate>0.05</bus:TaxRate>
<bus:TaxType>GST</bus:TaxType>
</bus:VoPaidTax>
<bus:VoPaidTax>
<bus:TaxAmount>9.03</bus:TaxAmount>
<bus:TaxCode>12</bus:TaxCode>
<bus:TaxRate>0.07</bus:TaxRate>
<bus:TaxType>PST</bus:TaxType>
</bus:VoPaidTax>
</bus:TaxList>
</bus:TotalPaidAmount>
</bus:Request>
</bus:BsAddOrderPaymentRequestPayload>

输出XMl:

<bus:BsAddOrderPaymentRequestPayload xmlns:bus="http://ws.fwk.com/business-call">
<bus:Request>
<bus:TotalPaidAmount>
<bus:GrossAmount>244.16</bus:GrossAmount>
<bus:NetAmount>218.00</bus:NetAmount>
<bus:VatAmount>26.16</bus:VatAmount>
<bus:TaxList>
<bus:VoPaidTax>
<bus:TaxAmount>10.9</bus:TaxAmount>
<bus:TaxCode>10</bus:TaxCode>
<bus:TaxRate>0.05</bus:TaxRate>
<bus:TaxType>GST</bus:TaxType>
</bus:VoPaidTax>
<bus:VoPaidTax>
<bus:TaxAmount>15.26</bus:TaxAmount>
<bus:TaxCode>12</bus:TaxCode>
<bus:TaxRate>0.07</bus:TaxRate>
<bus:TaxType>PST</bus:TaxType>
</bus:VoPaidTax>
</bus:TaxList>
</bus:TotalPaidAmount>
</bus:Request>
</bus:BsAddOrderPaymentRequestPayload>

当我应用数字格式化程序时,分组不再有效并产生奇怪的结果。 分组函数也将舍入值减少到.01。 例如:41.67 + 17.17 = 58.84

但正在四舍五入到58.83。

先谢谢!!

0 个答案:

没有答案