Subject: RE: [xls] run-time variable name generation (e.g. "double de-referencing" {$($name)} )
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Mon, 11 May 2009 00:00:03 +0100
|
No, you can't do this. (I can't think of any language where you can, except
some languages where variables are nothing more than macros, e.g. some OS
script languages).
Take a look at FXSL, which allows you to simulate higher-order functions. If
you replace your variables with zero-argument functions, then you can
effectively pass the function around as a first-class value.
Real higher-order functions have now been defined and accepted for inclusion
in XQuery 1.1 and I think it's likely that a future XSLT version will follow
suit (though the decisions haven't yet been made).
Regards,
Michael Kay
http://www.saxonica.com/
http://twitter.com/michaelhkay
> -----Original Message-----
> From: Mtekel [mailto:thx@xxxxxxxxx]
> Sent: 10 May 2009 23:45
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: [xls] run-time variable name generation (e.g.
> "double de-referencing" {$($name)} )
>
> Hello,
>
> 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)
>
>
> Once again,
>
> Thanks for any advice.
>
> Michael
|