Re: [xsl] Question for a code example of <xsl:evaluate> in which the target expression calls a user-defined xsl:function

Subject: Re: [xsl] Question for a code example of <xsl:evaluate> in which the target expression calls a user-defined xsl:function
From: "Dimitre Novatchev dnovatchev@xxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>
Date: Mon, 2 Sep 2019 21:40:50 -0000
Fixed -- had to include: visibility="public"

Thanks for the code example!

Dimitre

On Mon, Sep 2, 2019 at 2:33 PM Dimitre Novatchev <dnovatchev@xxxxxxxxx>
wrote:

> Thanks Martin,
>
> > So what happened with your "attempts to call such an existing
> > xsl:function", any error?
>
> Severity: fatal
> Description: Static error in XPath expression supplied to xsl:evaluate:
> Function {http://my.namespace}doSomething#1 not found.
>
> In the target text, among other things there is this:
>
>      $ops := Q {http://my.namespace}doSomething#1 ('myArgument'),
>
> And I have an existing xsl:function:
>
> <xsl:function name="f:doSomething">
>     <xsl:param name="pmyArgument" as="xs:string+"/>
> .  .  .  .  .  .
>
>
> Thanks,
> Dimitre
>
> On Mon, Sep 2, 2019 at 2:03 PM Martin Honnen martin.honnen@xxxxxx <
> xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> wrote:
>
>> On 02.09.2019 22:55, Dimitre Novatchev dnovatchev@xxxxxxxxx wrote:
>> > I need to call an existing xsl:function from within the xpath
>> > (target-expression ) attribute of <xsl:evaluate>.
>> >
>> > 1. Is this possible / allowed? From reading the W3C XSLT 3.0 Spec it
>> > seems so -- https://www.w3.org/TR/xslt-30/#dynamic-xpath  has a bullet
>> > in the list of available function signatures, saying :
>> >
>> > "All user-defined functions present in the containing package provided
>> > their visibility is not hidden or private;"
>> >
>> > However, my attempts to call such an existing xsl:function from within
>> > the target-expression were not successful.
>> >
>> > 2. Could someone provide a working code example of doing this?
>>
>> The test suite has the code sample
>>
>> https://github.com/w3c/xslt30-test/blob/master/tests/insn/evaluate/evaluate-001.xsl
>> with
>>
>> <?xml version="1.0"?>
>> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
>> version="3.0"
>>    xmlns:my="http://www.example.com/my-functions";
>> exclude-result-prefixes="my">
>>
>>    <!-- PURPOSE test xsl:evaluate with a literal argument calling a
>> stylesheet function -->
>>
>>
>>    <xsl:template name="main">
>>      <out>
>>        <xsl:evaluate xpath="'my:f()'"/>
>>      </out>
>>    </xsl:template>
>>
>>    <xsl:function name="my:f" visibility="public">
>>      <xsl:sequence select="$p"/>
>>    </xsl:function>
>>
>>    <xsl:param name="p" select="42"/>
>>
>> </xsl:stylesheet>
>>
>> for instance, runs fine for me within oXygen and Saxon 9.8 EE using the
>> "main" template as the entry point.
>>
>>
>> So what happened with your "attempts to call such an existing
>> xsl:function", any error?

Current Thread