xsl-list
[Top] [All Lists]

RE: problem using dyn:evaluate with MSXML

2004-12-16 09:37:24
Michael Kay writes:
Matthieu Ricaud writes:
I define a variable $y containing an Xpath expression laike this :

    <xsl:variable name="y" select"'@my_attribute'">

Calling
     <xsl:value-of select="dyn:evaluate(., $y)"/>
works fine and give me the attribute value.

The problem I have is that when I define $y like this :

    <xsl:variable name="y">@num</xsl:variable>

(Which is to me exactly the same definition as before)
then I get a error !
The HTML page cannot be loaded. 

The two expressions are not at all the same. In one, the variable is a
string, in the other it is a result tree fragment. XPath automatically
converts a result tree fragment to a string when required (probably at
considerable cost), but Javascript does not.

What is the recommended way to define a string-valued variable computed
by a conditional instruction?  Here's an example from a stylesheet I'm
working on:

  <xsl:variable name="source">
    <xsl:choose>
      <xsl:when test="$kind >= 0 and $kind &lt; 5000">
        <xsl:value-of select="format-number('01','00')"/>
      </xsl:when>
      <xsl:when test="$kind >= 5000 and $kind &lt; 6000">
        <xsl:value-of select="format-number('20','00')"/>
      </xsl:when>
      <xsl:when test="$kind >= 6000">
        <xsl:value-of select="format-number('30','00')"/>
      </xsl:when>
      <xsl:when test="$kind = 'NATO'">
        <xsl:value-of select="format-number('40','00')"/>
      </xsl:when>
      <xsl:otherwise>
        <xsl:value-of select="format-number('05','00')"/>
      </xsl:otherwise>
    </xsl:choose>
  </xsl:variable>

Also, what is the recommended way to define an empty string-valued
variable?

  <xsl:variable name="foo"/>
  <xsl:variable name="foo" select="''"/>
  <!-- or something else? -->

-- 
Kevin Rodgers


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