Subject: Re: [xsl] Question for a code example of <xsl:evaluate> in which the target expression calls a user-defined xsl:function|
From: "Martin Honnen martin.honnen@xxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>
Date: Mon, 2 Sep 2019 21:03:17 -0000
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 B 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-0 01.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>
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?