Re: [xsl] use choose in call-templates not possble

Subject: Re: [xsl] use choose in call-templates not possble
From: Wendell Piez <wapiez@xxxxxxxxxxxxxxxx>
Date: Thu, 10 May 2012 11:10:07 -0400
Hi,

On 5/10/2012 8:34 AM, TW wrote:
I am doing this
    <xsl:variable name="Fcfactor">
       <xsl:call-template name="translateDcml">
       <xsl:choose>
       <xsl:when test="FCDecimalPlace  != ''">


<xsl:with-param name="factor" select="FCDecimalPlace"/>


       <xsl:otherwise>
       <xsl:with-param name="factor" select="LCDecimalPlace"/>
         </xsl:otherwise>
         </xsl:choose>
      </xsl:call-template>
      </xsl:variable>


Like Ken suggested, do this instead:


<xsl:call-template name="translateDcml">
   <xsl:with-param name="factor">
     <xsl:choose>
       <xsl:when test="FCDecimalPlace  != ''">
         <xsl:value-of select="FCDecimalPlace"/>
       </xsl:when>
       <xsl:otherwise>
         <xsl:value-of select="LCDecimalPlace"/>
       </xsl:otherwise>
     </xsl:choose>
   </xsl:with-param>
</xsl:call-template>

Or (XSLT 2.0):


<xsl:with-param name="factor"
  select="(FCDecimalPlace[.!=''],LCDecimalPlace)[1]"/>

But probably better

select="(FCDecimalPlace[string(.)],LCDecimalPlace)[1]"/>

Or (XSLT 1.0)

<xsl:with-param name="factor"
  select="FCDecimalPlace[normalize-space()] |
    LCDecimalPlace)[not(normalize-space(current()/FCDecimalPlace)]"/>

Cheers,
Wendell


-- ====================================================================== Wendell Piez mailto:wapiez@xxxxxxxxxxxxxxxx Mulberry Technologies, Inc. http://www.mulberrytech.com 17 West Jefferson Street Direct Phone: 301/315-9635 Suite 207 Phone: 301/315-9631 Rockville, MD 20850 Fax: 301/315-8285 ---------------------------------------------------------------------- Mulberry Technologies: A Consultancy Specializing in SGML and XML ======================================================================

Current Thread