Subject: RE: [xsl] Decimal precision From: "Jim Neff" <jneff@xxxxxxxxxxxxxxx> Date: Wed, 2 Feb 2005 16:47:02 -0500 |
Thank you for your response Michael. Below is my stylesheet. I'm using Saxon 8.? > So summing a set of money amounts should give you the right > answer without any rounding errors. > > Michael Kay I am getting rounding errors still. Is there something I am not doing correctly to get this to "auto-detect" decimals for version 2 ? I've gotten around this with the format-number function for now. I was just wondering why this didn't work for me as expected. I am not using Schemas. Do I need to, or is there a way to tell the Sum() function to make sure it treats claim_line/reimbursement_amount as a decimal? I tried sum(xs:decimal(claim_line/reimbursement_amount)) but the parser told me where to go with that. Or do I just need to break down and learn Schemas? Here is my stylesheet: <xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0" xmlns:xs="http://www.w3.org/2001/XMLSchema" exclude-result-prefixes="xs"> <xsl:output method="xml" indent="yes"/> <xsl:strip-space elements="*"/> <xsl:template match="claim_file"> <xsl:element name="file_root"> <xsl:apply-templates select="provider" > <xsl:sort select="provider_number" order="ascending" data-type="number"/> </xsl:apply-templates> </xsl:element> </xsl:template> <xsl:template match="provider"> <xsl:element name="provider"> <xsl:element name="claim_sum"> <xsl:value-of select="sum(claim/claim_line/reimbursement_amount)"/> </xsl:element> </xsl:element> </xsl:template> </xsl:transform> Sample input xml document: <?xml version="1.0" encoding="UTF-8"?> <claim_file> <provider> <provider_number>123456</provider_number> <claim> <claim_line> <reimbursement_amount>45.00</reimbursement_amount> </claim_line> <claim_line> <reimbursement_amount>23.95</reimbursement_amount> </claim_line> <claim_line> <reimbursement_amount>56.36</reimbursement_amount> </claim_line> </claim> <claim> <claim_line> <reimbursement_amount>45.00</reimbursement_amount> </claim_line> <claim_line> <reimbursement_amount>23.95</reimbursement_amount> </claim_line> <claim_line> <reimbursement_amount>37.04</reimbursement_amount> </claim_line> </claim> <claim> <claim_line> <reimbursement_amount>45.00</reimbursement_amount> </claim_line> <claim_line> <reimbursement_amount>23.95</reimbursement_amount> </claim_line> <claim_line> <reimbursement_amount>37.04</reimbursement_amount> </claim_line> </claim> <claim> <claim_line> <reimbursement_amount>45.00</reimbursement_amount> </claim_line> <claim_line> <reimbursement_amount>23.95</reimbursement_amount> </claim_line> <claim_line> <reimbursement_amount>43.00</reimbursement_amount> </claim_line> </claim> </provider> My output is: <?xml version="1.0" encoding="UTF-8"?> <file_root> <provider> <claim_sum>449.23999999999995</claim_sum> </provider> </file_root>
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] Decimal precision, Michael Kay | Thread | RE: [xsl] Decimal precision, Michael Kay |
RE: [xsl] Decimal precision, Michael Kay | Date | [xsl] position(), Alan |
Month |