This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
Re: XSLT: decorating a grammatical tree
- To: xsl-list at mulberrytech dot com
- Subject: Re: XSLT: decorating a grammatical tree
- From: David Carlisle <davidc at nag dot co dot uk>
- Date: Wed, 10 May 2000 16:56:10 +0100 (BST)
- References: <69A1202FA707D411AA3E00508BCF7E54C8DA12@cedelbank.com>
- Reply-To: xsl-list at mulberrytech dot com
<exp>
<add-exp>
<add-exp>
<mult-exp>
<primary-exp>
<literal value="2"/>
</primary-exp>
</mult-exp>
</add-exp>
<op-add/>
<mult-exp>
<primary-exp>
<literal value="3"/>
</primary-exp>
</mult-exp>
</add-exp>
</exp>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0"
>
<xsl:output method="xml" indent="yes"/>
<xsl:template match="add-exp[op-add]" mode="value">
<xsl:variable name="x">
<xsl:apply-templates select="*[1]" mode="value"/>
</xsl:variable>
<xsl:variable name="y">
<xsl:apply-templates select="*[3]" mode="value"/>
</xsl:variable>
<xsl:value-of select="$x + $y"/>
</xsl:template>
<xsl:template match="add-exp[op-sub]" mode="value">
<xsl:variable name="x">
<xsl:apply-templates select="*[1]" mode="value"/>
</xsl:variable>
<xsl:variable name="y">
<xsl:apply-templates select="*[3]" mode="value"/>
</xsl:variable>
<xsl:value-of select="$x - $y"/>
</xsl:template>
<xsl:template match="primary-exp[op-mult]" mode="value">
<xsl:variable name="x">
<xsl:apply-templates select="*[1]" mode="value"/>
</xsl:variable>
<xsl:variable name="y">
<xsl:apply-templates select="*[3]" mode="value"/>
</xsl:variable>
<xsl:value-of select="$x * $y"/>
</xsl:template>
<xsl:template match="literal" mode="value">
<xsl:value-of select="number(@value)"/>
</xsl:template>
<xsl:template match="*" mode="value">
<xsl:apply-templates select="*" mode="value"/>
</xsl:template>
<xsl:template match="*">
<xsl:copy>
<xsl:attribute name="value">
<xsl:apply-templates select="." mode="value"/>
</xsl:attribute>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>
<xsl:template match="op-add|op-sub|op-mult">
<xsl:copy>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
bash-2.01$ xt exp.xml exp.xsl
<?xml version="1.0" encoding="utf-8"?>
<exp value="5">
<add-exp value="5">
<add-exp value="2">
<mult-exp value="2">
<primary-exp value="2">
<literal value="2"/>
</primary-exp>
</mult-exp>
</add-exp>
<op-add/>
<mult-exp value="3">
<primary-exp value="3">
<literal value="3"/>
</primary-exp>
</mult-exp>
</add-exp>
</exp>
bash-2.01$
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list