Subject: [xsl] Re: Re: Re: lookup-table thoughts (was Re: matching multiple times, outputting once? From: Dimitre Novatchev <dnovatchev@xxxxxxxxx> Date: Wed, 7 Nov 2001 06:00:55 -0800 (PST) |
Jeni Tennison <jeni at jenitennison dot com> wrote: David, [reply to David skipped] And for Dimitre: > <xsl:template name="writeLines"> > <xsl:param name="number" select="1000" /> > <xsl:param name="line"> > I should understand loops as being syntax for a simple form of > recursion. > </xsl:param> > <xsl:choose> > <xsl:when test="not($number mod 5)"> > <xsl:call-template name="writeLines"> > <xsl:with-param name="number" select="$number div 5" /> > <xsl:with-param name="line" > select="concat($line, $line, $line, $line, $line)" /> > </xsl:call-template> > </xsl:when> > <xsl:when test="not($number mod 2)"> > <xsl:call-template name="writeLines"> > <xsl:with-param name="number" select="$number div 2" /> > <xsl:with-param name="line" select="concat($line, $line)" /> > </xsl:call-template> > </xsl:when> > <xsl:otherwise> > <xsl:value-of select="$line" /> > </xsl:otherwise> > </xsl:choose> > </xsl:template> Obviously Jeni's reflection of me needs updating... <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:pGenerator="pGenerator" xmlns:pController="pController" exclude-result-prefixes="xsl pGenerator pController" > <xsl:import href="buildListWhile.xsl"/> <xsl:output indent="yes" omit-xml-declaration="yes"/> <pGenerator:pGenerator/> <pController:pController/> <xsl:variable name="vMyGenerator" select="document('')/*/pGenerator:*[1]"/> <xsl:variable name="vMyController" select="document('')/*/pController:*[1]"/> <xsl:template match="/"> <xsl:call-template name="buildListWhile"> <xsl:with-param name="pGenerator" select="$vMyGenerator"/> <xsl:with-param name="pController" select="$vMyController"/> <xsl:with-param name="pContollerParam" select="1000"/> <xsl:with-param name="pElementName" select="'indoctrinate'"/> </xsl:call-template> </xsl:template> <xsl:template name="listGenerator" match="*[namespace-uri()='pGenerator']"> <xsl:param name="pList" select="/.."/> <xsl:param name="pParams"/> I should understand loops as being syntax for a simple form of recursion. </xsl:template> <xsl:template name="listController" match="*[namespace-uri()='pController']"> <xsl:param name="pList" select="/.."/> <xsl:param name="pParams"/> <xsl:if test="count($pList) <= $pParams">1</xsl:if> </xsl:template> </xsl:stylesheet> As you can notice, the "buildListWhile" function (oopsss... template) is generic enough to incorporate any future indoctrinations. Actually its real purpose is to help in simulating Haskell's lazy evaluation of infinite data structures, and especially to be used in implementing the "take", takeWhile" etc. family of Haskell functions. Cheers, Dimitre Novatchev. __________________________________________________ Do You Yahoo!? Find a job, post your resume. http://careers.yahoo.com XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] Question about XPATH result s, Tim Crook | Thread | Re: [xsl] Re: Re: Re: lookup-table , Jeni Tennison |
[xsl] Question about XPATH result s, Tim Crook | Date | [xsl] Something like eval()? and Th, McKeever, Marty |
Month |