sbutt 0 Newbie Poster

Hi Folks,
I am using XSLT 1.0, and stuck in a situation where I am having decimal rounding problem. Let me give you an example:

My generated XML is:

<?xml version="1.0" encoding="UTF-8"?>
<CostSummary>
<CostingItems>
  <CostingItem CostBasis="7" Description="Per Person" PassengerRPH="1">
   <UnitCost Amount="3.333333" CurrencyCode="EUR"/>
  </CostingItem>
  <CostingItem CostBasis="7" Description="Per Person" PassengerRPH="2">
   <UnitCost Amount="3.333333" CurrencyCode="EUR"/>
  </CostingItem>
  <CostingItem CostBasis="7" Description="Per Person" PassengerRPH="2">
   <UnitCost Amount="3.333333" CurrencyCode="EUR"/>
  </CostingItem>
</CostingItems>
<GrossAmount Amount="10.00" CurrencyCode="EUR"/>
</CostSummary>

My requirement is that the GrossAmount (10), should always be equal to the sum of all the UnitCost Amounts.

In the above xml, each UnitCost Amount is generated by GrossAmount/No. of CostingItem >> 10/3= 3.33333.

Hence in order to resolve this problem, I have decided to roundup the values to 2 decimal places and adjust the difference in the last CostingItem's UnitCost.

For example:

<?xml version="1.0" encoding="UTF-8"?>
<CostSummary>
<CostingItems>
  <CostingItem CostBasis="7" Description="Per Person" PassengerRPH="1">
   <UnitCost Amount="3.34" CurrencyCode="EUR"/>
  </CostingItem>
  <CostingItem CostBasis="7" Description="Per Person" PassengerRPH="2">
   <UnitCost Amount="3.34" CurrencyCode="EUR"/>
  </CostingItem>
  <CostingItem CostBasis="7" Description="Per Person" PassengerRPH="2">
   <UnitCost Amount="3.32" CurrencyCode="EUR"/>
  </CostingItem>
</CostingItems>
<GrossAmount Amount="10.00" CurrencyCode="EUR"/>
</CostSummary>

So could someone please help me out in creating the xslt script for the above scenario? I am currently using xslt 1.0.

Thanks.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of 1.20 million developers, IT pros, digital marketers, and technology enthusiasts learning and sharing knowledge.