[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

Re: [xsl] How to return values from sub-template?


Subject: Re: [xsl] How to return values from sub-template?
From: "Richard Lewis" <richardlewis@xxxxxxxxxxxxxx>
Date: Wed, 01 Dec 2004 10:54:01 +0000

On Wed, 01 Dec 2004 11:44:46 +0100, "Matt Adams" <mattad@xxxxxxxxx>
said:
> Sorry for this newbie question but I didn't found a hint in tutorials on
> how to return
> back parameter values from sub-templates. Assume the following situation.
> I want to pass back the boolean (or other values in other scenarios)
> value if the attribute "age" 
> exists in a node "myelement" with the attribute name="karl". 
> 
> Yes, I know, THIS sample could be coded easier within
> one template but my sample is only a simplified version for a complex
> scenario
> where two templates are required.
> 
> Again, how can I access the value of the variable myval from the calling
> template?
> 
You can't because its created inside the template "subtemp" and in its
context.

> Thank you
> Matt
> 
> <xsl:template match="/">
>    <xsl:call-template name="subtemp">
>      <xsl:with-param name="parm" select="//myelement[@name = 'karl']" />
>    </xsl:call-template>
>    Age exists=<xsl:value-of select="$myval" />  <!-- does not work -->
> </xsl:template>
> 
> <xsl:template name="subtemp">
>   <xsl:param name="parm" />
>     Hello
>   <xsl:variable name="myval" select="exist(@age)" />
>   return $myval
> </xsl:template>
> 		

Just don't use an xsl:variable, return the value directly in the
template:

<xsl:template name="subtemp">
  <xsl:param name="parm" />
    Hello <!-- ? -->
    <xsl:value-of select="exist($parm/@age)" />
</xsl:template>

Richard.
-- 
  Richard Lewis
  richardlewis@xxxxxxxxxxxxxx


Current Thread