--On 12 April 2006 14:31 +0100 David Carlisle wrote:
Sorry I have no idea what you mean by this. 9 times out of 10 when
people say they "need a variable" the final solution suggested on the
list doesn't use (or doesn't need to use) variables at all.
I suspect that the idea is to create variables dynamically and evaluate
strings that start with '$' as references to those dynamically created
variables. Unless the object of the exercise really is to invent a new
language and write an interpreter for it in XSLT, a more direct approach is
much easier.
Here is an example that when applied to the example input (when wrapped in
some element) delivers the requested output and perhaps uses the intended
indirections. Note that it uses variables but not for-each or choose, and I
think you could eliminate the variables by using current().
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="/">
<table border="1">
<xsl:apply-templates/>
</table>
</xsl:template>
<xsl:template match="sxa|sya|ffA">
<xsl:variable name="v" select="substring(@position,2)"/>
<xsl:variable name="name" select="substring(../../ec[@name =
$v]/@value,2)"/>
<xsl:variable name="value" select="../../../../ec[@name = $name]/@value"/>
<tr>
<td>
<xsl:value-of select="$name"/>
</td>
<td>
<xsl:value-of select="$value"/>
</td>
</tr>
</xsl:template>
</xsl:stylesheet>
--
Owen Rees
Hewlett Packard Laboratories, Bristol, UK