Subject: Re: [xsl] use choose in call-templates not possble From: henry human <henry_human@xxxxxxxx> Date: Thu, 10 May 2012 14:55:54 +0100 (BST) |
Thanks, It helps! regards H ----- Urspr|ngliche Message ----- Von: G. Ken Holman <gkholman@xxxxxxxxxxxxxxxxxxxx> An: xsl-list@xxxxxxxxxxxxxxxxxxxxxx; "xsl-list@xxxxxxxxxxxxxxxxxxxxxx" <xsl-list@xxxxxxxxxxxxxxxxxxxxxx> CC: Gesendet: 14:33 Donnerstag, 10.Mai 2012 Betreff: Re: [xsl] use choose in call-templates not possble At 2012-05-10 13:25 +0100, henry human wrote: > <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> You do not show how you are working with $factor and that affects the answer. You are passing a node in your old code. If you need a node in the function, then the ways are: In XSLT 1: <xsl:variable name="Fcfactor"> <xsl:choose> <xsl:when test="FCDecimalPlace != ''"> <xsl:call-template name="translateDcml"> <xsl:with-param name="factor" select="FCDecimalPlace"/> </xsl:call-template> </xsl:when> <xsl:otherwise> <xsl:call-template name="translateDcml"> <xsl:with-param name="factor" select="LCDecimalPlace"/> </xsl:call-template> </xsl:otherwise> </xsl:choose> </xsl:variable> In XSLT 2: <xsl:variable name="Fcfactor"> <xsl:call-template name="translateDcml"> <xsl:with-param name="factor" as="node()"> <xsl:choose> <xsl:when test="FCDecimalPlace != ''"> <xsl:sequence select="FCDecimalPlace"/> </xsl:when> <xsl:otherwise> <xsl:sequence select="LCDecimalPlace"/> </xsl:otherwise> </xsl:choose> </xsl:with-param> </xsl:call-template> </xsl:variable> If you need only the value to be passed then this works with both XSLT 1 and XSLT 2 by passing a temporary tree with the value: <xsl:variable name="Fcfactor"> <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> </xsl:variable> The whole key is to put the choice inside the value of the parameter. I hope this helps. . . . . . . . . . Ken -- Public XSLT, XSL-FO, UBL and code list classes in Europe -- Oct 2012 Contact us for world-wide XML consulting and instructor-led training Free 5-hour lecture: http://www.CraneSoftwrights.com/links/udemy.htm Crane Softwrights Ltd. http://www.CraneSoftwrights.com/s/ G. Ken Holman mailto:gkholman@xxxxxxxxxxxxxxxxxxxx Google+ profile: https://plus.google.com/116832879756988317389/about Legal business disclaimers: http://www.CraneSoftwrights.com/legal
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] use choose in call-templa, Vasu Chakkera | Thread | Re: [xsl] use choose in call-templa, Liam R E Quin |
Re: [xsl] use choose in call-templa, Michel Hendriksen | Date | [xsl] A shorter way to test for pos, Dan Acuff |
Month |