[XSL-LIST Mailing List Archive Home]
[By Thread]
[By Date]
--On 12 April 2006 14:31 +0100 David Carlisle wrote:
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>
Re: [xsl] xsl:variable inside xsl:for-each
Subject: Re: [xsl] xsl:variable inside xsl:for-each From: Owen Rees <owen.rees@xxxxxx> Date: Wed, 12 Apr 2006 16:22:18 +0100 |
--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
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] xsl:variable inside xsl:f, David Carlisle | Thread | [xsl] Altsoft Xml2PDF 3.0 Released, Altsoft Xml2PDF |
Re: [xsl] xsl:variable inside xsl:f, David Carlisle | Date | Re: [xsl] rephrased: passing parame, Wendell Piez |
Month |
Keywords