Subject: RE: [xsl] passing a variable to call-template From: "David White" <davidw@xxxxxxxxxxx> Date: Fri, 11 Aug 2006 08:03:12 -0500 |
Thanks to everyone for the quick replies! Ya, after looking over the FXSL materials my head is spinning. I'm going to stick with the simple choose statement you mention below. I have XML which looks like this: <warning conformance="alert_hand_in_gears"> <title/> <para/> </warning> And XSLT: <xsl:variable name="this.warning"> <xsl:choose> <xsl:when test="string-length($list) = 0"> <!-- We are done --> </xsl:when> <xsl:when test="contains($list, ' ')"> <xsl:value-of select="substring-before($list, ' ')"/> </xsl:when> <xsl:otherwise> <xsl:value-of select="$list"/> </xsl:otherwise> </xsl:choose> </xsl:variable> <xsl:if test="string-length($this.warning) > 0"> <xsl:choose> <xsl:when test="$this.warning = 'alert_hand_in_gears'"><xsl:call-template name="alert_hand_in_gears"/></xsl:when> <xsl:otherwise><fo:inline color="red" font-size="6pt" width="38pt" font-weight="bold">ART NOT FOUND <xsl:value-of select="$this.warning"/></fo:inline></xsl:otherwise> </xsl:choose> So, I'm hoping to be able to dynamically pull templates based upon the conformance attribute in the XML. This.warning is a template that contains only an SVG. It would be nice to do this dynamically from the XML but looks like its just easier to hard code the values. David White -----Original Message----- From: andrew welch [mailto:andrew.j.welch@xxxxxxxxx] Sent: Friday, August 11, 2006 7:54 AM To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx Subject: Re: [xsl] passing a variable to call-template On 8/11/06, David White <davidw@xxxxxxxxxxx> wrote: > Is this possible? > > <xsl:call-template name="{$this.warning}"/> > > I would like to pass a variable into call-template but haven't had any luck. No this isn't possible as the name attribute must contain a qname, which means it must be known at compile time... the usual way is: <xsl:choose> <xsl:when test="$this.warning = 'red'"> <xsl:call-template name="red"/> </xsl:when> <xsl:when test="$this.warning = 'green'> <xsl:call-template name="green"/> etc... although it's highly likely you can achieve what you are trying to do another way, maybe post some examples showing your requirements and see if there's a better solution... cheers andrew
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] passing a variable to cal, andrew welch | Thread | Re: [xsl] passing a variable to cal, David Carlisle |
Re: [xsl] error/confusion with tran, Florent Georges | Date | Re: [xsl] error/confusion with tran, David Carlisle |
Month |