Subject: Re: [xsl] Applying xsl to a resulttree. From: Mike Brown <mike@xxxxxxxx> Date: Thu, 12 Dec 2002 11:07:01 -0700 (MST) |
jborella@xxxxxxx wrote: > Is it possible to apply the same template more than once to some xml? > For instance evaluating: > > <calculation name="calc0" type="+"> > <calculation type="ref" ref="calc1"/> > </calculation> > <calculation name="calc1" type="-"> > <calculation type="value" ref="2"/> > <calculation type="value" ref="4"/> > </calculation> > > should be done by evaluating "calc1" first then "calc0" using the result > from "calc1". You should use a recursive, functional approach. See if you can follow the logic here... <?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="xml" indent="no"/> <xsl:template match="/"> <result> <xsl:apply-templates select="data/calculation[@name='calc0']"/> </result> </xsl:template> <xsl:template match="calculation[@name]"> <xsl:variable name="operand1"> <xsl:apply-templates select="calculation[1]"/> </xsl:variable> <xsl:variable name="operand2"> <xsl:choose> <xsl:when test="calculation[2]"> <xsl:apply-templates select="calculation[2]"/> </xsl:when> <xsl:otherwise>0</xsl:otherwise> </xsl:choose> </xsl:variable> <xsl:choose> <xsl:when test="@type='+'"> <xsl:value-of select="$operand1 + $operand2"/> </xsl:when> <xsl:when test="@type='-'"> <xsl:value-of select="$operand1 - $operand2"/> </xsl:when> <xsl:otherwise>0</xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template match="calculation[@ref]"> <xsl:choose> <xsl:when test="@type='value'"> <xsl:value-of select="@ref"/> </xsl:when> <xsl:when test="@type='ref'"> <xsl:choose> <xsl:when test="../../calculation[@name=current()/@ref]"> <xsl:apply-templates select="../../calculation[@name=current()/@ref]"/> </xsl:when> <xsl:otherwise>0</xsl:otherwise> </xsl:choose> </xsl:when> <xsl:otherwise>0</xsl:otherwise> </xsl:choose> </xsl:template> </xsl:stylesheet> Mike -- Mike J. Brown | http://skew.org/~mike/resume/ Denver, CO, USA | http://skew.org/xml/ XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
<- Previous | Index | Next -> |
---|---|---|
[xsl] Applying xsl to a resulttree., jborella | Thread | Re: [xsl] Applying xsl to a resultt, jborella |
RE: [xsl] need help with boolean co, Cross, Neal - Develo | Date | Re: [xsl] About validating post xsl, Mike Brown |
Month |