Extensibility
The Saxon XQuery implementation allows you to call Java methods as external functions. The
function does not need to be declared. Use a namespace declaration such as declare
namespace math="java:java.lang.Math"
, and invoke the method as
math:sqrt(2)
.
More details of this mechanism are found in Writing Extension Functions.
Saxon recognizes the XQuery pragma syntax, but it currently defines only one pragma of its
own, the saxon:validate-type
pragma (see Extensions), and this is now redundant since the equivalent
facility is standard in XQuery 3.0. Saxon will adopt the correct fallback behavior if
presented with a query that uses another vendor's extensions, provided these are designed
in conformance with the W3C pragma specification.
A function may be marked as a memo function either by using the function annotation
%saxon:memo-function
or by preceding the function declaration with the
option declaration declare option saxon:memo-function
.
Saxon recognizes the XQuery option declaration syntax. Several specific option declarations are provided, but most of these are obsolete:
-
declare option saxon:default
declares a default value for external variables (query parameters). No longer needed in XQuery 3.0, which provides native syntax for declaring default values. -
declare option saxon:output
declares a serialization parameter. Superseded bydeclare option output:XXXXX
. -
declare option saxon:memo-function
defines whether the following function declaration is to be implemented as a memo function; superseded by the function annotation%saxon:memo-function
.
Any other option declaration in the Saxon namespace is ignored with a warning; an option declaration in any other namespace is ignored silently.