This is an archived snapshot of W3C's public bugzilla bug tracker, decommissioned in April 2019. Please see the home page for more details.

Bug 29441 - [xslt3.0] Definition of "extension functions"
Summary: [xslt3.0] Definition of "extension functions"
Status: CLOSED FIXED
Alias: None
Product: XPath / XQuery / XSLT
Classification: Unclassified
Component: XSLT 3.0 (show other bugs)
Version: Candidate Recommendation
Hardware: PC All
: P2 normal
Target Milestone: ---
Assignee: Michael Kay
QA Contact: Mailing list for public feedback on specs from XSL and XML Query WGs
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2016-02-09 17:16 UTC by Michael Kay
Modified: 2016-10-06 18:42 UTC (History)
0 users

See Also:


Attachments

Description Michael Kay 2016-02-09 17:16:04 UTC
Extension functions are defined as "anything that is not one of the following...". The list of things that are not extension functions should include XPath inline functions and functions created dynamically by operations such as partial function application.
Comment 1 Michael Kay 2016-02-09 18:21:09 UTC
Suggested definition, and elaboration:

[Definition: An extension function is a function that is available for use within an XPath expression, other than a function defined directly or by reference in this XSLT specification.] Extension functions typically are either defined by the implementer of the XSLT processor, or by a user using implementer-supplied APIs. 

The following are NOT classed as extension functions: core functions defined in [Functions and Operators 3.0]; additional functions defined in this XSLT specification; constructor functions named after an atomic type; stylesheet functions defined using an xsl:function declaration; XPath 3.0 inline functions; functions returned by (higher-order) functions such as load-xquery-module and random-number-generator.

Functions returned as the result of evaluating a construct such as a named function reference or a partial function application or a call on function-lookup are classified as extension functions if the construct includes a reference to an extension function. 

NOTE: 

It is possible in principle for named extension functions to be present in the dynamic context even though they are not present in the static context, and vice versa. This can arise, for example, when the environment in which a stylesheet is executed differs from the environment in which it is compiled.
Comment 2 Michael Kay 2016-02-15 15:10:44 UTC
The following appears to work:

An extension function is a named function introduced to the static or dynamic context by mechanisms outside the scope of this specification.

followed by a Note to explain the ramifications.