This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
Re: RPN calculator
- From: Oleg Tkachenko <olegt at multiconn dot com>
- To: xsl-list at lists dot mulberrytech dot com
- Date: Thu, 02 May 2002 14:32:25 +0200
- Subject: Re: [xsl] RPN calculator
- Organization: Multiconn International
- References: <7BC81EA1BAB7D411BEE500306E0014C0018D99F9@evks16.evk.admin.ch>
- Reply-to: xsl-list at lists dot mulberrytech dot com
Costantino.Sertorio@evk.admin.ch wrote:
> I'm trying to do a simple calculator with XSL.
> This means that I would like to transform something like (but I can change
> the source format, this is only an example):
> <multiply>
> <arg1>2</arg1>
> <arg2>3</arg2>
> </multiply>
> This should yeld 6, and it's easy.
> But I would also like to do:
> <multiply>
> <arg1>
> <sum>
> <arg1>1</arg1>
> <arg2>2</arg2>
> </sum>
> </arg1>
> <arg2>3</arg2>
> </multiply>
> ...and so on, recursively. As with an RPN calculator.
> This should yeld (1+2)*3=6.
<xsl:template match="multiply">
<xsl:variable name="arg1">
<xsl:apply-templates select="arg1"/>
</xsl:variable>
<xsl:variable name="arg2">
<xsl:apply-templates select="arg2"/>
</xsl:variable>
<xsl:value-of select="$arg1*$arg2"/>
</xsl:template>
<xsl:template match="sum">
<xsl:variable name="arg1">
<xsl:apply-templates select="arg1"/>
</xsl:variable>
<xsl:variable name="arg2">
<xsl:apply-templates select="arg2"/>
</xsl:variable>
<xsl:value-of select="$arg1+$arg2"/>
</xsl:template>
But it should be much easier using FXSL library, have a look at it.
--
Oleg Tkachenko
Multiconn International, Israel
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list