Subject: Re: [xsl] go from double to integer OR show just 1 or 0 decimals From: Christian Rasmussen <byggemandbob@xxxxxxxxx> Date: Thu, 28 Jul 2005 09:57:01 +0200 |
Hi again, Thanks for explanation - however, I cannot make it work, and I'm struggling to understand this line: <xsl:variable name="pic" select="$formats/format[unitCode = current()/../@unitCode]/@picture"/> To me, it seems that here are too many backward-steps: /../ shouldn't it be ../ instead? I'm using the following sample XML, and it spits out 6.00 no matter what the unitCode is: XML: ==== <?xml version="1.0" encoding="UTF-8"?> <members> <ThroughputStructure unitCode="kg"> <InputQuantity>6.00</InputQuantity> <OutputQuantity>28.00</OutputQuantity> </ThroughputStructure> </members> XSL: ==== <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format"> <xsl:variable name="formats"> <format unitCode="months" picture="#0"/> <format unitCode="kg" picture="0.###"/> </xsl:variable> <xsl:template match="members"> members-template is matched! <xsl:apply-templates select="ThroughputStructure"></xsl:apply-templates> </xsl:template> <xsl:template match="members/ThroughputStructure"> <xsl:apply-templates select="InputQuantity"></xsl:apply-templates> Throughput-template is matched! </xsl:template> <xsl:template match="members/ThrougputStructure/InputQuantity"> <xsl:variable name="pic" select="$formats/format[unitCode =current()/../@unitCode]/@picture"/> <xsl:value-of select="format-number(., $pic)"/> </xsl:template> </xsl:stylesheet> On beforehand, thanx for helping :-) /Christian On 7/28/05, Michael Kay <mike@xxxxxxxxxxxx> wrote: > The neat way to do this is > > <xsl:variable name="formats"> > <format unitCode="months" picture="#0"/> > <format unitCode="kg" picture="0.###"/> > </xsl:variable> > > <xsl:template match="gr:InputQuantity"> > <xsl:variable name="pic" select="$formats/format[unitCode = > current()/../@unitCode]/@picture"/> > <xsl:value-of select="format-number(., $pic)"/> > </xsl:template> > > Michael Kay > http://www.saxonica.com/ > > > -----Original Message----- > > From: Christian Rasmussen [mailto:byggemandbob@xxxxxxxxx] > > Sent: 27 July 2005 22:34 > > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx > > Subject: [xsl] go from double to integer OR show just 1 or 0 decimals > > > > Hi Experts, > > > > I have a som xml like this: > > > > > > <gr:ThroughputStructure unitCode="months"> > > <gr:InputQuantity>6.00</gr:InputQuantity> > > <gr:OutputQuantity>28.00</gr:OutputQuantity> > > </gr:ThroughputStructure> > > > > The unitCode attribute of ThroughputStructure is enummerations and can > > hold one of following values: > > - days > > - months > > - kg > > - numbers > > > > The inputQuantity and OutputQuantity is double types, mainly because > > of situations where the unitCode is numbers or kg, but if the unitCode > > is days or months, there is really no need for two decimals. > > > > What I would like to do is: > > > > make a template that matches InputQuantity and OutputQuantity, and if > > the ../ThroughputStructure/@unitCode is months or days, then the > > format for the inputQuantity OutputQuantity need just to be integer or > > double without decimals (then there should be som round up...new > > problem, how is that done?). > > > > Is that possible? Is it possible to round up the decimals and just > > show one, or strip them totally, or convert to integer? > > > > Help is very much appreciated :-) > > > > on beforehand, thank you! > > > > /Christian Rasmussen
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] go from double to integer, Michael Kay | Thread | Re: [xsl] go from double to integer, David Carlisle |
RE: [xsl] Assign if-test result val, Torsten Schassan | Date | Re: [xsl] Validating XML file exter, Tammo Wenterodt |
Month |