Re: [xsl] recreate apply-templates using a function

Subject: Re: [xsl] recreate apply-templates using a function
From: Andrew Welch <andrew.j.welch@xxxxxxxxx>
Date: Sun, 12 Feb 2012 16:30:10 +0000
Hi Dimitre,

On 12 February 2012 15:48, Dimitre Novatchev <dnovatchev@xxxxxxxxx> wrote:
> On Sun, Feb 12, 2012 at 5:24 AM, Andrew Welch <andrew.j.welch@xxxxxxxxx>
wrote:
>> If you needed to call apply-templates using a function call (say as
>> part of an xpath) any reason why this wouldn't be fine:
>>
>> <xsl:function name="f:apply-templates" as="node()*">
>>    <xsl:param name="context" as="node()*"/>
>>    <xsl:apply-templates select="$context"/>
>> </xsl:function>
>>
>> with:
>>
>> <xsl:sequence select="f:apply-templates(child::node())"/>
>>
>> (ignoring modes and params etc)
>>
>> Seems ok to me...
>
> Except when you use it as the second operand of the / operator.

What's the issue there?

It should really have have a return type of item()*, and the param
should really be called 'node-list' rather than 'context':

<xsl:function name="f:apply-templates" as="item()*">
   <xsl:param name="node-list" as="node()*"/>
   <xsl:apply-templates select="$node-list/>
</xsl:function>

anything else?

--
Andrew Welch
http://andrewjwelch.com

Current Thread