RE: Designs for XSLT functions (Was: Re: [xsl] RE: syntax sugar for call-template)

Subject: RE: Designs for XSLT functions (Was: Re: [xsl] RE: syntax sugar for call-template)
From: "Michael Kay" <mhkay@xxxxxxxxxxxx>
Date: Mon, 19 Feb 2001 21:07:44 -0000
> But this sparked something for me - having an exsl:return inside a
> xsl:for-each:
>
>    <xsl:for-each select="$node">
>       <xsl:if test="*">
>          <exsl:return select="true()" />
>       </xsl:if>
>    </xsl:for-each>
>
> (in effect equivalent to <exsl:return select="boolean($node[*])" />)
>
> Perhaps xsl:for-each shouldn't be allowed directly within function
> definitions?  Can anyone come up with a use case where it's helpful to
> have it?

Saxon allows xsl:for-each with saxon:function, but doesn't allow
saxon:return within xsl:for-each.

Use case, turning a node-set into a comma-separated list of the
string-values of the nodes:

xsl:function name="csv"
  xsl:param name="nodeset"/
  xsl:variable name="tree"
    xsl:for-each select="$nodeset"
      xsl:value-of select="."
      xsl:if test="position()!=last"
        ,
      /xsl:if
    /xsl:for-each
  /xsl:variable
  xsl:return select="string($tree)"/
/xsl:function

Mike Kay


 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Current Thread