| Subject: Re: Designs for XSLT functions (Was: Re: [xsl] RE: syntax sugar for  call-template) From: Jeni Tennison <mail@xxxxxxxxxxxxxxxx> Date: Thu, 22 Feb 2001 22:09:32 +0000 | 
Hi Steve,
> Why couldn't you implement the function without
> recursion with a technique like:
>
>    <exsl:function>
>      <xsl:variable name="foo">
>        <xsl:for-each>
>          <xsl:sort ... >
>            <xsl:if test="5 <= position()">
>              <xsl:copy-of select="."/>
>            </xsl:if>
>        </xsl:for-each>
>      </xsl:variable>
>      <exsl:return select="$foo"/>
>    </exsl:function>
Because that creates a new node set stuffed full of *copies* of the
nodes, not the original nodes.  You could do:
   <exsl:function>
      <xsl:param name="nodes" />
      <xsl:variable name="foo">
         <xsl:for-each select="$nodes">
            <xsl:sort />
            <xsl:if test="5 <= position()">
               <node id="{generate-id()}" />
            </xsl:if>
         </xsl:for-each>
      </xsl:variable>
      <exsl:return select="$nodes[generate-id() = $foo/node/@id]" />
   </exsl:function>
as a non-recursive and fairly hacky solution.
Cheers,
Jeni
---
Jeni Tennison
http://www.jenitennison.com/
 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
| Current Thread | 
|---|
| 
 | 
| <- Previous | Index | Next -> | 
|---|---|---|
| Re: Designs for XSLT functions (Was, Steve Muench | Thread | Re: Designs for XSLT functions (Was, David Carlisle | 
| [xsl] cannot reach the inner tags, Franz Figl | Date | Re: [xsl] Newbie needs xsl, Jeni Tennison | 
| Month |