xsl-list
[Top] [All Lists]

RE: [xsl] Assigning value to variable based on xsl:choose test

2006-07-24 02:09:12
This is a FAQ. The problem with your code is that instead of creating one
variable with two possible values, it creates two different variables, and
of course they both go out of scope. The solution is

<xsl:variable name="X">
  <xsl:choose>
    <xsl:when test="....">8</xsl:when>
    <xsl:when test="....">4</xsl:when>
  </xsl:choose>
</xsl:variable>

In XSLT 2.0 you can also write

<xsl:variable name="X" select="if (...) then 8 else 4"/>

I've no idea where xsl:attribute might come into the picture, but perhaps
that's best not asked. xsl:attribute is an instruction that creates
attribute nodes in the result tree.

Michael Kay
http://www.saxonica.com/

 

-----Original Message-----
From: David Murphy [mailto:david(_at_)firechaser(_dot_)com] 
Sent: 24 July 2006 10:08
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: [xsl] Assigning value to variable based on xsl:choose test

Hello

Is it possible to set the value of a variable based upon a test?

My first effort is below, and I also tried to assign the 
value to the variable using xsl:attribute but that doesn't 
work either.

<xsl:choose>
      <xsl:when test="price_type = 56"><xsl:variable name="numTickets"
select="8"/></xsl:when>
      <xsl:when test="price_type = 57"><xsl:variable name="numTickets"
select="4"/></xsl:when>
      <xsl:otherwise><xsl:variable name="numTickets"
select="9"/></xsl:otherwise>
</xsl:choose>

...

<xsl:call-template name="counter">
      <xsl:with-param name="max" select="$numTickets"/> 
</xsl:call-template>


I'm guessing that one cannot assign values to variables 
inline like this, but I've not managed to get it working so a 
bit of guidance that will help me work this out would be much 
appreciated.

Regards, David

--~------------------------------------------------------------------
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>
--~--



--~------------------------------------------------------------------
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>
--~--

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