XQuery 3.1 implementation
Added more command line options related to tracing: -Tout:filename
specifies the destination for -T trace output;
while -Tlevel:(none|low|normal|high)
controls the level of detail in the output. The same functionality
is available via API and configuration options. For more information see Configuration features.
When the -qs
option is used on the command line, the static base URI of the query is the current working
directory. (See XQuery from the command line.)
Type checking on maps has been improved. In particular, the static type of the expression map:get(M, K)
(or equivalent
constructs such as M(K)
or M?K
is now deduced from the type of the map if known. The checking is even
stronger if the new (Saxon-specific) mechanism of tuple types (now renamed "record types") is used: see
Record types.
Annotations on functions, including annotation assertions, are now fully supported. The annotation information is now retained
as a property of a function and its type. Multiple annotations with the same name are allowed (which requires some change to internal
data structures). The Configuration
allows a FunctionAnnotationHandler
to be registered for a
particular annotation
namespace; this handler is invoked to determine whether functions having particular annotations satisfy or fail to satisfy
particular annotation assertions in that namespace.
The new extension function saxon:function-annotations() is made available to obtain access to the annotations defined in a function declaration.
A user-defined function in XQuery may now be designated as a memo function by using an annotation:
declare %saxon:memo-function local:f....
. Option declarations may continue to be used for the
same purpose, for backwards compatibility.