XML Editor
Sign up for a WebBoard account Sign Up Keyword Search Search More Options... Options
Chat Rooms Chat Help Help News News Log in to WebBoard Log in Not Logged in
Show tree view Topic
Topic Page 1 2 3 4 5 6 7 8 9 Go to previous topicPrev TopicGo to next topicNext Topic
Postnext
Matt AdamsSubject: How to return values from sub-templates ?
Author: Matt Adams
Date: 01 Dec 2004 05:32 AM
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?

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>

Posttop
James DurningSubject: How to return values from sub-templates ?
Author: James Durning
Date: 02 Dec 2004 07:03 PM
Templates only pass back the value, not any variables. But, you can return nodes within the return value eg.
<xsl:template name="subtemp">
<xsl:param name="parm" />
Hello
<xsl:variable name="myval" select="exist(@age)" />
<xsl:value-of select="$myval"/>
</xsl:template>
However, this would combine Hello, with the other return value.

You could put the return value in a element eg.
<xsl:template name="subtemp">
<xsl:param name="parm" />
Hello
<xsl:variable name="myval" select="exist(@age)" />
<result><xsl:value-of select="$myval"/></result>
</xsl:template>
which would return
Hello<result>myvalue</result>

So you could change your main template to call the template from a variable...:
<xsl:template match="/">
<xsl:variable name="sub">
<xsl:call-template name="subtemp">
<xsl:with-param name="parm" select="//myelement[@name = 'karl']" />
</xsl:call-template>
</xsl:variable>
<xsl:value-of select="$sub"/><!-- outputs 'Hello'/>
Age exists=<xsl:value-of select="$sub/result" /> </xsl:template>

All depends on what you're looking for.

 
Topic Page 1 2 3 4 5 6 7 8 9 Go to previous topicPrev TopicGo to next topicNext Topic
Download A Free Trial of Stylus Studio 6 XML Professional Edition Today! Powered by Stylus Studio, the world's leading XML IDE for XML, XSLT, XQuery, XML Schema, DTD, XPath, WSDL, XHTML, SQL/XML, and XML Mapping!  
go

Log In Options

Site Map | Privacy Policy | Terms of Use | Trademarks
Stylus Scoop XML Newsletter:
W3C Member
Stylus Studio® and DataDirect XQuery ™are from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2016 All Rights Reserved.