Subject: [xsl] parametrized return values in recursive functions? From: himanshu padmanabhi <himanshu.padmanabhi@xxxxxxxxx> Date: Fri, 3 Apr 2009 17:56:53 +0530 |
Thanks a ton for all that. <xsl:template match="Services"> <xsl:param name="flag" /> <tr><td> <select name="args1"> <!-- "$value" will contain '--name servicename1'. "$args1" will contain list of all service names SEPARATED BY SPACE obv. including 'servicename1'. so this portion will only print 'servicename1' in combo eliminating '--name' with help of 'flag' condition. I want to capture 'servicename1',so that I can pass it to next tokenize which print all other service names from combo index 1 onwards(0th being 'servicename1').Passing parameter as 'servicename1' will exclude it printing twice in this tokenize --> <xsl:if test="$value"> <xsl:call-template name="str:tokenize"> <xsl:with-param name="args" select="$value" /> <xsl:with-param name="flag" select="1" /> </xsl:call-template> </xsl:if> <xsl:call-template name="str:tokenize"> <xsl:with-param name="args" select="$args1"/> <xsl:with-param name="flag" select="0" /> </xsl:call-template> </select> <td><tr> </xsl:template> <!-- string tokenize function --> <xsl:template name="str:tokenize"> <xsl:param name="args" select="$args" /> <xsl:param name="delimiters" select="' '" /> <xsl:param name="flag" select="$flag" /> <xsl:call-template name="str:_tokenize-delimiters"> <xsl:with-param name="args" select="$args" /> <xsl:with-param name="delimiters" select="$delimiters" /> <xsl:with-param name="flag" select="$flag"/> </xsl:call-template> </xsl:template> <xsl:template name="str:_tokenize-delimiters"> <xsl:param name="args"/> <xsl:param name="delimiters"/> <xsl:param name="pos" select="1"/> <xsl:param name="flag" /> <xsl:variable name="delimiter" select="substring($delimiters, 1, 1)"/> <xsl:variable name="left"> <xsl:choose> <xsl:when test="not(contains($args,$delimiter))"> <xsl:value-of select="$args"/> </xsl:when> <xsl:otherwise> <xsl:value-of select="substring-before($args,$delimiter)"/> </xsl:otherwise> </xsl:choose> </xsl:variable> <xsl:variable name="right" select="substring-after($args,$delimiter)"/> <xsl:if test="$left != ''"> <xsl:if test="not($flag = 1 and $pos = 1)"> <option pos="{$pos}"><xsl:value-of select="$left"/></option> </xsl:if> </xsl:if> <xsl:if test="$right != ''"> <xsl:call-template name="str:_tokenize-delimiters"> <xsl:with-param name="args" select="$right"/> <xsl:with-param name="delimiters" select="$delimiters"/> <xsl:with-param name="pos" select="$pos + 1"/> <xsl:with-param name="flag" select="$flag" /> </xsl:call-template> </xsl:if> </xsl:template> ----------------------------------------------------------------------------- --------------------------------------- I tried using 1. <xsl:if test="$value"> <xsl:variable name="servname"> <xsl:call-template name="str:tokenize"> <xsl:with-param name="args" select="$value" /> <xsl:with-param name="flag" select="1" /> </xsl:call-template> </xsl:variable> </xsl:if> <!-- and passing this variable to next tokenize call which will check and wont double print it --> 2. <xsl:call-template name="str:tokenize"> <xsl:with-param name="args" select="$value" /> <xsl:with-param name="flag" select="1" /> <xsl:with-param name="paramreturnvalue" /> </xsl:call-template> <!-- passing this param to every recursive call and filling this parameter in the tokenize-delimiter template --> Both of these approaches didn't worked. Can you tell me where I went wrong and which approach is better? On Thu, Apr 2, 2009 at 1:34 PM, Michael Kay <mike@xxxxxxxxxxxx> wrote: > > > I just want to ask how to track "position" in recursive > > functions like "str:_tokenize-delimiters"? > > Just give the function another argument, $position, and increment it by one > on each call. > > Michael Kay > http://www.saxonica.com/ > -- --------------------------------- Thanks and Regards, Himanshu Padmanabhi
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] xi:include and XSLT, Jesper Tverskov | Thread | Re: [xsl] parametrized return value, Mukul Gandhi |
[xsl] xi:include and XSLT, Jesper Tverskov | Date | Re: [xsl] AltovaXML bugs? (and othe, Michael Ludwig |
Month |