xsl-list
[Top] [All Lists]

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

2019-09-02 16:03:22
On 02.09.2019 22:55, Dimitre Novatchev dnovatchev(_at_)gmail(_dot_)com 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?
--~----------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
EasyUnsubscribe: http://lists.mulberrytech.com/unsub/xsl-list/1167547
or by email: xsl-list-unsub(_at_)lists(_dot_)mulberrytech(_dot_)com
--~--

<Prev in Thread] Current Thread [Next in Thread>