Subject: RFC: [xsl] Recursive Template Improvements/Suggestions ?? From: "Bovy, Stephen J" <STEPHEN.Bovy@xxxxxx> Date: Thu, 2 Jun 2005 20:15:54 -0400 |
Any suggestions for improvement would be greatly appreciated !!! <script tag > var btxt = ""; // frame 3 table body text function bt ( tg ) { btxt += tg; } // concatenate text function // write table body frame 3 function body ( ) { bt('<html> '); ( ... ) < apply templates > ( ... ) return btxt; } // end of table body frame 3 <end script tag> <xsl:template match="/*/*/*" > bt('<td align="center" nowrap="nowrap"> '); <xsl:call-template name="repQuote"> <xsl:with-param name="tbef" select="string('')"/> <xsl:with-param name="taft" select="."/> <xsl:with-param name="stop" select="0"/> </xsl:call-template> bt('</td> '); </xsl:template> Here is my XSL recursive template function: <!-- recursive function to escape quote in --> <!-- javaScript string literal assignment --> <xsl:template name="repQuote"> <xsl:param name="tbef"/> <xsl:param name="taft"/> <xsl:param name="stop"/> <xsl:choose> <xsl:when test="$stop=0"> <xsl:choose> <xsl:when test="contains($taft,'"')"> <xsl:variable name="xx"> <xsl:value-of select="substring-before($taft,'"')"/> </xsl:variable> <xsl:variable name="yy"> <xsl:value-of select="substring-after($taft,'"')"/> </xsl:variable> <xsl:variable name="zz"> <xsl:value-of select="concat($xx,'\"')"/> </xsl:variable> <xsl:call-template name="repQuote"> <xsl:with-param name="tbef" select="concat($tbef,$zz)"/> <xsl:with-param name="taft" select="$yy"/> <xsl:with-param name="stop" select="0"/> </xsl:call-template> </xsl:when> <xsl:otherwise> <xsl:call-template name="repQuote"> <xsl:with-param name="tbef" select="concat($tbef,$taft)"/> <xsl:with-param name="taft" select="string('')"/> <xsl:with-param name="stop" select="1"/> </xsl:call-template> </xsl:otherwise> </xsl:choose> </xsl:when> <xsl:otherwise> bt("<xsl:value-of select="$tbef"/>"); </xsl:otherwise> </xsl:choose> </xsl:template> Any suggestions for improvement would be greatly appreciated !!! -----Original Message----- From: JBryant@xxxxxxxxx [mailto:JBryant@xxxxxxxxx] Sent: Thursday, June 02, 2005 2:43 PM To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx Subject: [xsl] Re:[xsl] Recursive Template ?? If you dig around in the archives, you'll find oodles of them. The general principle works like this: <xsl:template name="someTemplate"> <xsl:param name="someParam"/> <!-- do some processing --> <xsl:if test="not(someStopCondition)" <xsl:call-template name="someTemplate"> <xsl:with-param name="someParam" select="someValue"/> </xsl:call-template> </xsl:if> </xsl:template> Endless variations exist, but they all come down to the following proposition: recuse as many times as needed until some stop condition is met. HTH Jay Bryant Bryant Communication Services (presently consulting at Synergistic Solution Technologies) "Bovy, Stephen J" <STEPHEN.Bovy@xxxxxx> 06/02/2005 04:32 PM Please respond to xsl-list@xxxxxxxxxxxxxxxxxxxxxx To <xsl-list@xxxxxxxxxxxxxxxxxxxxxx> cc Subject Spam:[xsl] Recursive Template ?? Is it possible to create a "recursive" template that works in the same way as a recursive function call ???
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] Recursive Template ??, Michael Kay | Thread | Re: RFC: [xsl] Recursive Template I, David Carlisle |
Re: [xsl] Param Element, David Carlisle | Date | Re: [xsl] Param Element, Karl Stubsjoen |
Month |