xsl-list
[Top] [All Lists]

re: [xsl] [xls] run-time variable name generation (e.g. "double de-referencing" {$($name)} )

2009-05-12 01:24:21
I have a question again, this time concerning variables.
Can I generate variable name run-time?
Let's say I have:

<xsl:variable name="A" select="100"/>
<xsl:variable name="B" select="BBB"/>

<xsl:variable name="var" select="'A'"/>
<xsl:variable name="VAR" select="concat('$',$var)"/>

and now I would like this     (or what else could I use that would work?)

<xsl:value-of select="$VAR"/>

would give output 100, not $A 

Is this possible or doable any way?
Maybe with some other type than variables?
Or with some other methods at all?

(From functional lang. point of view this is st. like dereferencing 
double
pointer: the first points to variable name, the variable name then points 
to
data)

I can advice on template to resolve variable indirectly:

<xsl:variable name="A" select="100"/>
<xsl:variable name="B" select="BBB"/>

<xsl:template mode="t:get-var" match="A">
  <xsl:sequence select="$A"/>
</xsl:template>

<xsl:template mode="t:get-var" match="B">
  <xsl:sequence select="$A"/>
</xsl:template>

...

<xsl:variable name="VAR" as="element()">
  <xsl:element name="{$var}"/>
</xsl:variable/>

<xsl:variable name="value" as="item()">
  <xsl:apply-templates mode="t:get-var" select="$var"/>
</xsl:variable>

--
Vladimir Nesterovsky
http://www.nesterovsky-bros.com/



--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--