Re: [xsl] How to make a xsl:function that returns the function()

Subject: Re: [xsl] How to make a xsl:function that returns the function()
From: Michael Kay <mike@xxxxxxxxxxxx>
Date: Sat, 19 Jan 2013 16:27:14 +0000
The problem appears to have been fixed in Saxon 9.4.0.6, though I
haven't identified the specific bug fix that cured the problem.

Michael Kay
Saxonica

On 19/01/2013 15:51, Michael Kay wrote:
> It's actually a NullPointerException within Saxon; oXygen is hiding the
> gory detail of the internal error.
>
> As a workaround, use "name(.)" rather than name(). Saxon has trouble
> with context-sensitive functions within higher order functions. I'm not
> sure of the exact cause and will investigate further. You can track it here:
>
> https://saxonica.plan.io/issues/1689
>
> Michael Kay
> Saxonica
>
> On 19/01/2013 15:16, Toshihiko Makita wrote:
>> Hi List,
>>
>> I'm very interested in XSLT 3.0 and have a question about the function
>> that returns the function as its return value.
>> Is it possible to make a such xsl:function?
>> I tested using the following code in oXygen 14.1 with Saxon 9.4.0.4.
>>
>> <?xml version="1.0" encoding="UTF-8"?>
>> <xsl:stylesheet version="3.0"
>> xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
>> xmlns:xs="http://www.w3.org/2001/XMLSchema";
>> xmlns:ahf="http://www.yahoo.co.jp/tmakita";>
>>
>> <xsl:template match="root">
>> <xsl:variable name="slectFunc" as="function(*)"
>> select="ahf:funcGetChildElementByName('d')"/>
>> <xsl:copy>
>> <xsl:sequence select="$slectFunc(.)"/>
>> </xsl:copy>
>> </xsl:template>
>>
>> <xsl:function name="ahf:funcGetChildElementByName" as="function(*)">
>> <xsl:param name="prmElemName" as="xs:string"/>
>> <xsl:sequence select="function($a as element()) as element()*
>> {$a/child::*[starts-with(name(),$prmElemName)]}"/>
>> </xsl:function>
>>
>> </xsl:stylesheet>
>>
>> However Saxon returns following error.
>>
>> System ID: D:\My Documents\Proj\XSLT-TEST\20130113-func\test.xsl
>> Main validation file: D:\My Documents\Proj\XSLT-TEST\20130113-func\test.xsl
>> Engine name: Saxon-EE 9.4.0.4
>> Severity: error
>> Description: 0
>>
>> Is there any workarounds?
>>
>> Regards,
>>
>> Toshihiko Makita

Current Thread