Re: [xsl] RPN calculator

Subject: Re: [xsl] RPN calculator
From: Oleg Tkachenko <olegt@xxxxxxxxxxxxx>
Date: Thu, 02 May 2002 14:32:25 +0200
Costantino.Sertorio@xxxxxxxxxxxx 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



Current Thread