RE: [xsl] RPN calculator

Subject: RE: [xsl] RPN calculator
From: "Michael Kay" <michael.h.kay@xxxxxxxxxxxx>
Date: Thu, 2 May 2002 14:24:06 +0100
Looks easy to me:

<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>

<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="arg1|arg2">
  <xsl:apply-templates/>
</xsl:template>

What's reverse polish notation got to do with it?

Michael Kay
Software AG
home: Michael.H.Kay@xxxxxxxxxxxx
work: Michael.Kay@xxxxxxxxxxxxxx 

> -----Original Message-----
> From: owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> [mailto:owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx]On Behalf Of
> Costantino.Sertorio@xxxxxxxxxxxx
> Sent: 02 May 2002 12:02
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: [xsl] RPN calculator
> 
> 
> Hello,
> 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.
> 
> Can anybody point me in the right direction? How can I do this?
> 
> Thank you,
> 
> Costantino
> 
>  XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
> 
> 

 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Current Thread