|
[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: Applying xsl to a resulttree.
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
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|

Cart








