This is the mail archive of the xsl-list@mulberrytech.com mailing list .


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: RPN calculator


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]