xsl-list
[Top] [All Lists]

Re: [xsl] Passing parameter into tag name

2017-04-12 08:11:29
On 12.04.2017 15:06, Steve Wisniewski stevewiz76(_at_)yahoo(_dot_)com wrote:

<foo>
<Level>
<Level_No>1</Level_No>
</Level>
<Level>
<Level_No>2</Level_No>
</Level>
<Level>
<Level_No>3</Level_No>
</Level>
<Cost ID='1'>
<Level_1_Amt>100</Level_1_Amt>
<Level_2_Amt>200</Level_2_Amt>
<Level_3_Amt>300</Level_3_Amt>
</Cost>
<Cost ID='2'>
<Level_1_Amt>50</Level_1_Amt>
<Level_2_Amt>100</Level_2_Amt>
<Level_3_Amt>150</Level_3_Amt>
</Cost>
<Cost ID='3'>
<Level_1_Amt>175</Level_1_Amt>
</Cost>
<Cost ID='4'>
<Level_3_Amt>400</Level_3_Amt>
</Cost>
</foo>

I am trying to sum up the amounts in the following code, but am getting
a syntactical error about how I am trying to pass the parameter value
into the tag name:

<xsl:stylesheet version="2.0" xmlns="http://www.w3.org/1999/xhtml";
xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
xmlns:xs="http://www.w3.org/2001/XMLSchema";>
<xsl:output method="xml" indent="yes"/>

<xsl:template name="buildLevel">
<xsl:param name="levelNum"/>
<Level_Amt>
<xsl:value-of select="sum(/Story/Level_{$levelNum}_Amt)"/>

You need to check the name with e.g.
   sum(/Story/*[local-name() = concat('Level_', $levelNum, '_Amt')])

--~----------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
EasyUnsubscribe: http://lists.mulberrytech.com/unsub/xsl-list/1167547
or by email: xsl-list-unsub(_at_)lists(_dot_)mulberrytech(_dot_)com
--~--

<Prev in Thread] Current Thread [Next in Thread>